Skip to content

Releases: junobuild/juno

v0.0.30

09 May 09:41
9c1e4a7
Compare
Choose a tag to compare

Summary

This new release contains two breaking changes and several new features.

Important note:

👉 If you are using Analytics, Datastore, or Storage, this release introduces major changes that require you to update the JavaScript libraries of your project simultaneously with upgrading your smart contracts!

Breaking Changes ⚠️

New version field

The major technical change introduced by this release is the decision to correct a design pattern that existed from the very first version of Juno.

Satellites' Datastore and Storage, and later Analytics, were developed to prevent data from being overwritten if the services are used concurrently. In other words, as you would expect from a Web2 SQL service, a user editing the same document on two devices at the same time would be prevented from unexpectedly overwriting data if those are not synchronized with the latest changes. These safeguards were originally based on the updated_at timestamp field. However, while this works in practice, in reality using such a time field could not be as accurate since the time is not guaranteed to be unique within a block. Moreover, this was somewhat an uncommon pattern. That is why this new version preserves the feature but corrects it by introducing a new version field.

This means that once you have upgraded your smart contract, you should also upgrade the JavaScript libraries in the related project, and you might be prompted to replace the updated_at field with the version field.

Disabling https://.raw.icp0.io

Using the .raw. domain is insecure. While this domain has proven useful when the service worker was shipped on the client side, notably for SEO purposes or to access images by bypassing CORS, deferring the validation of certification to prevent malicious actors from hijacking resources to proxies at the boundary nodes (default) or locally, plus using the certification v2 specification, renders its usefulness obsolete. That's why Satellites will now automatically redirect any traffic attempting to access .raw.icp0.io to certified mainnet, icp.io.

New features

Thanks to the recent improvements in Internet Identity, it is now possible to derive origin for sign-in purposes using custom domains, not just icp0.io. This means we are finally able to use "derivation origin" or "alternative origins" to derive the same principal for the same user across multiple custom domains. For example, a user signing in on your custom domain hello.com and a subdomain such as www.hello.com can now be identified with the same principal. This new feature has been introduced in the wizard for setting up new custom domains, and your Satellite takes care automatically of the required configuration. There is currently no feature implemented to apply such an option to an existing domain, but if you wish to do so, you can simply re-add the custom domain. Reach out if you have questions; as always, happy to assist.

Lastly, the Console UI has received some love. The sign-in page has been simplified, the launchpad can list the Satellites with cards or in rows, and the Mission Control and Orbiter (Analytics) have been better integrated to ease their overview and navigation.

Overview

Module Version Breaking changes
Orbiter 0.0.7 ⚠️
Satellite 0.0.17 ⚠️
Observatory 0.0.5 ⚠️
Crates Version Breaking changes
junobuild-satellite v0.0.17 ⚠️
junobuild-shared v0.0.15
Library Version Breaking changes
@junobuild/core v0.0.49 ⚠️
@junobuild/core-peer v0.0.14 ⚠️
@junobuild/admin v0.0.48 ⚠️
@junobuild/analytics v0.0.22 ⚠️
@junobuild/ledger v0.0.32
@junobuild/utils v0.0.21
@junobuild/config v0.0.6 ⚠️
@junobuild/cli-tools v0.0.9
CLI Version Breaking changes
@junobuild/cli v0.0.64 ⚠️
Plugins Version Breaking changes
@junobuild/vite-plugin v0.0.12
@junobuild/nextjs-plugin v0.0.6
Docker Version Breaking changes
@junobuild/satellite v0.0.17 ⚠️
@junobuild/action v0.0.24

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

Features

  • Integrate support for defining a main authentication domain when adding a custom domain.
  • Support for new version field.
  • Redesign login page.
  • Add an option to display the list of Satellites in cards or rows on the launchpad and an option to filter them.
  • Present the Mission Control and Orbiter on the launchpad for easier navigation.
  • Display a summary of the Mission Control, Orbiter, and Wallet in the header of the in-app pages.

Style

  • Bye bye sharp box-shadow.

Fix

  • Fix the "Go back" button, which did not always work.

