Skip to content

Releases: junobuild/juno

v0.0.39

29 Nov 15:47
Compare
Choose a tag to compare

Summary

Great news! This release introduces a single, long-awaited feature: support for creating and restoring backups for your Satellites, Mission Control, and Orbiters (analytics). 🥳

It works as follows: Right now, only one backup per module is allowed, as determined by the IC. You can create, restore, and delete backups manually for each module whenever you need. Backups are also automatically created during the upgrade process to take snapshots when upgrading to a new version. If you prefer, you can opt out in the advanced options to skip creating a backup or avoid overwriting an existing one.

No new versions of the modules (smart contracts) included.

Overview

Module Version Breaking changes
---- ----
Crates Version Breaking changes
---- ----
Library Version Breaking changes
@junobuild/admin v0.0.61
CLI Version Breaking changes
@junobuild/cli v0.0.87

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

  • Support for creating, restoring, and deleting backups.
  • Automatic creation of backups during the upgrade process, with options to opt-out.
  • Create a generic store to hold data related to canisters and integrated it for subnet information.
  • Renamed "Settings" to "Setup" in the module's tabs.

Satellite

No changes.

Mission Control

No changes.

Orbiter

No changes.

Observatory

No changes.

Library

Please refer to the releases for details.

CLI

Please refer to the releases for details.

GitHub Action

Please refer to the releases for details.

v0.0.38

27 Nov 17:35
edfaf38
Compare
Choose a tag to compare

Summary

This release focuses on CLI, local development, and Console client-side improvements, with no new versions of the modules (smart contracts) included.

The main new features include the addition of links to cycle.express to allow developers to buy cycles, as well as various improvements to the upgrade process, including support for upgrading large WASM files (> 2MB), which is particularly useful for Serverless Functions. The UI for upgrades has been redesigned to showcase the various steps of the process, and functionality has been added to stop and restart modules before upgrades to improve state persistence.

Overview

Module Version Breaking changes
---- ----
Crates Version Breaking changes
---- ----
Library Version Breaking changes
@junobuild/core v0.0.63
@junobuild/core-peer v0.0.29
@junobuild/admin v0.0.60
@junobuild/analytics v0.0.30
@junobuild/storage v0.0.8
@junobuild/console v0.0.11
@junobuild/utils v0.0.27
@junobuild/cli-tools v0.0.16
@junobuild/did-tools v0.0.4
@junobuild/config-loader v0.0.7
CLI Version Breaking changes
@junobuild/cli v0.0.85
Plugins Version Breaking changes
@junobuild/vite-plugin v0.0.19
@junobuild/nextjs-plugin v0.0.13
Templates Version Breaking changes
create-juno v0.0.32
satellite-template v0.0.3 🆕
Docker Version Breaking changes
@junobuild/satellite v0.0.42
@junobuild/console v0.0.42
@junobuild/action v0.0.35

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

  • Introduce chunked WASM upgrades, enabling support for larger WASM files (>2MB).
  • Stop and restart modules during upgrades to enhance state persistence.
  • Display upgrade progress using a stepper with support for error handling.
  • Add links to cycle.express for buying cycles.
  • Cache agents and actors per module to improve performance and reduce overhead.
  • Display Satellite names in the delete confirmation modal for better clarity.
  • Support local development sign-in on Safari with the Console.
  • Show analytics filters even when the initial load fails.

Fixes

  • Resolve pagination issues for keys in selected collections.
  • Fix refreshing and transferring cycles functionality.
  • Ensure the transfer cycles modal opens as expected.

Style

  • Adjust input heights for a more consistent UI.
  • Apply a theme background color during loading for visual feedback.
  • Dark theme darker.

Satellite

No changes.

Mission Control

No changes.

Orbiter

No changes.

Observatory

No changes.

Library

Please refer to the releases for details.

CLI

Please refer to the releases for details.

Plugins

Please refer to the releases for details.

Templates

Please refer to the create-juno and satellite-template releases for details.

GitHub Action

Please refer to the releases for details.

Docker

Please refer to the releases for details.

v0.0.37

17 Nov 19:41
Compare
Choose a tag to compare

Summary

In response to the recent cost increase for creating new canisters on the Internet Computer (from 0.1 TCycles to 0.5 TCycles, a +400% increase, proposal 134032), this release adjusts the allocation of cycles for new modules, increasing from 1.1 TCycles to 1.6 TCycles. Consequently, the pricing for additional modules is increased from 0.3 ICP to 0.4 ICP.

