Skip to content

Releases: junobuild/juno

v0.0.70

22 Feb 15:26
ab22f6f

Choose a tag to compare

Summary

This release focuses on Console UX improvements. Configuration and recent deployments are now persisted in IndexedDB (cleared on logout), allowing the interface to render information faster on subsequent visits.

It also introduces a new card on the Satellite overview showing the last three deployments. If automation has not been set up yet, the card displays a call to action to get started, which could be particularly helpful for new developers on the platform.

Tip

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

with without

What's Changed

Full Changelog: v0.0.69...v0.0.70

v0.0.69

19 Feb 12:53

Choose a tag to compare

Summary

This release brings two major additions to the GitHub integration and a set of general improvements.

Automation

This release shifts the recommended approach for allowing GitHub Actions to deploy your frontend or publish serverless functions by removing the need to store a JUNO_TOKEN in your GitHub secrets.

The new method uses OpenID Connect (OIDC) to establish a relationship between GitHub and your Satellite, so each workflow run gets short-lived credentials (access keys) automatically.

No tokens to rotate, no secrets to manage, and therefore more secure.

In addition, a new Deployments screen in the Console UI lets you specify which repositories are authorized to deploy and provides an overview of past deployments.

The same configuration can of course also be applied using the CLI which has also been upgraded to support this new feature.

👉 Documentation

Google Chrome 2026-02-19 17:21:04 - Frame 92

Authentication

This release also adds support for GitHub authentication, letting you add GitHub sign-in to your application.

Note that unlike other authentication methods, this requires deploying and running a self-hosted API.

👉 Documentation

Various Improvements

On top of that, several improvements come with this release. While not yet available in the Console, this includes support for access keys with expiration times (applicable to the Submitter and Editor roles, but not Admin), which was developed for the new automation flow (for security reasons).

Overview

Module Version Breaking changes
Console v0.4.1
Observatory v0.5.1
Satellite v0.2.0 ⚠️
Sputnik v0.2.0 ⚠️️ ️

Note

Satellite and Sputnik are tagged as "breaking changes" but contain no fundamental API changes. Their versions were primarily bumped for traceability reasons only.

Crates Version Breaking changes
junobuild-auth 0.3.1 ⚠️
junobuild-cdn 0.6.0 ⚠️
junobuild-collections 0.4.0 ⚠️
junobuild-satellite 0.5.0 ⚠️
junobuild-shared 0.7.0 ⚠️
junobuild-storage 0.6.0 ⚠️️️
Library Version Breaking changes
@junobuild/admin v4.1.0 ⚠️
@junobuild/analytics v0.2.11
@junobuild/auth v4.0.0 ⚠️
@junobuild/cdn v2.3.0
@junobuild/cli-tools v0.10.2
@junobuild/config v2.11.0
@junobuild/config-loader v0.4.8
@junobuild/core v5.2.0 ⚠️
@junobuild/core-standalone v5.2.0 ⚠️
@junobuild/did-tools v0.3.9
@junobuild/errors v0.2.3
@junobuild/functions v0.5.6
@junobuild/ic-client v8.0.0
@junobuild/storage v2.3.0
@junobuild/utils v0.2.6
CLI Version Breaking changes
@junobuild/cli v0.13.12
Plugins Version Breaking changes
@junobuild/vite-plugin v4.7.0
@junobuild/nextjs-plugin v4.7.0
Docker Version Breaking changes
@junobuild/skylab v0.5.2
@junobuild/satellite v0.5.2
@junobuild/console v0.5.2
GitHub Action Version Breaking changes
junobuild/juno-action v0.6.3

Serverless Functions

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

[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.5.0"
junobuild-macros = "0.2.0"
junobuild-utils = "0.2.0"

What's Changed

Read more

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.