v0.147.1 — 4c follow-up: the bar must move on an INCREMENTAL run
Found by watching the v0.147.0 card during a real manual run on the demo box, which is the only way this was going to surface: a 430MB immich push reported 0% for 40+ seconds and then completed. The parser was not broken. restic was genuinely reporting no transferred bytes — on an incremental run where nothing changed, bytes_done is omitempty on restic's side so it is not even in the JSON, and percent_done stays 0 for the whole run. Confirmed against the real schema by capturing backup --dry-run --json from restic 0.14.0 in the controller image rather than guessing; those captured lines are now quoted verbatim in the type's doc comment. Why it mattered: a byte-only bar is indistinguishable from a hang in the COMMON case, which is precisely the silence 4c set out to remove. Shipping it would have traded "no feedback" for "feedback that says 0% and looks stuck". files_done/total_files are now parsed and published alongside the bytes; the card prefers bytes when bytes move, otherwise drives the bar from files and says "N / M fájl ellenőrizve". parseResticStatus returns a struct instead of four positional values, and a new test pins the real incremental line shape (bytes absent, files climbing) so a refactor cannot quietly restore the stuck bar. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Nn3VgQk9iwEGgyx6QJ2NvE
This commit is contained in:
@@ -1,5 +1,31 @@
|
||||
## Changelog
|
||||
|
||||
### v0.147.1 — 4c follow-up: the progress bar must move on an INCREMENTAL run (2026-07-19)
|
||||
|
||||
Found by watching the v0.147.0 card during a real manual run on the demo box, which is the only way
|
||||
this was ever going to surface.
|
||||
|
||||
**The observation.** A 430MB immich push reported `0%` for 40+ seconds and then completed. The
|
||||
parser was not broken — restic was genuinely reporting no transferred bytes. On an incremental run
|
||||
where nothing changed, restic transfers nothing: `bytes_done` is `omitempty` on restic's side, so it
|
||||
is not even present in the JSON, and `percent_done` stays 0 for the whole run. Confirmed against the
|
||||
real schema by capturing `backup --dry-run --json` output from restic 0.14.0 in the controller image
|
||||
(the version comment in `offbox_progress.go` now quotes those captured lines verbatim).
|
||||
|
||||
**Why it mattered.** A byte-only progress bar is indistinguishable from a hang in the COMMON case —
|
||||
the incremental run — which is precisely the silence 4c set out to remove. Shipping it would have
|
||||
replaced "no feedback" with "feedback that says 0% and looks stuck".
|
||||
|
||||
- `files_done` / `total_files` are now parsed and published alongside the byte counters. They move on
|
||||
an incremental run even when bytes do not.
|
||||
- The card prefers bytes when bytes are moving; otherwise it drives the bar from files and says
|
||||
„N / M fájl ellenőrizve"; only before restic knows a total does it say „a mentendő adatok
|
||||
felmérése…".
|
||||
- `parseResticStatus` now returns a struct rather than four positional values, and a new test pins
|
||||
the real incremental-run line shape (bytes absent, files climbing) so a future refactor cannot
|
||||
quietly drop the file counters and restore the stuck bar.
|
||||
|
||||
|
||||
### v0.147.0 — feedback slice 1: pressing a button says something (2026-07-19)
|
||||
|
||||
Green: `go build ./... && go vet ./... && go test ./...` all pass (23 packages);
|
||||
|
||||
Reference in New Issue
Block a user