v0.0.30
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 newversion
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 aderivation_origin
is set in the configuration.
Fix
- Preserve (do not delete) the
/.well-known/ic-domains
when the CLI commandjuno 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 newversion
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 newversion
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.