Feature-wise, this release introduces a new option for Satellite Authentication and Collections, enabling developers to set a maximum number of updates per minute.

Last but not least, every new Satellite now launches with a sleek and informative default web page—delivering a great first impression right out of the box! 🚀✨

A screenshot of the template

Overview

Module Version Breaking changes
Console 0.0.14
Satellite 0.0.21
Crates Version Breaking changes
junobuild-satellite 0.0.21-patch.1
junobuild-storage v0.0.12
junobuild-collections v0.0.9
junobuild-shared v0.0.22
junobuild-macros v0.0.3
Library Version Breaking changes
@junobuild/core v0.0.63
@junobuild/core-peer v0.0.29
@junobuild/admin v0.0.58
@junobuild/analytics v0.0.30
@junobuild/storage v0.0.8
@junobuild/console v0.0.11
CLI Version Breaking changes
@junobuild/cli v0.0.84
Plugins Version Breaking changes
@junobuild/vite-plugin v0.0.19
@junobuild/nextjs-plugin v0.0.13
Templates Version Breaking changes
create-juno v0.0.32
satellite-template v0.0.3 🆕
Docker Version Breaking changes
@junobuild/satellite v0.0.40
@junobuild/console v0.0.40
@junobuild/action v0.0.34

Changes

Here is a list of changes included in this release:

Console (Backend)

The Console backend has been improved as follows:

Features

  • Adjusts the allocation of cycles for new modules, increasing from 1.1 TCycles to 1.6 TCycles.
  • Adapts to API changes required for the introduction of rate configuration.

Fixes

  • Resolves semver to fetch the latest version of the WASM for spinning up.

Build

  • Bump ic_cdk.

Console (Frontend)

The console UI/UX has been improved as follows:

Features

  • Adds configuration to authentication, allowing developers to change or set the main domain ("derivation origin").
  • Removes updates to the derivation origin from the custom domain wizard. Now, it only asks if a domain should be used as the main domain for authentication unless the configuration is already set.
  • Supports setting a maximum number of updates per minute for Collections and Authentication.
  • Loads analytics statistics with fallback behavior, ensuring partial metrics display even if some cannot be gathered.
  • Displays options for collections in a collapsible block.
  • Adds confetti effect when receiving ICP.
  • Uses query calls to fetch Index transactions and balances.
  • Migrates additional components to Svelte v5.
  • Sets autocomplete to off for input fields to prevent suggestions of previously entered text.
  • Updates CLI login page layout by incorporating a collapsible block for options.

Styles

  • Changes the main HTML font size to 14px, improving layout and allowing more information to be displayed on-screen for better overview.
  • Fixes header logo layout shift during navigation.
  • Aligns the main domain checkmark in the hosting table.

Satellite

The Satellites have been updated as follows:

Features

  • Launches new Satellites with a sleek and informative default web page.
  • Adds serverless function hooks on_init and on_post_upgrade.
  • Introduces new functions delete_filtered_docs and delete_filtered_assets to delete elements using parameters similar to those for listing documents and assets, respectively.
  • Returns the new rule on set_rule for collections (instead of void).
  • Makes system collections editable under certain circumstances, allowing developers to set a maximum number of user updates—such as new sign-ins—per minute.
  • Adds rate configuration for collections, enabling developers to define a maximum number of updates per minute.

Build

  • Bump ic_cdk.

Mission Control

No changes.

Orbiter

No changes.

Observatory

No changes.

Library

Please refer to the releases for details.

CLI

Please refer to the releases for details.

Plugins

Please refer to the releases for details.

Templates

Please refer to the create-juno and satellite-template releases for details.

GitHub Action

Please refer to the releases for details.

Docker

Please refer to the releases for details.

v0.0.36

31 Oct 16:37
Compare
Choose a tag to compare

Summary

This release focuses on client-side improvements, with no new versions of the modules (smart contracts) included. The Console frontend has been migrated to Svelte v5 (few leftovers for future iterations). A new feature has been added, allowing users to receive ICP from OISY directly within the Console

Overview

