Skip to content

Releases: junobuild/juno

v0.0.61-patch.1

02 Feb 19:55

Choose a tag to compare

Summary

This patch release addresses an issue affecting sign-in with Internet Identity when using delegation origin with custom domains.

Important

Note: This patch addresses a specific edge case (custom domain derivation origins for Internet Identity). Since most users are unaffected, the update is not auto-propagated. If you're experiencing this issue, you can apply the patch manually using the Juno CLI.

The root cause of the issue is unclear - something has changed but no one knows what. The issue happens likely because satellites did not support HEAD requests, though it has always been like that. Support was planned but just not yet delivered. This patch allows HEAD request to satellites, basically just adding a condition to an if statement that accepted GET only.

// Was:
pub fn http_request(
    HttpRequest {
        method,
    }: HttpRequest,
    storage_state: &impl StorageStateStrategy,
    certificate: &impl StorageCertificateStrategy,
) -> HttpResponse {
    if method != "GET" {
        return error_response(RESPONSE_STATUS_CODE_405, "Method Not Allowed.".to_string());
    }
    
// Patch:
pub fn http_request(
    HttpRequest {
        method,
    }: HttpRequest,
    storage_state: &impl StorageStateStrategy,
    certificate: &impl StorageCertificateStrategy,
) -> HttpResponse {
    if method != "GET" && method != "HEAD" {
        return error_response(RESPONSE_STATUS_CODE_405, "Method Not Allowed.".to_string());
    }

Note

Patch was tested manually. Effective implementation and tests in #2564

Overview

Module Version Breaking changes
Satellite v0.1.7
Sputnik v0.1.8 ️ ️
Crates Version Breaking changes
junobuild-cdn 0.4.1-patch.2
junobuild-satellite 0.3.1-patch.1
junobuild-storage 0.4.1-patch.1 ️️

v0.0.68

31 Jan 09:59

Choose a tag to compare

Summary

As I learned yesterday, using the new domain id.ai for sign-in with Internet Identity is not recommended just for cosmetic reasons, but also to prevent edge case issues. Therefore, it makes sense to use it going forward.

This release switches the Console to use this domain and set the JS library @junobuild/core to use it as new default for its related sign-in method (this is a JS API breaking change but all domains use the same UI/UX and derive the same identities).

Overview

Library Version Breaking changes
@junobuild/core v5.0.0 ⚠️

What's Changed

Full Changelog: v0.0.67...v0.0.68

v0.0.67

29 Jan 07:18
afee34d

Choose a tag to compare

Summary

This release separates OpenID provider types to support further GitHub integrations (like GitHub Actions) by renaming GitHub to GitHubAuth in the provider enum and introducing a new OpenIdDelegationProvider enum that explicitly defines which providers can authenticate users.

This is a breaking change and therefore required the Console and Observatory state to be patched. Given the support for GitHub was introduced last week (in release v66) and is not yet rolled out in the ecosystem - in the Satellites - it felt like this was the appropriate time to introduce this cleaner architetucal separation.

Note

This release has migration purposes for the Console and Observatory and does not impact your projects.

Overview

Module Version Breaking changes
Console v0.4.0
Observatory v0.5.0

What's Changed

Full Changelog: v0.0.66...v0.0.67

v0.0.66

23 Jan 15:58
45aaa45

Choose a tag to compare

Summary

This release introduces support for authentication with GitHub on the Juno Console.

Context

GitHub authentication in Juno uses an OpenID Connect-like flow that requires a proxy server to securely handle OAuth credentials. Unlike traditional OAuth implementations where the client secret must remain confidential, Juno's architecture necessitates a backend service to:

  • Store and manage GitHub OAuth sensitive credentials (client ID and secret)
  • Exchange authorization codes for access tokens without exposing secrets to the browser
  • Generate JWT tokens for integration with Juno's authentication system

The Juno API serves as this proxy, providing secure OAuth token exchange and JWT generation. This new API is open-source and can be self-hosted, which you'll need if you implement the same flow in your Satellite in the future. The Juno Console uses a hosted instance at api.juno.build.

Note

Support for GitHub authentication within Satellites will follow in a future release.

screenshot

Overview

Module Version Breaking changes
Console v0.3.2
Observatory v0.4.0
Library Version Breaking changes
@junobuild/admin v4.0.1
@junobuild/auth v3.0.1 ⚠️
@junobuild/core v4.0.0 ⚠️
@junobuild/config v2.10.0
@junobuild/errors v0.2.1

What's Changed

Full Changelog: v0.0.65...v0.0.66

v0.0.65

15 Jan 14:36

Choose a tag to compare

Summary

Tip

This release has no functional impact on your development or projects.

This release is a follow-up to last week's release v0.0.63.

Now that we've simplified the developer experience by making the Console the hub for managing your modules (Satellites, Orbiters, Mission Control), the next step is enabling existing developers to migrate their module IDs and metadata (e.g., module names) to the Console.

That's why, when you sign in, you may notice a new warning notification prompting you to reconcile your Satellites and Orbiters. Following the process allows to synchronize information between your Mission Control and the Console automatically, ensuring both are aware of the same list of modules. This is particularly useful for developers who never used Mission Control or never activated Monitoring but, generally speaking to prevent issues in the future.

Note

The notification is displayed as an alert to catch your attention but is not a call to action that requires immediate action.

The release also patches a minor issue with the upgrade WASM process that could occur when Mission Control and your modules lived on different subnets. The issue had no functional impact, it only triggered within a pre-assertion check.

Additionally, the wallet page has been moved from the main menu to the user popover. Since the navigation bar already provides quick access to all wallet features, this reduces redundancy and improves interface readability. The popover for switching Satellites has also been deprecated—it duplicated the Spotlight search feature introduced a few months ago and contained a minor bug. No component, no bug 😄.

Capture d’écran 2026-01-15 à 15 04 38 Capture d’écran 2026-01-15 à 15 04 17 Capture d’écran 2026-01-15 à 15 37 29

Overview

Module Version Breaking changes
Console v0.3.1
Library Version Breaking changes
@junobuild/admin v4.0.0
CLI Version Breaking changes
@junobuild/cli v0.13.10
Docker Version Breaking changes
@junobuild/skylab v0.4.16
@junobuild/satellite v0.4.16
@junobuild/console v0.4.16

What's Changed

Full Changelog: v0.0.64...v0.0.65

v0.0.64

09 Jan 15:47

Choose a tag to compare

Summary

Tip

This release has no functional impact on your development or projects.

The Console UI version shipped in v0.0.63 required a few small patches. Additionally, since it's nowadays tricky to swap ICP for Cycles, a new "Convert" feature has been added.

What's Changed

Full Changelog: v0.0.63...v0.0.64

v0.0.63

08 Jan 07:03
39bfd2d

Choose a tag to compare

Summary

This release brings major changes to the Juno Console to make the developer experience simpler, clearer, and more efficient.

Mission Control and Monitoring merged

Mission Control, the developer control center for managing Satellites and Orbiters, has been merged with Monitoring.

  • A Mission Control is now created only when a developer enables Monitoring
  • Monitoring is treated as a dedicated microservice

Benefits:

  • For developers: simpler, more straightforward experience
  • For Juno: acquisition costs for new developers are cut in half

Trade-offs:

  • The Console now tracks all containers created by developers (Satellites, Orbiters, and Mission Controls)
  • When Monitoring is enabled, module metadata is duplicated in Mission Control, which could lead to inconsistencies; a future Console feature will help verify this data

Deprecate ICP, use only Cycles

ICP is now deprecated in favor of using cycles only.

  • Getting started is still free
  • When you need more resources or want to spin up additional modules, you acquire cycles
  • The primary call to action for cycles now points to cycle.express; third-party wallets like OISY remain supported as secondary options

This simplifies the developer experience and makes it easier to understand how Juno works.

Price increase

Creating new Satellites or Orbiters now costs 3 T cycles (roughly $4).
Enabling Monitoring (spinning up a Mission Control) requires the same fee.

Previously, the cost was 0.4 ICP, which effectively provided more resources than intended.

Backwards compatibility

Existing Mission Controls remain fully supported. If they hold ICP, you can still use it to create new modules at 1.5 ICP per module.

You can choose to keep ICP for Monitoring or transition fully to cycles.
A future release will update Mission Control to remove features that are no longer needed.

Fully open-source

Juno is now fully open-source.

The AGPL license has been dropped in favor of MIT — no more restrictions. 💯

Overview

Module Version Breaking changes
Console v0.3.0 ⚠️
Observatory v0.3.0 ⚠️
Crates Version Breaking changes
junobuild-auth v0.2.0
junobuild-cdn v0.5.0
junobuild-collections v0.3.0
junobuild-macros v0.2.0
junobuild-satellite v0.4.0
junobuild-shared v0.6.0 ⚠️️️
junobuild-storage v0.5.0 ️️
junobuild-utils v0.2.0
Library Version Breaking changes
@junobuild/admin v3.3.0
@junobuild/analytics v2.0.10
@junobuild/auth v2.1.0
@junobuild/cdn v2.2.0
@junobuild/cli-tools v0.10.0
@junobuild/config v2.9.0
@junobuild/config-loader v0.4.7
@junobuild/core v3.4.0
@junobuild/core-standalone v3.4.0
@junobuild/did-tools v0.3.8
@junobuild/errors v0.2.0
@junobuild/functions v0.5.4
@junobuild/ic-client v7.1.0
@junobuild/storage v2.2.0
@junobuild/utils v0.2.5
CLI Version Breaking changes
@junobuild/cli v0.13.9
Plugins Version Breaking changes
@junobuild/vite-plugin v4.5.1
@junobuild/nextjs-plugin v4.6.1
Docker Version Breaking changes
@junobuild/skylab v0.4.14
@junobuild/satellite v0.4.14
@junobuild/console v0.4.14
GitHub Action Version Breaking changes
junobuild/juno-action v0.5.8

Serverless Functions

You can upgrade your Rust Serverless Functions using the following crates:

Note

This upgrade is optional, as it contains no breaking changes that would impact your projects.
The crates have been bumped to reflect the license change.

[dependencies]
candid = "0.10.20"
ic-cdk = "0.19.0"
ic-cdk-macros = "0.19.0"
serde = "1.0.225"
serde_cbor = "0.11.2"
junobuild-satellite = "0.4.0"
junobuild-macros = "0.2.0"
junobuild-utils = "0.2.0"

What's Changed

Read more

v0.0.63-beta.1

05 Jan 13:49

Choose a tag to compare

v0.0.63-beta.1 Pre-release
Pre-release

Motivation

This repo needs a new version of the emulator to adapt the E2E tests to the breaking changes. This is notably required to get cycles.

On the contrary, the emulator requires a new version of this repo (or a patch) to release a new version because fetching the latest version and doing an npm i leads to incompatibility issues with AgentJS v5 (I should have released the latest ic-js libraries as major versions, my bad).

Long story short, one needs the other. That's why now that we are close to releasing a major version of Juno - this repo - I create a beta to in turn be able to unlock the emulator.

v0.0.62

05 Dec 11:27
fdcd2df

Choose a tag to compare

Summary

Tip

This release has no functional impact on your development or projects.

For historical reasons, the Console stored user-related metadata under the name Mission Control. Originally this included only a user ID (created at sign-in), the Mission Control ID once spin-up, and a credits field used to determine whether Satellites or Analytics could be launched for free.

Over time the structure grew. It now also includes provider details from OpenID sign-ins (email, display name, profile image). With these additions, the old name no longer reflected what the data represented. It was effectively an account record.

This release renames Mission Control to Accounts across the Console. The codebase was updated, two endpoints were renamed, and the OpenID response format now reflects the new terminology.

Bottom line: This update affects the Console only. You can safely ignore it unless you notice unexpected behavior. If you do, please reach out right away.

Overview

Module Version Breaking changes
Console v0.2.0 ⚠️
Library Version Breaking changes
@junobuild/admin v3.0.4
@junobuild/auth v2.0.0 ⚠️
@junobuild/cdn v2.0.4
@junobuild/core v3.3.1
@junobuild/core-standalone v3.3.1
@junobuild/ic-client v7.0.0 ⚠️
@junobuild/storage v2.1.1
Docker Version Breaking changes
@junobuild/skylab v0.4.11
@junobuild/satellite v0.4.11
@junobuild/console v0.4.11

What's Changed

Full Changelog: v0.0.61...v0.0.62

v0.0.61

03 Dec 17:15

Choose a tag to compare

Summary

While all modules receive updates in this release, this is primarily a technical release focused on achieving ecosystem consistency rather than delivering new features and fixes.

All modules have been upgraded to ic_cdk v0.19.0. If you're developing serverless functions in Rust, you'll need to upgrade as well - the migration is straightforward. Additionally, DID bindings for your custom endpoints will now be generated with the new @icp-sdk/bindgen tool instead of junobuild-didc.

Several legacy Mission Control endpoints have been deprecated. These haven't been used in a long time, and all related tooling has been up-to-date for quite some time as well.

The Observatory now uses the new non-replicated HTTPS outcalls on IPv4 for transmitting monitoring emails. This eliminates the proxy previously required to call Resend — one less third-party dependency for the win 🥳.

When it comes to the Satellite, it receives a new endpoint set_asset_token which allows for updating the protection of web assets in storage. This function has also been implemented in the Console UI.

Google Chrome 2025-12-03 20:06:19 - Frame 190 Google Chrome 2025-12-03 20:06:19 - Frame 546

Lastly maybe, the emulator has been improved to support local Google authentication development. When you configure your credentials in the Skylab Console, it automatically triggers the Observatory to monitor Google for the public jwks required for the auth flow.

Note

Going forward, I'll use GitHub's auto-generated release notes to list the changes.
Feel free to reach out with questions about any of the entries.

Overview

Module Version Breaking changes
Console v0.1.5 ️ ️
Observatory v0.2.0 ️ ️
Mission Control v0.1.2 ️ ️
Satellite v0.1.6 ️ ️
Sputnik v0.1.7
Orbiter v0.2.3 ️ ️
Crates Version Breaking changes
junobuild-auth v0.1.1
junobuild-cdn v0.4.1
junobuild-collections v0.2.6
junobuild-satellite v0.3.1
junobuild-shared v0.5.0 ⚠️️️
junobuild-storage v0.4.1 ️️
junobuild-utils v0.1.5
Library Version Breaking changes
@junobuild/auth v1.0.2
@junobuild/admin v3.0.3
@junobuild/analytics v0.2.10
@junobuild/cdn v2.0.3
@junobuild/cli-tools v0.9.4
@junobuild/config v2.7.0
@junobuild/core v3.3.0
@junobuild/core-standalone v3.3.0
@junobuild/did-tools v0.3.6
@junobuild/errors v0.2.0 ⚠️
@junobuild/functions v0.5.2
@junobuild/ic-client v6.0.0
@junobuild/storage v2.1.0
@junobuild/utils v0.2.3
CLI Version Breaking changes
@junobuild/cli v0.13.5
Docker Version Breaking changes
@junobuild/skylab v0.4.10
@junobuild/satellite v0.4.10
@junobuild/console v0.4.10
GitHub Action Version Breaking changes
junobuild/juno-action v0.5.6

Serverless Functions

Upgrade your Rust Serverless Functions using the following crates:

Important

Upgrade junobuild-satellite iteratively to ensure compatibility.

[dependencies]
candid = "0.10.20"
ic-cdk = "0.19.0"
ic-cdk-macros = "0.19.0"
serde = "1.0.225"
serde_cbor = "0.11.2"
junobuild-satellite = "0.3.1"
junobuild-macros = "0.1.1"
junobuild-utils = "0.1.5"

What's Changed

Read more