Conversation
ahze
commented
Sep 23, 2026
Member
- updates: report per service, judged by what the container runs
- ui: Update opens a per-service panel instead of acting on click
- update: pull and recreate only the services that changed
- ui: mark the service that has an update, on its own row
- ui: one Services tab; Update applies a version bump
- stack: write stack files atomically
- update: say what an update changes; make partial updates actually happen (e.g: immich stack)
- exec: close open terminals when fjordd stops
- update: watch updated containers say up before calling it done-done
- update: roll a service back to the image it's last update replaced
- stack: refuse a save made to a compose fjord has since rewritten
The update check reported a stack as one state, taken from the first drifted image with no service or image named, so for a four-image stack like immich "release moved" could mean any of them. - Status.Services lists every service: state, image, running and registry digests, from/to versions. The top-level fields are summarised with the same precedence as before, so existing badges are unchanged. - "current" is judged by the digest the service's CONTAINER was created from (podman ImageDigest), not by the local tag. Any pull of a shared tag (redis is in eight stacks, the maintenance playbook) made every other stack on it read current while still running the old image. The image cannot be asked after the fact: a pull that moves the tag strips the old image's RepoDigests. - An index digest changes when any platform is rebuilt. The running image counts as current when it matches the tag's index or this host's platform manifest inside it, so an arm64-only rebuild is not an update on amd64 (whether or not it has been pulled). - A registry error marks that service unknown instead of failing the whole check; /update-check returns 200 rather than 502. - AppJail reports no running images yet and keeps the local-tag check.
- POST /update takes an optional {"services": [...]}; names are checked
against the compose before anything is pulled. No body = whole stack.
- podman: `compose pull <svc…>` then `up -d --force-recreate --no-deps
<svc…>`. Services that depend on them, or that they depend on, keep
running untouched.
- Never --remove-orphans with a service list: podman-compose 1.5 counts
every service not named as an orphan and deletes its container
(measured on saturn). A whole-stack up still removes real orphans.
- The refused-recreate fallback force-removes, and the final start
starts, only the named services.
- Capabilities.UpdateServices; update-check reports it as perService.
appjail refuses a subset rather than widening it to the whole project.
- UI: the panel updates just the changed services ("Update 1 service");
a partial update leaves the saved-but-unapplied banner in place.
os.WriteFile truncates before writing, so a save that fails partway leaves an empty file. On netlab a full disk emptied zensical's compose.yaml during a version change; the container kept running and fjord lost its definition.
…pen (e.g: immich stack)
- Before an update, state.json records per service what it ran.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.