Module Version Breaking changes
---- ----
Crates Version Breaking changes
---- ----
Library Version Breaking changes
@junobuild/core v0.0.62
@junobuild/core-peer v0.0.28
@junobuild/admin v0.0.57
@junobuild/analytics v0.0.29
@junobuild/storage v0.0.7
@junobuild/console v0.0.10
@junobuild/utils v0.0.26
@junobuild/cli-tools v0.0.15
@junobuild/did-tools v0.0.3
@junobuild/config-loader v0.0.6
CLI Version Breaking changes
@junobuild/cli v0.0.82
Docker Version Breaking changes
@junobuild/satellite v0.0.39
@junobuild/console v0.0.39
@junobuild/action v0.0.33

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

  • Migrate components to Svelte v5 (few leftovers).
  • Receive ICP tokens with OISY using the oisy-wallet-signer relying party client.
  • Reload all satellites after attach.
  • Use collapsible on Cli login page to "hide" upfront advanced options.
  • Use eslint-config-oisy-wallet to ease collaboration.

Fix

  • Transaction with memo "Sent" was displayed as "Received".

Build

  • Bump Svelte v5.
  • Bump Sass.
  • Bump Juno libraries to latest.
  • Bump Agent-js v2.1.3.

Satellite

No changes.

Mission Control

No changes.

Orbiter

No changes.

Observatory

No changes.

Library

Please refer to the releases for details.

CLI

Please refer to the releases for details.

GitHub Action

Please refer to the releases for details.

Docker

Please refer to the releases for details.

v0.0.35

20 Oct 11:19
2ab92dd
Compare
Choose a tag to compare

Summary

This release brings two features to the Console: enabling developers to spin up Satellites or Orbiters in the subnet of their choice and adding the ability to send ICP from your wallet to the outside world.

Overview

Module Version Breaking changes
Console 0.0.13
Observatory 0.0.7
Mission Control 0.0.13
Crates Version Breaking changes
junobuild-satellite 0.0.20-patch.4
junobuild-storage v0.0.11
junobuild-collections v0.0.8
junobuild-shared v0.0.21
junobuild-utils v0.0.4
Library Version Breaking changes
@junobuild/core v0.0.61
@junobuild/core-peer v0.0.27
@junobuild/admin v0.0.56
@junobuild/analytics v0.0.28
@junobuild/storage v0.0.6
@junobuild/console v0.0.9
CLI Version Breaking changes
@junobuild/cli v0.0.80
Docker Version Breaking changes
@junobuild/satellite v0.0.38
@junobuild/console v0.0.38
@junobuild/action v0.0.32

Changes

Here is a list of changes included in this release:

Console (Backend)

The Console backend has been improved as follows:

Features

  • Allow creating modules in a selected subnet. No new endpoints were added; the argument payload was extended with an optional subnet field.

Refactoring

  • Adapt code for modules moved to the shared crate.

Build

  • Bump ic_cdk.

Console (Frontend)

The console UI/UX has been improved as follows:

Features

  • Add subnet selection under an "Advanced options" accordion in the Satellite and Orbiter creation wizards.
  • Display "Subnet ID" in overviews.
  • Add a "Send" token feature to the wallet to send ICP to external addresses.
  • Redesign the wallet screen and move the receive information (wallet ID, account identifier, and related QR codes) to a popover.
  • Add "Attach Satellite" feature and move "Attach Analytics" to Mission Control.
  • Introduce a slight delay between closing the upgrade wizard modal and reloading the versions, which may improve a UI race condition.
  • Use https://icp-api.io instead of https://icp0.io to instantiate agents on mainnet for consistency.
  • Sort "Track events" by name in the analytics dashboard.
  • Add additional Chinese translations.

Styles

  • Better align fields with "Copy" buttons in tables and grids.

Build

  • Bump agent-js to v2.0.0.

Satellite

No changes.

Mission Control

The Mission Console has been improved as follows. All new features are restricted to Admin controllers.

Features

  • Introduce new functions create_satellite_with_config and create_orbiter_with_config to create modules in a selected subnet.
  • Add functions icp_transfer and icrc_transfer to send ICP.

Refactoring

  • Adapt code for modules moved to the shared crate.
  • Apply Clippy suggestions.

Build

  • Bump ic_cdk.

Orbiter

No changes.

Observatory

The Observatory has been improved as follows:

Features

  • Prevent anonymous call on crontab functions.

Build

  • Bump ic_cdk.

Library

Please refer to the releases for details.

CLI

Please refer to the releases for details.

GitHub Action

Please refer to the releases for details.

Docker

Please refer to the releases for details.

v0.0.34

24 Aug 12:24
Compare
Choose a tag to compare

Summary

This release primarily introduces new performance metrics, the collection of Web Vitals, to the Analytics modules. Additionally, it adds new count documents and assets to the Satellites.

Additionally, a patch for the DFINITY ic_cdk crate has been rolled out across all smart contracts to prevent a potential inherited memory leak (source).

