Skip to content

Releases: junobuild/juno

v0.0.24

22 Dec 15:41
5cc8c93
Compare
Choose a tag to compare

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

Module Version Breaking changes
Satellite 0.0.14
Orbiter 0.0.4
Console 0.0.8
Library Version Breaking changes
@junobuild/admin v0.0.39
@junobuild/analytics v0.0.15
@junobuild/core v0.0.39
@junobuild/core-peer v0.0.4
@junobuild/ledger v0.0.26
@junobuild/utils v0.0.17
CLI Version Breaking changes
@junobuild/cli v0.0.44
Plugins Version Breaking changes
@junobuild/vite-plugin v0.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.

v0.0.23

25 Nov 09:47
Compare
Choose a tag to compare

Summary

There was an issue in the upgrade process of Orbiter v0.0.3, which was released in the previous version v0.0.21. This bug had the effect of preventing the upgrade from being completed.

This release fixes the issue with PR #343, and the related wasm code available for updating in the CDN has been patched.

The patch has to be applied with the same version number because the upgrade process is not possible in any case.

No data was impacted.

Overview

Module Version Breaking changes
Orbiter 0.0.3

Changes

Here is a list of changes included in this release:

Orbiter

A post_upgrade post-hook has been removed. This hook was originally intended to migrate data from the first version of the Orbiter to its version v0.0.2, which featured a different heap structure. The initial version served as a draft that underwent community discussion, leading to structural changes in the second version.

Library

No changes.

CLI

No changes.

v0.0.22

25 Nov 09:06
Compare
Choose a tag to compare

Summary

There was a bug in the upgrade process of Mission Control v0.0.8, which was released in the previous version v0.0.21. This bug had the effect of unlinking the Analytics Orbiter smart contract from its Mission Control.

To mitigate the propagation of this issue, the wasm code available for update in the CDN has been patched with PR #340, which resolves the problem.

For those developers who upgraded their Mission Control between Friday, November 24th, 16:00 CET, and Saturday, November 25th, 7:45 AM CET, this new release introduces an "Attach analytics" feature. This feature allows controllers to add an existing Orbiter to their Mission Control by providing its ID.

It's worth noting that this new function was already in the roadmap, and it's also worth mentioning that Orbiters were not impacted; the data remains safe. Not too bad, after all! 😅

Overview

Module Version Breaking changes
Mission Control 0.0.9

Changes

Here is a list of changes included in this release:

Console

Features

  • Added a new function to attach existing analytics in case none exist.

Mission control

A new endpoint, set_orbiter (restricted to controllers), has been added to Mission Control. This feature verifies whether the potential orbiter passed as a parameter is controlled by the mission control and exposes the function list_satellite_configs, which is specific to an Orbiter. If both criteria are met, the orbiter is added to the mission control.

Library

No changes.

CLI

No changes.

v0.0.21

24 Nov 14:45
15b5db6
Compare
Choose a tag to compare

Summary

This release introduces numerous enhancements to the hosting features of the Satellite, making it the most powerful hosting smart contract available on the Internet Computer to date. You can explore all the new options in the documentation.

In addition, it brings several new features, including the ability to transfer cycles between your satellites, mission control, and orbiter. The release also introduces the ability to delete satellites and orbiters, rolls out the new atomic functions like setManyDocs and addresses various bug fixes.

Overview

Module Version Notes
Satellite 0.0.13
Mission Control 0.0.8 ⚠️ Contains an issue. Patched in release v0.0.22.
Orbiter 0.0.3 ⚠️ Not upgradable. Patched in release v0.0.23.
Observatory 0.0.4
Library Version Breaking changes
@junobuild/core v0.0.37
@junobuild/core-peer v0.0.2
@junobuild/admin v0.0.37
CLI Version Breaking changes
@junobuild/cli v0.0.43

Changes

Here is a list of changes included in this release:

Console

The console has been improved to support new smart contract features and received various enhancements.

