Skip to content

ui(lists): Open runs on the workflow page; add tab and schedule helpers - #17

Open
SCcagg5 wants to merge 12 commits into
stack/16-ui12from
stack/17-ui13
Open

SCcagg5 wants to merge 12 commits into
stack/16-ui12from
stack/17-ui13

Conversation

@SCcagg5

@SCcagg5 SCcagg5 commented Oct 28, 2026 •

Copy link
Copy Markdown
Owner

Part of a stack of 31 pull requests that depend on each other. They must be reviewed and merged in order: each PR builds on the previous one and its diff only contains its own changes.

All PRs of the stack
# PR
1 specs: Add spec 083 and the samples store
2 ir: Add run state fields for ephemeral runs and reused outputs
3 runtime: Bound continuous steps and carry outputs of selected steps
4 api: Add step samples, events, availability and selected-step runs
5 test(ui): add YAML fixtures for the document model tests
6 ui(lib): add shared UI kit, status helpers and right-panel shell
7 ui(canvas): add canvas engine core, toolbars and editor helpers
8 ui(i18n): add workspace message catalogs, first batch
9 ui(canvas): add canvas Flow view, step run panel and workflow panel
10 ui(editor): add YAML document model, canvas model and run source logic
11 ui(editor): Add edit session, YAML format and quick fixes, run actions, tab strip
12 ui(editor): Add canvas graph model, Add step panel, issues popover, run bar
13 ui(canvas): Add layered layout, dependency edges, status styles, reference picker
14 ui(canvas): Add export, flow builder, upstream data panel, output capture
15 ui(canvas): Add node cards, launchers, inspector sections, client issues
16 ui(editor): Add visual editor, step inspector and YAML file panel
17 ui(lists): Open runs on the workflow page; add tab and schedule helpers
18 ui(workspace): Add workspace URL state, legacy redirects and run list links
19 ui(workspace): Add workspace data layer, run facts and Workflow panel
20 ui(workspace): Add run start controls, visible runs and reuse source
21 ui(workspace): Add data provider, bar identity, continuous panel and step list
22 ui(logs): Add run actions cluster, cached logs and log popout page
23 ui(workspace): Add Activity dock, step run view and workflow page
24 test(workspace): Add integration tests for the workspace shell and step view
25 ui(pages): Retire classic run pages and open runs on the workflow page
26 test(editor): Add integration tests for the editor, inspector and run overlay
27 test(ui): Add repository-wide guard tests and ESLint boundary rules
28 e2e: Add workspace helpers and fixtures, update existing specs
29 e2e: Add workspace specs, part 1 of 2
30 e2e: Add workspace specs, part 2 of 2
31 examples: Add the workspace demo workflows

Stack 17/31. Base branch: stack/16-ui12. Review and merge in order; this PR builds on the previous one.
Size: 59 files changed, 7972 insertions(+), 571 deletions(-).
Checked: Typecheck (tsc) of the whole UI and the unit tests of this PR (Vitest), on top of the previous PR.

Summary

List pages and the cockpit now open a run on its workflow page, not in a modal. This PR adds small helpers for the run view (tab rules, schedule summary, step status gates), a loading state for the workflow page, and a redirect for old run URLs. It also adds many tests for earlier visual-editor code.

Why

The workspace page replaces the run modal and the run page. Lists must link to it first, and old links must keep working. PR 16 ends the inspector work. PR 18 adds the workspace URL state and the legacy redirects that use these helpers. PR 19 onward builds the workspace data layer.

Changes

Counts: 25 existing files modified, 34 new files (32 of them tests).

  • Run lists (features/dag-runs):
    • New RunStatusChip and useListRunDisplay: a running run with no failed step reads "Healthy" in a list.
    • New lib/useOpenPage: a click navigates, Ctrl or Cmd click opens a new tab.
    • dagRunPagination.ts: remove the unused useExactDAGRuns hook (about 200 lines).
  • Helpers in features/dags/lib: runViewTabs.ts (RunViewTab, which tabs a run has), scheduleSummary.ts (schedule entries with next fire time), stepStatusGate.ts (when a step status can be set or retried).
  • Notifications: RunProgressStack no longer opens RunProgressModal. A card click goes to the run page (buildDAGPageURL).
  • Pages: new pages/dag-runs/LegacyRunRedirect.tsx for /dag-runs/:name/:dagRunId. Small edits in pages/cockpit, queues/queue, artifacts, event-logs, wiki, system-status.
  • Cockpit: TemplateSelector loses its selected-template display; CockpitToolbar, DateKanbanList and useCockpitState follow.
  • WorkspaceLoading.tsx: the bar with the workflow name plus a loader, so the page does not move on load.
  • Small fixes: SplitLayout transitions list exact properties; WorkersSummary, QueueCard, PathsCard, LicenseProvider get minor edits.