Overview

Module Version Breaking changes
Console 0.0.12
Mission Control 0.0.12
Observatory 0.0.6
Orbiter 0.0.8 ⚠️
Satellite 0.0.20 ⚠️
Crates Version Breaking changes
junobuild-satellite v0.0.20 ⚠️
junobuild-storage v0.0.7
junobuild-collections v0.0.4
junobuild-shared v0.0.18
junobuild-utils v0.0.3
Library Version Breaking changes
@junobuild/core v0.0.59
@junobuild/core-peer v0.0.25
@junobuild/admin v0.0.55
@junobuild/analytics v0.0.27
@junobuild/ledger ------- ⚠️ Deprecated. Use @dfinity/ledger-icp instead.
@junobuild/storage v0.0.5
@junobuild/console v0.0.8
CLI Version Breaking changes
@junobuild/cli v0.0.76
Docker Version Breaking changes
@junobuild/satellite v0.0.31
@junobuild/console v0.0.31
@junobuild/action v0.0.30

Changes

Here is a list of changes included in this release:

Console (Backend)

The Console has been patched to address the ic_cdk issue.

Console (Frontend)

The console UI/UX has been improved as follows:

Features

  • Add performance metrics / web vitals to the Analytics dashboard.
  • Support a new method to enable analytics features in the Orbiter. While it does not yet support granularity to keep the UI simple, it can be extended upon developer request.
  • Use count_collection_docs instead of count_docs on the "Hosting" page. Ensure the Satellite version is checked to prevent backward compatibility issues during the call.
  • Replace the deprecated @junobuild/ledger with @dfinity/ledger-icp.
  • Review the design and content structure of the CLI authentication page.
  • Add a new popover to display custom domain information, including the "BN ID." This is useful for debugging and support purposes.

Styles

  • Fix the display of the link to the Satellite on the overview (increase spacing).
  • Resolve misalignment of the version field in the Mission Control and Orbiter overviews.

Satellite

The Satellites have been updated as follows:

Breaking Changes

  • Rename the endpoints count_docs and count_assets to count_collection_docs and count_collection_assets. This change was necessary to introduce new functions requested by the community while maintaining a meaningful naming pattern.

Features

  • Introduces count_docs and count_assets, which accept the same parameters as their related "list" features but return only the count of matching entries. This can be useful for obtaining a count without transferring a large payload. Internally, these features have potential for improvement as they currently use the same implementation as listing.
  • Improve error messages for collections not found or empty by providing additional context (Datastore or Storage).
  • Patch the ic_cdk to prevent potential memory leak issues.

Mission Control

The Mission Console has been patched to address the ic_cdk issue.

Orbiter

The Orbiters have been updated as follows:

Breaking Changes

  • The upgrade includes automatic type migration and enhances the configuration of Orbiters for greater granularity. Previously, a single "enabled" flag was used per Satellite. Now, it is possible to specify which individual features should be enabled, including the ability to gather specific metrics such as page views, event tracking, and performance metrics.

Features

  • Added support for gathering and aggregating performance metrics using Web Vitals. Web Vitals are essential for measuring user experience metrics accurately, aligning with how they are captured by Chrome and reported to other Google tools. This enhancement is valuable for developers aiming to optimize the UI performance of their applications.
  • Patched the ic_cdk to prevent potential memory leak issues.

Observatory

The Observatory has been patched to address the ic_cdk issue.

Library

Please refer to the releases for details.

CLI

Please refer to the releases for details.

GitHub Action

Please refer to the releases for details.

Docker

Please refer to the releases for details.

v0.0.33

17 Aug 12:23
459e05c
Compare
Choose a tag to compare

Summary

This release addresses a non-critical but still annoying issue introduced in the Console with the migration to a single smart contract architecture in version v0.0.31. Specifically, since that release, the resources served by the Console were not being gzipped, causing clients to download larger files and resulting in a slightly slower frontend performance.

Notes

This release is exclusively focused on the Console. No other components have been affected, and therefore, no further documentation for those is required.

Overview

Module Version Breaking changes
Console 0.0.11
Crates Version Breaking changes
junobuild-storage v0.0.5

Changes

Here is a list of changes included in this release:

Console (Backend)

Fix

  • Corrected asset resolution within a single proposal to properly populate encodings for dedicated assets, ensuring that each asset now contains both gzip and identity data.

Console (Frontend)

The console UI/UX has been improved as follows:

