Internal values show through in the UI #120

Closed
opened 2026-10-09 19:55:48 -04:00 by goddard · 1 comment
Collaborator

A few pages show raw internal values where the guide asks for friendly labels.

  • The campaign detail breadcrumb shows the raw action "drift" (campaigns/[id]/+page.svelte:290), and the tab title is "drift campaign · fixture-campaign-1" (campaigns/[id]/+page.svelte:276).
  • Incident pages use the raw UUID as the subtitle (maintenance/[id]/+page.svelte:159). The guide asks to keep raw IDs available for copying (ui-patterns.md:14), not to headline them.
  • Admin → Users' activity list shows "request" with a route ID such as /api/configs/inspect. guard.ts:209 records the action request with the route ID, and actionLabels has no entry for it (settings/users/+page.svelte:85,334).
  • Maintenance prints the raw fetch error followed by "Displayed release information is cached." (maintenance/+page.svelte:550-551, error from integrations/plutonium.ts:205), next to an "Unknown" revision when nothing was ever cached.

Screenshots

Before, campaign breadcrumb:
Before

After (mockup):
After (mockup)

Before, incident header:
Before

After (mockup):
After (mockup)

Fix

  • Use friendly labels for campaign actions in breadcrumbs and tab titles
  • Move incident IDs out of the subtitle into a copyable detail
  • Label request audit entries and show the action instead of the route ID
  • On the Maintenance release panel, say what failed and what's shown instead, and don't call it cached when nothing is
A few pages show raw internal values where the guide asks for friendly labels. - The campaign detail breadcrumb shows the raw action "drift" (`campaigns/[id]/+page.svelte:290`), and the tab title is "drift campaign · fixture-campaign-1" (`campaigns/[id]/+page.svelte:276`). - Incident pages use the raw UUID as the subtitle (`maintenance/[id]/+page.svelte:159`). The guide asks to keep raw IDs available for copying (`ui-patterns.md:14`), not to headline them. - Admin → Users' activity list shows "request" with a route ID such as `/api/configs/inspect`. `guard.ts:209` records the action `request` with the route ID, and `actionLabels` has no entry for it (`settings/users/+page.svelte:85,334`). - Maintenance prints the raw fetch error followed by "Displayed release information is cached." (`maintenance/+page.svelte:550-551`, error from `integrations/plutonium.ts:205`), next to an "Unknown" revision when nothing was ever cached. **Screenshots** Before, campaign breadcrumb: ![Before](https://gitea.thewrightserver.net/attachments/78ca6b69-3e8f-4652-a23c-e864da35f1a8) After (mockup): ![After (mockup)](https://gitea.thewrightserver.net/attachments/6b762400-432e-4994-b083-8c026b77f4f6) Before, incident header: ![Before](https://gitea.thewrightserver.net/attachments/c98d0953-0347-4c32-9517-fe4e9f8080a0) After (mockup): ![After (mockup)](https://gitea.thewrightserver.net/attachments/34d6fdf9-b7f0-4d08-aa57-2dda1449a213) **Fix** - [x] Use friendly labels for campaign actions in breadcrumbs and tab titles - [x] Move incident IDs out of the subtitle into a copyable detail - [x] Label `request` audit entries and show the action instead of the route ID - [x] On the Maintenance release panel, say what failed and what's shown instead, and don't call it cached when nothing is
goddard added the
priority
low
type/ux
labels 2026-10-09 19:55:48 -04:00
josh was assigned by goddard 2026-10-09 19:55:48 -04:00
Author
Collaborator

Reviewed 2e6eb0bdb0. All four fix items are done, so I'm closing this.

Checklist

  • Friendly campaign labels. campaignActionLabel maps drift, promotion and rollback to readable labels, with an Update fallback. The campaign detail breadcrumb, heading and browser title share that label; the title no longer includes the raw campaign ID. Existing campaign list titles retain their artifact/beta context.
  • Copyable incident ID. The incident header no longer uses the UUID as its subtitle. The ID is retained in collapsed Technical details through CopyValue, including an accessible copy button, success feedback and a manual-copy fallback when clipboard access fails.
  • Readable audit actions. Request events display Action requested and a method-aware action such as Inspect config or Remove server. Older entries without enough evidence use a feature-level label rather than guessing a body-driven action. Routes, methods, statuses and malformed legacy details remain available under Technical details. Existing account events still resolve their target usernames.
  • Honest release feedback. A failed first check displays Unavailable and explains that no previous release is available. A retained revision is explicitly labeled last known and potentially out of date. Raw fetch errors are collapsed under Technical details, failed-check timestamps say Last attempted, and administrator retry uses the existing scan action. A successful retry clears the failure presentation; viewers do not receive the administrator action.

Review notes

  • Combined #120/#121 validation at this HEAD passed: 13 relevant test files, 229 tests. This includes the new mounted UI tests for audit presentation and release failure/retry, campaign title/list tests, maintenance API/presentation, Plutonium integration, auth guard, fleet health, shared language and release-library rendering coverage.
  • npm run check passed with zero Svelte errors or warnings; npm run lint passed. The application worktree remains unchanged.
  • Reviewed the full referenced diff and current surrounding code. No blocking regressions found.
Reviewed 2e6eb0bdb01d4adbb7af0edb813068b530e9fbbb. All four fix items are done, so I'm closing this. **Checklist** - [x] **Friendly campaign labels.** `campaignActionLabel` maps drift, promotion and rollback to readable labels, with an `Update` fallback. The campaign detail breadcrumb, heading and browser title share that label; the title no longer includes the raw campaign ID. Existing campaign list titles retain their artifact/beta context. - [x] **Copyable incident ID.** The incident header no longer uses the UUID as its subtitle. The ID is retained in collapsed Technical details through `CopyValue`, including an accessible copy button, success feedback and a manual-copy fallback when clipboard access fails. - [x] **Readable audit actions.** Request events display `Action requested` and a method-aware action such as `Inspect config` or `Remove server`. Older entries without enough evidence use a feature-level label rather than guessing a body-driven action. Routes, methods, statuses and malformed legacy details remain available under Technical details. Existing account events still resolve their target usernames. - [x] **Honest release feedback.** A failed first check displays `Unavailable` and explains that no previous release is available. A retained revision is explicitly labeled last known and potentially out of date. Raw fetch errors are collapsed under Technical details, failed-check timestamps say `Last attempted`, and administrator retry uses the existing scan action. A successful retry clears the failure presentation; viewers do not receive the administrator action. **Review notes** - Combined #120/#121 validation at this HEAD passed: 13 relevant test files, 229 tests. This includes the new mounted UI tests for audit presentation and release failure/retry, campaign title/list tests, maintenance API/presentation, Plutonium integration, auth guard, fleet health, shared language and release-library rendering coverage. - `npm run check` passed with zero Svelte errors or warnings; `npm run lint` passed. The application worktree remains unchanged. - Reviewed the full referenced diff and current surrounding code. No blocking regressions found.
Sign in to join this conversation.