Skip to content

Releases: junobuild/juno

v0.0.78

06 Jun 07:02

Choose a tag to compare

Summary

This minor release ships a fix for the custom functions generation in Sputnik and a few other minor maintenance tasks for that module.

Overview

Module Version Breaking changes
Sputnik v0.4.3

What's Changed

Full Changelog: v0.0.77...v0.0.78

v0.0.77

26 May 05:22

Choose a tag to compare

Summary

Tip

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

Juno is in maintenance and not actively developed anymore. This release reflects this major change in the Console UI by displaying a warning. It also means that getting started is not free anymore. Moreover, it is recommended to move away from Juno and not use it for anything serious. The project will eventually be deprecated.

What's Changed

Full Changelog: v0.0.76...v0.0.77

v0.0.76

25 Apr 14:21

Choose a tag to compare

Summary

Most of the changes of this release are about the Console.

UFO aka Raw Canister

The Console now also supports UFO - aka raw canisters. It's often handy for developers to spin up non-Juno containers on their local emulator, so adding support in the Console is useful for that kind of setup since it replicates mainnet. But also, why not — this way anyone can spin up a canister and enjoy the Console's administration features (metrics, settings, controllers, and snapshots), and it's compatible with monitoring.

Mission Control is also shipped to support the UFO feature.

ufo

Withdrawal

The Console has been expanded with administration functions to withdraw ICP and ICRC from the Console - the ICP and ICRC that have been spent to spin up Satellites and other modules over the years. The following are the addresses and current balances:

Address Balance
c14e9bca510951c86411c19e8078cc6dfb795efab1b01db3c8825b07eb3fd861 162 ICP
cokmz-oiaaa-aaaal-aby6q-cai 165 TCycles

Others

Sputnik and Orbiter are released as well, but this is mostly to keep the ecosystem consistent — there are no changes on main that aren't released.


Overview

Module Version Breaking changes
Console v0.4.3
Observatory v0.5.2
Mission Control v0.1.3
Orbiter v0.2.4
Sputnik v0.4.2
Crates Version Breaking changes
junobuild-auth 0.4.2
junobuild-cdn 0.7.2
junobuild-collections 0.5.2
junobuild-macros 0.4.1
junobuild-satellite 0.6.2
junobuild-shared 0.8.2
junobuild-storage 0.7.2
junobuild-utils 0.4.0
Library Version Breaking changes
@junobuild/admin v4.3.3
@junobuild/analytics v0.2.15
@junobuild/auth v4.1.2
@junobuild/cdn v2.5.0
@junobuild/cli-tools v0.14.0
@junobuild/config v3.0.1
@junobuild/config-loader v0.4.11
@junobuild/core v5.4.0
@junobuild/core-standalone v5.4.0
@junobuild/errors v0.2.8
@junobuild/functions v0.9.0
@junobuild/functions-tools v0.6.8
@junobuild/ic-client v8.2.0
@junobuild/schema v1.2.4
@junobuild/storage v2.4.2
@junobuild/utils v1.0.3
CLI Version Breaking changes
@junobuild/cli v0.15.4
Plugins Version Breaking changes
@junobuild/vite-plugin v4.7.1
@junobuild/nextjs-plugin v4.7.1
Docker Version Breaking changes
@junobuild/skylab v0.6.10
@junobuild/satellite v0.6.10
@junobuild/console v0.6.10
GitHub Action Version Breaking changes
junobuild/juno-action v0.7.3
API Version Breaking changes
Self-hostable API service v0.1.1

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.6.2"
junobuild-macros = "0.4.0"
junobuild-utils = "0.4.0"

What's Changed

Full Changelog: v0.0.75...v0.0.76

v0.0.75

14 Apr 18:02

Choose a tag to compare

Summary

Tip

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

This release fixes issues with the Rust code generation for serverless functions, resolving incorrect handling of optional enum fields and optional nested struct conversions.

Overview

Module Version Breaking changes
Sputnik v0.4.1
Crates Version Breaking changes
junobuild-macros 0.4.1
Library Version Breaking changes
@junobuild/functions-tools v0.6.6
@junobuild/schema v1.2.3
CLI Version Breaking changes
@junobuild/cli v0.15.1
Docker Version Breaking changes
@junobuild/skylab v0.6.9
@junobuild/satellite v0.6.9
@junobuild/console v0.6.9
GitHub Action Version Breaking changes
junobuild/juno-action v0.7.2

What's Changed

Full Changelog: v0.0.74...v0.0.75