Features

  • Revised sign-in subtitle text.
  • Improved the look and feel of the CLI authentication page by using tables to group the information.
  • Splits the application's JavaScript resources into smaller chunks (excluding dependencies) rather than delivering them as a single index chunk.

Styles

  • Ensured the link to Satellite in the overview is not shrunk.
  • Resolved the misalignment of the "Version" information in the Mission Control and Orbiter views.

Fix

  • Correctly configured the Service Worker registration in the Svelte config.

v0.0.32

04 Aug 19:06
Compare
Choose a tag to compare

Summary

While this release includes over 100 commits, it does not introduce major new features. Instead, it focuses on incremental improvements, including enhancements in the Satellites and the addition of useful features in Juno's Console.

This release also finalizes the removal of the CLI tool DFX across the entire Juno ecosystem. DFX was often a proven pain, leading to productivity issues and frustration. Its removal aims to streamline workflows and improve overall efficiency by betting on Juno's custom tooling.

Overview

Module Version Breaking changes
Console 0.0.10 ⚠️
Satellite 0.0.19 ⚠️
Crates Version Breaking changes
junobuild-satellite v0.0.19 ⚠️
junobuild-storage v0.0.4
junobuild-collections v0.0.2
junobuild-shared v0.0.17
junobuild-utils v0.0.2
Library Version Breaking changes
@junobuild/core v0.0.56
@junobuild/core-peer v0.0.22
@junobuild/admin v0.0.53 ⚠️
@junobuild/analytics v0.0.25
@junobuild/ledger v0.0.33
@junobuild/utils v0.0.24
@junobuild/config v0.0.14
@junobuild/cli-tools v0.0.14
@junobuild/config-loader v0.0.5
@junobuild/storage v0.0.3
@junobuild/console v0.0.5
CLI Version Breaking changes
@junobuild/cli v0.0.71
Plugins Version Breaking changes
@junobuild/vite-plugin v0.0.16
@junobuild/nextjs-plugin v0.0.10
Docker Version Breaking changes
@junobuild/satellite v0.0.30
@junobuild/console v0.0.30
@junobuild/action v0.0.26

Note

The above breaking changes are due to the replacement of an endpoint with more granular functions.

Changes

Here is a list of changes included in this release:

Console (Backend)

The Console mostly received changes to adapt to the shared crate updates developed for the Satellites.

The function set_config has been replaced by the more granular function set_storage_config.

Console (Frontend)

The console UI/UX has been improved as follows:

Features

  • Enable smart contract logging in the "Functions" tab.
  • Add a call to action to trigger a "Reload" of the Datastore and Storage.
  • Create and edit documents' data in the Datastore through JSON file uploads.
  • Enhance stop explanation.
  • Add a link to the satellite's default URL or first custom domain in its "Overview."
  • Use en-US native platform formatting for numbers.
  • Fetch and display statistics about the queries of the modules.
  • Fetch and display the settings of the smart contracts (Freezing threshold, heap memory size, etc.).
  • Make these settings editable for any module.
  • Review the display of Satellite, Mission Control, and Orbiter settings to ensure consistency.

Style

  • Resolve Sass deprecation warnings.

Fix

  • The Boundary Nodes no longer send the "Failed" error message as a string.

Build

  • Fix Svelte version field setup to ensure reproducibility.

Chore

  • Add a script and actions to test frontend build reproducibility.
  • Downgrade vitest until the next version of pic-js is released.

Satellite

The Satellites have been updated as follows:

Features

  • Add a new filter to list documents and assets with fields updated_at and created_at.
  • Introduce an optional "max memory size" feature for Datastore and Storage, which, if reached, will disable the new upload of assets and the creation and editing of documents.
  • Ensure key contains caller Principal as text when creating a new user.
  • Expose delete_assets_store, list_docs_store, and list_assets_store for serverless functions.
  • Refactor internal function to create assets and expose a function set_asset_handler that can be used in serverless functions to populate data in the storage on heap or stable memory.

Chore

  • Add Rust documentation for list_docs_store.

Mission Control

No changes.

Orbiter

No changes.

Observatory

No changes.

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.

v0.0.31

27 Jun 09:44
Compare
Choose a tag to compare

Summary

This release of Juno introduces several significant improvements, particularly in the Console, as we prepare for potential decentralization.

Key updates include a shift to a single canister architecture, the implementation of stable memory, and a new proposal mechanism for changes.

Overview

