Skip to content

Releases: junobuild/juno

v0.0.26

08 Feb 11:24
Compare
Choose a tag to compare

Summary

Introducing serverless functions! 🚀

Functions are a set of Rust-based features enabling developers to extend the native capabilities of Satellites. Functions facilitate the creation and management of responsive, serverless behaviors within Satellites. Triggered by specific events like document and asset operations, they allow developers to embed custom logic directly into the blockchain environment.

Explore the documentation for complete details.

Overview

Module Version Breaking changes
Satellite 0.0.15
Library Version Breaking changes
@junobuild/core v0.0.45
@junobuild/core-peer v0.0.10
@junobuild/admin v0.0.45
@junobuild/analytics v0.0.18
@junobuild/ledger v0.0.29
@junobuild/utils v0.0.18
Crates Version Breaking changes
junobuild-satellite v0.0.15
junobuild-macros v0.0.1
junobuild-shared v0.0.13
junobuild-utils v0.0.1
CLI Version Breaking changes
@junobuild/cli v0.0.48
Docker Version Breaking changes
@junobuild/satellite v0.0.7
@junobuild/action v0.0.17

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 following:

Features

  • Support for "stock" and "extended" satellite build type. It displays build type and version but, also adds a prompt in case a developer would try to upgrade an "extended" Satellite with a "stock" build.
  • Add a link to Docker / local development documentation.
  • Add a link to Rust example.
  • When setting up a new custom domain, enter the domain name in the CNAME value, for example, hello.world.com.icp1.io. Previous configurations will remain supported. This update is an improvement.

Build

  • Bump dependencies.

Satellite

A significant update to the Satellite involves refactoring. Its code has been extracted into a Rust crate named junobuild-satellite, and various functions have been relocated or made public (code wise) to support the serverless feature.

Within this library, a new macro has been introduced to enable the inclusion of the satellite in custom projects, and mechanisms for invoking hooks have been added.

Additionally, two new readonly functions, get_asset and get_many_assets, have been made available.

Mission Control

No changes.

Orbiter

No changes.

Observatory

No changes.

Library

Please refer to the releases for details.

Crates

All the published crates are new libraries designed to support the latest serverless features.

For more information, please consult their respective documentation.

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.25

07 Jan 10:22
Compare
Choose a tag to compare

Summary

This release brings improvements to Analytics. Due to the Internet Computer's max ingress message size of 2MB, it was observed that the Analytics dashboard could only display metrics and aggregations for around 11,000 page views within a selected time frame. This limitation was because all views were collected and metrics were calculated on the frontend side. By shifting the calculation to the backend smart contract, the dashboard can now handle displaying metrics for up to 160,000 page views within the limit on the number of instructions. It's important to note that there is still potential for further improvements as these aggregated data are still calculated on the fly for now.

Additionally, the dashboard will now provide usage statistics per browser and fix the calculation of bounce rate.

Overview

Module Version Breaking changes
Orbiter 0.0.5
Library Version Breaking changes
@junobuild/core v0.0.44
@junobuild/core-peer v0.0.9
@junobuild/admin v0.0.44
@junobuild/analytics v0.0.17
@junobuild/ledger v0.0.28
@junobuild/utils v0.0.17
CLI Version Breaking changes
@junobuild/cli v0.0.45
Plugins Version Breaking changes
@junobuild/vite-plugin v0.0.6
Docker Version Breaking changes
@junobuild/satellite v0.0.4
@junobuild/action v0.0.16

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 following:

Features

  • Support for shifting calculation of the dashboard analytics.
  • Fallback on calculation of dashboard analytics on the frontend for Orbiter not migrated.
  • Display analytics usage by browsers.
  • Chinese translations.

Build

  • Use cdn.juno.build to access CDN and to provide notably WASM files used for upgrade purposes.

Satellite

No changes.

Mission Control

No changes.

Orbiter

The Orbiter has been expanded with several functions and endpoints for calculating and aggregating analytics data, which is used for display purposes on the administration console.

These endpoints are accessible to controllers, regardless of whether they have administrator or Read+Write permissions. The existing endpoints for retrieving page views and tracked events are now also accessible to controllers, not just administrators.

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.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.