v2.10.0
Note
This release adds selective system restores, scheduled volume backups, Convert to Compose, direct image patching, Apple push notifications, and ML-DSA-87 signing for authentication and edge mTLS.
It also improves upgrade reliability, image update discovery, project logs, Swarm access, backup downloads, and UI performance.
Backups and recovery
- Add selective system restores and harden recovery β
874134cfedc2e8ae44e6f0cd7e957e87bc760988(#3708) (@neurekadev) - Add system-managed volume backup scheduling β
53a959f93e26193c6c9ac4bb4053555f18e8b2ff(#3737) (@neurekadev) - Reduce S3 backup download amplification β
538350af6c72d0e6d80164f6aacb3b8dd02cd1bd(#3773) (@kmendell)
Containers, images, and projects
- Add experimental Convert to Compose for running containers β
9aef34e4ea703cbee29d31a4338413018ce54f34(#3746) (@kmendell) - Add direct Copacetic image patching β
3617720518f0bdfc4282a7b5844508f3b7da60ec(#3744) (@kmendell) - Restrict Copa patches to OS-level issues β
e95c55326a59a615993113e0ee809df734a40b0a(@kmendell) - Store raw Trivy reports in the database and fix patch-target pagination β
53e7e82715bfebd9ed0d1a27dc0b777d0bbd68b0(@kmendell) - Honor UI container exclusions during image update discovery β
b9b2092c0e36d3eaba66335e003b7ecd5e858540(#3763) (@kmendell) - Stop checking Arcane-built local images against registries β
8d10b7db2d34aefa44f0f9a684f3b84b2ae355d7(@kmendell) - Query image update information directly instead of caching it per container listing β
509c6e81babef8c3ac0b4bf9c418c1d3115c50a8(@kmendell) - Resolve upgrade target images for blank-target self-upgrades β
8bbd157a2963874998c481487d132f460cb15b1c(#3772) (@kmendell) - Honor
COMPOSE_FILEand other predefined environment variables in projects β6e1dbb2d22858014970f3b235b73acea0fc70ad5(#3709) (@kmendell) - Forward registry authentication when deploying Swarm stacks from Git Sync or source edits β
1570a1da7a00e20012dcdf3d5496e2d9f39f732f(#3787) (@elfensky)
Reliability and operations
- Return HTTP 200 from the environment health check β
6b46c36a237328fc0728ac8fd02e8bc79a149986(@kmendell) - Write workspace files using the volumeβs runtime identity instead of root β
f4958ae8c8318bd921ef5be4ae9a6436309b0cd5(#3745) (@kmendell) - Match Docker CLI memory accounting for cgroup v1 containers β
4c479f1c5b01ae6932e2de2ad91ca79aa6874edc(@kmendell) - Purge leftover Git clone scratch directories β
d57d18f1136c1e518be656615f6e2df01d777e34(#3771) (@kmendell) - Preserve stderr streams and Docker timestamps in project logs β
cac8a9090baea3b44aa2868d195cd21c3dcf62f0(#3770) (@kmendell) - Allow the Viewer role to browse Swarm resources β
3f205dea94fa6d40189cf80eec665e39c5131e60(#3779) (@kmendell) - Trigger agent self-upgrades asynchronously and pass the managerβs resolved target version β
d857910d9b08f96e7739c679415b18fd192a01b4(#3786) (@kmendell) - Serialize explicit empty values in partial-update DTOs with
omitzeroβ24592561d9154da35d7fecd380e12c50e3c5783a(@kmendell)
Authentication and notifications
- Add native Apple push notifications for the iOS app β
4b1abefec6b9b93ea331e1259e061c6862025a11(#3783) (@kmendell) - Sign and verify sessions, OIDC, passkeys, and edge mTLS with ML-DSA-87 β
2993fd316d41fafc110476370870a49b9202969c(#3785) (@kmendell) - Accept display names in email notification From addresses β
034e7e7efd4e756f0c3145099f24f2afe0bc7596(#3776) (@ohOgil)
User interface
- Improve table-scrolling performance across all views β
1243d8e0bafdc110b8443ef710d999e5104ce632(@kmendell) - Keep dialog widths within the content area β
5e7acb61d3bb6ef4bc60a80266c424f1d40d02c2(@kmendell) - Move frontend files into a more maintainable structure β
938882a174322a1bbc6fe50fe926a4c61820797b(@kmendell)
Dependencies
- Bump
github.com/aquasecurity/trivyfrom 0.69.3 to 0.72.0 in/backendβ29784fead298d740fb07db2754d53ff55e3bb9c4(#3748) (@dependabot[bot]) - Bump
github.com/sirupsen/logrusfrom 1.10.0 to 1.10.1 in/backendβbe4220fa2cc44c348177de5c39354b716a517413(#3753) (@dependabot[bot]) - Bump
github.com/quay/claircorefrom 1.5.52 to 1.5.53 in/backendβ611b5d7ff298ccd51b0675874354282aa117356c(#3747) (@dependabot[bot]) - Bump
github.com/samber/hotfrom 0.13.0 to 0.13.1 in/backendβcecdb777ec0f3487ab442f2bd1a45dc1120f0564(#3754) (@dependabot[bot]) - Bump
charm.land/bubbles/v2from 2.2.0 to 2.2.1 in/cliβb631dd67c34ef642c3bb177ad3d9df09c0974b0d(#3752) (@dependabot[bot]) - Bump
@tanstack/svelte-queryfrom 6.1.39 to 6.1.43 β55762896904d9453f2c2cbeb26645b6e0f6818a2(#3761) (@dependabot[bot]) - Bump
github.com/google/go-containerregistryfrom 0.21.9 to 0.22.0 in/backendβ3c0aac7c557ace8a15ffbd60dd6dc4448ec43a93(#3755) (@dependabot[bot]) - Bump
markedfrom 18.0.10 to 18.0.11 β201a3ff183a0f07e342398d0b1b12ca3847777a5(#3759) (@dependabot[bot])
Refactoring
- Use generics to eliminate redundant logic β
671ebef57234c40acba287925c5ee6ac9efdd399(#3683) (@kmendell) - Migrate JWT and JWKS handling to jwx v4 β
45b063a074f521f45591f58c7b1d89b4395dc267(#3790) (@kmendell)