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:
After (mockup):
Before, incident header:
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:

After (mockup):

Before, incident header:

After (mockup):

**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
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
A few pages show raw internal values where the guide asks for friendly labels.
campaigns/[id]/+page.svelte:290), and the tab title is "drift campaign · fixture-campaign-1" (campaigns/[id]/+page.svelte:276).maintenance/[id]/+page.svelte:159). The guide asks to keep raw IDs available for copying (ui-patterns.md:14), not to headline them./api/configs/inspect.guard.ts:209records the actionrequestwith the route ID, andactionLabelshas no entry for it (settings/users/+page.svelte:85,334).maintenance/+page.svelte:550-551, error fromintegrations/plutonium.ts:205), next to an "Unknown" revision when nothing was ever cached.Screenshots
Before, campaign breadcrumb:

After (mockup):

Before, incident header:

After (mockup):

Fix
requestaudit entries and show the action instead of the route IDReviewed
2e6eb0bdb0. All four fix items are done, so I'm closing this.Checklist
campaignActionLabelmaps drift, promotion and rollback to readable labels, with anUpdatefallback. 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.CopyValue, including an accessible copy button, success feedback and a manual-copy fallback when clipboard access fails.Action requestedand a method-aware action such asInspect configorRemove 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.Unavailableand 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 sayLast 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
npm run checkpassed with zero Svelte errors or warnings;npm run lintpassed. The application worktree remains unchanged.