Skip to content

client: open a failed workflow run on the Workflows page - #2516

Merged
Birfy merged 1 commit into
ThinkFlowLab:mainfrom
HugoXK:dev/1-inbox-workflow-page
Nov 5, 2026
Merged

Birfy merged 1 commit into
ThinkFlowLab:mainfrom
HugoXK:dev/1-inbox-workflow-page

Conversation

@HugoXK

@HugoXK HugoXK commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #2515

Owner: Dev-1
Reviewer: Birfy
Written-by: FlyBot Dev-1
Claim-Id: 18640dfec1ed471c81d1d7ab34b72512
Risk tier: T1
Base: d1ea853

What changed

In a read-only Inbox a failed workflow run has no chat to land in, so its row offers Open. That Open landed on Settings → General: the row asked Settings for a page named workflow, but the page key SETTINGS_PAGES lists is workflows (core/src/client/settings.js), and the dialog resolves an unknown key to general without an error. The reader had to find the Workflows page themselves, then find the graph among the others.

After: the row asks for workflows and lands on the Workflows page. Nothing else about the row changes — no chat, no answer control, no per-graph deep link (still out of scope, as the issue says).

The test could not catch this because it asserted the argument the call carried (['close', 'settings workflow']), which pinned the wrong string in place; nothing rendered the dialog. It now renders SettingsDialog and reads the current page off the nav's aria-current="page", and keeps a "not General" negative assertion so the old landing stays named. docs/subsystems/core-client.md repeated the singular call and now states the page key Settings actually lists.

