Releases: junobuild/juno
v0.0.36
Summary
This release focuses on client-side improvements, with no new versions of the modules (smart contracts) included. The Console frontend has been migrated to Svelte v5 (few leftovers for future iterations). A new feature has been added, allowing users to receive ICP from OISY directly within the Console
Overview
Module | Version | Breaking changes |
---|---|---|
---- | ---- |
Crates | Version | Breaking changes |
---|---|---|
---- | ---- |
Library | Version | Breaking changes |
---|---|---|
@junobuild/core |
v0.0.62 | |
@junobuild/core-peer |
v0.0.28 | |
@junobuild/admin |
v0.0.57 | |
@junobuild/analytics |
v0.0.29 | |
@junobuild/storage |
v0.0.7 | ️ |
@junobuild/console |
v0.0.10 | ️ |
@junobuild/utils |
v0.0.26 | ️ |
@junobuild/cli-tools |
v0.0.15 | ️ |
@junobuild/did-tools |
v0.0.3 | ️ |
@junobuild/config-loader |
v0.0.6 | ️ |
CLI | Version | Breaking changes |
---|---|---|
@junobuild/cli |
v0.0.82 |
Docker | Version | Breaking changes |
---|---|---|
@junobuild/satellite |
v0.0.39 | |
@junobuild/console |
v0.0.39 | |
@junobuild/action |
v0.0.33 |
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
- Migrate components to Svelte v5 (few leftovers).
- Receive ICP tokens with OISY using the oisy-wallet-signer relying party client.
- Reload all satellites after attach.
- Use collapsible on Cli login page to "hide" upfront advanced options.
- Use eslint-config-oisy-wallet to ease collaboration.
Fix
- Transaction with memo "Sent" was displayed as "Received".
Build
- Bump Svelte v5.
- Bump Sass.
- Bump Juno libraries to latest.
- Bump Agent-js
v2.1.3
.
Satellite
No changes.
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.
GitHub Action
Please refer to the releases for details.
Docker
Please refer to the releases for details.
v0.0.35
Summary
This release brings two features to the Console: enabling developers to spin up Satellites or Orbiters in the subnet of their choice and adding the ability to send ICP from your wallet to the outside world.
Overview
Module | Version | Breaking changes |
---|---|---|
Console | 0.0.13 | |
Observatory | 0.0.7 | |
Mission Control | 0.0.13 |
Crates | Version | Breaking changes |
---|---|---|
junobuild-satellite |
0.0.20-patch.4 | |
junobuild-storage |
v0.0.11 | ️ |
junobuild-collections |
v0.0.8 | ️ |
junobuild-shared |
v0.0.21 | |
junobuild-utils |
v0.0.4 |
Library | Version | Breaking changes |
---|---|---|
@junobuild/core |
v0.0.61 | |
@junobuild/core-peer |
v0.0.27 | |
@junobuild/admin |
v0.0.56 | |
@junobuild/analytics |
v0.0.28 | |
@junobuild/storage |
v0.0.6 | ️ |
@junobuild/console |
v0.0.9 | ️ |
CLI | Version | Breaking changes |
---|---|---|
@junobuild/cli |
v0.0.80 |
Docker | Version | Breaking changes |
---|---|---|
@junobuild/satellite |
v0.0.38 | |
@junobuild/console |
v0.0.38 | |
@junobuild/action |
v0.0.32 |
Changes
Here is a list of changes included in this release:
Console (Backend)
The Console backend has been improved as follows:
Features
- Allow creating modules in a selected subnet. No new endpoints were added; the argument payload was extended with an optional
subnet
field.
Refactoring
- Adapt code for modules moved to the
shared
crate.
Build
- Bump
ic_cdk
.
Console (Frontend)
The console UI/UX has been improved as follows:
Features
- Add subnet selection under an "Advanced options" accordion in the Satellite and Orbiter creation wizards.
- Display "Subnet ID" in overviews.
- Add a "Send" token feature to the wallet to send ICP to external addresses.
- Redesign the wallet screen and move the receive information (wallet ID, account identifier, and related QR codes) to a popover.
- Add "Attach Satellite" feature and move "Attach Analytics" to Mission Control.
- Introduce a slight delay between closing the upgrade wizard modal and reloading the versions, which may improve a UI race condition.
- Use
https://icp-api.io
instead ofhttps://icp0.io
to instantiate agents on mainnet for consistency. - Sort "Track events" by name in the analytics dashboard.
- Add additional Chinese translations.
Styles
- Better align fields with "Copy" buttons in tables and grids.
Build
- Bump agent-js to
v2.0.0
.
Satellite
No changes.
Mission Control
The Mission Console has been improved as follows. All new features are restricted to Admin controllers.
Features
- Introduce new functions
create_satellite_with_config
andcreate_orbiter_with_config
to create modules in a selected subnet. - Add functions
icp_transfer
andicrc_transfer
to send ICP.
Refactoring
- Adapt code for modules moved to the
shared
crate. - Apply Clippy suggestions.
Build
- Bump
ic_cdk
.
Orbiter
No changes.
Observatory
The Observatory has been improved as follows:
Features
- Prevent anonymous call on crontab functions.
Build
- Bump
ic_cdk
.
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.34
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 |
------- | @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 ofcount_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
andcount_assets
tocount_collection_docs
andcount_collection_assets
. This change was necessary to introduce new functions requested by the community while maintaining a meaningful naming pattern.
Features
- Introduces
count_docs
andcount_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
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
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 ofpic-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
andcreated_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
, andlist_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
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
andjunobuild-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
andunset_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
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 newversion
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 aderivation_origin
is set in the configuration.
Fix
- Preserve (do not delete) the
/.well-known/ic-domains
when the CLI commandjuno 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 newversion
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 newversion
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
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
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 |
Library | Version | Breaking changes |
---|---|---|
@junobuild/core |
v0.0.48 | |
@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 | 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 | |
@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
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.