Features

  • Option to delete Satellites and Orbiters.
  • Transfer cycles across Satellites, Orbiters, and Mission controls.
  • Feature to start and stop Orbiters' smart contract (analytics).
  • Top-up, start, and stop segment features have been moved to a popover menu to improve UI readability.
  • A new function allows developers to delete all documents or assets within a collection.
  • The delete document or asset function has also been moved to a popover menu.
  • Chinese translations have been updated.
  • Italian support has been deprecated due to a lack of maintenance. If anyone is interested in maintaining those translations, please reach out.
  • Added the "Analytics" feature to the list of resources displayed when not signed in.
  • Reverted to a more straightforward and simplistic onboarding process when developers create Satellites. The new guides provided on the documentation website are more effective.
  • Reviewed UX to make the monitoring state "enable/disable" more comprehensive.
  • Added a dashboard to the monitor to display when the metrics were last collected and the cycle balances at that time.
  • Inverted the positions of "Analytics" and "Monitoring" in the popover menu, as "Analytics" is probably used more often.
  • Provided information about the "Top 10 pages" in the analytics.
  • Displayed mobile and desktop usages in the analytics.
  • Under a feature flag (not released), initialized some work in the console to make editing document data possible.
  • Updated and added a link to Astro in the guides section.

Fixes

  • Displayed default memory as heap in storage when the Satellite has not yet been upgraded.
  • Fixed an issue where analytics charts were off when no metrics were collected on some days.
  • Improved readability of analytics charts' x-axis when the selected period contained many dates.
  • Filtered out empty referrers in the "Top 10 referrers" section of the Analytics.
  • Displayed a wallet balance of 0 even if no transactions have been executed on ICP. The Index canister threw an exception when no transactions were collected.
  • Instead of displaying empty for a collection set as private, now displays the reason, i.e., that the collection is private.

Refactor

  • Used isNullish and nonNullish from ic-js.

Satellite

The Satellite has undergone significant improvements to enhance its hosting capabilities for the web and developers. It has been upgraded to the second version of the certification specification, enabling the implementation of various new features. Notably, you can now seamlessly set redirects, rewrites, and define HTTP headers. Additionally, once the Internet Computer's service worker is patched or deprecated, the Satellite will even have the ability to automatically rewrite unknown routes to a 404 page if such a file is provided. Discover more about these features in the documentation.

In addition, the Satellite has been enriched with a new deposit feature that supports cycle transfers across segments.

Additional checks have been introduced to prevent controllers from being set as anonymous, and the permission scheme has also been improved with the same logic. Collections set as private, managed, or controlled will no longer accept anonymous data.

Furthermore, the Satellite has been extended with new functions, enabling developers to set many documents (setManyDocs) or delete documents (deleteManyDocs) and assets (deleteManyAssets) atomically.

Additionally, a new endpoint has been added, allowing controllers to delete all documents in a collection.

Finally, two issues related to listing data when using stable memory have been patched.

Mission control

The Mission Control has been expanded with new endpoints and logic to facilitate the deletion of satellites and orbiters. It has also been enhanced with a new deposit feature to support cycle transfers across segments. Both of these features are exclusively available for controllers.

When deleting Satellites or Orbiters, any remaining cycles (minus the amount required for the deletion) will be transferred to your mission control.

Additional checks have been introduced to prevent controllers from being set as anonymous, in cases where an existing controller may inadvertently do so.

Orbiter

The Orbiter, the smart contract used for the Analytics feature, has been enhanced with similar features to those described for the Mission Control.

Observatory

The observatory has been improved to expose the statuses for Juno's console. This enhancement allows developers to access information about the last data collected.

Library

Please refer to the releases for details.

CLI

Please refer to the releases for details.

v0.0.20

27 Oct 06:47
Compare
Choose a tag to compare

Summary

This release introduces the highly anticipated stable memory feature.
For more detailed information, please refer to our documentation at https://juno.build/docs/miscellaneous/memory.

Overview

Module Version Breaking changes
Satellite 0.0.12
Library Version Breaking changes
@junobuild/core v0.0.33
@junobuild/admin v0.0.34
@junobuild/analytics v0.0.11
@junobuild/ledger v0.0.22
@junobuild/utils v0.0.13
CLI Version Breaking changes
@junobuild/cli v0.0.40

