Skip to main content

v0.0.52

Summary

This release introduces several improvements and fixes - the most notable being the recommendation to set a longer freezing threshold (grace period) for your modules.

๐ŸงŠ Freezing Threshold

The Freezing Threshold defines the duration after which a module becomes frozen. It acts as a grace period before permanent deletion.

Previously, when scaffolding a new Mission Control, Satellite, or Orbiter (Analytics), the default threshold was one month. Although the documentation and Console UI explained this and displayed the current grace period status, weโ€™ve concluded that a longer threshold by default is safer.

As of this release:

  • New Mission Control and Satellites will default to a 1-year freezing threshold.
  • New Orbiters (used for analytics) will default to 3 months, since analytics can grow rapidly and may be less critical.

[!IMPORTANT] Existing modules are not migrated automatically - this is something only you, as the controller, can do. However, the Console will now display a recommendation via a new notifications UI component. You can dismiss the tip, but we strongly encourage updating the freezing threshold manually.

๐Ÿ”— Link to documentation

๐Ÿš€ Satellite

Improvements to the Satellite module include:

โœ… Gzipped HTML Pages

A small oversight previously prevented HTML pages from being served gzipped, which could affect load times. This has now been fixed.

In addition to upgrading your Satellites:

  • If you deploy manually, make sure to update your CLI.
  • If you use GitHub Actions, the update will be picked up automatically.

๐Ÿ” Allowed Callers

You can now restrict access to your application using a new feature: Allowed Callers.

Enable this to allow only specific user identities (e.g. bj4r4-5cdop-...) to sign in or use your modules.

  • โŒ Users not on the list canโ€™t even register.
  • โœ… Users on the list can authenticate and use the features (as defined by the permissions).

[!NOTE] Access keys are automatically excluded from the Allowed Callers list. This prevents issues in case an access key is mistakenly added to the list.

๐Ÿ”— Link to documentation

๐Ÿ›ก๏ธ Configuration Versioning

While the Datastore and Storage modules already used versioning to prevent data overwrites, configuration didnโ€™t. That changes now.

It isn't a breaking changes, all tooling has been updated to handle this seamlessly but, worth to note.

๐Ÿ“ฆ Dependencies

While the code hasnโ€™t necessarily been migrated to the new patterns yet, the modules have been upgraded to the latest versions of ic_cdk and stable-structure โ€” two fundamental crates.

๐Ÿ› ๏ธ CLI & Emulator

Several updates improve the local developer experience:

โš ๏ธ Deprecated juno use

The juno use command allowed switching between profiles, which was useful when working with multiple Mission Controls. For example, you might have your own Mission Control for a personal project and another for client work or a team, using something like juno use -p team.

After a quick poll, it turned out the command was rarely used. Since it wasnโ€™t an elegant solution and had become a minor maintenance issue, the command and its approach have been deprecated in favor of a cleaner, stateless configuration model.

New approach:

Instead of use, and similarly to --mode, you can now pass a --profile argument to most commands. The CLI will then create a separate local configuration file (not the juno.config file, the configuration of the CLI itself) based on those parameters.

This way, you can easily switch between environments. For example:

juno deploy --mode development --profile team

๐Ÿ”— Link to documentation

๐Ÿ“ Collections Configuration in Code

Previously, defining collections for Datastore or Storage was only possible through the Console UI.

Now, you can define collections directly in your juno.config file via a new collections field.

Benefits:

  • Configuration lives alongside your source code.
  • Teams can share the same environment setup.
  • Cloning/forking a project just works.

๐Ÿ—‚๏ธ Deprecated juno.dev.config

Thanks to the new collection configuration, the juno.dev.config file (previously only required when using the emulator image junobuild/satellite) is now deprecated.

Whether you use the default Skylab image or the Satellite image, configuration is now unified.

๐Ÿ” juno login --emulator

Previously, juno.dev.config also handled access keys for local development.

Now, simply run:

juno login --emulator --mode development

This works whether you're using the headless image or the default Skylab (with Console UI). A nice shortcut for advanced users.

๐Ÿ”— Link to documentation

๐Ÿ“ฆ Podman

While this feature was released a few weeks ago, it's worth highlighting: in addition to Docker, it is now also possible to use Podman as your container runtime.

During juno dev start, the CLI will prompt you to choose between Docker and Podman if both are available on your system.

๐Ÿ–ฅ๏ธ Console UI

The Console also received some nice upgrades:

๐Ÿ”” Notifications

A new notifications component now highlights warnings and tips, offering quick access to relevant actions.

It currently displays:

  • Upgrade availability
  • Low cycles warning
  • Freezing threshold recommendation (dismissible)

[!NOTE] All of this runs entirely on the client side, using existing data. No new infrastructure required.

<img width="2817" height="2160" alt="notifications" src="https://github.com/user-attachments/assets/cacc8068-072c-4eee-b8f5-8950f47cf2ee" />

๐Ÿงญ Navigation

  • The sidebar menu is now collapsible - useful for maximizing space (or if you just like it better that way).
  • Navbar and tabs have been refreshed with a cleaner design.
