Skip to content

v0.0.30

Compare
Choose a tag to compare
@peterpeterparker peterpeterparker released this 09 May 09:41
· 573 commits to main since this release
9c1e4a7

Summary

This new release contains two breaking changes and several new features.

Important note:

👉 If you are using Analytics, Datastore, or Storage, this release introduces major changes that require you to update the JavaScript libraries of your project simultaneously with upgrading your smart contracts!

Breaking Changes ⚠️

New version field

The major technical change introduced by this release is the decision to correct a design pattern that existed from the very first version of Juno.

Satellites' Datastore and Storage, and later Analytics, were developed to prevent data from being overwritten if the services are used concurrently. In other words, as you would expect from a Web2 SQL service, a user editing the same document on two devices at the same time would be prevented from unexpectedly overwriting data if those are not synchronized with the latest changes. These safeguards were originally based on the updated_at timestamp field. However, while this works in practice, in reality using such a time field could not be as accurate since the time is not guaranteed to be unique within a block. Moreover, this was somewhat an uncommon pattern. That is why this new version preserves the feature but corrects it by introducing a new version field.

This means that once you have upgraded your smart contract, you should also upgrade the JavaScript libraries in the related project, and you might be prompted to replace the updated_at field with the version field.

Disabling https://.raw.icp0.io

Using the .raw. domain is insecure. While this domain has proven useful when the service worker was shipped on the client side, notably for SEO purposes or to access images by bypassing CORS, deferring the validation of certification to prevent malicious actors from hijacking resources to proxies at the boundary nodes (default) or locally, plus using the certification v2 specification, renders its usefulness obsolete. That's why Satellites will now automatically redirect any traffic attempting to access .raw.icp0.io to certified mainnet, icp.io.

New features

Thanks to the recent improvements in Internet Identity, it is now possible to derive origin for sign-in purposes using custom domains, not just icp0.io. This means we are finally able to use "derivation origin" or "alternative origins" to derive the same principal for the same user across multiple custom domains. For example, a user signing in on your custom domain hello.com and a subdomain such as www.hello.com can now be identified with the same principal. This new feature has been introduced in the wizard for setting up new custom domains, and your Satellite takes care automatically of the required configuration. There is currently no feature implemented to apply such an option to an existing domain, but if you wish to do so, you can simply re-add the custom domain. Reach out if you have questions; as always, happy to assist.

Lastly, the Console UI has received some love. The sign-in page has been simplified, the launchpad can list the Satellites with cards or in rows, and the Mission Control and Orbiter (Analytics) have been better integrated to ease their overview and navigation.

Overview

Module Version Breaking changes
Orbiter 0.0.7 ⚠️
Satellite 0.0.17 ⚠️
Observatory 0.0.5 ⚠️
Crates Version Breaking changes
junobuild-satellite v0.0.17 ⚠️
junobuild-shared v0.0.15
Library Version Breaking changes
@junobuild/core v0.0.49 ⚠️
@junobuild/core-peer v0.0.14 ⚠️
@junobuild/admin v0.0.48 ⚠️
@junobuild/analytics v0.0.22 ⚠️
@junobuild/ledger v0.0.32
@junobuild/utils v0.0.21
@junobuild/config v0.0.6 ⚠️
@junobuild/cli-tools v0.0.9
CLI Version Breaking changes
@junobuild/cli v0.0.64 ⚠️
Plugins Version Breaking changes
@junobuild/vite-plugin v0.0.12
@junobuild/nextjs-plugin v0.0.6
Docker Version Breaking changes
@junobuild/satellite v0.0.17 ⚠️
@junobuild/action v0.0.24

Changes

Here is a list of changes included in this release:

Console (Backend)

No changes.

Console (Frontend)

The console UI/UX has been improved as follows:

Features

  • Integrate support for defining a main authentication domain when adding a custom domain.
  • Support for new version field.
  • Redesign login page.
  • Add an option to display the list of Satellites in cards or rows on the launchpad and an option to filter them.
  • Present the Mission Control and Orbiter on the launchpad for easier navigation.
  • Display a summary of the Mission Control, Orbiter, and Wallet in the header of the in-app pages.

Style

  • Bye bye sharp box-shadow.

Fix

  • Fix the "Go back" button, which did not always work.

Build

  • Bump dependencies.
  • Bump agent-js.

Satellite

The Satellites have been updated as follows:

Breaking Changes

  • Replace the updated_at field with the new version field to prevent concurrent overwrites.
  • Deny access to the .raw. domain by redirecting HTTP requests to the certified default domain.

Features

  • Add new authentication configuration options.
  • Automatically generate the /.well-known/ii-alternative-origins asset when a derivation_origin is set in the configuration.

Fix

  • Preserve (do not delete) the /.well-known/ic-domains when the CLI command juno clear is executed.

Build

  • Bump ic-stable-structures to prevent memory leak.

Mission Control

No changes.

Orbiter

Breaking Changes

  • Replace the updated_at field with the new version field to prevent concurrent overwrites.

  • Migrate ic-stable-structures to unbounded. This will enable us to collect more metrics in the future.

Observatory

Breaking Changes

  • Replace the updated_at field with the new version field to prevent concurrent overwrites.

Crates

Changes similar to those of the satellites.

Library

Please refer to the releases for details.

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.