Skip to content

Releases: junobuild/juno

v0.0.49

09 May 16:42
68a28b8
Compare
Choose a tag to compare

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

health-check

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

05 May 15:07
51502b0
Compare
Choose a tag to compare

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/

New Juno Analytics Dashboard UI

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, and set_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 requests
    • 400 when incorrectly formatted data is submitted
    • 403 when data is collected for a Satellite ID where the feature is not enabled
    • 405 when unsupported methods (non-POST) are used on metrics endpoints
    • 200 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

21 Apr 06:13
c66fa94
Compare
Choose a tag to compare

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() and build_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

06 Mar 07:34
Compare
Choose a tag to compare

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, and on_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 to getrandom_backend).
  • Fix the build toolchain error: '1.85.0-x86_64-unknown-linux-gnu' is not installed.

v0.0.45

18 Feb 15:59
Compare
Choose a tag to compare

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.

Login

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

14 Feb 10:24
Compare
Choose a tag to compare

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.

banned

details

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() to into_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 by getrandom 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"...
Read more

v0.0.43

24 Jan 14:01
21a266c
Compare
Choose a tag to compare

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 issue Invalid 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 a prepare 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

17 Jan 14:36
5868f8a
Compare
Choose a tag to compare

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 using Principal (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 with isEmptyString.

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

12 Jan 09:29
Compare
Choose a tag to compare

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

10 Jan 14:59
b59b6d5
Compare
Choose a tag to compare

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 and config 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, and get_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 the store 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.