docs(changelog): M65_001 dashboard error voice + sign-in card lift + install/save race fixes#51
docs(changelog): M65_001 dashboard error voice + sign-in card lift + install/save race fixes#51indykish wants to merge 1 commit into
Conversation
…install/save race fixes Adds a May 12, 2026 entry covering the operator-first error vocabulary (presentError keyed on UZ-XXX-NNN codes), the cardBox lift from --surface-1 to --surface-2 on the auth route, and two product fixes (router.refresh-after-router.push races in InstallZombieForm and ZombieConfig). Test-side acceptance coverage expansion stays internal and is not surfaced here.
| ## Dashboard error voice, sign-in card lifted, install/save races fixed | ||
|
|
||
| Every "Failed to X" fallback in the dashboard is replaced with operator-first language keyed on backend error codes. The sign-in card no longer disappears into the page background. Two install/save races that left you on the wrong URL after a `router.push` are fixed. | ||
|
|
||
| ## What's new | ||
|
|
||
| - **`presentError({errorCode, message, action})` is the single entry point for dashboard error rendering.** Curated `UZ-XXX-NNN` codes map to a title + body the operator can act on — `UZ-AUTH-401` reads "Your session expired. Sign in again to keep going." instead of "Not authenticated"; `UZ-ZMB-001` reads "We couldn't find that zombie. It may have already been deleted — refresh the list." instead of "Internal Server Error". Eight codes ship today and the helper grows organically as the dashboard surfaces new ones. Useless server `"Failed to …"` messages are detected and replaced rather than concatenated. | ||
| - **Sign-in card lifted from `--surface-1` to `--surface-2`** on the auth route, with `--border-strong` on the edge. At `--surface-1` the luminance delta against the page background was 3 units — close to invisible. The card now reads as a card. | ||
|
|
||
| ## Bug fixes | ||
|
|
||
| - **`/zombies/new` install** — `InstallZombieForm.tsx` no longer issues `router.refresh()` after `router.push(/zombies/{id})`. The `force-dynamic` detail route re-resolves on commit; the manual refresh was racing the URL commit and intermittently leaving you on `/zombies/new` with a stale form state. Same fix applied to `ZombieConfig.tsx` for the save-then-navigate path on the detail page. | ||
| - **`tooltip` test flake** — restoring vitest's default `exclude` patterns stops the runner from following the `@usezombie/design-system` workspace symlink and executing its tests without their `test-setup.ts`. The "`Invalid Chai property: toBeInTheDocument`" intermittent on `bun run test` is gone. | ||
|
|
||
| ## CLI | ||
|
|
||
| No `zombiectl` shape changes. |
There was a problem hiding this comment.
"dashboard" used instead of "Mission Control"
AGENTS.md specifies: "Use 'Mission Control' for the web dashboard (app.usezombie.com)." The new entry uses "dashboard" four times (heading, intro sentence, presentError bullet, bug-fix bullet) without ever naming the product surface. The canonical term throughout should be "Mission Control", or at minimum the first mention in the block should establish it and the rest can use a shorthand like "the dashboard" only if that shorthand has been established. The prior May 11 entries exhibit the same drift, but that doesn't exempt new content.
Context Used: AGENTS.md (source)
Prompt To Fix With AI
This is a comment left during a code review.
Path: changelog.mdx
Line: 22-38
Comment:
**"dashboard" used instead of "Mission Control"**
`AGENTS.md` specifies: _"Use 'Mission Control' for the web dashboard (app.usezombie.com)."_ The new entry uses "dashboard" four times (heading, intro sentence, `presentError` bullet, bug-fix bullet) without ever naming the product surface. The canonical term throughout should be "Mission Control", or at minimum the first mention in the block should establish it and the rest can use a shorthand like "the dashboard" only if that shorthand has been established. The prior May 11 entries exhibit the same drift, but that doesn't exempt new content.
**Context Used:** AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=e994989b-b25e-4468-be5d-6bde3ddb0ce6))
How can I resolve this? If you propose a fix, please make it concise.Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!
| ## What's new | ||
|
|
||
| - **`presentError({errorCode, message, action})` is the single entry point for dashboard error rendering.** Curated `UZ-XXX-NNN` codes map to a title + body the operator can act on — `UZ-AUTH-401` reads "Your session expired. Sign in again to keep going." instead of "Not authenticated"; `UZ-ZMB-001` reads "We couldn't find that zombie. It may have already been deleted — refresh the list." instead of "Internal Server Error". Eight codes ship today and the helper grows organically as the dashboard surfaces new ones. Useless server `"Failed to …"` messages are detected and replaced rather than concatenated. | ||
| - **Sign-in card lifted from `--surface-1` to `--surface-2`** on the auth route, with `--border-strong` on the edge. At `--surface-1` the luminance delta against the page background was 3 units — close to invisible. The card now reads as a card. |
There was a problem hiding this comment.
--surface-2 and --border-strong tokens not in the documented token set
AGENTS.md lists the canonical design-system tokens for this docs repo and only names --surface-1 as the surface token (and --bg above it). Neither --surface-2 nor --border-strong appears in that list, and the sync note says to verify against tokens.css before referencing token names. If either token does not exist in the design system, this changelog entry misstates what shipped and could mislead operators who use the token names to customise their own surfaces.
Context Used: AGENTS.md (source)
Prompt To Fix With AI
This is a comment left during a code review.
Path: changelog.mdx
Line: 29
Comment:
**`--surface-2` and `--border-strong` tokens not in the documented token set**
`AGENTS.md` lists the canonical design-system tokens for this docs repo and only names `--surface-1` as the surface token (and `--bg` above it). Neither `--surface-2` nor `--border-strong` appears in that list, and the sync note says to verify against `tokens.css` before referencing token names. If either token does not exist in the design system, this changelog entry misstates what shipped and could mislead operators who use the token names to customise their own surfaces.
**Context Used:** AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=e994989b-b25e-4468-be5d-6bde3ddb0ce6))
How can I resolve this? If you propose a fix, please make it concise.
Summary
Adds a May 12, 2026
<Update>block covering the user-visible slice of usezombie/usezombie#324 (M65_001):presentErrorkeyed on curatedUZ-XXX-NNNcodes).--surface-1to--surface-2on the auth route.router.refresh()afterrouter.push()races fixed (install + config save).Test-side acceptance coverage expansion is internal and intentionally not surfaced here. No CLI changes; no API changes.
Test plan
<Tip>and above the prior May 11 entry.UI,Bug fixes,Testing).🤖 Generated with Claude Code
Greptile Summary
Adds a single
<Update>block dated May 12, 2026 tochangelog.mdx, documenting the M65_001 release slice: thepresentErrorerror-vocabulary helper, a sign-in card contrast fix, and tworouter.refresh/router.pushrace corrections inInstallZombieForm.tsxandZombieConfig.tsx.presentErrorentry describes eight curatedUZ-XXX-NNNcodes with operator-readable titles/bodies and explains the detection-and-replace logic for generic server error strings.--surface-1to--surface-2with--border-strongframing; the token names should be verified against the canonicaltokens.css(see inline comment).## CLIsection correctly signals nozombiectlchanges.Confidence Score: 4/5
Documentation-only change; no runtime code is modified. The two style issues noted do not affect site rendering.
The entry accurately describes the M65_001 surface area and uses proper MDX structure. Two minor issues: "dashboard" is used throughout instead of the product-canonical "Mission Control", and two token names (--surface-2, --border-strong) are referenced without appearing in the verified token list in AGENTS.md. If those tokens are genuine, the copy is correct; if not, the changelog misstates the implementation detail.
changelog.mdx — verify --surface-2 and --border-strong against the design-system tokens.css before merging.
Important Files Changed
Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD A["API response error"] --> B{errorCode present?} B -- Yes --> C["Look up UZ-XXX-NNN in curated map"] C --> D["Render operator-first title + body"] B -- No --> E{"Generic 'Failed to …' message?"} E -- Yes --> F["Detect + replace with fallback copy"] E -- No --> G["Render message as-is"] D --> H["presentError({errorCode, message, action})"] F --> H G --> HPrompt To Fix All With AI
Reviews (1): Last reviewed commit: "docs(changelog): M65_001 dashboard error..." | Re-trigger Greptile
Context used: