Skip to content

Releases: junobuild/juno

v0.0.34

24 Aug 12:24
Compare
Choose a tag to compare

Summary

This release primarily introduces new performance metrics, the collection of Web Vitals, to the Analytics modules. Additionally, it adds new count documents and assets to the Satellites.

Additionally, a patch for the DFINITY ic_cdk crate has been rolled out across all smart contracts to prevent a potential inherited memory leak (source).

Overview

Module Version Breaking changes
Console 0.0.12
Mission Control 0.0.12
Observatory 0.0.6
Orbiter 0.0.8 ⚠️
Satellite 0.0.20 ⚠️
Crates Version Breaking changes
junobuild-satellite v0.0.20 ⚠️
junobuild-storage v0.0.7
junobuild-collections v0.0.4
junobuild-shared v0.0.18
junobuild-utils v0.0.3
Library Version Breaking changes
@junobuild/core v0.0.59
@junobuild/core-peer v0.0.25
@junobuild/admin v0.0.55
@junobuild/analytics v0.0.27
@junobuild/ledger ------- ⚠️ Deprecated. Use @dfinity/ledger-icp instead.
@junobuild/storage v0.0.5
@junobuild/console v0.0.8
CLI Version Breaking changes
@junobuild/cli v0.0.76
Docker Version Breaking changes
@junobuild/satellite v0.0.31
@junobuild/console v0.0.31
@junobuild/action v0.0.30

Changes

Here is a list of changes included in this release:

Console (Backend)

The Console has been patched to address the ic_cdk issue.

Console (Frontend)

The console UI/UX has been improved as follows:

Features

  • Add performance metrics / web vitals to the Analytics dashboard.
  • Support a new method to enable analytics features in the Orbiter. While it does not yet support granularity to keep the UI simple, it can be extended upon developer request.
  • Use count_collection_docs instead of count_docs on the "Hosting" page. Ensure the Satellite version is checked to prevent backward compatibility issues during the call.
  • Replace the deprecated @junobuild/ledger with @dfinity/ledger-icp.
  • Review the design and content structure of the CLI authentication page.
  • Add a new popover to display custom domain information, including the "BN ID." This is useful for debugging and support purposes.

Styles

  • Fix the display of the link to the Satellite on the overview (increase spacing).
  • Resolve misalignment of the version field in the Mission Control and Orbiter overviews.

Satellite

The Satellites have been updated as follows:

Breaking Changes

  • Rename the endpoints count_docs and count_assets to count_collection_docs and count_collection_assets. This change was necessary to introduce new functions requested by the community while maintaining a meaningful naming pattern.

Features

  • Introduces count_docs and count_assets, which accept the same parameters as their related "list" features but return only the count of matching entries. This can be useful for obtaining a count without transferring a large payload. Internally, these features have potential for improvement as they currently use the same implementation as listing.
  • Improve error messages for collections not found or empty by providing additional context (Datastore or Storage).
  • Patch the ic_cdk to prevent potential memory leak issues.

Mission Control

The Mission Console has been patched to address the ic_cdk issue.

Orbiter

The Orbiters have been updated as follows:

Breaking Changes

  • The upgrade includes automatic type migration and enhances the configuration of Orbiters for greater granularity. Previously, a single "enabled" flag was used per Satellite. Now, it is possible to specify which individual features should be enabled, including the ability to gather specific metrics such as page views, event tracking, and performance metrics.

Features

  • Added support for gathering and aggregating performance metrics using Web Vitals. Web Vitals are essential for measuring user experience metrics accurately, aligning with how they are captured by Chrome and reported to other Google tools. This enhancement is valuable for developers aiming to optimize the UI performance of their applications.
  • Patched the ic_cdk to prevent potential memory leak issues.

Observatory

The Observatory has been patched to address the ic_cdk issue.

Library

Please refer to the releases for details.

CLI

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

17 Aug 12:23
459e05c
Compare
Choose a tag to compare

Summary

This release addresses a non-critical but still annoying issue introduced in the Console with the migration to a single smart contract architecture in version v0.0.31. Specifically, since that release, the resources served by the Console were not being gzipped, causing clients to download larger files and resulting in a slightly slower frontend performance.

Notes

This release is exclusively focused on the Console. No other components have been affected, and therefore, no further documentation for those is required.

Overview

Module Version Breaking changes
Console 0.0.11
Crates Version Breaking changes
junobuild-storage v0.0.5

Changes

Here is a list of changes included in this release:

Console (Backend)