Build

  • Bump dependencies.
  • Bump agent-js.

Satellite

The Satellites have been updated as follows:

Breaking Changes

  • Replace the updated_at field with the new version field to prevent concurrent overwrites.
  • Deny access to the .raw. domain by redirecting HTTP requests to the certified default domain.

Features

  • Add new authentication configuration options.
  • Automatically generate the /.well-known/ii-alternative-origins asset when a derivation_origin is set in the configuration.

Fix

  • Preserve (do not delete) the /.well-known/ic-domains when the CLI command juno clear is executed.

Build

  • Bump ic-stable-structures to prevent memory leak.

Mission Control

No changes.

Orbiter

Breaking Changes

  • Replace the updated_at field with the new version field to prevent concurrent overwrites.

  • Migrate ic-stable-structures to unbounded. This will enable us to collect more metrics in the future.

Observatory

Breaking Changes

  • Replace the updated_at field with the new version field to prevent concurrent overwrites.

Crates

Changes similar to those of the satellites.

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

29 Mar 16:22
Compare
Choose a tag to compare

Summary

When I finalized the release v0.0.28 by upgrading my own projects, starting with cycles.watch, I unexpectedly felt that I "lost" user and heap data.

It turned out that while the migration test from v0.0.15 to v0.0.16 was successful, extending it to an older version of the satellite, v0.0.11, and changing the default memory from heap to stable resulted not being able to resolve the existing data when performing get or list.

This occurred because the Datastore state logic defaulted to memory.clone().unwrap_or_default() to decide which memory type to use.

Fortunately, this issue was only a bug; no data were actually lost, and patching the previously released Satellite version resolved the problem.

Note: Since I detected the issue while finalizing the release, the Satellite version will not be bumped, and it is still released as v0.0.16.

Overview

Module Version Breaking changes
Satellite 0.0.16
Crates Version Breaking changes
junobuild-satellite v0.0.16-patch.2
CLI Version Breaking changes
@junobuild/cli v0.0.61

Changes

Here is a list of changes included in this release:

Satellite

The Satellites have been updated as follows:

Fix

  • Redo Memory::Heap as default. See PR #481 for more details and related tests that have been extended.

CLI

Please refer to the releases for details.

v0.0.28

29 Mar 13:26
Compare
Choose a tag to compare

Summary

The major change introduced by this release is the decision to use stable memory as the default strategy for new collections in the Datastore and to manage users created for authentication purposes. This change is backward compatible, meaning that existing satellites will not be affected. If you already have users stored on the heap, they will remain on the heap, but any new satellites created will utilize stable memory. The rationale behind this decision is that, although stable memory requires more resources and is therefore more costly, its use helps to avoid issues, especially when a smart contract needs to be upgraded. We will continue to use heap memory to hold the assets (websites and applications) of dApps, but for other types of data, the use of stable memory is advised.

Besides this, the new release introduces new synchronous assertion hooks for serverless functions. This allows developers to check data and files before they are committed within the satellite.

For example:

#[assert_set_doc]
fn assert_set_doc(_context: AssertSetDocContext) -> Result<(), String> {
    Err("They tried to make me go to Rehab".to_string())
}

Finally, and importantly, we are finally able to disable the pin authentication feature of Internet Identity by default, which I consider "insecure" because users can easily lose their login information if they do not register a passphrase. This is particularly concerning as Safari clears the browser cache every two weeks in cases of inactivity. Hence, we disable it by default.

Overview

Module Version Breaking changes Patch
Mission Control 0.0.10
Orbiter 0.0.6
Satellite 0.0.16 ⚠️ Patched in release v0.0.29
Library Version Breaking changes
@junobuild/core v0.0.48 ⚠️ II pin auth disabled per default
@junobuild/core-peer v0.0.13
@junobuild/admin v0.0.47
@junobuild/analytics v0.0.21
@junobuild/ledger v0.0.31
@junobuild/utils v0.0.20
@junobuild/config v0.0.5 ⚠️ Types for juno.dev.config reviewed
Crates Version Breaking changes
junobuild-satellite v0.0.16-patch.1
junobuild-macros v0.0.12
junobuild-shared v0.0.14
CLI Version Breaking changes
@junobuild/cli v0.0.60
Docker Version Breaking changes
@junobuild/satellite v0.0.14 ⚠️ Inherit reviewed types
@junobuild/action v0.0.23

