v2.9.0

affaan-m/ECCv2.9.0Aug 25, 2026by kmendell

AI Summary

This release adds automated S3 backups, standalone container editing, batched notifications, and GitOps redeployment for stopped projects. It also expands the CLI with commands for vulnerabilities, activities, and webhooks.

Key Highlights

  • Automated S3 backups
  • Standalone container editing
  • Batched container-update notifications
  • GitOps redeployment for stopped projects
  • Expanded CLI commands for vulnerabilities, activities, and webhooks

New Features

  • Automated S3 backups
  • Standalone container editing
  • Batched container-update notifications
  • GitOps redeployment for stopped projects
  • Renaming for unused volumes
  • CLI commands for vulnerabilities, activities, and webhooks

Full Release Notes

> [!NOTE]
> This release adds automated S3 backups, standalone container editing, batched container-update notifications, and GitOps redeployment for stopped projects.
> It also expands the CLI with commands for vulnerabilities, activities, and webhooks while improving project handling, OIDC support, and API behavior.

## Features

- Add automated S3 backups — `555c5dfbac478e7bbe336fff29cfe4d6277b2d6d` (#3459) (@affeldt28)
- Batch container-update notifications — `0239f62b45c7b2d485285a54fc54e44b6a0721e8` (#3650) (@wyx1818)
- Add the ability to edit standalone containers — `24894fc7310b747e95d2b5d59e0a5100bb8bf12f` (#3646) (@kmendell)
- Add renaming for unused volumes — `1e413ada2f2413fa2a7c97798288b73ddb9d6b6c` (#3704) (@neurekadev)
- Pull and redeploy images after GitOps sync for stopped projects — `f17e84412ae41dac1945f5b6896bafce8c244bb9` (#3698) (@ohOgil)
- Add CLI commands for the latest server features and adopt hyphen-free command naming — `d84511b8d67bef5fe3117832c9173ecc987e38da` (@kmendell)
- Add CLI commands for vulnerabilities, activities, and webhooks with end-to-end coverage — `f4f9df0e8f1373a9e7fcba145383fcda8b4b3fc2` (@kmendell)

## Fixes

- Ensure stable ordering for page walks without an explicit sort — `bf783a828ef816acf789851dffb2b8b8ed249450` (#3648) (@kmendell)
- Percent-decode API path parameters before use — `c469305cdacf49b80f7f5639f00eef597c1ca102` (#3682) (@kmendell)
- Show Git-synced project files as read-only instead of hiding them or crashing — `da21e2694754434d9b6b936834aed44173378ef1` (#3690) (@kmendell)
- Send the build directive for projects from the backend — `53017c67cf91656965d667bf23e80dc0b46bd482` (#3691) (@kmendell)
- Allow assigning roles to OIDC users and handle username collisions during OIDC login — `c38c2580fb14f8a8f15f74ef9203bfdb9896c466` (#3692) (@kmendell)
- Make the update-all dialog scroll correctly with large fleets — `b7a619b2c7f8f08f05cc78f3db51ac6aa63e9ef4` (@kmendell)
- Validate cgroup-derived container IDs during self-detection with `network_mode: service` — `c24013107eff0adba0813b66b50350a03a487895` (#3710) (@kmendell)
- Handle updates to discovered Compose projects — `275aface140f0d41e67adef402859f8a2a6ba207` (#3711) (@kmendell)

## Refactoring

- Upgrade to Go 1.27.0 — `b22edb6909c5497f3e72e27d4570551c7fb2fe91` (#3680) (@kmendell)
- Use native Temporal for time and date parsing — `60c2dee13cd9405175b6e0a5d65053724bb005cd` (#3714) (@kmendell)
- Use AI generation for GitHub release notes — `2240e8f0c7a49331f3ba7e385d7b793b844fbcaa` (#3739) (@kmendell)

## Dependency updates

- Bump `@sveltejs/kit` from 3.0.0-next.21 to 3.0.0-next.23, then to 3.0.0-next.25 — `cd8c48b36c926a5342a5b83f373269e4ec4093a1` (#3672), `70475a2cf7ca52f2d017422551ce645e4507aaa4` (#3727) (@dependabot[bot])
- Bump `svelte` from 5.56.8 to 5.56.9, then to 5.56.10 — `d4d83941e2685a2273a6437670d17b71816d5620` (#3666), `1478dd7df710c42161b16f7cb07be79193e7570b` (#3724) (@dependabot[bot])
- Bump `svelte-sonner` from 1.1.1 to 1.2.1 — `39ce639ebe506fb4b825fd08335a98bc55a7efd1` (#3670) (@dependabot[bot])
- Bump `@xyflow/svelte` from 1.6.2 to 1.6.3 — `a59e1e8cdc38513921dc01c4e686581e208fd10d` (#3668) (@dependabot[bot])
- Bump `charm.land/lipgloss/v2` from 2.0.5 to 2.0.6 in the CLI — `98f5cac2359a4b5dd42355b9c4da24ebc1a1739d` (#3662) (@dependabot[bot])
- Bump `@codemirror/view` from 6.43.8 to 6.43.9 — `f2f34fac879a920afa772c0a6f0b509b7a74c478` (#3664) (@dependabot[bot])
- Bump the AWS SDK for Go v2 dependency group with five updates in the backend — `ffc1f128f487d1942f56c636c1daeba757649e57` (#3731) (@dependabot[bot])
- Bump `github.com/samber/slog-echo/v2` from 2.0.0 to 2.1.0 in the backend — `6c3f58f2b29acfb341d2071857e089b68f69529d` (#3735) (@dependabot[bot])
- Bump `go.getarcane.app/acfs` from 0.4.1 to 0.4.2 in the CLI and backend — `65b97153f05e20107ca04c70c60f3c1210409ac3` (#3722), `8087a444b343b9e8099df3a40d3a6fbb67c85441` (#3732) (@dependabot[bot])
- Bump `github.com/mattn/go-runewidth` from 0.0.27 to 0.0.28 in the CLI — `3f43202a9c7550d087f60077a53ae59616b925f7` (#3719) (@dependabot[bot])
- Bump `go.getarcane.app/updater` from 0.7.2 to 0.7.3 in the backend — `d9b58268878a9a3de48013a6aa6d1f2b1681112b` (#3733) (@dependabot[bot])
- Bump `go.getarcane.app/docker/convert` from 0.1.0 to 0.2.0 in the backend — `8d52e7a704f675fcc01a31a72b29b9a8e5799011` (#3734) (@dependabot[bot])
- Bump `charm.land/bubbletea/v2` from 2.0.8 to 2.0.9 in the CLI — `f012dbf16a2473a78fa9c44e6b2e7c384e522679` (#3720) (@dependabot[bot])
- Bump `charm.land/bubbles/v2` from 2.1.1 to 2.2.0 in the CLI — `29c5dc6afd682d08a26185ec5aa07a88e17ac6f9` (#3721) (@dependabot[bot])
- Bump `@tanstack/svelte-query` from 6.1.38 to 6.1.39 — `d200e9f73555d23b26a7e80270283fa3a9302213` (#3725) (@dependabot[bot])
- Bump `bits-ui` from 2.18.1 to 2.19.0 — `3646524258861b2f6d67f7bd67be4b96a830e0c0` (#3728) (@dependabot[bot])
- Bump `marked` from 18.0.9 to 18.0.10 — `82a2771040785fd68d44d1c66d8691543b3c4d7a` (#3729) (@dependabot[bot])
- Bump `vite-plus` to 0.3.0 — `f3002cbd30db67f0bd4e05feaf9dec830b1b35a3` (@kmendell)
- Bump `@tanstack/virtual-core` from 3.17.7 to 3.17.8 — `ea1ab4b086e857166bdff9f43fabb92f7cdb7360` (#3723) (@dependabot[bot])