v0.0.63
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
- refactor(frontend): move account store to own module by @peterpeterparker in https://github.com/junobuild/juno/pull/2341
- build(frontend): downgrade svelte by @peterpeterparker in https://github.com/junobuild/juno/pull/2342
- feat(frontend): rename derived mission control modules to account by @peterpeterparker in https://github.com/junobuild/juno/pull/2343
- feat(frontend): group stores by @peterpeterparker in https://github.com/junobuild/juno/pull/2344
- feat(frontend): group derived by @peterpeterparker in https://github.com/junobuild/juno/pull/2345
- refactor(console): generic and impl for account by @peterpeterparker in https://github.com/junobuild/juno/pull/2346
- refactor(frontend): move satellites stores related to mission control by @peterpeterparker in https://github.com/junobuild/juno/pull/2349
- refactor(console): move accounts and credits in a dedicated module by @peterpeterparker in https://github.com/junobuild/juno/pull/2347
- refactor(mctrl): rename module segments into factory for consistency by @peterpeterparker in https://github.com/junobuild/juno/pull/2348
- refactor(shared): rename ledger const into icp_ledger by @peterpeterparker in https://github.com/junobuild/juno/pull/2350
- feat(console): refund canister fee not constant by @peterpeterparker in https://github.com/junobuild/juno/pull/2351
- refactor(console): extract ledger related services to create canister by @peterpeterparker in https://github.com/junobuild/juno/pull/2352
- feat(frontend): move orbiters mission control related by @peterpeterparker in https://github.com/junobuild/juno/pull/2353
- feat(console): create orbiter args by @peterpeterparker in https://github.com/junobuild/juno/pull/2354
- feat(console): create orbiter args - did declarations by @peterpeterparker in https://github.com/junobuild/juno/pull/2355
- build(frontend): bump Juno and DFINITY libs with DID namespace by @peterpeterparker in https://github.com/junobuild/juno/pull/2357
- test(frontend): migrate to PicJS v0.17.0 and PocketIC v11 by @peterpeterparker in https://github.com/junobuild/juno/pull/2356
- build(backend): Update Rust version by @github-actions[bot] in https://github.com/junobuild/juno/pull/2358
- feat(frontend): support subaccount (even if unused for now) by @peterpeterparker in https://github.com/junobuild/juno/pull/2360
- feat(frontend): support for multiple accounts in wallet workers and stores by @peterpeterparker in https://github.com/junobuild/juno/pull/2359
- feat(frontend): replace mission control by wallet ID by @peterpeterparker in https://github.com/junobuild/juno/pull/2361
- chore(toolchain): downgrade Rust v1.91.1 by @peterpeterparker in https://github.com/junobuild/juno/pull/2362
- feat(console): trap if unexpected fee request (instead of returning none) by @peterpeterparker in https://github.com/junobuild/juno/pull/2364
- feat(console): expose get_create_fee for caller by @peterpeterparker in https://github.com/junobuild/juno/pull/2365
- feat(frontend): use new endpoint get_create_fee by @peterpeterparker in https://github.com/junobuild/juno/pull/2366
- feat(console): with_fees utils by @peterpeterparker in https://github.com/junobuild/juno/pull/2367
- feat(frontend): update Svelte and ignore reference only captures the initial value by @peterpeterparker in https://github.com/junobuild/juno/pull/2368
- refactor(frontend): extract cli services by @peterpeterparker in https://github.com/junobuild/juno/pull/2369
- build(core): bump bindgen minor security patch by @peterpeterparker in https://github.com/junobuild/juno/pull/2370
- feat(console): mission control fee by @peterpeterparker in https://github.com/junobuild/juno/pull/2371
- feat(shared): icrc_transfer_token_from by @peterpeterparker in https://github.com/junobuild/juno/pull/2372
- feat(console): get_or_init_account by @peterpeterparker in https://github.com/junobuild/juno/pull/2373
- chore(core): prevents npm from executing scripts by @peterpeterparker in https://github.com/junobuild/juno/pull/2376
- chore(core): run trusted postinstall by @peterpeterparker in https://github.com/junobuild/juno/pull/2377
- feat(console): icrc transfer from by @peterpeterparker in https://github.com/junobuild/juno/pull/2375
- feat(console): name option in create orbiter and satellite by @peterpeterparker in https://github.com/junobuild/juno/pull/2378
- feat(console): segments memory and store by @peterpeterparker in https://github.com/junobuild/juno/pull/2379
- feat(console): make factory more generic to support spinning modules from mission control or user (console ui) by @peterpeterparker in https://github.com/junobuild/juno/pull/2380
- fix(console): block index payment registered as refunded by @peterpeterparker in https://github.com/junobuild/juno/pull/2382
- feat(console): use new field purchaser in payment stable map by @peterpeterparker in https://github.com/junobuild/juno/pull/2381
- chore(core): return Error::UNEXPECTED instead of new_custom(0) by @peterpeterparker in https://github.com/junobuild/juno/pull/2387
- refactor(shared): extract min and max principal constants by @peterpeterparker in https://github.com/junobuild/juno/pull/2386
- fix(console): filter list segments when type is selected by @peterpeterparker in https://github.com/junobuild/juno/pull/2385
- test(setup): use PocketIC ICP feature instead of custom ledger by @peterpeterparker in https://github.com/junobuild/juno/pull/2388
- feat(console): create satellite and orbiter with user by @peterpeterparker in https://github.com/junobuild/juno/pull/2383
- feat(console): create mission control for user by @peterpeterparker in https://github.com/junobuild/juno/pull/2389
- feat(console)!: remove init_user_mission_control_center by @peterpeterparker in https://github.com/junobuild/juno/pull/2390
- feat(console): if user has mission control, make it controller too by @peterpeterparker in https://github.com/junobuild/juno/pull/2391
- feat(frontend): certified get and init account by @peterpeterparker in https://github.com/junobuild/juno/pull/2392
- feat(frontend): merge Mission Control into Monitoring by @peterpeterparker in https://github.com/junobuild/juno/pull/2313
- feat(console): add segment to list even when created from mission control by @peterpeterparker in https://github.com/junobuild/juno/pull/2393
- feat(frontend): better types for selected wallet by @peterpeterparker in https://github.com/junobuild/juno/pull/2394
- feat(frontend): review factory wizard to handle multi wallets by @peterpeterparker in https://github.com/junobuild/juno/pull/2395
- fix(frontend): displayed incoming amount by @peterpeterparker in https://github.com/junobuild/juno/pull/2397
- feat(frontend): support dev wallet for send ICP by @peterpeterparker in https://github.com/junobuild/juno/pull/2396
- feat(frontend): display wallet total by @peterpeterparker in https://github.com/junobuild/juno/pull/2398
- feat(frontend): support for top-up with selected wallet by @peterpeterparker in https://github.com/junobuild/juno/pull/2399
- feat(frontend): close tab guard for modal wizard progress by @peterpeterparker in https://github.com/junobuild/juno/pull/2400
- feat(frontend): review factory wizard (final touch) and attach to existing mctrl by @peterpeterparker in https://github.com/junobuild/juno/pull/2401
- fix(frontend): monitoring order in create wizard should happen after attach by @peterpeterparker in https://github.com/junobuild/juno/pull/2403
- feat(frontend): always reload segments by @peterpeterparker in https://github.com/junobuild/juno/pull/2404
- chore(crates): switch license to only MIT by @peterpeterparker in https://github.com/junobuild/juno/pull/2406
- chore(core): switch license to MIT by @peterpeterparker in https://github.com/junobuild/juno/pull/2405
- build(sputnik): use rquickjs official release by @peterpeterparker in https://github.com/junobuild/juno/pull/2278
- feat(frontend): wallet store support multi ledger by @peterpeterparker in https://github.com/junobuild/juno/pull/2408
- refactor(console): split ledger services modules by @peterpeterparker in https://github.com/junobuild/juno/pull/2409
- feat(console): extract and make process payment generic by @peterpeterparker in https://github.com/junobuild/juno/pull/2410
- feat(console): support for fetch icrc ledger balance and transactions in wallet worker by @peterpeterparker in https://github.com/junobuild/juno/pull/2411
- feat(console): save corresponding ledger-id in saved payments logs by @peterpeterparker in https://github.com/junobuild/juno/pull/2412
- refactor(console): make refund payment generic as well by @peterpeterparker in https://github.com/junobuild/juno/pull/2413
- feat(console): introduce factory fees to replace fees by @peterpeterparker in https://github.com/junobuild/juno/pull/2414
- feat(console): bring fee kind to interfaces by @peterpeterparker in https://github.com/junobuild/juno/pull/2415
- feat(console): deprecate fees (replaced by factory_fees) by @peterpeterparker in https://github.com/junobuild/juno/pull/2416
- feat(frontend): icp to cycles rate worker and store by @peterpeterparker in https://github.com/junobuild/juno/pull/2418
- feat(frontend): remove icp (from cycles) info in canister cycles by @peterpeterparker in https://github.com/junobuild/juno/pull/2419
- feat(frontend): use primarly cycles balance by @peterpeterparker in https://github.com/junobuild/juno/pull/2417
- feat(frontend): use bigint for icp to cycles utils by @peterpeterparker in https://github.com/junobuild/juno/pull/2420
- feat(frontend): icp to cycles in total balance by @peterpeterparker in https://github.com/junobuild/juno/pull/2421
- feat(frontend): display cycles or icp balance by @peterpeterparker in https://github.com/junobuild/juno/pull/2422
- test(setup): support ICRC Cycles ledger approval by @peterpeterparker in https://github.com/junobuild/juno/pull/2424
- feat(console): deprecate icp payments and log into icrc payments by @peterpeterparker in https://github.com/junobuild/juno/pull/2425
- feat(console): replace icp with cycles in the factory with the dev wallet by @peterpeterparker in https://github.com/junobuild/juno/pull/2423
- chore(frontend): update lint libs and apply rules by @peterpeterparker in https://github.com/junobuild/juno/pull/2426
- build(frontend): bump AgentJS v5 and next icp-sdk/canisters and juno by @peterpeterparker in https://github.com/junobuild/juno/pull/2427
- feat(frontend): get rid of ICP and use only cycles by @peterpeterparker in https://github.com/junobuild/juno/pull/2407
- feat(frontend): enable wallet picker only if mission control by @peterpeterparker in https://github.com/junobuild/juno/pull/2428
- feat(frontend): display cycles in wallet transactions amount by @peterpeterparker in https://github.com/junobuild/juno/pull/2429
- feat(frontend): get cycles and icp for dev and update e2e by @peterpeterparker in https://github.com/junobuild/juno/pull/2430
- feat(frontend): buy cycles for wallet by @peterpeterparker in https://github.com/junobuild/juno/pull/2431
- feat(frontend): top-up and factory final tuning for cycles by @peterpeterparker in https://github.com/junobuild/juno/pull/2432
- refactor(frontend): derived $authStore.identity by @peterpeterparker in https://github.com/junobuild/juno/pull/2435
- feat(frontend): leftovers of using mission control satellites instead of global list by @peterpeterparker in https://github.com/junobuild/juno/pull/2436
- feat(console): set satellite and orbiter price to 1.5 ICP by @peterpeterparker in https://github.com/junobuild/juno/pull/2433
- feat(console): use hashmap for factory fees by @peterpeterparker in https://github.com/junobuild/juno/pull/2439
- feat(console): icp fee optional by @peterpeterparker in https://github.com/junobuild/juno/pull/2440
- feat(frontend): Update Passkey AAGUIDs by @github-actions[bot] in https://github.com/junobuild/juno/pull/2441
- feat(console): guard with account and not anonymous by @peterpeterparker in https://github.com/junobuild/juno/pull/2437
- feat(frontend): edit satellite details by @peterpeterparker in https://github.com/junobuild/juno/pull/2434
- feat(frontend): add access keys (without mission control) by @peterpeterparker in https://github.com/junobuild/juno/pull/2442
- feat(frontend): remove access keys (without mission control) by @peterpeterparker in https://github.com/junobuild/juno/pull/2443
- fix(frontend): no attach to mission control in create wizard if already itself by @peterpeterparker in https://github.com/junobuild/juno/pull/2444
- refactor(shared): group memory related utils by @peterpeterparker in https://github.com/junobuild/juno/pull/2445
- refactor(shared): group constants by @peterpeterparker in https://github.com/junobuild/juno/pull/2447
- refactor(shared): group data related utils by @peterpeterparker in https://github.com/junobuild/juno/pull/2446
- refactor(shared): group segments related utils by @peterpeterparker in https://github.com/junobuild/juno/pull/2448
- feat(sputnik): Polyfills updated by @github-actions[bot] in https://github.com/junobuild/juno/pull/2450
- feat(console): attach and detach segments by @peterpeterparker in https://github.com/junobuild/juno/pull/2449
- feat(frontend): delete segment wizard by @peterpeterparker in https://github.com/junobuild/juno/pull/2451
- feat(frontend): launchpad without cockpit by @peterpeterparker in https://github.com/junobuild/juno/pull/2452
- feat(frontend): service tab and integrate mission control tab in monitoring by @peterpeterparker in https://github.com/junobuild/juno/pull/2453
- feat(frontend)!: deprecate route /mission-control by @peterpeterparker in https://github.com/junobuild/juno/pull/2454
- feat(frontend): merge Mission Control and Monitoring wizards by @peterpeterparker in https://github.com/junobuild/juno/pull/2455
- feat(frontend)!: rename satellites layout to launchpad layout by @peterpeterparker in https://github.com/junobuild/juno/pull/2456
- feat(frontend): spin monitoring from launchpad by @peterpeterparker in https://github.com/junobuild/juno/pull/2457
- feat(frontend): review and display dollars for cycles too (when available) by @peterpeterparker in https://github.com/junobuild/juno/pull/2458
- feat(frontend): query + update for canister status by @peterpeterparker in https://github.com/junobuild/juno/pull/2460
- feat(observatory): expose endpoint to query monitoring enabled or not by @peterpeterparker in https://github.com/junobuild/juno/pull/2462
- chore(license): update year to 2026 by @peterpeterparker in https://github.com/junobuild/juno/pull/2464
- build(frontend): bump released icp-sdk/canisters and junobuild libs by @peterpeterparker in https://github.com/junobuild/juno/pull/2463
- chore(dev): redo using published junobuild/console image for the emulator by @peterpeterparker in https://github.com/junobuild/juno/pull/2466
- chore(fix): run npm prepare after install by @peterpeterparker in https://github.com/junobuild/juno/pull/2467
- test(e2e): adapt for new creation flow with cycles and updated launchpad by @peterpeterparker in https://github.com/junobuild/juno/pull/2465
- feat(console): rename SegmentType to StorableSegmentKind by @peterpeterparker in https://github.com/junobuild/juno/pull/2468
- feat(console)!: migrate rates to same pattern as factory fees by @peterpeterparker in https://github.com/junobuild/juno/pull/2470
- feat(observatory): notification url for mission control by @peterpeterparker in https://github.com/junobuild/juno/pull/2469
- feat(observatory)!: rename update_rate_config to set_rate_config by @peterpeterparker in https://github.com/junobuild/juno/pull/2471
- refactor(console): rename canister module to orchestrator by @peterpeterparker in https://github.com/junobuild/juno/pull/2472
- feat(console): rename orchestrator functions and args by @peterpeterparker in https://github.com/junobuild/juno/pull/2473
- feat(shared)!: rename and split create canister and install code with cmc and ic mgmt by @peterpeterparker in https://github.com/junobuild/juno/pull/2475
- refactor(shared): constant canister prefix by @peterpeterparker in https://github.com/junobuild/juno/pull/2476
- feat(frontend): try to improve onboarding and selection or website/application by @peterpeterparker in https://github.com/junobuild/juno/pull/2478
- feat(frontend): review launchpad first Satellite design by @peterpeterparker in https://github.com/junobuild/juno/pull/2479
- feat(frontend): simplify navbar wallet by @peterpeterparker in https://github.com/junobuild/juno/pull/2459
- fix(console): typo in ICP price (1_500_000_000 is 15 not 1.5) by @peterpeterparker in https://github.com/junobuild/juno/pull/2480
- feat(frontend): add an info link in the navbar wallet by @peterpeterparker in https://github.com/junobuild/juno/pull/2482
- refactor(frontend): rename and move link to wallet info for factory by @peterpeterparker in https://github.com/junobuild/juno/pull/2481
- feat(frontend): rename service tab to effective module name by @peterpeterparker in https://github.com/junobuild/juno/pull/2483
- feat(shared): remove unused deprecated type SegmentCanisterStatus by @peterpeterparker in https://github.com/junobuild/juno/pull/2485
- fix(frontend): loading on direct access to hosting settings by @peterpeterparker in https://github.com/junobuild/juno/pull/2486
- chore(release): crates for release v0.0.63 by @peterpeterparker in https://github.com/junobuild/juno/pull/2484
Full Changelog: https://github.com/junobuild/juno/compare/v0.0.62...v0.0.63