Repository navigation
fix(workflow): a live lane row keeps its own name and still names its count - #2234
Merged
Merged
Conversation
HugoXK
marked this pull request as ready for review
November 2, 2026 23:43
Contributor
Author
|
@Birfy — reviewer verdict requested at this tip: |
… count
The row's aria-label replaced the accessible name computed from its content, so a live
row read "{name} · {count} running" and dropped the Workflow badge, its Project and its
preview; two lanes that legally share a name then read alike. The count now rides in a
visually hidden `.wf-sr` span beside the aria-hidden dot, so the name comes from the
content again and a read-only window still hears how many runs are live.
Fixes ThinkFlowLab#2230
Owner: Dev-3
Collaborator
|
Verdict: PASS at 3358250 Ran at this tip:
|
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.
Written-by: Dev-3
Fixes #2230
Owner: Dev-3
Reviewer: Birfy
Tier: T2
Claim-Id: 373d72b15bbd491fa7efbb65c382ae3f
Branch: dev/3-p445-live-row-name
Base: 9863992
Tree: e2b87077cd832ab2fca4bf43f4675a0c8c19321d
Verified commit: 3358250
Files: 4 changed, +103/−7 (three handwritten files plus one new changelog fragment)
The defect
plugins/workflow/client.js:2212put anaria-labelon the row button of a lane with live runs. Anaria-labelreplaces the name a browser computes from the element's content, so the row's name became{name} · {count} runningand lost everything the content still carried: theWorkflowbadge (:2222), the Project (:2223, unconditional, live or idle) and the preview line (:2224). The badge, the Project and the preview still painted — only the name lost them.Two lanes may legally share a name (
plugins/workflow/src/service.jsappends a copy suffix once), so a reader got two identical buttons while the visible rows differed.Red first, on live main
98639924Clean tree at
986399246ff8c26bd418978785ce1199dbd239cawith onlyplugins/workflow/test/client.test.jstouched.cd plugins/workflow && TZ=UTC node --import ./test/resolve.mjs --test "test/*.test.js"→ 386 tests, 384 pass, 2 failnot ok 63 - #2230: two lanes with one name are told apart by their own Project, and a live row keeps the badge and the preview→
two lanes a reader must tell apart do not share one name,operator: 'notStrictEqual',expected: 'Delivery · 1 running',actual: 'Delivery · 1 running'— the two rows share exactly that name and neither names its Project.not ok 64 - #2230: one live row still names its count, and an idle row carries no aria-label and no hidden text→
the row no longer overrides the name computed from its content,+ '发布交付流水线 · 3 running'whereundefinedwas expected.live row 0 keeps the Workflow badge an idle row names→true === false. On live main the live row's name carries neither the badge nor its preview.After the change, the same command on this tip: 386 / 386 / 0.
The fix
plugins/workflow/client.js: the row-levelaria-labelis gone. The count now rides in a visually hidden span beside the dot —<span class="wf-sr">{count} running</span>— and the dot and the digit stay inside thearia-hiddenwrap they were already in. So the accessible name is the content again (lane name,Workflowbadge, Project, preview) plus the count, and a reader who cannot see the colour still hears how many runs are live..wf-srin its own sheet, beside the live styles:position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0. The file had no visually-hidden rule before.'{count} running'gets its Chinese wording in the plugin's ownZHmap, beside{name} · {count} running.#2222count assertions (:655,:681) were rewritten, not deleted: they now read the name the way a browser computes it —accessibleName(row).includes('3 running')/includes('2 running')— the same count the old prop assertion pinned, on the carrier that now carries it.docs/subsystems/workflow.md:44says what the row does now;changelog.d/2230-live-row-accessible-name.fixed.mdis new (2222-list-live-count.fixed.mdstays as history).Measured names on this tip, same fixture as the test (the test renderer concatenates without separators; a browser joins element boundaries with spaces):
DeliveryWorkflowAlphaAlpha #2214 · step 2/311 running(ProjectAlpha, preview, count)DeliveryWorkflowBetaBeta #2219 · step 1/311 running(ProjectBeta— the two rows differ)GammaWorkflowUnassignedWaiting for a task, noaria-label, no hidden span, no digitWhat I ran at
3358250aTZ=UTC ARCH_DOCS_BASE=986399246ff8c26bd418978785ce1199dbd239ca npm run verify→ exit 0.github/scriptsarch-docs: OK (4 changed file(s))— the workflow doc is in this diff.build-client --checksilent; oxlint 0 errors in every suite (74/36/9/2/16 warnings, the same pre-existing counts as live main).ok ds-bot/ = Fei2411/DeepSeek-Bot@2b10c70 (tree 5834c00, v0.1.5);ok 10 patches apply cleanly in order;ok core/ equals ds-bot/ + patches/ds-bot/;ok patches/ds-bot/ is what generate writes (generate is a no-op);generaterun twice, the second leftgit status --porcelainwith only the two benchnode_modulessymlinks (not part of the commit).node .github/scripts/changelog.mjs check→ fragments well formed.Tier, by path (not by this label)
createGate(risk-rules).judge(files)over exactly these four paths answers:risk-tier: T2; basis: plugins/workflow/client.js=T2, plugins/workflow/test/client.test.js=T2, changelog.d/2230-live-row-accessible-name.fixed.md=T1, docs/subsystems/workflow.md=T0So this one needs a
Verdict: PASSnaming this tip.Policy-signis not required:policy/gates.jsonlistsgateFilesas.github/scripts/merge-gate.mjs,.github/scripts/review-gate.mjs,.github/scripts/pass-label.mjs,.github/scripts/risk-gate.mjs,scripts/self-test-catalog.mjs,.github/scripts/policy-sign.mjs,.github/workflows/test.ymlandpolicy/, and this diff touches none of them.Not run
The smoke bench (
dev/bench.sh smoke): this box has nodeepseek-harnesscheckout (DSH_HARNESSunset,../deepseek-harnessabsent), so the bench cannot start. No browser was available either, so the visually-hidden rule itself was not eyeballed in a real render; it is the standard clip rule, the tests read the tree the renderer produces, and no visible pixel changes (the dot and the digit keep their markup and classes).Checkpoint
{
"pr": 2234,
"claim": "Dev-3",
"issue": 2230,
"summary": "A Workflow lane with live runs replaced its accessible name with a row-level aria-label (
{name} · {count} running), so the name lost the Workflow badge, the Project and the preview the content still paints - and two lanes that legally share a name became two identical buttons to a reader. The count now lives in a visually hidden.wf-srspan beside the aria-hidden dot, so the name is the content again plus the count; the two #2222 count assertions moved to the computed name instead of being dropped, and the workflow doc says what the row does now.","files": [
"plugins/workflow/client.js",
"plugins/workflow/test/client.test.js",
"docs/subsystems/workflow.md",
"changelog.d/2230-live-row-accessible-name.fixed.md"
],
"checks": {
"ran": "TZ=UTC ARCH_DOCS_BASE=986399246ff8c26bd418978785ce1199dbd239ca npm run verify (4551/4551); node .github/scripts/changelog.mjs check",
"result": "green",
"at": "3358250ad8addedd05c46f7090aa7b7a6f121416"
},
"next": "none — ready for review"
}