Some counts and labels slip from the guide's phrasing.
ui-patterns.md:109-111 says to use plural or countLabel (ui/plural.ts:5,9), but these don't: scripts/+page.svelte:254 ("1 of 1 scripts"), plugins/+page.svelte:348 ("0 of 0 plugins") and campaigns/+page.svelte:221 (a progress bar's label, "1 of 1 servers complete").
fleet/overview.ts:140 builds "Stop needs attention", which reads like an instruction.
ui/server-health.ts:76 builds "Frankfurt · Europe's host agent is unavailable", a possessive on a label.
Screenshots
Before:
After (mockup):
Before:
After (mockup):
Before:
After (mockup):
Fix
Use plural or countLabel in those three places
Reword to "Stop operation needs attention" and "The host agent on Frankfurt · Europe is unavailable"
Some counts and labels slip from the guide's phrasing.
- `ui-patterns.md:109-111` says to use `plural` or `countLabel` (`ui/plural.ts:5,9`), but these don't: `scripts/+page.svelte:254` ("1 of 1 scripts"), `plugins/+page.svelte:348` ("0 of 0 plugins") and `campaigns/+page.svelte:221` (a progress bar's label, "1 of 1 servers complete").
- `fleet/overview.ts:140` builds "Stop needs attention", which reads like an instruction.
- `ui/server-health.ts:76` builds "Frankfurt · Europe's host agent is unavailable", a possessive on a label.
**Screenshots**
Before:

After (mockup):

Before:

After (mockup):

Before:

After (mockup):

**Fix**
- [x] Use `plural` or `countLabel` in those three places
- [x] Reword to "Stop operation needs attention" and "The host agent on Frankfurt · Europe is unavailable"
Reviewed d93a766578 against current HEAD 2e6eb0bdb0. Both fix items are done, so I'm closing this.
Checklist
Shared pluralization at all three sites. Scripts and Plugins list counts now use plural with the full collection count. The campaign progress accessible label uses the server count. Each noun follows the denominator, so singular, empty and filtered counts remain grammatical.
Clear operation and host wording. The shared fleet/server operation reader now produces Stop operation needs attention for a failed stop. Host status uses The host agent on <name> is unavailable, preserving the unnamed-host fallback and the warning that the game may still be running.
Review notes
Combined #120/#121 validation at the stated HEAD passed: 13 relevant test files, 229 tests. Relevant coverage includes the changed host-health test, shared pluralization, fleet operation attention, campaign progress/title logic and Scripts/Plugins route rendering.
npm run check passed with zero Svelte errors or warnings; npm run lint passed. The application worktree remains unchanged.
The exact three count expressions and stop-operation wording were also inspected directly; the existing tests do not assert every changed string. No blocking regressions found.
Reviewed d93a76657896ba4a25184b51984690887bf6d5f5 against current HEAD 2e6eb0bdb01d4adbb7af0edb813068b530e9fbbb. Both fix items are done, so I'm closing this.
**Checklist**
- [x] **Shared pluralization at all three sites.** Scripts and Plugins list counts now use `plural` with the full collection count. The campaign progress accessible label uses the server count. Each noun follows the denominator, so singular, empty and filtered counts remain grammatical.
- [x] **Clear operation and host wording.** The shared fleet/server operation reader now produces `Stop operation needs attention` for a failed stop. Host status uses `The host agent on <name> is unavailable`, preserving the unnamed-host fallback and the warning that the game may still be running.
**Review notes**
- Combined #120/#121 validation at the stated HEAD passed: 13 relevant test files, 229 tests. Relevant coverage includes the changed host-health test, shared pluralization, fleet operation attention, campaign progress/title logic and Scripts/Plugins route rendering.
- `npm run check` passed with zero Svelte errors or warnings; `npm run lint` passed. The application worktree remains unchanged.
- The exact three count expressions and stop-operation wording were also inspected directly; the existing tests do not assert every changed string. 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.
Some counts and labels slip from the guide's phrasing.
ui-patterns.md:109-111says to usepluralorcountLabel(ui/plural.ts:5,9), but these don't:scripts/+page.svelte:254("1 of 1 scripts"),plugins/+page.svelte:348("0 of 0 plugins") andcampaigns/+page.svelte:221(a progress bar's label, "1 of 1 servers complete").fleet/overview.ts:140builds "Stop needs attention", which reads like an instruction.ui/server-health.ts:76builds "Frankfurt · Europe's host agent is unavailable", a possessive on a label.Screenshots
Before:

After (mockup):

Before:

After (mockup):

Before:

After (mockup):

Fix
pluralorcountLabelin those three placesReviewed
d93a766578against current HEAD2e6eb0bdb0. Both fix items are done, so I'm closing this.Checklist
pluralwith the full collection count. The campaign progress accessible label uses the server count. Each noun follows the denominator, so singular, empty and filtered counts remain grammatical.Stop operation needs attentionfor a failed stop. Host status usesThe host agent on <name> is unavailable, preserving the unnamed-host fallback and the warning that the game may still be running.Review notes
npm run checkpassed with zero Svelte errors or warnings;npm run lintpassed. The application worktree remains unchanged.