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