Changes

Here is a list of changes included in this release:

Console

Features

  • added support for heap and stable collections
  • introduced a new option to set collection permissions as immutable
  • updated the guides list to include links to the new tutorials published on our website
  • expanded Chinese (zh-ch) translations
  • enhanced user experience by providing more informative messages when a collection is set to private
  • add the top-up orbiter functionality
  • resolved the agent-js issue where the sign-in modal wouldn't open after logging out by automatically reloading the window after logout

Fixes

  • fixed the authentication worker to prevent it from starting when the identity is anonymous

Build

  • bump all dependencies

Library

Please refer to the releases for details.

CLI

Please refer to the releases for details.

v0.0.19

29 Sep 16:22
Compare
Choose a tag to compare

Summary

Several enhancements and new features have been developed for the console's UI, with no changes to the smart contract.

Among those improvements, a minor breaking change has been implemented. The URL /observatory has been deprecated in favor of /monitoring.

Overview

Module Version Breaking changes
No changes
Library Version Breaking changes
@junobuild/core v0.0.32
@junobuild/admin v0.0.33
@junobuild/analytics v0.0.10
@junobuild/ledger v0.0.19
@junobuild/utils v0.0.13
CLI Version Breaking changes
No changes

Changes

Here is a list of changes included in this release:

Console

Features

  • new Wallet tab of your Mission Control (list transactions, real-time sync and export to CSV)
  • stop or start a satellite
  • rename route /observatory into /monitoring
  • export Analytics tracked events to JSON file
  • rename "Submit" to "Configure" in Analytics settings
  • ability to navigate to a particular tab
  • option to skip custom domain deletion in BN
  • prefix displayed ID (Satellite ID, Mission Control ID and Orbiter ID)

Style

  • display a styled underline under page titles

Build

  • review chunking strategy to improve loading performance
  • Web Workers shipped as ESM
  • bump all dependencies including Svelte v4

Library

Please refer to the releases for details.

CLI

No changes.

v0.0.18

21 Sep 13:24
Compare
Choose a tag to compare

Summary

This release aims to launch and publicly introduce Juno Analytics 🚀.

Overview

Module Version Breaking changes
Orbiter v0.0.2 ⚠️

Notes:

  • The Orbiter was available under a flag, so no developers should have used it thus far. As a result, the breaking changes should have no impact on anyone.

  • To launch an Orbiter, which is the smart contract dedicated to analytics, the mission control smart contract's wasm code should be up-to-date with at least its last published version v0.0.7.

Library Version Breaking changes
@junobuild/core v0.0.31
@junobuild/admin v0.0.32
@junobuild/analytics v0.0.9
@junobuild/ledger v0.0.18
@junobuild/utils v0.0.12
CLI Version Breaking changes
@junobuild/cli v0.0.39

Changes

Here is a list of changes included in this release:

Console

Features

  • enable analytics
  • implement version warning and upgrade feature for the orbiter
  • various improvements to launch the analytics
  • display segment ID (satellite ID etc.) on new controller confirmation screen
  • display mission control account identifier on create sallite and orbiter wizard modal
  • sync zh-cn.json
  • review metadata tagline and social image

Build

  • bump ledger libs because of js-sha256 issue with Chrome

Library

Please refer to the releases for details.

CLI

Please refer to related release for details.

v0.0.17

01 Sep 16:06
0354485
Compare
Choose a tag to compare

Summary

This release lays the foundation for an easy-to-use and privacy-friendly alternative to Google Analytics within the Juno ecosystem, specifically on the IC.

While the feature is fully functional, it requires real-world testing, which will be conducted on the mainnet. Consequently, it won't be immediately visible through navigation links within Juno's console. Instead, we will initiate a trial phase during which it will be deployed and tested on Juno's website (https://juno.build). This approach allows us to iterate and refine the solution as needed before making it broadly available, hopefully in the next version.

That's why the mission control smart contract wasm code has been updated. These changes enable mission control to manage the new canisters related to the analytics, which we've named "Orbiters".

