fix: stack backups miss volumes / undiscovered containers (match by filename) #12

Merged
james merged 1 commit from fix/stack-backups-match-by-filename into main 2026-07-28 17:34:03 +00:00
Owner

The per-stack View Backups was dropping volume backups (and whole stacks like odoo/adguard/mealie). Root causes, from your samples:

  1. Volume files are named <name>-volumes-<ts>.tar.gz (the orchestrator appends -volumes), so their parsed container name is <name>-volumes — which never equals a member <name>. Every volume backup got filtered out. That's why authentik/forgejo showed only DB backups and adguard (volume-only) showed nothing.
  2. Membership came from the live snapshot, so a stack whose containers weren't discovered at the last check-in resolved to no members → 0 files (odoo).

Now files are matched to a stack purely by filename, across all nodes: a file belongs to stack S if its backup name is S or begins with S-, after stripping the volume -volumes suffix. Snapshot-independent; covers db + volume.

You already noted the files show in the node view (Backup Files browser) but not the dashboard stack view — this closes that gap.

Full suite green — 1127 examples.

🤖 Generated with Claude Code

The per-stack **View Backups** was dropping volume backups (and whole stacks like odoo/adguard/mealie). Root causes, from your samples: 1. **Volume files are named `<name>-volumes-<ts>.tar.gz`** (the orchestrator appends `-volumes`), so their parsed container name is `<name>-volumes` — which never equals a member `<name>`. Every volume backup got filtered out. That's why authentik/forgejo showed only DB backups and adguard (volume-only) showed nothing. 2. **Membership came from the live snapshot**, so a stack whose containers weren't discovered at the last check-in resolved to *no members* → 0 files (odoo). Now files are matched to a stack **purely by filename, across all nodes**: a file belongs to stack S if its backup name is `S` or begins with `S-`, after stripping the volume `-volumes` suffix. Snapshot-independent; covers db + volume. You already noted the files show in the **node view** (Backup Files browser) but not the **dashboard** stack view — this closes that gap. Full suite green — **1127 examples**. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(ui): match stack backups by filename (incl. volumes), not live snapshot
All checks were successful
Build, Push & Deploy / build-and-push (pull_request) Has been skipped
Build, Push & Deploy / deploy (Media) (pull_request) Has been skipped
Build, Push & Deploy / deploy (citadel) (pull_request) Has been skipped
Build, Push & Deploy / test (pull_request) Successful in 1m4s
68295dc6d3
The per-stack View Backups was empty for volume-only stacks and any stack whose
containers weren't currently discovered.

Two causes:
- Volume files are named "<name>-volumes-<ts>.tar.gz", so their parsed container
  name never equalled a member "<name>" — every volume backup was filtered out.
- Membership was resolved from the live snapshot, so a stack with a stopped/
  undiscovered container resolved to no members → 0 files (e.g. odoo).

Now files are matched to a stack purely by filename across all nodes: a file
belongs to stack S if its backup name is S or begins with "S-", after stripping
the volume "-volumes" suffix. Snapshot-independent, and covers db + volume files.

Full suite green (1127 examples).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
james merged commit 65f222d7fe into main 2026-07-28 17:34:03 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
james/baktainer!12
No description provided.