fix: recover from saved view load and mutation failures
Quality / test (push) Canceled after 0s

This commit is contained in:
2026-09-10 17:49:39 -04:00
parent d321d8c679
commit c5a07b2b5a
4 changed files with 213 additions and 13 deletions
+9 -2
View File
@@ -154,7 +154,7 @@ Verified locally: `npm test` passes 167 tests with no failures (23 domain, 79 ap
- Storybook covers clearing contacts while retaining the description and rendering seller information without contact links.
- Validation: 167 API tests, 23 isolated integration tests, 11 web tests, production web build, Storybook build, and 32 Storybook suites / 95 tests. No migration required.
### Latest Vertical Slice: Settings Error Recovery
### Settings Error Recovery
- Settings only exposes its form after a successful load. Failed reads offer Retry instead of editable defaults.
- Keyboard retry restores focus to the description field on success or Retry on repeated failure.
@@ -162,7 +162,14 @@ Verified locally: `npm test` passes 167 tests with no failures (23 domain, 79 ap
- Storybook covers loading, load errors, successful/repeated retry, save failure/retry, saving/disabled states, mobile retry and dark-theme save recovery.
- Validation: 167 API tests, 11 web tests, production web build, Storybook build, and 32 Storybook suites / 102 tests. Frontend-only change; no API or persistence changes.
Next bounded slice: Saved Views error recovery. Failed reads currently also display “No saved views yet” and provide no retry. Separate loading/error/empty states, add retry and reliable create/delete feedback, and cover recovery with Storybook interactions.
### Latest Vertical Slice: Saved Views Error Recovery
- Failed list reads no longer show an empty-list message or create form; Retry restores keyboard focus on success or repeated failure.
- Create/delete actions clear stale feedback, announce progress, and block conflicting actions. Create failures preserve drafts; delete failures preserve the view and focus; successful deletion announces completion and focuses the list heading.
- Storybook covers populated/empty/loading/error states, load retries, create/delete recovery, invalid JSON, pending disabled states, mobile retry and dark-theme recovery.
- Validation: 167 API tests, 11 web tests, production web build, Storybook build, and 32 Storybook suites / 113 tests. Frontend-only change; API and persistence unchanged.
Next bounded slice: admin image-manager error recovery. A mutation error currently replaces the whole gallery with an error message. Keep loaded images and controls available after failed edits/uploads, distinguish initial-load failure, provide reload retry, and cover retry/failure states with Storybook interactions.
## Next Milestone
+10
View File
@@ -85,3 +85,13 @@ focus moves to the first form field on success or back to Retry on failure.
Saving announces progress and temporarily disables the form to prevent duplicate
submissions and edits being overwritten by the save response. A failed save
keeps entered values available for correction or retry.
## Saved Views recovery
Show the create form and saved-view list only after a successful load. Failed
reads show an error and Retry, not an empty-list message. Keyboard retry returns
focus to Name on success or Retry on repeated failure. Failed creation retains
the draft; failed deletion retains the view and returns focus to its Delete
button. Successful deletion announces completion and focuses the list heading.
Mutations announce progress, disable conflicting actions while pending, and clear
stale errors/success messages before a new attempt.