Skip to content

v0.0.28

Compare
Choose a tag to compare
@peterpeterparker peterpeterparker released this 29 Mar 13:26
· 549 commits to main since this release

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.