How to review

  1. features/dags/lib/runViewTabs.ts, scheduleSummary.ts, stepStatusGate.ts.
  2. features/dag-runs/lib/useOpenPage.ts, RunStatusChip.tsx, useListRunDisplay.ts.
  3. RunProgressStack.tsx and pages/dag-runs/LegacyRunRedirect.tsx.
  4. Cockpit changes (TemplateSelector, DateKanbanList).
  5. The test files, which are mostly additions.

Most attention: the removal of the progress modal in RunProgressStack, and the removal of useExactDAGRuns (check that nothing else imports it).

Tests

  • New: runViewTabs, scheduleSummary, stepStatusGate unit tests; repeat-badge, retry-count; LegacyRunRedirect; WorkspaceLoading; messages/untranslated.test.ts (checks that zh-CN and ja catalogs do not leave English text).
  • Tests of earlier code: NodeDetailsFrame, DAGSpec.compactNotices, DAGSpec.ndvSegments, YamlFilePanel, quickFixProvider, DAGEditorWithDocs, DetailsCanvas, editMessages, canvas Flow and overlays, ExportMenu, inspector widgets (KeyValueWidget, ObjectTemplate, ReferenceTextWidget, StringOrMap, ValueOrReference), SaveDiffDialog.
  • Updated: RunProgressStack, DateKanbanList, TemplateSelector, queue and artifacts page tests, relative-time.

Screenshots

The workflow page is reached from lists only after later PRs wire the route. The screenshot shows the list page that links to it.

Workflow list page

This was referenced Oct 28, 2026
@yohamta0
yohamta0 force-pushed the stack/17-ui13 branch 3 times, most recently from e9ee0d6 to c6aeecb Compare October 30, 2026 08:43
@yohamta0
yohamta0 force-pushed the stack/17-ui13 branch 3 times, most recently from cdb61f0 to be6cdc3 Compare October 31, 2026 05:37
@yohamta0
yohamta0 force-pushed the stack/16-ui12 branch 2 times, most recently from c629d49 to b9a5966 Compare October 31, 2026 06:28
@yohamta0
yohamta0 force-pushed the stack/17-ui13 branch 2 times, most recently from 2e27f0c to 9f79233 Compare October 31, 2026 09:21
SCcagg5 and others added 12 commits October 31, 2026 19:41
…gucloud#3396)

* UI: visual-editor/inspector, dags/components, visual-editor/references
* Update spec editor E2E tests for the new editor
* Show the already-formatted note as info
* Ask before restoring a draft of an older version
* Keep save checks and editor state across updates
* Show the server steps when the YAML does not parse
* Log a failed load of the client issue checks
* Save the pending draft when the key changes
* Send the focused field on Ctrl+S and read 1e3
A progress card now opens the run instead of a progress dialog.
DAGSpec loads the client issues on mount without waiting for them. A
test file that ended first left that load running, and the import of
cron-parser after the test environment was gone failed the run.
summarizeSchedules ignored the scheduler's next run when no computed
time matched it, which happens when the zone given is wrong, although
the option is documented to win over the computed time. describeCron
worded steps that do not divide their range, such as */45 or 0 */5,
as even intervals; those now stay as the raw expression.

The tests restore spies after each NodeDetailsFrame test, require a
change callback before reading its form data, query the loading
status by role and name, and describe the server-match case as it is.
Earlier PRs fixed three behaviors whose tests could only land here,
where the test files exist:

- A minimap drag ends at pointercancel or lostpointercapture, so a
  touch that the browser cancels no longer leaves the view following
  the pointer.
- A wheel over the minimap that counts lines zooms by the same step as
  the canvas and keeps the page from scrolling.
- The key-value editor sends a key named like an Object.prototype
  member, such as `constructor`, instead of dropping it.
Clearing the last value of a nested object in the parameters form
once closed its block and hid the field being typed in. The test
keeps that from coming back now that a form renders the template.
The canvas test covers a connect drag that ends in pointercancel: it
links nothing and reports no drop. The YAML panel test covers a link
that turns the step view expanded while the file shows: the step
opens. Both test fixes from earlier in the stack, whose test files
start here.
The notice line of the page names the line of the first YAML error
while the canvas shows the steps that the server read.
The cron descriptors were a plain object: an expression such as
"constructor" found an inherited function, and the schedule summary
threw while it rendered. A Map holds only the listed descriptors, so
any other expression gets no preview, like one the parser rejects.

The tests now clear the docs sidebar key even when an assertion fails,
and find the add control and the status dot by role and name, so the
read-only check also sees a control named by aria-label.
The key-value widget sends nothing while two rows share a key and
marks those keys invalid. The test file for the widget starts here.
A number input accepts 1e3. The value field of a number that also takes
a reference must read it as a thousand, not as 1. The test file of the
field starts in this PR.
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.

2 participants