v0.0.28
Summary
The major change introduced by this release is the decision to use stable memory as the default strategy for new collections in the Datastore and to manage users created for authentication purposes. This change is backward compatible, meaning that existing satellites will not be affected. If you already have users stored on the heap, they will remain on the heap, but any new satellites created will utilize stable memory. The rationale behind this decision is that, although stable memory requires more resources and is therefore more costly, its use helps to avoid issues, especially when a smart contract needs to be upgraded. We will continue to use heap memory to hold the assets (websites and applications) of dApps, but for other types of data, the use of stable memory is advised.
Besides this, the new release introduces new synchronous assertion hooks for serverless functions. This allows developers to check data and files before they are committed within the satellite.
For example:
#[assert_set_doc]
fn assert_set_doc(_context: AssertSetDocContext) -> Result<(), String> {
Err("They tried to make me go to Rehab".to_string())
}
Finally, and importantly, we are finally able to disable the pin authentication feature of Internet Identity by default, which I consider "insecure" because users can easily lose their login information if they do not register a passphrase. This is particularly concerning as Safari clears the browser cache every two weeks in cases of inactivity. Hence, we disable it by default.
Overview
Module | Version | Breaking changes | Patch |
---|---|---|---|
Mission Control | 0.0.10 | ||
Orbiter | 0.0.6 | ||
Satellite | 0.0.16 | ⚠️ Patched in release v0.0.29 |
Library | Version | Breaking changes |
---|---|---|
@junobuild/core | v0.0.48 | ⚠️ II pin auth disabled per default |
@junobuild/core-peer | v0.0.13 | |
@junobuild/admin | v0.0.47 | |
@junobuild/analytics | v0.0.21 | |
@junobuild/ledger | v0.0.31 | |
@junobuild/utils | v0.0.20 | |
@junobuild/config | v0.0.5 | ⚠️ Types for juno.dev.config reviewed |
Crates | Version | Breaking changes |
---|---|---|
junobuild-satellite | v0.0.16-patch.1 | |
junobuild-macros | v0.0.12 | |
junobuild-shared | v0.0.14 |
CLI | Version | Breaking changes |
---|---|---|
@junobuild/cli | v0.0.60 |
Docker | Version | Breaking changes |
---|---|---|
@junobuild/satellite | v0.0.14 | ⚠️ Inherit reviewed types |
@junobuild/action | v0.0.23 |
Changes
Here is a list of changes included in this release:
Console (Backend)
Not a code change, but WASM of the Satellite, Mission Control, and Orbiter will now be gzipped before being uploaded to the console.
Console (Frontend)
The console UI/UX has been improved as follows:
Features
- Introduce a new section
Functions
which displays the logs of the Satellite and, in the future, those of the IC as well. - Add a cycles consumption chart on the Satellite, Mission Control, and Analytics pages.
- Set stable memory as default for the creation of new Datastore collections.
- Support new "max capacity" option for Datastore collections.
- Prevent the usage of revoked principals as an additional sign-in function.
- Update tagline and social image.
Style
- Improve icons for dark mode.
- Update a few icons with new assets provided by Didier.
Fix
Ed25519KeyIdentity.generate
generates the same principal every time (agent-js incident treated as a hotfix).- Incorrect period start date for analytics filter.
Build
- Bump agent-js security patch.
- Bump to agent-js
v1.2.0
.
Satellite
The Satellites have been updated as follows:
Features
- Add a list of revoked controllers - currently, and hopefully in the future, only
535yc-uxytb-gfk7h-tny7p-vjkoe-i4krp-3qmcl-uqfgr-cpgej-yqtjq-rqe
- for which access and calls should be rejected. - New option "max capacity" for Datastore's collection. For example, if a capacity is set to 100 and the collection contains 100 documents, adding a new document will result in one document being removed before adding the new one. It's up to the developer to provide keys that can be sorted.
- Stable memory set as the default option for a new collection of the Datastore.
- Stable memory set as the default memory to handle users created for authentication.
Fix
owner
should remain consistent in Datastore - e.g., if existing data is updated by a controller, the owner should remain set to the original user that created the entry and not be modified with the controller ID.
Mission Control
Inherits the check to decline access to revoked controllers.
Orbiter
Inherits the check to decline access to revoked controllers.
Observatory
No changes.
Library
Please refer to the releases for details.
Crates
For the documentation, please consult their respective documentation.
Features
- In addition to hooks, provide developers with assertion hooks that can be called synchronously before documents and files are committed or deleted within the Satellite. This allows developers to extend the native rules with more checks.
- Introduce log (info, debug, warning, and error) features which can be used for Serverless Functions development. Logs are saved in stable memory and limited to 100 entries.
CLI
Please refer to the releases for details.
Plugins
Please refer to the releases for details.
GitHub Action
Please refer to the releases for details.
Docker
Please refer to the releases for details.