Fix

  • Corrected asset resolution within a single proposal to properly populate encodings for dedicated assets, ensuring that each asset now contains both gzip and identity data.

Console (Frontend)

The console UI/UX has been improved as follows:

Features

  • Revised sign-in subtitle text.
  • Improved the look and feel of the CLI authentication page by using tables to group the information.
  • Splits the application's JavaScript resources into smaller chunks (excluding dependencies) rather than delivering them as a single index chunk.

Styles

  • Ensured the link to Satellite in the overview is not shrunk.
  • Resolved the misalignment of the "Version" information in the Mission Control and Orbiter views.

Fix

  • Correctly configured the Service Worker registration in the Svelte config.

v0.0.32

04 Aug 19:06
Compare
Choose a tag to compare

Summary

While this release includes over 100 commits, it does not introduce major new features. Instead, it focuses on incremental improvements, including enhancements in the Satellites and the addition of useful features in Juno's Console.

This release also finalizes the removal of the CLI tool DFX across the entire Juno ecosystem. DFX was often a proven pain, leading to productivity issues and frustration. Its removal aims to streamline workflows and improve overall efficiency by betting on Juno's custom tooling.

Overview

Module Version Breaking changes
Console 0.0.10 ⚠️
Satellite 0.0.19 ⚠️
Crates Version Breaking changes
junobuild-satellite v0.0.19 ⚠️
junobuild-storage v0.0.4
junobuild-collections v0.0.2
junobuild-shared v0.0.17
junobuild-utils v0.0.2
Library Version Breaking changes
@junobuild/core v0.0.56
@junobuild/core-peer v0.0.22
@junobuild/admin v0.0.53 ⚠️
@junobuild/analytics v0.0.25
@junobuild/ledger v0.0.33
@junobuild/utils v0.0.24
@junobuild/config v0.0.14
@junobuild/cli-tools v0.0.14
@junobuild/config-loader v0.0.5
@junobuild/storage v0.0.3
@junobuild/console v0.0.5
CLI Version Breaking changes
@junobuild/cli v0.0.71
Plugins Version Breaking changes
@junobuild/vite-plugin v0.0.16
@junobuild/nextjs-plugin v0.0.10
Docker Version Breaking changes
@junobuild/satellite v0.0.30
@junobuild/console v0.0.30
@junobuild/action v0.0.26

Note

The above breaking changes are due to the replacement of an endpoint with more granular functions.

Changes

Here is a list of changes included in this release:

Console (Backend)

The Console mostly received changes to adapt to the shared crate updates developed for the Satellites.

The function set_config has been replaced by the more granular function set_storage_config.

Console (Frontend)

The console UI/UX has been improved as follows:

Features

  • Enable smart contract logging in the "Functions" tab.
  • Add a call to action to trigger a "Reload" of the Datastore and Storage.
  • Create and edit documents' data in the Datastore through JSON file uploads.
  • Enhance stop explanation.
  • Add a link to the satellite's default URL or first custom domain in its "Overview."
  • Use en-US native platform formatting for numbers.
  • Fetch and display statistics about the queries of the modules.
  • Fetch and display the settings of the smart contracts (Freezing threshold, heap memory size, etc.).
  • Make these settings editable for any module.
  • Review the display of Satellite, Mission Control, and Orbiter settings to ensure consistency.

Style

  • Resolve Sass deprecation warnings.

Fix

  • The Boundary Nodes no longer send the "Failed" error message as a string.

Build

  • Fix Svelte version field setup to ensure reproducibility.

Chore

  • Add a script and actions to test frontend build reproducibility.
  • Downgrade vitest until the next version of pic-js is released.

Satellite

The Satellites have been updated as follows:

Features

  • Add a new filter to list documents and assets with fields updated_at and created_at.
  • Introduce an optional "max memory size" feature for Datastore and Storage, which, if reached, will disable the new upload of assets and the creation and editing of documents.
  • Ensure key contains caller Principal as text when creating a new user.
  • Expose delete_assets_store, list_docs_store, and list_assets_store for serverless functions.
  • Refactor internal function to create assets and expose a function set_asset_handler that can be used in serverless functions to populate data in the storage on heap or stable memory.

Chore

  • Add Rust documentation for list_docs_store.

Mission Control

No changes.

Orbiter

No changes.

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

27 Jun 09:44
Compare
Choose a tag to compare

Summary

This release of Juno introduces several significant improvements, particularly in the Console, as we prepare for potential decentralization.

Key updates include a shift to a single canister architecture, the implementation of stable memory, and a new proposal mechanism for changes.

Overview