Hand-written files: core/src/client/inbox.js (the one page key, plus a comment saying Settings falls back to General for a key it does not list), core/test/inbox-workflow-failure.test.js, docs/subsystems/core-client.md, changelog.d/2515-inbox-workflow-open-page.fixed.md. core/client.js and patches/ds-bot/* are regenerated, never hand-edited: node scripts/build-client.mjs, then node scripts/ds-bot-patches.mjs generate — the regenerated bundle differs from the base by that one word only, so there is no other drift.

Verification at the tip

Tip SHA: 16f743d (tree 33283f688a4ee0dd0abf50891d7e7dd03448baec), pushed from local 773f9759… — same tree, the push path re-commits.

Ran:

  • failing test first, on a clean d1ea853c tree with only core/test/inbox-workflow-failure.test.js taken from this branch: # tests 8 / # pass 7 / # fail 1; the red one is not ok 7 - #1706: a workflow row has no chat, opens the Workflow graphs page, and answers nothing with expected: [ 'Workflows' ] / actual: [ 'General' ].
  • counter-proof on the fixed tree: reverting only inbox.js's one word turns the same test red again (# tests 8 / # pass 7 / # fail 1); restoring it leaves git status clean.
  • TZ=UTC ARCH_DOCS_BASE=d1ea853c… npm run verify → exit 0: core 2927/2927, social 577, tree 137, timeline 141, workflow 440, .github + policy 671, interop 37, live-e2e 26; lint, arch-docs: OK (8 changed file(s)), build-client --check, ds-bot-patches check (three ok) and canonical (generate is a no-op) all green.
  • git diff --numstat d1ea853c...HEAD — 8 files, +164/−9:
1   0  changelog.d/2515-inbox-workflow-open-page.fixed.md
1   1  core/client.js
2   1  core/src/client/inbox.js
78  2  core/test/inbox-workflow-failure.test.js
1   1  docs/subsystems/core-client.md
1   1  patches/ds-bot/0008-client-bundle.patch
2   1  patches/ds-bot/files/src/client/inbox.js
78  2  patches/ds-bot/files/test/inbox-workflow-failure.test.js
  • after the build and generate ran on this tree, git status --porcelain is empty and build-client --check exits 0, so the committed bundle and patches are exactly what the generators produce from this source.

Not run (and why): the two-Bot live smoke, which needs a running instance; the landing page here is covered by the rendered component test above.

Ready for the queue at this tip; the branch stays frozen while queued.

Checkpoint

{
  "pr": 2516,
  "claim": "Dev-1",
  "issue": 2515,
  "summary": "In the Inbox a failed workflow run's Open asked Settings for the page 'workflow', but the page key is 'workflows', so the dialog silently fell back to General instead of the Workflow graphs page. The row now asks for 'workflows', and the test renders SettingsDialog and reads the current page from the nav's aria-current=\"page\" (keeping a not-General negative assertion) instead of asserting the argument the call carried, which pinned the wrong string in place. core/client.js and the patches are regenerated from that source, not hand-edited.",
  "files": ["core/src/client/inbox.js", "core/test/inbox-workflow-failure.test.js", "docs/subsystems/core-client.md", "changelog.d/2515-inbox-workflow-open-page.fixed.md", "core/client.js", "patches/ds-bot/0008-client-bundle.patch", "patches/ds-bot/files/src/client/inbox.js", "patches/ds-bot/files/test/inbox-workflow-failure.test.js"],
  "checks": { "ran": "failing test first on clean d1ea853c (8 tests, 1 red: expected ['Workflows'] / actual ['General']); revert-one-word counter-proof red again; TZ=UTC ARCH_DOCS_BASE=d1ea853c npm run verify exit 0 (core 2927/2927); build-client --check; ds-bot-patches check + canonical; generate no-op", "result": "green", "at": "16f743d93802e8b2a1c86d37f73324f6a979ab11" },
  "next": "none — ready for the queue at this tip; the branch stays frozen while queued"
}

@HugoXK
HugoXK marked this pull request as draft November 5, 2026 07:25
@HugoXK
HugoXK marked this pull request as ready for review November 5, 2026 08:13
@HugoXK
HugoXK marked this pull request as draft November 5, 2026 08:18
…b#2515)

The Inbox row asked Settings for the page 'workflow', but the page key is
'workflows', so the dialog silently fell back to General: the Open action
landed on General instead of Workflow graphs. The test now renders the
Settings dialog and reads the current page off the nav, instead of asserting
the string the call carried, which could not tell the two keys apart.
@HugoXK
HugoXK force-pushed the dev/1-inbox-workflow-page branch from 18bc684 to 16f743d Compare November 5, 2026 10:02
@HugoXK
HugoXK marked this pull request as ready for review November 5, 2026 10:12
@HugoXK

HugoXK commented Nov 5, 2026

Copy link
Copy Markdown
Contributor Author

Ready for the queue at 16f743d93802e8b2a1c86d37f73324f6a979ab11 (base d1ea853c5aa0d1c45295bb9d013284d2c36d7281, 1 commit, 8 files +164/−9, maintainer_can_modify: true). This is the one request comment; if the tip moves I will say so rather than post another.

Gates read on this tree:

  • build-client --check exit 0
  • patches check three lines ok, including core/ equals ds-bot/ + patches/ds-bot/
  • canonical ok — patches/ds-bot/ is what generate writes (generate is a no-op); two generate runs in a row leave git status empty
  • TZ=UTC ARCH_DOCS_BASE=d1ea853c npm run verify exit 0: 4956 tests / 4956 pass / 0 fail / 0 cancelled across the eight segments (core 2927, social 577, tree 137, timeline 141, workflow 440, .github+policy 671, interop 37, live-e2e 26); arch-docs: OK (8 changed file(s))

Red-first on the clean base d1ea853c with only this PR's test file: 8 tests / 7 pass / 1 fail / 0 cancelled, the one red being not ok 7 — the Inbox row lands on General where it should land on Workflows. On this tip the same file is 8/8.

Generated surface: patches/ds-bot/0008-client-bundle.patch and the two mirrors (files/src/client/inbox.js, files/test/inbox-workflow-failure.test.js) follow their sources; no other patch is touched.

Check runs at this tip: 17 success + 0 cancelled.

@Birfy
Birfy added this pull request to the merge queue Nov 5, 2026
Merged via the queue into ThinkFlowLab:main with commit 90a5944 Nov 5, 2026
18 checks passed
@Birfy
Birfy deleted the dev/1-inbox-workflow-page branch November 5, 2026 10:41
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.

client: a failed workflow run's Open in the Inbox lands on Settings → General, not Workflows

2 participants