<img width="2817" height="2160" alt="nav" src="https://github.com/user-attachments/assets/fff97c07-0766-42ce-8179-3b74863b6401" />

Overview

ModuleVersionBreaking changes
Consolev0.1.1๏ธ ๏ธ
Satellitev0.1.1๏ธ ๏ธ
Sputnikv0.1.2๏ธ
CratesVersionBreaking changes
junobuild-cdnv0.2.1
junobuild-collectionsv0.2.1๏ธ
junobuild-macrosv0.1.1
junobuild-satellitev0.2.2
junobuild-sharedv0.2.1
junobuild-storagev0.2.1๏ธ
junobuild-utilsv0.1.2๏ธ
LibraryVersionBreaking changes
@junobuild/adminv1.0.0โš ๏ธ
@junobuild/analyticsv0.2.4
@junobuild/cdnv0.2.3โš ๏ธ
@junobuild/cli-toolsv0.4.1โš ๏ธ
@junobuild/configv1.0.1โš ๏ธ
@junobuild/config-loaderv0.4.1โš ๏ธ
@junobuild/corev1.0.3
@junobuild/core-standalonev1.0.3
@junobuild/did-toolsv0.2.4
@junobuild/errorsv0.1.1
@junobuild/functionsv0.2.6
@junobuild/storagev0.2.4
CLIVersionBreaking changes
@junobuild/cliv0.7.0โš ๏ธ
DockerVersionBreaking changes
@junobuild/skylabv0.3.0
@junobuild/satellitev0.3.0
@junobuild/consolev0.3.0
GitHub ActionVersionBreaking changes
junobuild/juno-actionv0.4.6

Changes

Here is a list of changes included in this release:

Console (Backend)

The Console backend has been improved as follows:

Features

  • Increased the default freezing threshold when spinning up new modules.
  • Inherited version field added to the Storage configuration.
  • Removed the migration hook used in the previous version.

Build

  • Upgraded ic_cdk to v0.18.
  • Upgraded stable-structure to v0.7.

Console (Frontend)

The Console UI/UX has been improved as follows:

Features

  • Support for Allowed Callers.
  • New in-app local notifications component to display warnings and tips.
  • Integrate warnings about low cycles and available upgrades into the new notifications system.
  • Display tips about the freezing threshold if modules are not yet using a long grace period.
  • Show optional profile as read-only in CLI login.
  • Remove derivation origin question in the custom domain wizard and make it available as an advanced option (used by default if it's the first domain).
  • Collapsible menu.
  • Redesigned tabs and navbar.
  • Add receive and send shortcuts to the wallet widget.
  • Add a custom 404 page.
  • Update the list of subnets.
  • Support for version fields in various configurations.
  • Remove outdated and often unhelpful "Help" links.
  • Clear local storage on sign-out, given the ability to hide notifications.
  • Handle stopped modules when loading versions in the background.
  • Add caching to load module versions and metadata only when required.
  • Improved global loading of additional information.
  • List custom domains in the parent section and improve link display in the overview.
  • Make Top-up and other key actions more prominent to improve UX.
  • Remove guides.

Fixes

  • Update to handle KongSwap API breaking changes for displaying fiat values.
  • Ensure assets uploaded to the #dapp collection are not prefixed with the collection name.
  • Fix scrollbar color in light mode within the menu.
  • Fix docs links overlapping on devices with limited vertical space.
  • Dynamically update the lang attribute of the HTML page.

Build

  • Bump released Juno libraries.
  • Bump development dependencies.

Satellite

The Satellite has been updated as follows:

Features

  • Add Allowed Callers to restrict which identities can register or use features of the Datastore and Storage.
  • Extend authentication, Datastore, and Storage configurations with a version field.
  • Return the persisted configuration when setting authentication, Datastore, or Storage โ€” useful for retrieving the updated version.
  • Remove the upgrade hook from the previous version.

Fixes

  • In Certification v2, all encodings must be certified. This is required to support gzipping HTML pages.

Refactoring

  • Reorganized various packages and files to support new features.
  • Added an assertion context variable to reduce verbosity in some functions.

Build

  • Upgraded ic_cdk to v0.18.
  • Upgraded stable-structure to v0.7.

Mission Control

No changes released in this version.

Orbiter

No changes released in this version.

Observatory

No changes released in this version.

Sputnik

The Sputnik has been updated as follows:

Features

  • Inherited the latest features from the Satellite crate.
  • Updated the Blob polyfill to reflect the latest LLRT changes.

Build

  • Upgraded ic_cdk to v0.18.
  • Upgraded stable-structure to v0.7.

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.

Proxy

Please refer to the releases for details.

Serverless Functions

If you are using Serverless Functions, you can upgrade the following crates accordingly:

[dependencies]
candid = "0.10.14"
ic-cdk = "0.18.5"
ic-cdk-macros = "0.18.5"
junobuild-satellite = "0.2.2"
junobuild-macros = "0.1.1"
junobuild-utils = "0.1.2"