Skip to main content

v0.0.24

Summary

In addition to various tooling improvements and fixes, this release introduces two significant changes:

  1. The fees for creating new satellites and orbiters were previously fixed at 0.5 ICP ("as constants"). However, in response to the remarkable rise in the coin's market value, this version allows these constants to be manually adjusted.

  2. In response to developer feedback confirming that the heap memory limit for easy satellite upgrades is approximately 1 GB, this version provides more details and warnings to help prevent developers from encountering issues.

These are the major features, but there's also a small surprise: a new Vite plugin as been published, which automatically loads IDs from your project's juno.json file as environment variables.

Merry Xmas! 🎄

A special notes about memory

Please find below some information about memory usage.

Lifecycle and build

The size limit ensuring satellite upgrades is approximately 1 GB.

Building your dapp in a reproducible manner is warmly recommended, both to limit maintenance costs ("cycles") and because project reproducibility is crucial in a DAO. It enables others to verify that your code aligns with proposals. When you follow reproducible practices, only the necessary assets are installed during each deployment, reducing the need to clear previously deployed assets.

However, if you bundle your project in a non-reproducible manner, such as generating new hashes for your files with each build, you may quickly approach the memory threshold. Therefore, it's important to monitor your heap memory consumption closely.

To assist you in this process, the console displays your heap memory usage and issues a warning when it reaches 900 MB.

Similarly, the CLI won't run a deployment without your confirmation if this milestone is reached.

Finally, the CLI now supports a juno deploy --clear flag, allowing you to clean your assets before deploying a new version in a single step. This can be especially useful for developers who frequently generate new resources.

Wasm shrink

When it comes to the heap size, it's crucial to understand that WASM memory cannot shrink. Therefore, even if you delete assets or documents, the displayed memory size will remain the same. The memory is reused but remains allocated.

Additionally, you may observe that the stable memory won't be empty, even if you're not actively using it. This is because it typically consumes around 28 MB of memory for spinning purposes. The stable memory is also utilized to preserve the heap during upgrades.

Overview

ModuleVersionBreaking changes
Satellite0.0.14
Orbiter0.0.4
Console0.0.8
LibraryVersionBreaking changes
@junobuild/adminv0.0.39
@junobuild/analyticsv0.0.15
@junobuild/corev0.0.39
@junobuild/core-peerv0.0.4
@junobuild/ledgerv0.0.26
@junobuild/utilsv0.0.17
CLIVersionBreaking changes
@junobuild/cliv0.0.44
PluginsVersionBreaking changes
@junobuild/vite-pluginv0.0.5

Changes

Here is a list of changes included in this release:

Console (Backend)

Features

As mentioned in the introduction, the fees have been updated to transition from constants to states. This change allows for manual adjustments in response to fluctuations in the ICP market.

No automatic adaptation based on exchange rates has been implemented at this time, as it was deemed not worth the effort.

In light of the fee adjustments, it's also worth noting that the credits have been adapted accordingly. One credit is now equivalent to the creation of one satellite or orbiter, regardless of their respective fees.

Console (Frontend)

The console UI/UX has been improved as following:

Features

  • Adjusted the display of fees and credits during the process of creating segments.
  • Display Satellite and Orbiter memory information separately for heap and storage.
  • Issue a warning when the heap size is greater than or equal to 900 MB.
  • Verify custom domains before providing Satellite deletion information.
  • Added counters about total and pagination for users, datastore, and storage.
  • Show the number of files deployed on the dapp (displayed on the hosting page).
  • Improved the display of the QR code representing the Mission control account identifier.
  • Revised the wording on the CLI login screen.
  • Reduced the minimal TCycles to retain on deletion from 1 to 0.5.

Fixes

  • Adjusted the positioning of CLI titles.
  • Reload orbiter version after an upgrade.

Build

  • Bump agent-js v0.20.2 and use verify signature feature.
  • Bump SvelteKit v2.
  • Bump dfx v0.15.2.
  • Pin II for local development.

Satellite

The Satellite has undergone significant performance improvements, resulting in more efficient listing of documents and assets with fewer clone operations and reduced execution overhead.

Additionally, it now introduces a new feature called get_many_docs, which enables the querying of multiple documents across various collections in a single operation.

The Satellite has also received updates to address two key issues related to its behavior on the web. It now supports URLs with dots, and it has been adapted to accommodate non-encoded URLs, aligning with IC certification requirements. Encoded URLs (e.g., %20 for spaces) should not be used on the IC at this time.

Furthermore, a new feature called memory_size has been introduced, allowing devs to retrieve information about heap and stable memory sizes. Additionally, two new functions, count_docs and count_assets, are now available to controllers, enabling them to determine the size of collections.

Orbiter

The Orbiter was extended to expose a new endpoint memory_size restricted to controllers.

Library

Please refer to the releases for details.

CLI

Please refer to the releases for details.

Plugins

Please refer to the releases for details.