Skip to content

Settings canvas draws a skipped workflow node as Queued, while the Room calls it Skipped - #1805

Merged
Birfy merged 1 commit into
ThinkFlowLab:mainfrom
HugoXK:dev/1-workflow-skipped-chip
Oct 30, 2026
Merged

Birfy merged 1 commit into
ThinkFlowLab:mainfrom
HugoXK:dev/1-workflow-skipped-chip

Conversation

@HugoXK

@HugoXK HugoXK commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #1789

What changed

Settings → Workflows drew every node whose status it did not know as Queued. statusLabel() in core/src/client/workflows.js matched running, done, failed and idle and fell through to Queued, so a branch the run never took — which the engine writes as skipped (plugins/workflow/src/graph.js STATUSES, and the untaken edge's close) — was drawn as if it were still waiting, while the Room's Flow panel names that same node Skipped.

One mapping is added (skipped → t('Skipped')) and the zh dictionary gains the key (Skipped: '跳过') — the word the Room already uses (plugins/workflow/client.js:102), not a new one. Nothing else in the canvas is touched: no geometry, no fit, no edit mode.

Red first — live base

Two reds were taken on the base 92a4cf26 before this fix existed (the branch carries them; the test file is the only addition in red 1).

Red 1 — test only, source untouched ('Queued' is what the chip says today):

not ok 3 - \#1789: a node the run skipped is named Skipped, the word the Room uses
  location: 'core/test/workflows-page.test.js:151:1'
  error: |-
    Expected values to be strictly equal:
    + actual - expected

    + 'Queued'
    - 'Skipped'

Red 2 — with statusLabel() fixed but no zh key, the same test fails on the Chinese half:

'Skipped' !== '跳过'

The test asserts both languages (Skipped and 跳过); core/test/i18n.test.js stays green.

Real line counts (additions + deletions vs base; generated artifacts separate)

  • source core/src/client/workflows.js: +1 = 1
  • source core/src/client/i18n.js: +1 = 1
  • test core/test/workflows-page.test.js: +29 = 29
  • changelog.d/1789-workflow-skipped-chip.fixed.md: +1 = 1
  • total 32

Generated by scripts/ds-bot-patches.mjs generate plus npm run build (not counted above):

  • core/client.js +2 (the built bundle)
  • patches/ds-bot/files/src/client/workflows.js +1, patches/ds-bot/files/test/workflows-page.test.js +29 (verbatim mirrors)
  • patches/ds-bot/0001-core-fixes.patch +42/−43 — inside the patch the real change is +1 line and one hunk count; the rest is hunk-header churn
  • patches/ds-bot/0008-client-bundle.patch +534/−537 — the re-cut bundle patch; no hunk was hand-edited

How it was generated, exactly: cd core && npm run build, then the whole chain node scripts/ds-bot-patches.mjs generate. On this box (git 2.34.1) the plain generator splits the bundle diff differently from the shape main stores (9.2k changed lines in 0008 alone), while git diff --minimal reproduces that shape (381 hunks, as in main); so generation ran with a git shim that inserts --minimal into plain git diff calls. Afterwards the patches this change does not carry (0002, 0003, 0005, 0007, 0009, 0012, 0014, 0016) were restored to main's bytes, as agreed — they would otherwise carry only header noise. No hunk of the two carrier patches was edited by hand.

Verification at the tip

  • Head: 3a331c5519ded77499be15cd76d5e48f722924c3
  • Tree: f59649851a31c0a410a7a8b4dc77fd5281de93ce
  • Base: 30c049077d52a70db546adcae157694bb366a098 (live main when the branch was rebased and verified; the push helper re-checks the base)
  • Ran: TZ=UTC ARCH_DOCS_BASE=30c04907 npm run verify → exit 0
    • core 2158/2158 · plugins/social 541/541 · plugins/tree 125/125 · plugins/timeline 134/134 · plugins/workflow 294/294 · .github/scripts/*.test.mjs 549/549 · interop 37/37 · live-e2e 24/24 — every suite # fail 0
    • ds-bot-patches check, twice, the same three lines both times:
      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/
      
      (both passes above print those three lines), and between them a second whole-chain generate at this base reproduced this commit's bytes exactly: after each of the two generate runs — with the eight patches this change does not carry restored to main's bytes — git status was empty and git diff -p HEAD was the empty patch (e3b0c442…)
    • node scripts/build-client.mjs --check exit 0
    • arch-docs: OK (9 changed file(s)) at base 30c04907
  • Not run: no real-model bench and no live smoke — a status-label mapping in the browser client, nothing in the host, the engine or an endpoint.

Docs

The commit and this body carry Docs-not-needed:: docs/subsystems/core-client.md describes the Settings flowchart's wire plane, fit and edit mode, not the per-node status chip vocabulary; this adds one label mapping and one zh key.

Gates at this head

The guard at this tip (PATH shim gh, GH_REPO=ThinkFlowLab/FlyBot node .github/scripts/enqueue-guard.mjs --pr 1805):

enqueue-guard: PR #1805 head 4b3b74c0898097e1139ddf05e75374cf31c72b70, labels []
enqueue-guard: conclusion used: no conclusion
enqueue-guard: ALLOW — enqueue #1805: no `hold` and the gate passes; a T1 tier or a mechanical release PR (AGENTS.md 6)

(the guard never enqueues; queueing stays with the Lead)

Checkpoint

{
  "pr": 1789,
  "claim": "Dev-1",
  "issue": 1789,
  "summary": "Settings to Workflows drew a node the run skipped as Queued: statusLabel matched running/done/failed/idle and fell through to Queued, so an untaken branch of a settled run read as still waiting while the Room names that node Skipped. One mapping added (skipped to t('Skipped')) plus the zh key Skipped: '跳过', the word the Room already uses; the test asserts both languages. No geometry, fit or edit-mode change.",
  "files": ["core/src/client/workflows.js", "core/src/client/i18n.js", "core/test/workflows-page.test.js", "changelog.d/1789-workflow-skipped-chip.fixed.md"],
  "checks": { "ran": "TZ=UTC npm run verify; ds-bot-patches check twice; whole-chain generate twice; build-client --check", "result": "green", "at": "3a331c5519ded77499be15cd76d5e48f722924c3" },
  "next": "Ready for review at this tip; needs a Verifier report naming this head."
}

…ThinkFlowLab#1789)

`statusLabel()` knew running/done/failed/idle and fell back to "Queued" for
everything else, so an untaken branch of a live run was drawn as if it were
still waiting, while the Room's Flow panel names that same node "Skipped".
The engine does write `skipped` (`plugins/workflow/src/graph.js` STATUSES and
the untaken-edge close), and the Room maps it already; this canvas now does
too, in both languages.

Docs-not-needed: docs/subsystems/core-client.md describes the Settings flowchart's wire plane, fit and edit mode, not the per-node status chip vocabulary; this changes one label mapping and one zh key, no architecture.

Fixes ThinkFlowLab#1789
@HugoXK

HugoXK commented Oct 30, 2026

Copy link
Copy Markdown
Contributor Author

T1 at this tip: enqueue request for 4b3b74c0898097e1139ddf05e75374cf31c72b70.

enqueue-guard at this head, verbatim:

enqueue #1805: no `hold` and the gate passes
- no PASS needed: computed tier T1 (AGENTS.md → Merge gates)
- the head lives in a fork: the issue reference and `agent-pr` rules are not asked of it

State at this head: tests-ok green, all 12 checks success, mergeable_state: clean, maintainer_can_modify: true, not a draft. 9 files +640/-580, of which the generated 0008 bundle (core/client.js, patches/ds-bot/0008-client-bundle.patch) carries exactly the two intended lines, and patches/ds-bot/0001-core-fixes.patch only the one Skipped dictionary line plus hunk line-number drift.

Written-by: FlyBot Lead

@Birfy
Birfy added this pull request to the merge queue Oct 30, 2026
Merged via the queue into ThinkFlowLab:main with commit 84de666 Oct 30, 2026
14 checks passed
@Birfy
Birfy deleted the dev/1-workflow-skipped-chip branch October 30, 2026 06:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Settings canvas draws a skipped workflow node as Queued, while the Room calls it Skipped

2 participants