Latest Juno Releases

Since I’m about to start working like (even more) a madman (thread), I figured I’d kick off this thread about releases, especially for devs not yet using the Juno ecosystem. :wink:


Juno v0.0.35

Last week, I released version v0.0.35, featuring two major updates:

  • The ability to launch Satellites or Orbiters (analytics) in any public subnet
  • Support for transferring ICP from devs’ wallets to the outside world

CLI v0.0.81

Today, I published a community-requested feature for the CLI: the ability to define pre- and post-deploy scripts.

Super handy for automatically building your app before running juno deploy.

import { defineConfig } from '@junobuild/config';

/** @type {import('@junobuild/config').JunoConfig} */
export default defineConfig({
	satellite: {
		id: 'ck4tp-aaaaa-aaaaa-abbbb-cai',
		source: 'build',
		predeploy: [
			'npm run lint',
			'npm run build'
		],
		postdeploy: ['node hello.mjs']
	}
});

Until next time! :wave:

10 Likes

Juno v0.0.36

I’ve released today this new version focused on client-side improvements with no new module (smart contract) updates included.

It includes a migration to Svelte v5 and updated ESLint configuration (that’s way too many frontend changes).

Plus, there’s a new feature to receive ICP directly from OISY!

(the forum does not support video, you can find a video there x.com)

Until next time! :wave:

2 Likes

Docs v2.2.0

I’ve released a new version of the website! For developers and newcomers, the biggest improvement is, hopefully, a revamped guides section with tailored paths. Now they’ll see options like: ‘What are you looking to do? Build or Host?’ :dart:

Another cool update is the CLI documentation—no more manual updates for me! :smile: All CLI help commands now generate markdown, and these are embedded into the website on a weekly basis automatically. :smiley:

5 Likes

Juno v0.0.37

In response to the recent cost increase for creating new canisters (from 0.1 TCycles to 0.5 TCycles, a +400% increase, proposal 134032) and after discussing with the community, I released a new version that adjusts the allocation of cycles for new modules, increasing from 1.1 TCycles to 1.6 TCycles. It also increases the pricing for additional modules from 0.3 ICP to 0.4 ICP.

Feature-wise, this release introduces a new option for Satellite Authentication and Collections, enabling developers to set a maximum number of updates per minute. An option similar to what is already implemented in Internet Identity or in Juno’s Console.

Since this is a major release, all JavaScript libraries, plugins, CLI tools, Docker containers, and crates have been updated as well.

Last but not least, every new Satellite now launches with a sleek and informative default web page—delivering a great first impression right out of the box! :rocket::sparkles:

Until next time! :wave:

4 Likes

Docs v2.3.0

With a bit of delay, I spent the day documenting all the new features—hooks and new JS functions—that were released on Sunday in Juno v0.0.37.

https://juno.build

I also tackled tasks that had been on my to-do list for quite some time, such as documenting that the Docker container we use for local development actually exposes a small additional server, which can be used for admin tasks like obtaining free local ICP from the ledger.

#!/usr/bin/env bash

if [ -z "$1" ]; then
  read -r -p "Enter the Wallet ID (owner account, principal): " PRINCIPAL
else
  PRINCIPAL=$1
fi

curl "http://localhost:5999/ledger/transfer/?to=$PRINCIPAL"

Finally, I also reworked the entire configuration section, providing detailed explanations for each and every option available in the juno.config file, whether in TypeScript, JavaScript, or JSON.

import { defineConfig } from "@junobuild/config";

export default defineConfig({
  satellite: {
    id: "qsgjb-riaaa-aaaaa-aaaga-cai",
    source: "build",
    ignore: ["**/*.txt", ".tmp/"],
    gzip: false,
    encoding: [["**/releases/*.gz", "identity"]],
    predeploy: ["npm run build", "npm run lint"],
    postdeploy: ["./scripts/notify-admins.sh", "echo 'Deployment complete'"],
    storage: {
      headers: [
        {
          source: "/",
          headers: [["Cache-Control", "public,max-age=0,must-revalidate"]]
        }
      ],
      rewrites: [
        {
          source: "/hello/**",
          destination: "/hello/world.html"
        }
      ],
      redirects: [
        {
          source: "/hello",
          location: "/world/index.html",
          code: 301
        }
      ],
      iframe: "same-origin",
      maxMemorySize: {
        stable: 1_073_741_824n // For example max. 1 GiB in bytes of Stable memory
      }
    },
    datastore: {
      maxMemorySize: {
        stable: 1_073_741_824n // For example max. 1 GiB in bytes of Stable memory
      }
    },
    authentication: {
      internetIdentity: {
        derivationOrigin: "hello.com"
      }
    },
    assertions: {
      heapMemory: 678000000
    },
    settings: {
      freezingThreshold: 2_592_000n,
      reservedCyclesLimit: 5_000_000_000_000n,
      logVisibility: "controllers",
      heapMemoryLimit: 2048n,
      memoryAllocation: 1_073_741_824n,
      computeAllocation: 50n
    }
  },
  orbiter: {
    id: "eeeee-fffff-ddddd-11111-cai"
  }
});

