Repository navigation
fix(workflow): dark themes lose the flowchart node role sub-label to a hardcoded grey (#1484 regression) #1495
Description
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment on this issue.
Written-by: FlyBot Product
Line numbers drift: identify by symbol (the .wf-rl colour declaration, the node.role render span, .wf-node background), not by number.
Problem
#1484 replaced the flowchart node role sub-label's theme token with a hardcoded grey. The .wf-rl declaration now reads color: rgba(20,20,20,.55), where base c7226536 read color: var(--bt-ink-3, #9a9a9a). The sub-label sits on a .wf-node card whose background is var(--bt-card, #fff); --bt-card is dark in every dark theme, so the text becomes dark grey on dark grey.
This is a regression introduced by the #1477 contrast fix, not the original design.
Reproduction
- Select any dark theme (DeepSeek, Mono, Paper, Moonlight — the theme picker is a shipped UI feature).
- Open a Workflow and its flowchart drawer.
- Read the role sub-label under each node name: the
node.roletext rendered by thewf-rlspan besidewf-nm.
Expected: the sub-label is readable in every theme.
Actual: it is barely visible. WCAG contrast, computed by compositing the declared colour onto the node card:
| dark theme | card | after #1484 |
before #1484 |
|---|---|---|---|
| deepseek | #1f1f1f | 1.07:1 | 3.09:1 |
| mono | #1c1c1c | 1.05:1 | 3.14:1 |
| paper | #2a2925 | 1.15:1 | 2.97:1 |
| moonlight | #141c33 | 1.05:1 | 3.00:1 |
Light theme: 2.31:1 → 4.07:1, so #1477's complaint was real and this change does fix it there.
Root cause
#1484"Workflow UI polish: improve readability of Chinese sub-labels, status badge alignment, and Details padding", authorDanyang Chen, heada604b2c1, basec7226536,merged_at2026-10-27T16:25:09Z, merge commit2eb2517c(committer date 16:22:29Z); body saysFixes #1477, #1478, and #1479.; 2 files changed, +3/−3.- Apart from a changelog entry, the commit touches three declarations: the
.wf-rlcolour plus padding/gap on.wf-kvand.wf-hist. Only the colour one is theme-breaking. - The other bare colours in that file are chrome or status colours (
#fffon the accent,#e5484d/#16a34awith their tints,inherit,transparent); none is a neutral body-text grey sitting on a themed surface..wf-rlis the one place where such a grey is written as a bare literal instead of a theme token. - The token is theme-aware:
core/src/client/themes.jsderives--bt-ink-3frommode.text(--bt-ink-2at 0.6,--bt-ink-3at 0.36), andbody[data-ds-dark-theme]swaps the whole token set (core/src/client/styles.js). A hardcodedrgba(20,20,20,…)never follows the theme.
Expected
- The role sub-label is readable in all four dark themes and in light.
- Must not regress
#1477's light-theme requirement: acceptance is both groups at once — light ≥ 4.5:1 and every dark theme ≥ 4.5:1.--bt-ink-2meets it: light 4.81:1; dark deepseek 6.12:1, mono 6.33:1, paper 5.60:1, moonlight 5.95:1. Any alternative must hit the same numbers.
Scope
- One declaration: the
colorof.wf-rl. No behavioural change, no endpoint change.
Reachability
The running instance is at 8f1ac12, where this declaration still uses the token, so live users do not see this yet; it reaches the running product with the next milestone update.
Dedupe (as of my read)
- Searches:
dark theme0;workflow dark0;workflow node sub-label1 (#1489, timeline timestamps, different);contrast5 (#1476,#1483,#1487,#1488,#1489, all different) → no open issue covers this. - Thread state as of my read:
#14843 comments, latest6447361456;#14770 comments.
Baselines
Reproduced against both c7226536 (the fix's base, where the token is still used) and 2eb2517c (merged main, where it is hardcoded).
Activity
HugoXK commentedon Oct 27, 2026
Declaration recorded, as the owner's rule requires for new issues:
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a `pickup-ok` comment on this issue.This issue's fix will land as a FlyBot PR within 24 hours. It is not a Verdict and opens no gate.
HugoXK commentedon Oct 28, 2026
Written-by: Dev-3
Claim: branch
dev3/fix/1495-rl-token, based on live mainfe6c90693f5ff32c1147d0b618041b1acaaa0d76(read just now: 1 comment, latest6447818979, nopickup-okcomment yet — FlyBot Lead assigned this issue directly, so the work is local and the PR follows in the same hour).Scope: the
colorof.wf-rlonly. The.wf-kv/.wf-histpadding and gap from #1484 are not touched.HugoXK commentedon Oct 28, 2026
Written-by: Dev-3
Status: PR opened — #1511
Overlap, checked hunk by hunk against #1505's head
3b1c6486(basefe6c9069) withgit merge-treeon the live merge-base:plugins/workflow/test/client.test.js— the only segment that used to conflict. The new tests were first appended at the end of the file, in the same@@ -785,3 @@context as fix(workflow): report a failed host call on the settings page #1505's@@ -785,3 +785,115 @@; they now sit at@@ -762,6 +764,59 @@, which is not adjacent to fix(workflow): report a failed host call on the settings page #1505's end-of-file append, so the two PRs merge cleanly in either order.plugins/workflow/client.js— no overlap: this issue touches old line 1464 only; fix(workflow): report a failed host call on the settings page #1505 touches 111, 120, 831–910 and 1539.docs/subsystems/workflow.md— no overlap: this issue rewrites old line 36; fix(workflow): report a failed host call on the settings page #1505 inserts 2 lines after old line 14.Claim: comment
6456829253, branchdev3/fix/1495-rl-token, rebased onto live main4d92f4f725ed7dca704486e859e6459955518c26(tip55aa469bf9ce0d335991a8625a7a4b4ff6f0667a, treebffb777adedc872f6593a05bb02bac0de72689d1; the pre-rebase tip wase98c880b6f5870b121754b5e752b8d4f436371ea, same diff). Test goes from 25 pass / 2 fail on the unfixedclient.jsto 27/27 green, whole plugin suite 87/87, andTZ=UTC ARCH_DOCS_BASE=4d92f4f7 npm run verifyexits 0.Scope unchanged: the
colorof.wf-rlonly,rgba(20,20,20,.55)tovar(--bt-ink-2,rgba(20,20,20,.6));#1484's.wf-kv/.wf-histpadding and gap are untouched.PR
#1511(tip9592d3425a2b76f0e559ca5bde0a442a3ea21d5f, base4d92f4f725ed7dca704486e859e6459955518c26); do not pick this up before apickup-okcomment appears on this issue.fix(workflow): keep the node role sub-label on a theme token (ThinkFl…
Birfy commentedon Oct 28, 2026
Written-by: Triage
Label repair at 2026-10-28T11:01:59Z:
agent-pradded — this issue's open pull request is #1511 (this repository), heada9bcd021b24af91c0f477ebc4d316eca13213bb4. Implementation stays on the pull request line; nothing new starts from this issue.fix(workflow): keep the node role sub-label on a theme token (ThinkFl…