Module Version Breaking changes
Console 0.0.9 ⚠️
Satellite 0.0.18
Mission Control 0.0.11
Crates Version Breaking changes
junobuild-satellite v0.0.18
junobuild-storage v0.0.1 🆕️
junobuild-collections v0.0.1 🆕️
junobuild-shared v0.0.16
Library Version Breaking changes
@junobuild/core v0.0.53
@junobuild/core-peer v0.0.19
@junobuild/admin v0.0.51
@junobuild/analytics v0.0.24
@junobuild/ledger v0.0.32
@junobuild/utils v0.0.22
@junobuild/config v0.0.10
@junobuild/cli-tools v0.0.13
@junobuild/config-loader v0.0.4 🆕️
@junobuild/storage v0.0.1 🆕️
@junobuild/console v0.0.3 🆕️
CLI Version Breaking changes
@junobuild/cli v0.0.68
Plugins Version Breaking changes
@junobuild/vite-plugin v0.0.14
@junobuild/nextjs-plugin v0.0.8
Docker Version Breaking changes
@junobuild/satellite v0.0.29
@junobuild/console v0.0.29
@junobuild/action v0.0.25

Changes

Here is a list of changes included in this release:

Console (Backend)

The Console received the major changes of the release, which are the following:

Single Canister Architecture

Previously, the Console was deployed using two smart contracts: a backend (cokmz-oiaaa-aaaal-aby6q-cai) and a frontend (xxt4w-7iaaa-aaaak-ad7rq-cai). However, there is no inherent need to separate the frontend assets into a distinct smart contract. Consolidating to a single architecture simplifies maintenance and administration, particularly if it becomes governed by a governance.

As a result, the frontend canister (xxt4w-7iaaa-aaaak-ad7rq-cai) will be deprecated. Moving forward, the backend canister (cokmz-oiaaa-aaaal-aby6q-cai) will handle both data and asset provision, serving the administration console on the web.

Stable Memory

Given Juno's ownership model, which grants developers full control, the Console maintains minimal data, primarily a list of Mission Control IDs matched to User IDs. This list is used to connect developers with their realms upon logging into the dApp.

Adopting stable memory is recommended, especially as extending the Console with HTTP capabilities involves storing frontend assets in heap memory. Migrating the list of IDs to stable memory not only aligns with best practices but also supports future scalability.

Proposals

To prepare for a potential decentralization, both processes of uploading new assets and releasing WASM (of the Satellite, Mission Control, and Orbiter) have been implemented with a proposal mechanism.

This means that changes won't be applied directly but will first be uploaded to the stable memory, and for each change, a proposal will be generated. This proposal can then potentially be proposed to governance, and if accepted, the changes will only be applied once approved.

Collections and Storage Crates

The Console will inherit the same storage and web capabilities as Satellites. On one hand, these are currently the most powerful asset solutions on the Internet Computer. On the other hand, it makes sense to use the same technology for both, as this allows one to inherit the improvements made for the other.

That is why these related features have been extracted to two new crates, junobuild-collections and junobuild-storage.

Wasm Memory Limit

Based on our experience and developer feedback, we have observed that canisters cannot be upgraded once their heap memory exceeds 1 GB. Consequently, both the CLI and Console UI issue warnings when this threshold is approached. To enforce this limit, any new Mission Control, Satellite, or Orbiter (analytics) will now be created with a 1 GB Wasm memory limit.

Console (Frontend)

The console UI/UX has been improved as follows:

Features

  • Detach Orbiter and Satellite, i.e., remove those segments from the list of managed projects in your Mission Control.
  • Upload assets in the Storage, which is useful to update or edit assets manually.
  • New Chinese translations thanks to @bytesun.
  • Redo the classic rounded spinner.
  • Make the call to action to clear collections more comprehensive.

Style

  • Fix glitchy title appearance.
  • Remove the illustration on the dashboard.

Fix

  • Logo in navigation always points to home.

Satellite

The Satellites have been updated as follows:

Features

  • Prevent using reserved system keywords when creating new collections.
  • Storage and collections features extracted to new crates junobuild-collections and junobuild-storage.

Fix

  • Storage asset owner should not be updated on asset overwrite.

Build

  • Bump DFINITY Rust libraries.

Mission Control

The Mission Control have been updated as follows:

Features

  • Add set_satellite and unset_satellite to support features to attach or detach Satellites.
  • Implement unset_orbiter to allow developers to detach Orbiter (note that attaching was already available).

Build

  • Bump DFINITY Rust libraries.

Orbiter

No changes.

Observatory

No changes.

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.

v0.0.30

09 May 09:41
9c1e4a7
Compare
Choose a tag to compare

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.