v0.0.74

10 Apr 15:36

Choose a tag to compare

Summary

Tip

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

This release ships two improvements to the Console UI. The wizard for creating a Satellite has been split into a few steps, and the CDN has been enhanced with filters and deletion actions.

For the former, I felt like the screen had become messy — to say the least — and even though I'm not always the biggest fan of multi-step wizards, I had the feeling that it brings a bit of clarity and guidance.

Also, not strictly related to features, the tagline and social image have been updated. I felt like the website deserved a fresh coat of paint.

a b c d 1 2 3

What's Changed

Full Changelog: v0.0.73...v0.0.74

v0.0.73

05 Apr 08:49

Choose a tag to compare

Summary

On Apr. 4, 2026, someone exploited the free tier to spin up roughly 60-70 free Satellites using the same number of fake identities. The rate limiter worked as expected, slowing them down, but not enough to prevent the abuse.

As an immediate precautionary measure, free Satellites for new users were disabled by patching the Console. This is now being formalized by introducing a config on the Console, which controls the initial credits assigned to new accounts, making it possible to toggle the free tier on or off without redeployment. This way we can also keep the same behavior as we are used to when developing locally with Skylab - i.e. the default implementation still provides a credit to spin a first Satellite.

New users will still be able to get started for free by reaching out on Discord. That's why the onboarding has also been improved to introduce this call to action on the dashboard.

Tip

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

What's Changed

Full Changelog: v0.0.72...v0.0.73

v0.0.72

03 Apr 15:16
5c6e174

Choose a tag to compare

Summary

This release focuses on the Satellite and Sputnik.

Satellite

Two new admin endpoints handle asset certification for projects serving large numbers of assets (e.g. 25k+). Due to execution limits, certification can't happen in a single call at that scale — these endpoints make it possible to run it in chunks.

The storage now also accepts uploading assets of 0kb. This fixes an issue surfaced in the Console after upgrading to the latest JS dependencies, notably Vite v8.

The access key structs have also been renamed for consistency (existing "controller" endpoints remain unchanged for backward compatibility), and the SDK now exposes the built-in guards so developers building serverless functions in Rust can reuse them directly in their custom endpoints.

use junobuild_satellite::caller_is_admin;

fn my_function_guard() -> Result<(), String> {
    caller_is_admin()
}

#[ic_cdk::query(guard = "my_function_guard")]
fn hello_world() -> String {
    "Hello, admin!".to_string()
}

include_satellite!();

Sputnik

A few breaking changes land in the custom functions pipeline, but these should be largely transparent — they affect the auto-generated Rust code rather than the functions you write.

More importantly, this release ships two new features.

Guards are now supported in serverless functions:

import { defineQuery } from "@junobuild/functions";
import { callerIsAdmin } from "@junobuild/functions/sdk";

export const ping = defineQuery({
  guard: () => {
    throw new Error("No pong today");
  },
  handler: () => {
    console.log("Hello");
  }
});

export const hello = defineQuery({
  guard: callerIsAdmin,
  handler: () => {
    console.log("Hello, admin!");
  }
});

And HTTPS outcalls are now available from the functions SDK:

import { defineQuery, defineUpdate } from '@junobuild/functions';
import {
	httpRequest,
	HttpRequestResultSchema,
	TransformArgsSchema,
	type HttpRequestArgs
} from '@junobuild/functions/ic-cdk';
import { j } from '@junobuild/schema';

const DogSchema = j.strictObject({
	message: j.url(),
	status: j.string()
});

export const fetchRandomDog = defineUpdate({
	result: DogSchema,
	handler: async () => {
		const args: HttpRequestArgs = {
			url: 'https://dog.ceo/api/breeds/image/random',
			method: 'GET',
			headers: [],
			isReplicated: false,
			transform: 'trimHeaders'
		};

		const result = await httpRequest(args);

		const decoder = new TextDecoder();
		const body = decoder.decode(result.body);

		return JSON.parse(body);
	}
});

export const trimHeaders = defineQuery({
	hidden: true,
	args: TransformArgsSchema,
	result: HttpRequestResultSchema,
	handler: ({ response: { status, body } }) => ({
		status,
		body,
		headers: []
	})
});

Overview