2 Likes

New on the Mission Control: buy cycles through Stripe, with the help of cycle.express :sparkles:

For those unfamiliar, “Mission Control” is the dev’s wallet on Juno. It’s a canister solely controlled by them, which in turn manages their projects.

Developers can transfer cycles between all their modules and wallet.

3 Likes

Support for large WASM modules (>2MB) is here! :tada:

Now available in the Juno CLI and local development with Juno Docker.

Coming (really) soon to the Juno Console too! The best part is that all three share the exact same code and logic. Code once, reuse everywhere—for the win!

Ah, and I reviewed the upgrade flow in the UI. It’s beautiful, thanks to the component many of you are already familiar with if you frequently use the foundation’s dapps. Open source for the win here too!

1 Like

Juno v0.0.38

I’ve formalized the recent changes into a version and released a new update of the Console (client-side only) to mainnet.

Cherry on top? The dark theme got even darker. :man_vampire::bat:

Juno v0.0.39

WE GOT BACKUPS on Juno!!! :partying_face:

It works as follows: Right now, only one backup per module is allowed, as determined by the IC. You can create, restore, and delete backups manually for each module whenever you need. Backups are also automatically created during the upgrade process to take snapshots when upgrading to a new version. If you prefer, you can opt out in the advanced options to skip creating a backup or avoid overwriting an existing one.

The features have been implemented in both the Console UI and our CLI.

I’ve been waiting for this feature my whole life. Huge shoutout to the DFINITY team for making it happen on the IC!

5 Likes

:earth_africa: TIL the CMC actually exposes the list of supported subnets through two endpoints, not just one!

So, the European & Fiduciary subnets are now also available in Juno Console for spinning up new Satellites ! :artificial_satellite:

2 Likes

Juno v0.0.40

I’m thrilled to unveil the first big feature of the year: a brand-new way for Juno devs to monitor your wallet and modules automatically! :rocket:

:white_check_mark: Keeps cycles topped up when balances run low
:bell: Sends email notifications for top-ups (opt-in)
:arrows_counterclockwise: Set it up once, never again—it’s automatically applied to all future projects

Everything is controlled through the Mission Control—which means that developers remain the sole controllers!

The feature is built using the Canfund library developed by the Foundation. 12/10 would highly recommend it for building similar features.

This feature is part of an absolutely massive release. I believe there were over 270 commits shipped. :nerd_face:

It’s going to be a great year to build, Happy New Year to all! :tada:

3 Likes

In this version, I also revised the navigation to integrate Analytics, Monitoring, Mission Control, and Wallet within the main panel. This update led to the introduction of new colors :man_artist:.

4 Likes

Joining the wallet :heavy_dollar_sign: display party – balances and amounts are now displayed in USD on the Juno Console too! :partying_face:

Kudos to KongSwap for sharing their exchange rate endpoint ! :raised_hands:

While I was at it, I fixed a few navigation leftovers from the last version, reviewed the UX of all transaction modals, integrated the exchange feature into each of them, and… had some fun with the colors :man_artist:

1 Like

Juno v0.0.42

Don’t deploy on Fridays?

I just released a new version focused entirely on improving the wallet and enhancing the user experience in the Console.

:zap: Snappier UI/UX
:lock: Improved data certification (query+update calls)
:magic_wand: Slick new wizards for top-ups, cycle transfers, and sending ICP

Happy weekend, everyone! :sunny::rocket:

1 Like

In the spirit of "always up-to-date, if possible :wink: ", I’ve updated all Juno templates to Tailwind v4 which was released earlier today.

npm create juno@latest
1 Like

Juno v0.0.43

Hey :wave:

I’ve just released a new update for the Console frontend. While there aren’t many visual changes—aside from a cute new backdrop blur—there are quite few improvements under the hood. The way we retrieve and store data using workers (including module status, memory, and monitoring) has been revamped. Additionally, I’ve updated all dependencies.

I also try my luck setting the max retry of the agent-js HttpClient to 10 to maybe (?) solve a random issue of the IC which throws - after successfully creating new Satellites - an error Invalid basic signature: EcdsaP256 signature could not be verified.

If anyone would experience this issue after this release, please reach out—your feedback would be really helpful!