Module Version Breaking changes
Console 0.0.9 ⚠️
Satellite 0.0.18
Mission Control 0.0.11
Crates Version Breaking changes
junobuild-satellite v0.0.18
junobuild-storage v0.0.1 🆕️
junobuild-collections v0.0.1 🆕️
junobuild-shared v0.0.16
Library Version Breaking changes
@junobuild/core v0.0.53
@junobuild/core-peer v0.0.19
@junobuild/admin v0.0.51
@junobuild/analytics v0.0.24
@junobuild/ledger v0.0.32
@junobuild/utils v0.0.22
@junobuild/config v0.0.10
@junobuild/cli-tools v0.0.13
@junobuild/config-loader v0.0.4 🆕️
@junobuild/storage v0.0.1 🆕️
@junobuild/console v0.0.3 🆕️
CLI Version Breaking changes
@junobuild/cli v0.0.68
Plugins Version Breaking changes
@junobuild/vite-plugin v0.0.14
@junobuild/nextjs-plugin v0.0.8
Docker Version Breaking changes
@junobuild/satellite v0.0.29
@junobuild/console v0.0.29
@junobuild/action v0.0.25

Changes

Here is a list of changes included in this release:

Console (Backend)

The Console received the major changes of the release, which are the following:

Single Canister Architecture

Previously, the Console was deployed using two smart contracts: a backend (cokmz-oiaaa-aaaal-aby6q-cai) and a frontend (xxt4w-7iaaa-aaaak-ad7rq-cai). However, there is no inherent need to separate the frontend assets into a distinct smart contract. Consolidating to a single architecture simplifies maintenance and administration, particularly if it becomes governed by a governance.

As a result, the frontend canister (xxt4w-7iaaa-aaaak-ad7rq-cai) will be deprecated. Moving forward, the backend canister (cokmz-oiaaa-aaaal-aby6q-cai) will handle both data and asset provision, serving the administration console on the web.

Stable Memory

Given Juno's ownership model, which grants developers full control, the Console maintains minimal data, primarily a list of Mission Control IDs matched to User IDs. This list is used to connect developers with their realms upon logging into the dApp.

Adopting stable memory is recommended, especially as extending the Console with HTTP capabilities involves storing frontend assets in heap memory. Migrating the list of IDs to stable memory not only aligns with best practices but also supports future scalability.

Proposals

To prepare for a potential decentralization, both processes of uploading new assets and releasing WASM (of the Satellite, Mission Control, and Orbiter) have been implemented with a proposal mechanism.

This means that changes won't be applied directly but will first be uploaded to the stable memory, and for each change, a proposal will be generated. This proposal can then potentially be proposed to governance, and if accepted, the changes will only be applied once approved.

Collections and Storage Crates

The Console will inherit the same storage and web capabilities as Satellites. On one hand, these are currently the most powerful asset solutions on the Internet Computer. On the other hand, it makes sense to use the same technology for both, as this allows one to inherit the improvements made for the other.

That is why these related features have been extracted to two new crates, junobuild-collections and junobuild-storage.

Wasm Memory Limit

Based on our experience and developer feedback, we have observed that canisters cannot be upgraded once their heap memory exceeds 1 GB. Consequently, both the CLI and Console UI issue warnings when this threshold is approached. To enforce this limit, any new Mission Control, Satellite, or Orbiter (analytics) will now be created with a 1 GB Wasm memory limit.

Console (Frontend)

The console UI/UX has been improved as follows:

Features

  • Detach Orbiter and Satellite, i.e., remove those segments from the list of managed projects in your Mission Control.
  • Upload assets in the Storage, which is useful to update or edit assets manually.
  • New Chinese translations thanks to @bytesun.
  • Redo the classic rounded spinner.
  • Make the call to action to clear collections more comprehensive.

Style

  • Fix glitchy title appearance.
  • Remove the illustration on the dashboard.

Fix

  • Logo in navigation always points to home.

Satellite

The Satellites have been updated as follows:

Features

  • Prevent using reserved system keywords when creating new collections.
  • Storage and collections features extracted to new crates junobuild-collections and junobuild-storage.

Fix

  • Storage asset owner should not be updated on asset overwrite.

Build

  • Bump DFINITY Rust libraries.

Mission Control

The Mission Control have been updated as follows:

Features

  • Add set_satellite and unset_satellite to support features to attach or detach Satellites.
  • Implement unset_orbiter to allow developers to detach Orbiter (note that attaching was already available).

Build

  • Bump DFINITY Rust libraries.

Orbiter

No changes.

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