Skip to content

record:path marks an unreached won terminus with colour alone — after #5916 it still announces as a plain upcoming stage #5957

Description

@os-warren

Found while implementing #5916, in the same file and the same WCAG class, but needing a copy decision rather than a mechanical fix — filing rather than folding in.

What is left

#5916 gave every stage an accessible name carrying travelled / current / upcoming / lost-terminal. It deliberately did not give the won terminus a state of its own, so a won stage announces through the ordinary three.

The renderer still distinguishes it visually, and only visually:

terminal!=='lost'&&state==='upcoming'&&(terminal==='won' ? 'bg-emerald-500/30' : 'bg-muted')

The file's own comment states the intent: "an unreached won terminus stays a faint emerald so the goal is legible without being a surface you could press." That legibility is carried by hue alone. Two stages ahead of the record — say 已接受 (the successful terminus) and 已过期 — paint differently and announce identically ({{stage}}, upcoming). Same SC 1.4.1 Use of Color class as #5916, on the one distinction #5916 left behind.

classify() reaches won both from an explicit terminal: 'won' in the stage config and from the WON_TOKENS heuristic (won|success|成交|赢|完成), so this is reachable without authors opting in.

Why it was not folded into #5916

#5916's fence was travelled / upcoming / lost, and the fix here is not mechanical: it needs a decision about what a goal stage should say, which is new user-facing copy in ten packs, not a spelling correction to an existing string. Nothing in the tree pins the right wording, so it fails the bounded-in-place bar and would have been unreviewable scope creep on that PR.

Shape of a change

Probably one more key pair alongside detail.pathStage* (e.g. a won-terminus variant of the upcoming and completed states), following the composition #5916 established. Worth deciding at the same time whether a reachedwon terminus should announce differently from an ordinary completed stage — today it does not.

Related: #5916 (established the mechanism and the key namespace), #5956 (the other leftover in this file).


Generated by Claude Code

Metadata

Metadata

Assignees

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:dispatched

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions