Releases: junobuild/juno
v0.0.49
Summary
This release formalizes a delivery focused on frontend changes in the Console.
The most noticeable change is a rework of the "Monitoring" section, which now provides clearer information about the status of your modules.
We now fetch memory metrics directly from the Internet Computer management interface. This gives more granular data, which is now displayed. A new polar diagram has also been added to show where most of the data is stored.
This update also introduces a new "Health Check" section, which explains when and why a module can become frozen during its grace period. The goal is to help anticipate such events.
In relation to this, the presentation of the "auto-refill threshold" was improved, as the previous wording was misleading. Auto-refill doesn’t trigger when the threshold alone is reached, but when enough cycles are available to cover both the grace period and the threshold. This is now referred to as the "threshold trigger".
Overview
Note
No new versions of the modules (smart contracts), crates or libraries included.
Changes
Here is a list of changes included in this release:
Console (Frontend)
The console UI/UX has been improved as follows:
Features
- Use ICP management to fetch memory metrics.
- Make a few types non-optional.
- Review the common Monitoring section.
- Implement the "Health Check" group.
- Revise auto-refill wording and improve the description of "Freezing Threshold" and "Grace Period".
- Change tabs from buttons to links to improve accessibility.
- Improve the step related to the primary domain in the Hosting wizard for authentication.
- Migrate upload components to Svelte v5.
Fixes
- Cap Analytics pagination periodicity if the period is longer than the selected range.
- Fix issue where today was not included in the Analytics period when fetching data.
Refactoring
- Move and rename Monitoring components to accommodate changes.
v0.0.48
Summary
This release introduces a significantly enhanced approach to the Analytics.
Native HTTP requests
Analytics data is now collected via native HTTP request update instead of custom API endpoints. This change enables:
- Removal of web workers and IndexedDB usage in the JavaScript client.
- A lighter and faster JS library, now under 3KB gzipped (over 90% smaller).
- Reduced complexity for developers integrating analytics (e.g. no web worker to copy).
⚠️ Restricted Endpoints ⚠️
Previous analytics endpoints are still available but are now restricted to controllers.
Caution
You must upgrade both your Orbiter and JS library at the same time.
While this could have shipped at a later stage, it makes sense to provide it now as this release is dedicated solely to Analytics.
More Data supported by the Dashboard
The analytics dashboard now supports paginated data fetching to work around execution limits that previously capped visible page views at ~70k. Developers can now choose time ranges like:
- A month
- A week
- 1 day
- Half a day
- 8 hours
- 4 hours
Important
Use pagination wisely more granular queries can add load to both the Orbiter and the UI. Stick to the default if possible.
Dashboard UI Enhancements
The dashboard received a visual refresh and also includes new insights:
- Top 10 time zones
- Operating systems used by visitors (if opted-in)
A new feature to export page views has also been added.
Upgrading your App
Upgrading the Orbiter can be done as usual. To upgrade your frontend to use the new lightweight analytics client:
npm rm @junobuild/analytics && npm i @junobuild/analytics
You can also safely remove any postinstall
scripts and the related web workers code you may have added to your static folder, they are no longer needed and won't be used anymore.
Also note that initOrbiter
is no longer asynchronous and can now be called without await.
// Previously
await initOrbiter();
// New
initOrbiter();
Documentation
The documentation has been updated to reflect these changes. You can find the latest usage and integration guide for the new analytics system here:
👉 https://juno.build/docs/build/analytics/
Overview
Module | Version | Breaking changes |
---|---|---|
Orbiter | v0.2.0 |
Crates | Version | Breaking changes |
---|---|---|
junobuild-storage |
v0.1.1 | ️ |
junobuild-collections |
v0.1.1 | ️ |
junobuild-shared |
v0.1.1 |
Library | Version | Breaking changes |
---|---|---|
@junobuild/core |
v0.1.12 | |
@junobuild/core-standalone |
v0.1.12 | |
@junobuild/admin |
v0.2.1 | |
@junobuild/analytics |
v0.2.0 |
CLI | Version | Breaking changes |
---|---|---|
@junobuild/cli |
v0.2.16 |
Plugins | Version | Breaking changes |
---|---|---|
@junobuild/vite-plugin |
v3.4.0 | |
@junobuild/nextjs-plugin |
v3.4.0 |
Docker | Version | Breaking changes |
---|---|---|
@junobuild/skylab |
v0.0.55 | |
@junobuild/satellite |
v0.0.55 | |
@junobuild/console |
v0.0.55 |
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
- Collect page views, track events, and performance metrics with time-based pagination.
- Add an option to specify the pagination length (month, week, day, etc.). Default set to a month.
- Save analytics filter (
from
/to
) in session. This way, navigating away and returning to analytics restores the previous timeframe. - Display top 10 time zones.
- If opted-in, display operating system metrics.
- Integrate chart and review summary of the analytics presentation.
- Format analytics metric numbers with thousands separators.
- Add visual progression indicators for tracked metrics.
- Export page views.
- Gzip exported page views and tracked events.
- Performance metrics are now disabled by default in the options list (if not yet activated).
Fix
- The "Copy" Satellite ID call-to-action in the Orbiter configuration modal was incorrectly submitting the form on click. This has been fixed.
Styles
- Redo narrow
main
max-width for the launch page and CLI screens.
Refactoring
- Move and rename various modules for better readability and file structure organization.
Build
- Update dependencies.
Satellite
No changes released in this version.
Mission Control
No changes released in this version.
Orbiter
The Orbiter has been updated as follows:
Breaking Changes ⚠️
- API endpoints
set_page_view
,set_page_views
,set_track_event
,set_track_events
,set_performance_metric
, andset_performance_metrics
are now restricted to controllers.
Features
- Implement a new HTTP request system using
http_request_update
for persistence to collect metrics. The API responds with:404
for unknown requests400
when incorrectly formatted data is submitted403
when data is collected for a Satellite ID where the feature is not enabled405
when unsupported methods (non-POST) are used on metrics endpoints200
for valid POST requests on/view
,/views
,/event
,/events
,/metric
, and/metrics
when data is successfully collected and persisted
- Provide time zone statistics including a top 10 list based on page views.
- Device metrics now prioritize screen size to infer client type. If unavailable, it falls back to user-agent parsing; if that fails, it reverts to legacy methods.
- If available, metrics for operating systems used by clients are now included.
- Preliminary support added for specifying a restricted origin per Satellite ID. Once supported by boundary nodes, this will allow for specific CORS headers instead of
*
.
Refactoring
- Move crates and types to align the codebase with the newly added features and structure.
Build
- Use the
ic-http-certification
crate to provide certified HTTP capabilities.
Features
Observatory
No changes released in this version.
Sputnik 🆕
No changes released in this version.
Library
Please refer to the releases for details.
CLI
Please refer to the releases for details.
Plugins
Please refer to the releases for details.
Templates
Please refer to the create-juno and satellite-template releases for details.
GitHub Action
Please refer to the releases for details.
Docker
Please refer to the releases for details.
Proxy
Please refer to the releases for details.
v0.0.47
Summary
This release introduces support for writing serverless functions in TypeScript. Developers can now choose between Rust and TypeScript for backend logic, with both approaches designed to follow a similar structure and API surface. Switching between the two, or migrating over time, should feel intuitive.
More details are available in the documentation, reference and guides.
It also marks a shift in focus toward local-first development. While previous versions defaulted to building directly against production, this release encourages starting locally. To support this, a new Docker image called Skylab has been introduced. It bundles everything needed for local development—including the Console UI—offering a setup that closely mirrors the mainnet experience.
Finally, this release prepares for the removal of the version()
and build_version()
endpoints in all modules. Instead, each WASM now includes a public juno:package
custom section containing metadata such as the module’s name, version, and dependencies.
For example:
{
"name": "@junobuild/satellite",
"version": "0.0.22"
}
And if extended by a developer:
{
"name": "test-satellite",
"version": "0.0.1-test",
"dependencies": {
"@junobuild/satellite": "0.0.22"
}
}
This new approach is more flexible and opens the door to features like module templates or fine-grained dependency management.
Note
No new versions of the modules included.
Overview
Module | Version | Breaking changes |
---|---|---|
Sputnik | 0.1.0 | 🆕 ️ |
Crates | Version | Breaking changes |
---|---|---|
junobuild-satellite |
v0.1.0 | version() deprecated) |
junobuild-storage |
v0.1.0 | ️ |
junobuild-collections |
v0.1.0 | ️ |
junobuild-shared |
v0.1.0 | |
junobuild-macros |
v0.1.0 | ️ |
junobuild-utils |
v0.1.0 | ️ |
Library | Version | Breaking changes |
---|---|---|
@junobuild/core |
v0.1.11 | |
@junobuild/core-standalone |
v0.1.11 | |
@junobuild/admin |
v0.2.0 | |
@junobuild/analytics |
v0.1.8 | |
@junobuild/functions |
v0.1.0 | 🆕 |
@junobuild/storage |
v0.1.7 | ️ |
@junobuild/console |
v0.1.7 | ️ |
@junobuild/cli-tools |
v0.1.9 | |
@junobuild/config |
v0.1.6 | |
@junobuild/config-loader |
v0.2.1 | |
@junobuild/utils |
v0.1.3 | ️ |
@junobuild/errors |
v0.0.7 |
CLI | Version | Breaking changes |
---|---|---|
@junobuild/cli |
v0.2.14 |
Plugins | Version | Breaking changes |
---|---|---|
@junobuild/vite-plugin |
v3.3.0 | |
@junobuild/nextjs-plugin |
v3.3.0 |
Templates | Version | Breaking changes |
---|---|---|
create-juno | v0.4.1 | |
satellite-template | v0.0.5 | |
observatory-templates | v0.0.3 |
Docker | Version | Breaking changes |
---|---|---|
@junobuild/skylab |
v0.0.55 | 🆕 |
@junobuild/satellite |
v0.0.55 | |
@junobuild/console |
v0.0.55 | |
@junobuild/action |
v0.1.0 |
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
- Load version and dependency information using the new custom section
juno:package
(with fallback to previous methods for backward compatibility). - Mark
version()
andbuild_version()
as deprecated. - Extend the store to handle version data and introduce a corresponding component loader.
- Use the full window width for the Functions page.
- Display logs for which the level is unknown with related level instead of "Error".
- Update the list of subnets.
- Convert environment constants (e.g.,
dev
,prod
) into functions to improve testability. - Hide the navbar on scroll.
- Review and update guides and related links.
Development-Only Features
- Add a "Get ICP" button to the Wallet.
- When creating a new module (Satellite or Orbiter), fetch the emulator identity and attach it as a controller.
- Introduce a new
SKYLAB
environment used to run the Console UI locally and toggle features specific to the containerized development environment. - Display a "DEV Console" banner when the Console is running locally.
- Skip calls to the BN if the relevant environment variables are not set.
Styles
- Increase the main content max width to 1440px for better support on most devices (especially laptops with 1920px resolution).
- Display version information as tags.
Build
- Update dependencies.
Satellite
No changes released in this version.
Mission Control
No changes released in this version.
Orbiter
No changes released in this version.
Observatory
No changes released in this version.
Sputnik 🆕
Sputnik is a new module introduced in this release.
It extends the default Satellite module and reuses the same system of hooks and assertions. Rather than functioning as a standalone module, it acts primarily as a proxy, delegating execution to the serverless functions written by the developer.
In other words, it cannot be used on its own but serves as a runtime for custom logic.
Library
Please refer to the releases for details.
CLI
Please refer to the releases for details.
Plugins
Please refer to the releases for details.
Templates
Please refer to the create-juno and satellite-template releases for details.
GitHub Action
Please refer to the releases for details.
Docker
Please refer to the releases for details.
Proxy
Please refer to the releases for details.
v0.0.46
Summary
This release formalizes a few improvements delivered to the frontend in the Console. On one hand, "Backup" has been renamed to "Snapshot" because, strictly speaking, these are not true "Backups" (see documentation). Additionally, collections are now sorted alphabetically.
It also includes changes in the Satellite crate, which is currently shipped only as a patch and does not require any particular updates, as it contains improvements for ongoing development within Juno.
Overview
Note
No new versions of the modules (smart contracts) or libraries included.
Crates | Version | Breaking changes |
---|---|---|
junobuild-satellite |
0.0.22-patch.5 | |
junobuild-macros |
v0.0.5 |
Changes
Here is a list of changes included in this release:
Console (Frontend)
The console UI/UX has been improved as follows:
Features
- Rename "Backup" to "Snapshot".
- Sort collections alphabetically.
- Sort the list of satellites in the navigation switcher.
- Update the Subnets list.
Refactoring
- Clean up rules context by extracting a common utility, adding some derived stores, and moving a loader.
Styles
- Make the header opaque on scroll.
Satellite (Crate)
The Satellite crate library has been improved as follows:
Features
- Expose additional document-related types for backend-side development.
- Add new system hooks:
on_init_sync
,on_post_upgrade_sync
, andon_init_random_seed
. - Expose a system function:
register_polyfill_memory
.
Note: These new system functions should ideally not be used by developers.
Refactoring
- Group randomness features within a single module.
- Split hooks into submodules.
- Move memory declaration to a dedicated submodule.
- Move and export all related serverless functions to an SDK module.
Build
- Set up a
config.toml
at the root of the repo to fix the documentation publication issue on docs.rs (related togetrandom_backend
). - Fix the build toolchain error:
'1.85.0-x86_64-unknown-linux-gnu' is not installed
.
v0.0.45
Summary
This release primarily formalizes a delivery focused on frontend changes in the Console.
Firstly, Internet Identity now supports passkeys on both of its domains. This means it no longer matters whether you or your users sign in via identity.internetcomputer.org or identity.ic0.app—the registered identity should work seamlessly across both.
There are a few limitations, which is why II may prompt you to register your current device. However, today marks the end of the period when both domains were incompatible, causing sign-in issues for some users.
As a result, a new, clean sign-in page with a single call to action has been released.
If you experience any sign-in issues, you can still access the domain-specific method. Plus, if you scroll down on the login page, you’ll find a brand-new footer—kind of happy with that design!
Lastly, all frontend dependencies have been updated, and a new way to polyfill Node libraries had to be implemented since some plugins we were using were deprecated. The codebase was also migrated to ESLint v9.
Overview
Note
No new versions of the modules (smart contracts), crates or libraries included.
Changes
Here is a list of changes included in this release:
Console (Frontend)
The console UI/UX has been improved as follows:
Features
- Implement a new login page and footer for II cross-domain support, simplifying the UI/UX.
- Update the list of subnets.
- Add a new derived store
$authNotSignedIn
.
Build
- Bump all dependencies.
- Replace Node polyfill.
Chore
- Migrate to ESLint v9.
v0.0.44
Summary
This new release wasn’t strictly scheduled for today, but funnily enough, it marks Juno’s second anniversary. Happy two years! 🥳
Making your applications secure and resilient is one of Juno’s core missions. While this release might not seem to introduce many visible changes—no new endpoints, for example—several improvements have been made under the hood, particularly in user management for your Satellites.
Notably, the default technical collection that synchronizes user data has been modified to reject updates unless provided by the controller. This allows for extending it with new administrative attributes, enabling features such as banning (or unbanning) users in your dApps. Banned users will no longer be able to retrieve, create, update, or delete any documents. Note that users can still delete their own subscription if they choose to.
Similarly, collections in Datastore and Storage now include a new logical attribute that lets you define a maximum number of changes (create, edit, delete) per user. This is particularly useful for preventing spam and excessive data generation. For example, in an app where users create posts, you can limit them to a maximum of 10,000 posts, preventing bad actors from generating millions of unnecessary entries.
Lastly, a new configuration option for authentication has been introduced, which can be useful if you want to reuse the same derivation origin across multiple Satellites.
Important
When updating your Satellite, if you use Datastore and Storage, we strongly recommend updating to the latest JavaScript libraries in your dApps as well.
Overview
Module | Version | Breaking changes |
---|---|---|
Satellite | 0.0.22 |
Crates | Version | Breaking changes |
---|---|---|
junobuild-satellite |
v0.0.22 | |
junobuild-storage |
v0.0.15 | ️ |
junobuild-collections |
v0.0.11 | ️ |
junobuild-shared |
v0.0.24 | |
junobuild-macros |
v0.0.4 | ️ |
Library | Version | Breaking changes |
---|---|---|
@junobuild/core |
v0.1.7 | |
@junobuild/core-standalone |
v0.1.7 | |
@junobuild/admin |
v0.1.5 | |
@junobuild/analytics |
v0.1.2 | |
@junobuild/storage |
v0.1.3 | ️ |
@junobuild/console |
v0.1.4 | ️ |
@junobuild/cli-tools |
v0.1.1 | |
@junobuild/config |
v0.1.1 | |
@junobuild/config-loader |
v0.1.1 | |
@junobuild/utils |
v0.1.0 | |
@junobuild/errors |
v0.0.4 | 🆕 |
CLI | Version | Breaking changes |
---|---|---|
@junobuild/cli |
v0.1.5 |
Plugins | Version | Breaking changes |
---|---|---|
@junobuild/vite-plugin |
v0.0.19 | |
@junobuild/nextjs-plugin |
v0.0.13 |
Templates | Version | Breaking changes |
---|---|---|
create-juno | v0.1.11 | |
satellite-template | v0.0.4 | |
observatory-templates | v0.0.3 |
Docker | Version | Breaking changes |
---|---|---|
@junobuild/satellite |
v0.0.46 | |
@junobuild/console |
v0.0.46 | |
@junobuild/action |
v0.0.38 |
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
- Support new collection option "Max changes per user" – i.e. make the field editable in collections.
- Add the ability to ban (or unban) users.
- Introduce a new modal that displays user details.
- Display changes made by both users and collections.
- Show a warning when max usage is reached.
- Support the new external alternative origins configuration option.
- Add a "Copy" function in the navbar for quick access to Wallet IDs.
- Migrate remaining collections to Svelte v5.
- Sort domains by
created_at
. - Move the memory selection to the advanced options in collections.
Styles
- Fix launchpad cockpit overflow on mobile.
- Fix canister row display in monitoring.
- Review collapsible icons and alignment.
- Ensure "error" text has white contrast for better readability.
- Fix modal height on iOS.
- Use only monochrome icon logos for II and NFID.
- Improve the layout of "More options" by centering the call to action.
Fixes
- Fix USD value not displaying in production due to KongSwap API changes.
- Ensure toasts close automatically after timeout (Svelte v5 migration issue).
- Prevent default strategy from being used if monitoring is disabled when creating modules.
- Show submit button when a collection is set as immutable.
Build
- Update dependencies.
- Adapt Vitest reporters due to classic deprecation.
Satellite
The Satellite has been updated as follows:
Breaking Changes
- Disallow users from editing their entries in the technical system collection
#user
. - Modify error messages to improve their structure in the form of a standardized namespace.
Features
- Track (anonymous) user usage per collection. In other words, every change made by users to collections (except system collections) will be counted (and capped to avoid overflow). This requires the introduction of a new system collection
#user-admin
. - Delete entries in
#user-admin
when a user is deleted. - Implement assertions that prevent users from making any changes (create, edit, or delete) in the Datastore or Storage if the collection option "Max changes per user" is reached.
- Introduce a new banned flag field within user data.
- Implement guards to prevent banned users from querying or making any changes in the Datastore or Storage.
- Improve user data validation by introducing deserialization assertions.
- Add optional external alternative origins support to the authentication configuration.
Refactoring
- Use store function to
get_controllers
in guards. - Rename
inner()
tointo_inner()
. - Move various modules, functions, and constants to improve the structure of the crates and, by extension, their maintainability.
Build
- Bump all dependencies.
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.
Templates
Please refer to the create-juno and satellite-template releases for details.
GitHub Action
Please refer to the releases for details.
Docker
Please refer to the releases for details.
Proxy
Please refer to the releases for details.
Repo Tooling
The local development tools of this repo and pipelines have been updated as follows.
Features
- Introduce the flag
--cfg getrandom_backend="custom"
required bygetrandom
in all build scripts. - Simplify
touch
in the Docker build. - Refactor the workspace to group tests and introduce
test_satellite
as a fixture that uses Serverless Functions.
Build
- Bump Rust version.
Serverless Functions
If you are using Serverless Functions, you can upgrade the following crates accordingly:
[dependencies]
candid = "0.10.13"
ic-cdk = "0.17.1"
ic-cdk-macros = "0.17.1"...
v0.0.43
Summary
This new release contains only frontend changes to the Console, with little visual improvements. Some of the changes are related to maintenance, while others aim to optimize loading monitoring, memory usage, and module statuses.
Overview
Note
No new versions of the modules (smart contracts), crates or libraries included.
Changes
Here is a list of changes included in this release:
Console (Frontend)
The console UI/UX has been improved as follows:
Features
- Sort the list of satellites alphabetically to maintain consistency in the order on the launchpad.
- List only the running modules when creating monitoring and on the CLI login page. Monitoring cannot be activated for a stopped module, and a controller cannot be attached to a stopped module.
- Prevent Satellites and Orbiters from being stopped or deleted if monitoring has not been disabled.
- Cleaner navigation without
/?s=
in the URL when no satellite is selected. - Remove spinner status sync. Over time, this indication has lost meaning since other real-time values were updated without a particular loading animation.
- Create loaders for loading module-synced data (status, memory, etc.) and monitoring. This aligns and cleans up the loading process by creating a wrapper loader declared a single time around an entire view instead of being nested.
- For the same reasons, create stores to provide values within the application. These are actually duplicated to provide two ways to retrieve the information: one being updated per canister and another store being updated in bulk when all data is available. This aims to reduce the number of re-renders if necessary.
- Display ICP up to 8 decimal places (instead of a maximum of 4).
- Update the list of subnets.
- Improve and review types with more Zod schemas.
- Migrate deprecated
$page
derived store to SvelteKit/Svelte v5. - Increase
agent-js
retry attempts to 10 to address the random issueInvalid basic signature: EcdsaP256 signature could not be verified
thrown by the library or the IC after modules are created.
Fixes
- The assertion of the maximum amount that could be used was incorrectly adding the fees to the balance instead of reducing them.
- Empty subnet type incorrectly displayed.
Styles
- Improved backdrop blur effect.
- Fixed trimmed Mission Control status indicator on the launchpad when the screen is a few pixels wider than the large breakpoint.
Refactoring
- Various refactoring of naming and moving modules for readability.
- Use
fromNullishNullable
from DFINITY utils instead of a custom implementation.
Build
- Bump DFINITY libraries (
ledger-icp
,ledger-icrc
,signer
, etc.). - Bump all development dependencies (Svelte, Vite, etc.).
- Add DFINITY Zod schemas.
- Resolve SvelteKit breaking changes by adding a
svelte-kit sync
as aprepare
script. - Resolve Vitest deprecation when timeout is set as the third parameter.
Chore
- Fix typo in comments.
- Run test suites in CI when
package-lock.json
is changed as well.
v0.0.42
Summary
This new release is dedicated solely to improving the wallet and enhancing the related user experience in the Console. Therefore, it contains only frontend changes in the related dapp.
The most notable improvement is that the wallet balance is now displayed in dollars, thanks to our friend at KongSwap for providing a (Web2) endpoint to fetch the USD exchange value for ICP. This enhancement makes it easier to understand the value of funds at a glance, particularly for newcomers in the crypto sphere.
In addition, the wallet now caches public information, such as the balance and recent transactions, in IndexedDB, which is cleared upon logout. This change improves the ux by making the interface snappier, especially during reloads.
The number of calls to load the balance has been reduced, and a few update calls have been added to improve the certification of the displayed data, ensuring more secure information.
Overview
Note
No new versions of the modules (smart contracts), crates or libraries included.
Changes
Here is a list of changes included in this release:
Console (Frontend)
The console UI/UX has been improved as follows:
Features
- Display wallet balance in dollars.
- Cache the dollar exchange value and refresh it periodically. If the timestamp is too far in the past, display the balance in its native cryptocurrency, ICP, instead of dollars.
- Review the top-up wizard in terms of design and experience, making it consistent with the rest of the application, notably with the introduction of a review step.
- Review the sending ICP wizard for the same reason, ensuring consistency with the addition of a progress component and a review step.
- Review the transfer cycles modal with similar improvements as above.
- Cache the wallet in IndexedDB for a snappier UI/UX. The store is cleared on logout.
- Reload credits (if necessary) after creating a new Satellite or Orbiter.
- Refresh the wallet balance after creating a new Satellite or Orbiter, as well as after a top-up or sending ICP.
- Move developer credits to "preferences." While not strictly a better place to display the information, it wasn’t related to the wallet and thus had to be moved elsewhere.
- Update the wording of modal wizards for a tone that’s a bit more "cool kids."
- Move "Launchpad" to the user menu. Adding an entry point in the main menu without selecting a Satellite confused some users based on their feedback.
- Display dollars under the ICP input field, giving users a sense of the USD value when preparing transactions such as sending ICP or topping up.
- Introduce a generic store pattern to load certified data.
- Move the cycles icon displayed when module statuses are refreshed. The layout was shifting when it appeared, which was annoying.
- Mark stores as uncertified when not yet converted to a query+update strategy.
- Use a query+update strategy to certify wallet data and the Mission Control ID fetched for returning users.
- Add a utility to perform query+update calls for enhanced security through certification.
- Use Zod to validate specific types such as
Principal
as text. - Update the list of subnets.
Fixes
- Fixed the infinite scroll component, which was broken after the migration to Svelte v5 and failed to detect scrolling. As a result, old wallet transactions were not displayed.
- Show navigation options only on the home page for new users, not within the dapp.
Styles
- Fancy balance display on the wallet.
- Adapt confetti colors to match the theme.
- Fixed the "Rocket" icon, which was incorrect in dark mode.
- Inherit the primary color in the skeleton.
Refactoring
- Introduce a type for
MissionControlId
instead of usingPrincipal
(I’m starting to appreciate more expressive types). - Prefix various modules and folders to better express their relative usage.
- Reduce verbosity with the utility
fromNullishNullable
. - Migrate various components and patterns to Svelte v5.
- Replace
$page
, which is deprecated in Svelte v5. - Replace
!notEmptyString
withisEmptyString
.
Chore
- Generate a certified version of the DID files by removing the
['query']
keyword. Can’t believe this is still necessary nowadays.
v0.0.41
Summary
This version focuses on formalizing the improvements and fixes required in the Observatory and Console UI to finalize the previous version, v0.0.40. Additionally, it aims to generate a WASM module suitable for embedding in juno-docker.
Overview
Module | Version | Breaking Changes |
---|---|---|
Observatory | 0.0.9 | None |
Changes
Here is a list of changes included in this release:
Console (Frontend)
The console UI/UX has been improved as follows:
Features
- Ignore annoying 1Password popups in all input fields.
- Add a rocket icon for the launchpad.
Fixes
- Corrected inverted monitoring sentence (fund cycles and min threshold).
Styles
- Applied purple color theme to standalone routes.
Observatory
The Observatory has been updated as follows:
Features
- Removed the
post_upgrade
hook for data migration.
Fixes
- Corrected HTTPS outcall cycle costs on mainnet.
- Fixed missing
transform
in the implementation.
v0.0.40
Summary
Happy new year! 🥳
Keeping your application running smoothly is essential. That's why this release introduces a brand-new monitoring feature to ensure your Mission Control (wallet) and modules — Satellites and Orbiters (Analytics) — remain operational with an optional feature that automatically refills cycles when balances run low.
Learn more about how to set up and use monitoring in the documentation.
Note: This new monitoring feature fully replaces the previous solution, which is why it contains breaking changes.
Overview
Module | Version | Breaking changes |
---|---|---|
Mission Control | 0.0.14 | |
Observatory | 0.0.8 |
Crates | Version | Breaking changes |
---|---|---|
junobuild-satellite |
0.0.21-patch.4 | |
junobuild-storage |
v0.0.14 | ️ |
junobuild-collections |
v0.0.10 | ️ |
junobuild-shared |
v0.0.23 |
Library | Version | Breaking changes |
---|---|---|
@junobuild/core |
v0.1.0 | |
@junobuild/core-peer |
v0.1.0 | ❌ Deprecated |
@junobuild/core-standalone |
v0.1.0 | 🆕 |
@junobuild/admin |
v0.1.1 | |
@junobuild/analytics |
v0.0.31 | |
@junobuild/storage |
v0.1.1 | ️ |
@junobuild/console |
v0.1.1 | ️ |
CLI | Version | Breaking changes |
---|---|---|
@junobuild/cli |
v0.1.0 |
Plugins | Version | Breaking changes |
---|---|---|
@junobuild/vite-plugin |
v0.0.19 | |
@junobuild/nextjs-plugin |
v0.0.13 |
Templates | Version | Breaking changes |
---|---|---|
create-juno | v0.1.0 | |
satellite-template | v0.0.4 | 🆕 |
observatory-templates | v0.0.3 | 🆕 |
Docker | Version | Breaking changes |
---|---|---|
@junobuild/satellite |
v0.0.44 | |
@junobuild/console |
v0.0.44 | |
@junobuild/action |
v0.0.36 |
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
- Introduce a comprehensive new monitoring dashboard, wizard, and management tools.
- Redesign the 'Send' feature of the wallet with improved focus and usability.
- Enhance subnet selection by including metadata.
- Add support for European and fiduciary subnets.
- Update navigation by moving Analytics, Mission Control, Wallet, and Monitoring pages to the main split area.
- Integrate the same pages into the launchpad, displaying Analytics and Monitoring with a special color if not yet activated.
- Combine web workers into a single entry point to optimize the bundle by shipping a single worker.
Styles
- Add new theme colors for Analytics, Mission Control, Wallet, and Monitoring sections.
- Review secondary and tertiary colors in existing themes.
- Provide an option to manually refresh the timestamp of the last backup.
Fix
- Correct the display of timestamps for ICP transactions.
Refactoring
- Refactor multiple stores and their related functions to load data, reducing code duplication and standardizing patterns.
Build
- Update dependencies.
- Improve regex patterns for parsing CSP.
Satellite
No changes.
Mission Control
The Mission Control have been updated as follows:
Breaking Changes
- Remove the previous monitoring feature that collected status every hour when triggered by the Observatory.
Features
- Introduce a new monitoring feature that automatically refills the wallet and modules (see documentation).
- Add new
settings
andconfig
to the state to support the new feature and provide Mission Control owners with configuration options. - Implement stable memory to collect up to a month of monitoring history.
- Add a call to the Observatory triggered by an opt-in notification to send an email to the developer.
- Expose new endpoints, reserved for controllers:
get_user_data
,get_metadata
,get_config
,set_config
, andget_settings
. - Expose additional endpoints, reserved for controllers, for monitoring purposes.
Refactoring
- Rename the state variable to
heap
. - Extract
STATE
into a dedicated memory module.
Build
- Integrate Canfund.
- Remove unused dependencies and add those required for the new monitoring feature.
Orbiter
No changes.
Observatory
The Observatory have been updated as follows:
Breaking Changes
- Remove all the existing code, except the functions related to controllers, effectively removing the previous monitoring feature.
Feature
- Implement the new feature that sends notifications when an automatic refill occurs (if the user has opted-in).
- Include and parse the new Observatory template to compose the email sent to the developer.
- Use HTTP Outcalls to push notifications to the proxy.
- Track notifications by marking them as sent or failed based on the success of transmission.
- Add a new endpoint:
list_controllers
.
Refactoring
- Move
heap
to thestore
module.
Build
- Update dependencies.
- Add the
time
crate to format dates.
Library
Please refer to the releases for details.
CLI
Please refer to the releases for details.
Plugins
Please refer to the releases for details.
Templates
Please refer to the create-juno and satellite-template releases for details.
GitHub Action
Please refer to the releases for details.
Docker
Please refer to the releases for details.
Proxy
Please refer to the releases for details.