Releases: junobuild/juno
v0.0.75
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
- test(e2e): add test ids and steps of create satellite wizard by @peterpeterparker in #2757
- fix(sputnik,macros): handle Option conversion for nested struct fields in JsonData derive by @peterpeterparker in #2759
- feat(sputnik): bump juno-js with latest patch by @peterpeterparker in #2760
Full Changelog: v0.0.74...v0.0.75
v0.0.74
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.
What's Changed
- feat(sputnik): Polyfills updated by @github-actions[bot] in #2746
- feat(frontend): update newest social image by @peterpeterparker in #2747
- feat(frontend): use context for the cdn by @peterpeterparker in #2748
- style(frontend): align icon size on logs by @peterpeterparker in #2749
- feat(frontend): filters and reload on CDN by @peterpeterparker in #2750
- feat(frontend): delete cdn asset by @peterpeterparker in #2751
- docs(workspace): review readme and catchphrase by @peterpeterparker in #2752
- feat(frontend): clear CDN by @peterpeterparker in #2753
- feat(frontend): inline wallet picker for create wizards by @peterpeterparker in #2755
- fix(frontend): selected wallet not defaulted in wizard by @peterpeterparker in #2756
- feat(frontend): create satellite wizard by @peterpeterparker in #2754
Full Changelog: v0.0.73...v0.0.74
v0.0.73
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
- fix(sputnik): incorrect stub path fallback when no custom functions by @peterpeterparker in #2736
- fix(skylab): sveltekit overwriting types by @peterpeterparker in #2737
- feat(frontend): getting started banner to get credits by @peterpeterparker in #2739
- feat(frontend): split preferences into a new profile page by @peterpeterparker in #2740
- feat(frontend): simplify getting started message by @peterpeterparker in #2742
- feat(frontend): getting started banner for new user with no credits by @peterpeterparker in #2743
- feat(console): account config with initial credits by @peterpeterparker in #2741
- feat(frontend): remove create satellite description by @peterpeterparker in #2744
- chore(console,sputnik): clippy by @peterpeterparker in #2745
Full Changelog: v0.0.72...v0.0.73
v0.0.72
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
- build(crates): bump serde and serde_json to latest by @peterpeterparker in #2676
- feat(satellite): expose guards to SDK by @peterpeterparker in #2665
- chore(test): downgrade pic-js to v0.17.2 by @peterpeterparker in #2678
- feat(satellite): rename controllers functions and mod to access_keys by @peterpeterparker in #2666
- feat(shared): rename Controller types and utils to AccessKey by @peterpeterparker in #2679
- feat(shared): Controller DID description renamed to AccessKey by @peterpeterparker in #2681
- build(frontend): bump dependencies by @peterpeterparker in #2682
- chore(frontend): bump latest eslint rules by @peterpeterparker in #2683
- chore(test): bump pic-js v0.21 by @peterpeterparker in #2684
- feat(auth): bump jsonwebtoken-icp to v10.3.0 by @peterpeterparker in #2675
- feat(shared): rename SetController interfaces to AccessKey by @peterpeterparker in #2687
- feat(shared): rename shared assertion for access key related to caller by @peterpeterparker in #2688
- feat(sputnik): rename controller to access key in rquicks bridge by @peterpeterparker in #2690
- feat(shared): rework naming of access keys shared utils by @peterpeterparker in #2691
- feat(sputnik): review sdk access keys and integrate guards by @peterpeterparker in #2689
- feat(sputnik): support for custom functions guard by @peterpeterparker in #2692
- feat(satellite): re-export shared access keys functions by @peterpeterparker in #2693
- feat(frontend): fetch kongswap for a single token by @peterpeterparker in #2694
- feat(storage,cdn): allow 0kb chunk assets by @peterpeterparker in #2696
- fe...
v0.0.71
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 |
--- | @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
- style(frontend): align first column in cards on overview by @peterpeterparker in #2633
- feat(sputnik): migrate usage of spawn_017_compat to spawn by @peterpeterparker in #2637
- feat(satellite): withs pattern for rules by @peterpeterparker in #2640
- feat(macros): migrate usage of spawn_017_compat to spawn by @peterpeterparker in #2638
- feat(satellite): keep system collection upgrades by @peterpeterparker in #2639
- feat(satellite): use an impl to init rule from setrule by @peterpeterparker in #2641
- feat(frontend): Update Passkey AAGUIDs by @github-actions[bot] in #2642
- feat(frontend): assert response ok by @peterpeterparker in #2644
- refactor(macros): move parser in a sub-module hooks by @peterpeterparker in #2646
- feat(utils): serde with serializer and deserializer by @peterpeterparker in #2645
- feat(sputnik): support for including custom endpoints rust module by @peterpeterparker in #2635
- feat(macros): derive data for custom functions in Sputnik by @peterpeterparker in #2647
- feat(utils): keep but duplicate/rename doc data to json data by @peterpeterparker in #2648
- feat(macros): rename FunctionData to JsonData by @peterpeterparker in #2650
- feat(orbiter): use rename doc data types by @peterpeterparker in #2649
- feat(utils,macros): from and to json data traits by @peterpeterparker in #2651
- refactor(sputnik): move sdk to root by @peterpeterparker in #2652
- fix(frontend): OpenChat memo leads to "Offset is outside the bounds of the DataView" by @peterpeterparker in #2656
- feat(shared): unwrap_or_trap for option by @peterpeterparker in #2655
- feat(sputnik): shorten DEV_CUSTOM_FUNCTIONS_PATH to DEV_FUNCTIONS_PATH by @peterpeterparker in #2654
- build(backend): Update Rust version by @github-actions[bot] in #2653
- feat(sputnik): support generating custom endpoints by @peterpeterparker in #2636
- feat(sputnik): use tooling to generate custom functions by @peterpeterparker in #2657
- fix(sputnik): nested structs by @peterpeterparker in #2661
- fix(macros): register json_data as a helper attribute by @peterpeterparker in #2662
- fix(sputnik): serialization with option principal, uint8array and bigint by @peterpeterparker in #2659
- feat(sputnik): support for ic_cdk::caller by @peterpeterparker in #2660
- chore(test): bump pic-js v0.19.0 by @peterpeterparker in #2663
- build(sputnik): prevent build exception if no custom endpoints by @peterpeterparker in #2664
- build(frontend): use released juno-js libs by @peterpeterparker in #2667
- feat(frontend): import junobuild/zod instead of...
v0.0.70
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.
What's Changed
- feat(frontend): add id-token permission to GitHub Actions templates by @peterpeterparker in #2624
- feat(frontend): accept undefined for certified flag by @peterpeterparker in #2627
- feat(frontend): cache config by @peterpeterparker in #2626
- feat(frontend): split satellite overview by @peterpeterparker in #2629
- feat(frontend): show last workflow in satellite overview by @peterpeterparker in #2628
- feat(frontend): use a cron worker for fetching workflows by @peterpeterparker in #2630
- feat(frontend): slice last three deployments and fix undefined GitHub data by @peterpeterparker in #2632
- fix(frontend): remove incorrect slice on workflow actor by @peterpeterparker in #2631
Full Changelog: v0.0.69...v0.0.70
v0.0.69
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.
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.
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
- feat(storage): support HEAD requests by @peterpeterparker in #2564
- feat(shared): optional controller kind by @peterpeterparker in #2566
- feat(frontend): access key type display and kind emulator by @peterpeterparker in #2567
- feat(shared)!: rename is_controller to is_valid_controller by @peterpeterparker in #2569
- test(shared): controllers with cargo mock by @peterpeterparker in #2570
- refactor(satellite): rename guard is_controller with valid keyword by @peterpeterparker in #2571
- feat(shared): ephemeral access keys - assertion on expires_at by @peterpeterparker in #2572
- feat(core): assert set controller expires_at by @peterpeterparker in #2573
- feat(shared)!: limit access keys submit and editors to 20 by @peterpeterparker in #2574
- feat(auth): rename assert_custom by @peterpeterparker in #2575
- refactor(auth)!: rename set_config into set_authentication_config by @peterpeterparker in #2576
- feat(frontend): remove Internet Identity for local dev by @peterpeterparker in #2577
- test(e2e): remove Internet Identity by @peterpeterparker in #2578
- feat(frontend): animated welcome test by @peterpeterparker in #2579
- feat(frontend): use user name for greetings by @peterpeterparker in #2580
- feat(frontend): derive provider data by @peterpeterparker in #2581
- feat(frontend): hide sign-in methods not dev for skylab by @peterpeterparker in #2582
- refactor(frontend): split animated text loader by @peterpeterparker in #2583
- feat(auth): delegate nonce check to openid implementation by @peterpeterparker in #2584
- feat(auth): add GitHub Actions to the OpenId provider list by @peterpeterparker in #2585
- feat(observatory): fetch github actions openid certificate by @peterpeterparker in #2586
- feat(auth,satellite): automation configuration by @peterpeterparker in #2588
- feat(auth): use a standardized trait to read nonce instead of passing function by @peterpeterparker in #2589
- feat(auth): authenticate automation by @peterpeterparker in #2539
- build(backend): Update Rust version by @github-actions[bot] in #2590
- feat(satellite): del_controller_self to remove automation key by @peterpeterparker in #2591
- feat(auth): use refs instead of branches in automation config by @peterpeterparker in #2592
- feat(satellite): more workflow metadata by @peterpeterparker in #2593
- refactor(frontend): move auth config services to satellite by @peterpeterparker in #2595
- feat(frontend): init new "Deployments" page by @peterpeterparker in https://github.com/junobuild/juno/p...
v0.0.61-patch.1
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
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
- feat(observatory,console): remove one time upgrade for OpenIdProvider.GitHub by @peterpeterparker in #2545
- build(backend): Update Rust version by @github-actions[bot] in #2552
- refactor(auth): redo name unsafe_find_jwt_provider by @peterpeterparker in #2554
- feat(auth)!: rename get_providers to get_auth_providers by @peterpeterparker in #2555
- feat(auth): rename openid credential structs by @peterpeterparker in #2556
- feat(shared): ic api for wasm32 test by @peterpeterparker in #2558
- feat(auth): make verify_openid_jwt generic by @peterpeterparker in #2557
- feat(auth): used shared time and cargo test for openid impls by @peterpeterparker in #2560
- feat(auth): make unsafe_find_jwt_provider generic by @peterpeterparker in #2559
- feat(frontend): use id.ai instead of internetcomputer.org for identity sign-in by @peterpeterparker in #2561
- test(e2e): update internet-identity playwright plugin for new ui/ux by @peterpeterparker in #2562
Full Changelog: v0.0.67...v0.0.68
v0.0.67
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
- feat(frontend): add type safety to cmp guards by passing result by @peterpeterparker in #2541
- refactor(frontend): extract auth loaders components by @peterpeterparker in #2542
- feat(frontend): extract app loader and load idb data after sign-in by @peterpeterparker in #2543
- feat(frontend)!: rename OpenIdProvider.GitHub to OpenIdProvider.GitHubAuth by @peterpeterparker in #2544
- refactor(auth): move verify to openid/delegation module by @peterpeterparker in #2546
- refactor(auth): move openidcredentials to delegation sub-module by @peterpeterparker in #2547
- refactor(auth): use keyword Auth for OpenIdProvider struct related to authentication by @peterpeterparker in #2548
- refactor(auth): rename delegation related function and remove unused impl by @peterpeterparker in #2549
- refactor(auth): move delegation to sub-module credentials by @peterpeterparker in #2550
- refactor(auth): move OpenIdDelegationProvider back to openid root by @peterpeterparker in #2551
- chore(console,observatory): clippy suggestions by @peterpeterparker in #2553
Full Changelog: v0.0.66...v0.0.67