Changes

Here is a list of changes included in this release:

Console (Backend)

Not a code change, but WASM of the Satellite, Mission Control, and Orbiter will now be gzipped before being uploaded to the console.

Console (Frontend)

The console UI/UX has been improved as follows:

Features

  • Introduce a new section Functions which displays the logs of the Satellite and, in the future, those of the IC as well.
  • Add a cycles consumption chart on the Satellite, Mission Control, and Analytics pages.
  • Set stable memory as default for the creation of new Datastore collections.
  • Support new "max capacity" option for Datastore collections.
  • Prevent the usage of revoked principals as an additional sign-in function.
  • Update tagline and social image.

Style

  • Improve icons for dark mode.
  • Update a few icons with new assets provided by Didier.

Fix

  • Ed25519KeyIdentity.generate generates the same principal every time (agent-js incident treated as a hotfix).
  • Incorrect period start date for analytics filter.

Build

  • Bump agent-js security patch.
  • Bump to agent-js v1.2.0.

Satellite

The Satellites have been updated as follows:

Features

  • Add a list of revoked controllers - currently, and hopefully in the future, only 535yc-uxytb-gfk7h-tny7p-vjkoe-i4krp-3qmcl-uqfgr-cpgej-yqtjq-rqe - for which access and calls should be rejected.
  • New option "max capacity" for Datastore's collection. For example, if a capacity is set to 100 and the collection contains 100 documents, adding a new document will result in one document being removed before adding the new one. It's up to the developer to provide keys that can be sorted.
  • Stable memory set as the default option for a new collection of the Datastore.
  • Stable memory set as the default memory to handle users created for authentication.

Fix

  • owner should remain consistent in Datastore - e.g., if existing data is updated by a controller, the owner should remain set to the original user that created the entry and not be modified with the controller ID.

Mission Control

Inherits the check to decline access to revoked controllers.

Orbiter

Inherits the check to decline access to revoked controllers.

Observatory

No changes.

Library

Please refer to the releases for details.

Crates

For the documentation, please consult their respective documentation.

Features

  • In addition to hooks, provide developers with assertion hooks that can be called synchronously before documents and files are committed or deleted within the Satellite. This allows developers to extend the native rules with more checks.
  • Introduce log (info, debug, warning, and error) features which can be used for Serverless Functions development. Logs are saved in stable memory and limited to 100 entries.

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

08 Feb 12:28
Compare
Choose a tag to compare

Summary

In release v0.0.26 , the access control guard for the memory_size function of the Satellite was mistakenly changed from caller_is_controller to caller_is_admin_controller. This modification, a stronger rule, could cause GitHub Actions that use controllers with Read+Write permissions to fail, as the endpoint is accessed by the CLI (evident in the failed deployment of the website: (see failing deploy of the website: https://github.com/junobuild/docs/actions/runs/7829161014/job/21360561407).

Considering that most users likely have not updated their smart contracts yet, and given that the WASM can be manually re-upgraded using the CLI, this version resolves the issue and releases the update under the same version number.

In the future, I will announce releases in advance to provide a window for necessary adjustments.

Overview

Module Version Breaking changes
Satellite 0.0.15
Crates Version Breaking changes
junobuild-satellite v0.0.15-patch.1
CLI Version Breaking changes
@junobuild/cli v0.0.49

Changes

Here is a list of changes included in this release:

Console (Backend)

No changes.

Console (Frontend)

No changes.

Satellite

Function memory_size guard was set back to caller_is_controller - i.e. function can be accessed by ADMIN and Read+Write controllers.

Mission Control

No changes.

Orbiter

No changes.

Observatory

No changes.

Library

No changes.

Crates

No other changes than the one required for the Satellite.

CLI

Please refer to the releases for details.

Plugins

No changes.

GitHub Action

No changes.

Docker

No changes.

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.