fix(admin): address PM playtest UX feedback (6 items) - #6
Merged
Merged
Conversation
Product-manager playtest surfaced 6 admin UX issues. All fixes are
frontend-only (no backend/proto/RPC change); backend binary unchanged.
1. Create form now scrolls to the first invalid field on submit
(scrollToFirstError on create + edit Form) — errors were rendered
off-screen and invisible when the Create button sat below the fold.
2. Duplicate-slug create now shows "Slug is already in-use, please use
another" instead of a generic failure. Root cause: the error surface
read response.data.errorMessage, a field grpc-gateway never emits (the
body is {code,message,details}) — so EVERY error toast silently fell
back to a generic string. Added robust api-error helpers
(apiErrorMessage / apiErrorCode / isSlugConflict, matching gRPC code 6
/ HTTP 409, never the message text).
3. ADT distribution radio card no longer stretches at 1440px — scoped
.pth-radio-card CSS keeps the indicator fixed and lets the label flex.
4. Player sign-up URL is hidden on the detail page while a playtest is
DRAFT (header link + share-link input), with a note explaining it
appears once published — opening a draft URL showed "not available".
5. "Link ADT Namespace" button added beside the ADT-linking-required
badge on the create form, reusing the existing StartADTLink flow.
6. Distribution tab now derives ADT "Connected" from the live linkage
(GetAdtLinkages) instead of the stale playtest.adtNamespace, adds a
loading guard, and warns the admin to re-link when the linkage is gone
("Download link for the players cannot be generated unless they
re-link the ADT again").
Verified: admin npm test 111/111, eslint 0 errors, tsc+vite build,
backend make smoke PASS. Item 3 pixel result still wants a 1440px eyeball.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Fixes 6 admin UX issues from the PM playtest (item 7 — file naming — is ADT-engineer scope, excluded). Frontend-only; backend binary unchanged.
scrollToFirstErroron create+edit Form — validation jumps to first bad field instead of leaving it off-screenresponse.data.errorMessage(a field grpc-gateway never emits) → every error toast hit a generic fallback. Newapi-errorhelpers match gRPC code 6 / HTTP 409..pth-radio-cardCSS)adtNamespace) + loading guard + re-link warningVerification
npm test— 111/111 (24 new tests)npm run lint— 0 errorsnpm run build(tsc -b+ vite) — okmake smoke— PASS (backend unchanged)Risk
🤖 Generated with Claude Code