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.
๐ 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.
๐ก๏ธ 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
๐ 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.
๐ฆ 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)
<img width="2817" height="2160" alt="notifications" src="https://github.com/user-attachments/assets/cacc8068-072c-4eee-b8f5-8950f47cf2ee" />[!NOTE] All of this runs entirely on the client side, using existing data. No new infrastructure required.
๐งญ 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.
Overview
Module | Version | Breaking changes |
---|---|---|
Console | v0.1.1 | ๏ธ ๏ธ |
Satellite | v0.1.1 | ๏ธ ๏ธ |
Sputnik | v0.1.2 | ๏ธ |
Crates | Version | Breaking changes |
---|---|---|
junobuild-cdn | v0.2.1 | |
junobuild-collections | v0.2.1 | ๏ธ |
junobuild-macros | v0.1.1 | |
junobuild-satellite | v0.2.2 | |
junobuild-shared | v0.2.1 | |
junobuild-storage | v0.2.1 | ๏ธ |
junobuild-utils | v0.1.2 | ๏ธ |
Library | Version | Breaking changes |
---|---|---|
@junobuild/admin | v1.0.0 | โ ๏ธ |
@junobuild/analytics | v0.2.4 | |
@junobuild/cdn | v0.2.3 | โ ๏ธ |
@junobuild/cli-tools | v0.4.1 | โ ๏ธ |
@junobuild/config | v1.0.1 | โ ๏ธ |
@junobuild/config-loader | v0.4.1 | โ ๏ธ |
@junobuild/core | v1.0.3 | |
@junobuild/core-standalone | v1.0.3 | |
@junobuild/did-tools | v0.2.4 | |
@junobuild/errors | v0.1.1 | |
@junobuild/functions | v0.2.6 | |
@junobuild/storage | v0.2.4 |
CLI | Version | Breaking changes |
---|---|---|
@junobuild/cli | v0.7.0 | โ ๏ธ |
Docker | Version | Breaking changes |
---|---|---|
@junobuild/skylab | v0.3.0 | |
@junobuild/satellite | v0.3.0 | |
@junobuild/console | v0.3.0 |
GitHub Action | Version | Breaking changes |
---|---|---|
junobuild/juno-action | v0.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"