| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| juju-agents-4.0.12-linux-ppc64el.tar.xz | 2026-06-29 | 45.5 MB | |
| juju-agents-4.0.12-linux-s390x.tar.xz | 2026-06-29 | 49.3 MB | |
| juju-agents-4.0.12-linux-arm64.tar.xz | 2026-06-29 | 46.8 MB | |
| juju-agents-4.0.12-linux-amd64.tar.xz | 2026-06-29 | 54.8 MB | |
| juju-4.0.12-darwin-arm64.tar.xz | 2026-06-29 | 48.3 MB | |
| juju-4.0.12-darwin-amd64.tar.xz | 2026-06-29 | 53.1 MB | |
| juju-4.0.12-linux-ppc64el.tar.xz | 2026-06-29 | 43.1 MB | |
| juju-4.0.12-linux-s390x.tar.xz | 2026-06-29 | 46.8 MB | |
| juju-4.0.12-linux-arm64.tar.xz | 2026-06-29 | 44.7 MB | |
| juju-4.0.12-linux-amd64.tar.xz | 2026-06-29 | 52.0 MB | |
| Juju 4.0.12 source code.tar.gz | 2026-06-28 | 18.3 MB | |
| Juju 4.0.12 source code.zip | 2026-06-28 | 23.1 MB | |
| README.md | 2026-06-28 | 13.5 kB | |
| Totals: 13 Items | 525.9 MB | 0 | |
The Juju team is proud to release Juju 4.0.12!
This is a point release to the stable 4.0 series of Juju.
Checkout the Juju 4.0.12 Release Notes
What's Changed
- docs: set up multi-version sitemaps by @tmihoc in https://github.com/juju/juju/pull/22298
- chore: increment juju to 2.9.59 by @jujubot in https://github.com/juju/juju/pull/22328
- docs: add 2.9.58 release notes by @wallyworld in https://github.com/juju/juju/pull/22338
- chore: increment juju to 2.9.60 by @jujubot in https://github.com/juju/juju/pull/22370
- docs: add 2.9.59 release notes by @wallyworld in https://github.com/juju/juju/pull/22379
- docs: update binary download links from Launchpad to GitHub releases by @tmihoc in https://github.com/juju/juju/pull/22443
- build(docs): align 2.9 doc infrastructure with 3.6 by @tmihoc in https://github.com/juju/juju/pull/22448
- chore(deps): bump golang.org/x/crypto from 0.50.0 to 0.51.0 by @dependabot[bot] in https://github.com/juju/juju/pull/22420
- chore(deps): bump golang.org/x/mod from 0.35.0 to 0.36.0 by @dependabot[bot] in https://github.com/juju/juju/pull/22421
- chore(deps): bump golang.org/x/net from 0.53.0 to 0.54.0 by @dependabot[bot] in https://github.com/juju/juju/pull/22422
- docs: clarify secret uri, name, label by @tmihoc in https://github.com/juju/juju/pull/21689
- docs: add 3.6.23 release notes by @wallyworld in https://github.com/juju/juju/pull/22462
- chore(deps): bump golang.org/x/tools from 0.44.0 to 0.45.0 by @dependabot[bot] in https://github.com/juju/juju/pull/22463
- chore(deps): bump golang.org/x/sys from 0.44.0 to 0.45.0 by @dependabot[bot] in https://github.com/juju/juju/pull/22474
- chore(deps): bump golang.org/x/net from 0.54.0 to 0.55.0 by @dependabot[bot] in https://github.com/juju/juju/pull/22483
- chore(deps): bump golang.org/x/crypto from 0.51.0 to 0.52.0 by @dependabot[bot] in https://github.com/juju/juju/pull/22484
- feat(maas): support explicit VM provisioning via virtual-machine virt-type by @wallyworld in https://github.com/juju/juju/pull/22285
- fix: change how k8s unit churn is detected to avoid incorrect status by @wallyworld in https://github.com/juju/juju/pull/22498
- fix: do not drop root disk constraints when custom networking by @skatsaounis in https://github.com/juju/juju/pull/22473
- chore(deps-dev): bump pytest from 8.4.1 to 9.0.3 in /testcharms/charms/credential-get-k8s by @dependabot[bot] in https://github.com/juju/juju/pull/22231
- chore(deps): bump requests from 2.32.5 to 2.33.0 in /testcharms/charms/credential-get-k8s by @dependabot[bot] in https://github.com/juju/juju/pull/22147
- chore(deps): bump pygments from 2.19.2 to 2.20.0 in /testcharms/charms/credential-get-k8s by @dependabot[bot] in https://github.com/juju/juju/pull/22142
- chore(deps): bump pyasn1 from 0.6.1 to 0.6.3 in /testcharms/charms/credential-get-k8s by @dependabot[bot] in https://github.com/juju/juju/pull/22039
- chore(deps): bump urllib3 from 2.5.0 to 2.6.3 in /testcharms/charms/credential-get-k8s by @dependabot[bot] in https://github.com/juju/juju/pull/21837
- fix: properly handle legacy k8s modeloperator labels by @wallyworld in https://github.com/juju/juju/pull/22510
- fix(apiclient proxy): fix apiclient http transport proxy by @SimoneDutto in https://github.com/juju/juju/pull/22507
- fix(status): restore k8s application address in status by @jack-w-shaw in https://github.com/juju/juju/pull/22459
- fix: wait for workerpool to become idle by @iyiguncevik in https://github.com/juju/juju/pull/22494
- chore: increment juju to 4.0.12 by @jujubot in https://github.com/juju/juju/pull/22508
- Fix snap configure hook in 3.6 by @TheJJ in https://github.com/juju/juju/pull/22495
- feat(uniter): move secret deletions into CommitHookChanges transaction by @gfouillet in https://github.com/juju/juju/pull/22465
- fix: presence status reporting for container placement by @nvinuesa in https://github.com/juju/juju/pull/22519
- fix(credential): validate auth type against cloud on CheckCredentialModels by @iyiguncevik in https://github.com/juju/juju/pull/22512
- fix: ensure external controller addresses are always migrated by @wallyworld in https://github.com/juju/juju/pull/22518
- docs: update the peer relation hook doc by @wallyworld in https://github.com/juju/juju/pull/22525
- feat: httpclient metrics by @SimonRichardson in https://github.com/juju/juju/pull/22535
- feat: migration export/import ddl by @nvinuesa in https://github.com/juju/juju/pull/22391
- feat: consistently show offer connections by @kian99 in https://github.com/juju/juju/pull/22541
- feat: add missing indexes and PKs by @manadart in https://github.com/juju/juju/pull/22502
- chore: merge 2.9 by @wallyworld in https://github.com/juju/juju/pull/22536
- fix: include trailing / in oci repo paths when needed by @wallyworld in https://github.com/juju/juju/pull/22554
- docs: add UUID generation rule to AGENTS.md by @nvinuesa in https://github.com/juju/juju/pull/22446
- chore: remove some LXD profile funcitonality by @manadart in https://github.com/juju/juju/pull/22548
- fix: handle slow upload of k8s oci image metadata by @wallyworld in https://github.com/juju/juju/pull/22553
- docs(releasenotes): add juju 4.0.11 release notes by @anvial in https://github.com/juju/juju/pull/22542
- test: avoid introspection shutdown log race by @iyiguncevik in https://github.com/juju/juju/pull/22528
- fix(deps): bump Go 1.26.4 to resolve govulncheck failures by @gfouillet in https://github.com/juju/juju/pull/22561
- fix: transaction retry issues by @SimonRichardson in https://github.com/juju/juju/pull/22562
- fix(unmanaged): implement Schema() to satisfy ModelConfigProvider interface by @gfouillet in https://github.com/juju/juju/pull/22514
- fix: token transport for bearer token auth had a typo by @wallyworld in https://github.com/juju/juju/pull/22569
- chore: merge 2.9 by @wallyworld in https://github.com/juju/juju/pull/22556
- fix(cmr): offerer relations watcher initial query by @nvinuesa in https://github.com/juju/juju/pull/22566
- fix(unitstate): prevent panic when charm state is empty at commit time by @gfouillet in https://github.com/juju/juju/pull/22531
- fix(deployer): gate deployer on controlleragentconfig socket readiness by @gfouillet in https://github.com/juju/juju/pull/22515
- fix: flakey client test by @jack-w-shaw in https://github.com/juju/juju/pull/22506
- JUJU-9033: Move secret grant/revoke into CommitHookChanges txn by @gfouillet in https://github.com/juju/juju/pull/22544
- feat(modelmigration): implement source-side domain service and state by @nvinuesa in https://github.com/juju/juju/pull/22555
- feat(static-analysis): add check to guard against dodgy txn retries by @jack-w-shaw in https://github.com/juju/juju/pull/22564
- feat(modelmigration): implement model migration domain watchers by @nvinuesa in https://github.com/juju/juju/pull/22559
- feat: re-enable migrate check by @jack-w-shaw in https://github.com/juju/juju/pull/22581
- feat: compatibility shim for ModelUpgrader facade by @manadart in https://github.com/juju/juju/pull/22488
- fix: add model tag to JWT AuthInfo by @kian99 in https://github.com/juju/juju/pull/22598
- fix: use the model's project when checking LXD version on upgrade by @nvinuesa in https://github.com/juju/juju/pull/22591
- feat: handle logsink 503 failure by @SimonRichardson in https://github.com/juju/juju/pull/22590
- chore: remove unused types by @jack-w-shaw in https://github.com/juju/juju/pull/22603
- refactor: smoke matrix tests by @SimonRichardson in https://github.com/juju/juju/pull/22608
- fix(externalcontrollerupdater): close watcher client on shutdown race by @nvinuesa in https://github.com/juju/juju/pull/22607
- chore: merge 2.9 by @wallyworld in https://github.com/juju/juju/pull/22609
- feat(migration): add serialized model v2 export contract by @nvinuesa in https://github.com/juju/juju/pull/22601
- feat(uniter): move track-latest-secret into CommitHookChanges transaction by @gfouillet in https://github.com/juju/juju/pull/22580
- fix(migration): import application storage directives by @jack-w-shaw in https://github.com/juju/juju/pull/22615
- fix: when upgrading, allow for the controller app to be missing by @wallyworld in https://github.com/juju/juju/pull/22622
- chore: update premerge workflows by @wallyworld in https://github.com/juju/juju/pull/22623
- test!: refactor juju to use canonical/gomock by @hpidcock in https://github.com/juju/juju/pull/22449
- feat: support adding manual clouds to a controller by @wallyworld in https://github.com/juju/juju/pull/22570
- feat(resource): add model migration export listing by @nvinuesa in https://github.com/juju/juju/pull/22613
- feat: add ModelConfigSchema method to Cloud by @SimoneDutto in https://github.com/juju/juju/pull/22600
- refactor: drop custom pprof handlers by @SimonRichardson in https://github.com/juju/juju/pull/22619
- docs: expand the documentation for the implicit juju-info relation by @tonyandrewmeyer in https://github.com/juju/juju/pull/22373
- fix: guard against cloud init overwriting agent.conf on reboot by @wallyworld in https://github.com/juju/juju/pull/22632
- fix(deps): eliminate github.com/juju/utils/v3 indirect dependency (GO-2025-3798) by @gfouillet in https://github.com/juju/juju/pull/22582
- fix: 3.6 → 4.0 migration fails due to missing subnet (JUJU-9647) by @gfouillet in https://github.com/juju/juju/pull/22605
- feat(modelmigration): add controller export helpers by @nvinuesa in https://github.com/juju/juju/pull/22614
- fix: db repl by @SimonRichardson in https://github.com/juju/juju/pull/22635
- feat: include workload version in history logging by @manadart in https://github.com/juju/juju/pull/22648
- fix(ci): use branch-built operator image in upgrade smoke by @iyiguncevik in https://github.com/juju/juju/pull/22640
- refactor: wire the migration master worker with the modelmigration domain by @nvinuesa in https://github.com/juju/juju/pull/22636
- test: goroutine leak profile by @SimonRichardson in https://github.com/juju/juju/pull/22618
- Docs migrate 36 by @tmihoc in https://github.com/juju/juju/pull/22644
- feat: tla+ spec for object store state machine by @SimonRichardson in https://github.com/juju/juju/pull/22530
- fix: correct JOIN condition in secret content deletion queries by @gfouillet in https://github.com/juju/juju/pull/22656
- Docs migrate 40 by @tmihoc in https://github.com/juju/juju/pull/22645
- chore: increment juju to 3.6.25 by @jujubot in https://github.com/juju/juju/pull/22633
- chore: pin github actions to specific shas by @wallyworld in https://github.com/juju/juju/pull/22631
- feat(modelmigration): wire SourceControllerInfo through domain service by @nvinuesa in https://github.com/juju/juju/pull/22653
- feat: prevent 4.0 -> 4.0 migrations by @nvinuesa in https://github.com/juju/juju/pull/22659
- feat: limit size of charm config and relation settings by @manadart in https://github.com/juju/juju/pull/22664
- fix: ensure Dqlite clients are closed by @manadart in https://github.com/juju/juju/pull/22672
- feat: move secret updates into CommitHookChanges transaction by @gfouillet in https://github.com/juju/juju/pull/22651
- feat(migration): exchange admin password for macaroon during prechecks by @nvinuesa in https://github.com/juju/juju/pull/22675
- docs: add SQL query rules for agents by @nvinuesa in https://github.com/juju/juju/pull/22677
- perf(add-model): add-model in lxd by @SimoneDutto in https://github.com/juju/juju/pull/22657
- chore: merge 3.6 by @wallyworld in https://github.com/juju/juju/pull/22646
- fix: upgrade-controller with --build-agent by @manadart in https://github.com/juju/juju/pull/22689
- fix(snap): add FIDO/U2F security key support for juju ssh by @iyiguncevik in https://github.com/juju/juju/pull/22676
- fix: flaky cmr test by @iyiguncevik in https://github.com/juju/juju/pull/22695
- chore: remove redundant missing test coverage inventories by @manadart in https://github.com/juju/juju/pull/22654
- fix: preserve app constraints without model defaults by @nvinuesa in https://github.com/juju/juju/pull/22703
- refactor: CODEOWNERS to reflect org changes by @SimonRichardson in https://github.com/juju/juju/pull/22705
- fix: use errors.Is to detect reboot/shutdown sentinels in machine agent by @iyiguncevik in https://github.com/juju/juju/pull/22708
- fix(lxd): resolve container NIC bridges from ProviderNetworkId so space subnets are attached again by @nvinuesa in https://github.com/juju/juju/pull/22714
- fix(ci): ci job for conflict notifications by @iyiguncevik in https://github.com/juju/juju/pull/22722
- fix(relation): return remote-app units in ApplicationRelationsInfo for non-peer relations by @gfouillet in https://github.com/juju/juju/pull/22720
- chore: update deps for vuln GO-2026-5224 by @iyiguncevik in https://github.com/juju/juju/pull/22739
- ci: fix mattermost notification channel by @iyiguncevik in https://github.com/juju/juju/pull/22737
- fix: network-get returning empty placeholder device by @jack-w-shaw in https://github.com/juju/juju/pull/22726
New Contributors
- @skatsaounis made their first contribution in https://github.com/juju/juju/pull/22473
- @TheJJ made their first contribution in https://github.com/juju/juju/pull/22495
Full Changelog: https://github.com/juju/juju/compare/v4.0.11...v4.0.12