Overview

Module Version Breaking changes
Console (Backend) v0.0.7
Console (UI) v0.0.17
Mission control v0.0.7
Observatory v0.0.3
Orbiter 🆕 v0.0.1
Library Version Breaking changes
@junobuild/core v0.0.24
@junobuild/admin v0.0.24
@junobuild/analytics 🆕 v0.0.1
@junobuild/ledger v0.0.11
@junobuild/utils v0.0.5
CLI Version Breaking changes
@junobuild/cli v0.0.38

Changes

Here is a list of changes included in this release:

Console

Features

  • new analytics features (not yet available through the navigation)
  • support for creation and administration (login, upgrade, etc.) of the new canisters "Orbiter"

Build

  • bump Juno's libraries
  • bump agent-js v0.19.2

Mission control

While their features are quite distinct, an "Orbiter" shares some similarities with a "Satellite."

The mission control will manage and provide a list of these new canisters, restrict their access according to the authorization scheme, and allow the administration of their controllers. Additionally, it will facilitate communication of their statuses for the cronjobs that monitor the cycles limit.

Observatory

The observatory, the canister responsible for gathering information about cycle usage, has been extended to support the new orbiter's data.

Library

Please refer to related release for details.

CLI

Please refer to related release for details.

v0.0.16

04 Aug 06:55
Compare
Choose a tag to compare

Summary

Introducing the ability to upgrade satellites and mission controls directly within the Juno's console ("in the browser"), providing an alternative option for users who prefer to use the terminal less frequently. While the CLI upgrade is still available, this new feature enables a seamless upgrade process within the browser.

Additionally, the source for downloading the wasm files used to upgrade the segments has been modified. Previously, the CLI fetched these resources from GitHub. However, starting from this version, both the CLI and console will retrieve the files from Juno's CDN.

No changes to smart contracts' code. No breaking changes.

Overview

Module Version Breaking changes
Console (UI) v0.0.16
Library Version Breaking changes
@junobuild/core v0.0.23
@junobuild/admin v0.0.23
@junobuild/ledger v0.0.10
@junobuild/utils v0.0.4
CLI Version Breaking changes
@junobuild/cli v0.0.37
GitHub Actions Version Breaking changes
buildwithjuno/juno-action v0.0.10

Changes

Here is a list of changes included in this release:

Console

Features

  • in browser upgrade satellites and mission controls
  • sync zh-cn.json with the latest updating

Build

  • add dependency @junobuild/admin
  • bump agent-js v0.18.1

Library

Please refer to related release for details.

CLI

Please refer to related release for details.

GitHub Actions

Please refer to related release for details.

v0.0.15

18 Jul 17:11
Compare
Choose a tag to compare

Summary

This version introduces the ability to edit the names of satellites in the console and also includes a new "rewrite URL" option to enhance the behavior of satellites on the web.

Both the satellite and mission control code are updated.

No breaking changes.

Overview

Module Version Breaking changes
Console (UI) v0.0.15
Satellite v0.0.11
Mission control v0.0.6
Library Version Breaking changes
@junobuild/core v0.0.22
@junobuild/admin v0.0.21
@junobuild/ledger v0.0.9
@junobuild/utils v0.0.3
CLI Version Breaking changes
@junobuild/cli v0.0.36

Changes

Here is a list of changes included in this release:

Console

Features

  • edit satellites' names
  • display a QR-code for the account identifier of the mission control. Handy to transfer ICP with a mobile device.
  • add a copy button next to the mission control ID

Build

  • upgrade dfx v0.14.3

Satellite

Features

  • support for "rewrite" rules to show the same content for multiple URLs. See documentation for more details. Note that in addition to upgrading the satellite, updating the CLI is also required to use this new option.

Mission control

Features

  • expose a set_satellite_metadata endpoint, which is reserved for admin and controllers. This allows developers to edit the names of their satellites in the console.

Library

Please refer to related release for details.

CLI

Please refer to related release for details.

Note: If you wish to define your own "rewrite" configuration, upgrading the CLI is a required.