Module Version Breaking changes
Console v0.4.2 ️ ️
Satellite v0.2.1
Sputnik v0.4.0 ⚠️️ ️
Crates Version Breaking changes
junobuild-auth 0.4.0 ⚠️
junobuild-cdn 0.7.0 ⚠️
junobuild-collections 0.5.0 ⚠️
junobuild-macros 0.4.0 ⚠️
junobuild-satellite 0.6.0 ⚠️
junobuild-shared 0.8.0 ⚠️
junobuild-storage 0.7.0 ⚠️
junobuild-utils 0.4.0 ⚠️️️️
Library Version Breaking changes
@junobuild/admin v4.3.2
@junobuild/analytics v0.2.14
@junobuild/auth v4.1.1
@junobuild/cdn v2.4.2
@junobuild/cli-tools v0.13.3
@junobuild/config v2.15.1
@junobuild/config-loader v0.4.10
@junobuild/core v5.3.1
@junobuild/core-standalone v5.3.1
@junobuild/errors v0.2.6
@junobuild/functions v0.8.2
@junobuild/functions-tools v0.6.2
@junobuild/ic-client v8.1.2
@junobuild/schema v1.2.1
@junobuild/storage v2.4.1
@junobuild/utils v1.0.2
CLI Version Breaking changes
@junobuild/cli v0.14.4
Plugins Version Breaking changes
@junobuild/vite-plugin v4.7.1
@junobuild/nextjs-plugin v4.7.1
Docker Version Breaking changes
@junobuild/skylab v0.6.4
@junobuild/satellite v0.6.4
@junobuild/console v0.6.4
GitHub Action Version Breaking changes
junobuild/juno-action v0.6.10
API Version Breaking changes
Self-hostable API service v0.1.1

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.6.0"
junobuild-macros = "0.4.0"
junobuild-utils = "0.4.0"

What's Changed

Read more

v0.0.71

14 Mar 16:02
7c42891

Choose a tag to compare

Summary

This release introduces support for writing custom serverless functions in TypeScript.

Developers can now define query and update functions using defineQuery and defineUpdate, with input and output shapes described via a type system built on top of Zod. The pipeline takes care of the rest - generating all the necessary types and bindings under the hood.

import { defineUpdate } from "@junobuild/functions";
import { j } from "@junobuild/schema";

const Schema = j.strictObject({
  name: j.string(),
  id: j.principal()
});

export const helloWorld = defineUpdate({
  args: Schema,
  returns: Schema,
  handler: async ({ args }) => {
    // Your logic here
    return args;
  }
});

Both type-safe at build time and validated at runtime, functions support synchronous and asynchronous handlers.

A frontend API is also automatically generated, so developers can call their functions directly from the client:

import { functions } from "../declarations/satellite/satellite.api.ts";

await functions.helloWorld({ name: "World", id: Principal.anonymous() });

Overview

Module Version Breaking changes
Sputnik v0.3.1 ⚠️️ ️

Note

Sputnik is tagged as "breaking changes" but contain no fundamental API changes. The version is primarily bumped for traceability reasons only.

Crates Version Breaking changes
junobuild-auth 0.3.2
junobuild-cdn 0.6.1
junobuild-collections 0.4.1
junobuild-macros 0.3.1
junobuild-satellite 0.5.1
junobuild-shared 0.7.1
junobuild-storage 0.6.1 ️️️
junobuild-utils 0.3.0 ️️️
Library Version Breaking changes
@junobuild/admin v4.2.0
@junobuild/analytics v0.2.11
@junobuild/auth v4.0.0
@junobuild/cdn v2.3.0
@junobuild/cli-tools v0.12.2 ⚠️
@junobuild/config v2.14.1
@junobuild/config-loader v0.4.8
@junobuild/core v5.2.1
@junobuild/core-standalone v5.2.1
@junobuild/did-tools --- ⚠️ Deprecated by @junobuild/functions-tools
@junobuild/errors v0.2.3
@junobuild/functions v0.7.1
@junobuild/functions-tools v0.5.2 🆕
@junobuild/ic-client v8.0.1
@junobuild/storage v2.3.0
@junobuild/utils v0.3.0
@junobuild/schema v1.1.0 🆕
CLI Version Breaking changes
@junobuild/cli v0.14.0
Plugins Version Breaking changes
@junobuild/vite-plugin v4.7.1
@junobuild/nextjs-plugin v4.7.1
Docker Version Breaking changes
@junobuild/skylab v0.6.3
@junobuild/satellite v0.6.3
@junobuild/console v0.6.3
GitHub Action Version Breaking changes
junobuild/juno-action v0.6.6

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.1"
junobuild-macros = "0.3.1"
junobuild-utils = "0.3.0"

What's Changed

Read more

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