feat(webui): an organization's workflows read only, a list, a step graph with the selected step's detail, and a Workflows card on the organization page (#1873) #1973

Merged
jason.woltje merged 3 commits from sp9-workflows into refactor 2026-11-15 14:54:48 +00:00
Owner

What changes

  • An organization's workflows can be read in the Console. #/orgs/<id>/workflows lists them by scope (organization, then each code project) with step count, description and the step chain.
  • #/orgs/<id>/workflows/<name> draws the steps as a graph, one box per step with its state, title and roles, and arrows in step order. Left to right above 700 px, top to bottom at 700 px and below.
  • Selecting a step shows its position, roles, the state it puts a task in, and links to the previous and next step. The address carries ?step=n.
  • A role that names no current role is marked in red on its step.
  • The organization page gets a Workflows card above Settings, with an "All workflows" link and one link per workflow. The right column is now named "Workflows and settings".
  • With no workflows the page says so and, when the read says the Console can write, links to Apply a pack. A stopped organization says it was not read and never says "no workflows".
  • Read only. Nothing here edits a workflow.

How

  • workflows.js gains page(org, name, q) and card(org, opts) on window.MosaicWorkflows, next to the existing editor code. New workflows.css, theme tokens only.
  • bus.js routes the two addresses and treats them as workspace pages, so they poll and repaint like the others.
  • It reads the existing GET /api/orgs/<id>/workflows. No new server route, no write route. serve.mjs only serves the new stylesheet.

Tests

  • New tests/workflows-browser.test.mjs, 12 results, red on the base.
  • unified-workspace-browser.test.mjs: the tab-order test names the renamed column and checks Tab reaches "All workflows".
  • Lane gate on 7c6571768: 190 webui test files, 1504 pass, 0 fail, 4 skipped (org-quick-live, needs a live scratch instance).
  • Lead check on 7c6571768: 143 pass, 0 fail over the changed test files plus the system page files.

Review

Two rounds, each a fresh claude-opus-5-5 reviewer. Round 1 asked for one change (role names ran past the step box on a four-role step) and three smaller ones, all fixed. Round 2 approved.

Left for later

  • At 1440 the missing-role line cuts the role name ("No current role: merg..."). The step panel names it in full.
  • The "text stays inside its box" test cannot fail while the clip path exists.
  • No running-step mark: no read says which step a task is on.
  • No branches, gates or inputs: the workflow file is a flat list of steps.
  • Roles are text, not chips with the agents that fill them.
  • No editing, and no Summary / Workflows / Settings tabs on the organization page.
## What changes - An organization's workflows can be read in the Console. `#/orgs/<id>/workflows` lists them by scope (organization, then each code project) with step count, description and the step chain. - `#/orgs/<id>/workflows/<name>` draws the steps as a graph, one box per step with its state, title and roles, and arrows in step order. Left to right above 700 px, top to bottom at 700 px and below. - Selecting a step shows its position, roles, the state it puts a task in, and links to the previous and next step. The address carries `?step=n`. - A role that names no current role is marked in red on its step. - The organization page gets a Workflows card above Settings, with an "All workflows" link and one link per workflow. The right column is now named "Workflows and settings". - With no workflows the page says so and, when the read says the Console can write, links to Apply a pack. A stopped organization says it was not read and never says "no workflows". - Read only. Nothing here edits a workflow. ## How - `workflows.js` gains `page(org, name, q)` and `card(org, opts)` on `window.MosaicWorkflows`, next to the existing editor code. New `workflows.css`, theme tokens only. - `bus.js` routes the two addresses and treats them as workspace pages, so they poll and repaint like the others. - It reads the existing `GET /api/orgs/<id>/workflows`. No new server route, no write route. `serve.mjs` only serves the new stylesheet. ## Tests - New `tests/workflows-browser.test.mjs`, 12 results, red on the base. - `unified-workspace-browser.test.mjs`: the tab-order test names the renamed column and checks Tab reaches "All workflows". - Lane gate on 7c6571768: 190 webui test files, 1504 pass, 0 fail, 4 skipped (`org-quick-live`, needs a live scratch instance). - Lead check on 7c6571768: 143 pass, 0 fail over the changed test files plus the system page files. ## Review Two rounds, each a fresh claude-opus-5-5 reviewer. Round 1 asked for one change (role names ran past the step box on a four-role step) and three smaller ones, all fixed. Round 2 approved. ## Left for later - At 1440 the missing-role line cuts the role name ("No current role: merg..."). The step panel names it in full. - The "text stays inside its box" test cannot fail while the clip path exists. - No running-step mark: no read says which step a task is on. - No branches, gates or inputs: the workflow file is a flat list of steps. - Roles are text, not chips with the agents that fill them. - No editing, and no Summary / Workflows / Settings tabs on the organization page.
jason.woltje added 3 commits 2026-11-15 14:54:43 +00:00
jason.woltje merged commit 7c6571768f into refactor 2026-11-15 14:54:48 +00:00
Sign in to join this conversation.