Skip to content

ui(workspace): Add workspace URL state, legacy redirects and run list links - #18

Open
SCcagg5 wants to merge 4 commits into
stack/17-ui13from
stack/18-ui14
Open

SCcagg5 wants to merge 4 commits into
stack/17-ui13from
stack/18-ui14

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 18/31. Base branch: stack/17-ui13. Review and merge in order; this PR builds on the previous one.
Size: 70 files changed, 6617 insertions(+), 1181 deletions(-).
Checked: Typecheck (tsc) of the whole UI and the unit tests of this PR (Vitest), on top of the previous PR.

Summary

This PR adds the URL model of the workflow workspace (workspaceUrl.ts) and the redirects from old run and tab URLs. It removes the run modal and the split view from the run list page, and adds a command-palette registry, a step retry dialog and the dock tab strip.

Why

One page per workflow needs one URL scheme (?run, ?step, ?dock, ?panel) and old bookmarks must still work. PR 17 adds LegacyRunRedirect and the list helpers. PR 19 builds the data layer on this URL state. PR 20 and later put the bar, step view and Activity panel on it.

Changes

Counts: 31 existing files modified, 1 deleted, 38 new (about half are tests).

  • URL state (workflow-workspace/state): workspaceUrl.ts (useWorkspaceUrl, workspace mode, dock tab, open panel), legacyLinks.ts (old section routes to panels and run pages), useLegacyRedirect.ts.
  • Dock and layout: DockTabStrip, RunTabsPane, DockHeaderTools, propsEqual, layout/paneActive.ts, zLayers.ts (stack order of layers).
  • Canvas helpers: escFree, useEscInStepYaml, useRightPanelClearance (measures the right panel over the canvas).
  • Other workspace pieces: bar/useShowRun, continuous/continuousNode, settings/useSettingsLeaveGuard, step/RepeatRule, executions/RunStatusDot and useRunReferenceScope, visual-editor/references/stepReferences.ts.
  • Command palette: CommandPaletteProvider gets usePaletteCommands so a page can add a "workflow" group; CommandPaletteDialog shows it.
  • Run list: pages/dag-runs/index.tsx drops the modal and selection state; DAGRunTable, DAGRunGroupedView open the run page; DAGRunCard.tsx is deleted. ActivityLanes uses useOpenPage.
  • Dialogs and tabs: new StepRetryDialog; ApprovalTab, ChatHistoryTab, HumanTasksTab, NotificationsTab, StepReviewModal, StatusUpdateModal, ParallelExecutionModal, DAGRunOutputs get edits for the new host.
  • Layout: Layout.tsx collapses the sidebar below 900 px and adds LayoutChromeProvider; ContentNavigation names workflow sections.

How to review

  1. state/workspaceUrl.ts, then legacyLinks.ts and useLegacyRedirect.ts.
  2. pages/dag-runs/index.tsx and DAGRunTable.tsx (what is removed).
  3. CommandPaletteProvider.tsx and its test.
  4. StepRetryDialog.tsx.
  5. Layout.tsx, useRightPanelClearance.ts, useSettingsLeaveGuard.ts.

Most attention: the redirect table in legacyLinks.ts (every old URL must land on the right place), and the deletion of the run modal path in pages/dag-runs/index.tsx.

Tests

  • New: workspaceUrl, legacyLinks, useLegacyRedirect, useSettingsLeaveGuard, useRightPanelClearance, escFree, useShowRun, DockTabStrip, RunStatusDot, continuousNode, stepReferences, wordingJa, StepRetryDialog, CommandPaletteProvider, ContentNavigation, RunStatusChip, ApprovalTab, ChatHistoryTab.
  • Updated: Layout, CommandPalette, DAGRunTable, DAGRunGroupedView, ActivityLanes, NotificationsTab, HumanTasksTab, MonitoringOffer, pages/dag-runs.

Screenshots

These components are used by PR 19 and later; the screenshot shows the dock tab strip and the Activity panel in the final UI.

Activity panel with its tab strip

This was referenced Oct 28, 2026
@yohamta0
yohamta0 force-pushed the stack/18-ui14 branch 3 times, most recently from eb4308f to a760b6c Compare October 29, 2026 13:21
@yohamta0
yohamta0 force-pushed the stack/17-ui13 branch 2 times, most recently from 313d9f6 to e9ee0d6 Compare October 30, 2026 06:44
@yohamta0
yohamta0 force-pushed the stack/18-ui14 branch 3 times, most recently from e7bdd66 to 8a5ff7f Compare October 30, 2026 11:03
@yohamta0
yohamta0 force-pushed the stack/17-ui13 branch 2 times, most recently from a7196bf to cdb61f0 Compare October 31, 2026 04:50
@yohamta0
yohamta0 force-pushed the stack/18-ui14 branch 2 times, most recently from 76af8b9 to e0426b1 Compare October 31, 2026 05:37
@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 4 commits October 31, 2026 19:42
…rs (dagucloud#3397)

* UI: pages, dags/components, cockpit
* Expect the run page from a run progress card
* Load client issues before the node frame tests
* Trust the server next run and tighten UI tests
* Cover minimap and key-value fixes in tests
* Test that a nested object block stays open
* Test cancelled connect drags and expanded links
* Test the notice of a YAML the editor cannot read
* Ignore inherited keys in schedule descriptors
* Test key-value rows that share a key
* Test the exponent form of a number value
Run list rows and Activity lanes now open the run instead of the side
panel.
Running rows read their run details every 10 s to decide "Healthy".
Only a run with a continuous step can be Healthy, so other runs now
read their details once, and a page of running runs no longer sends a
request per row every 10 s.

Enter on a portaled popup item, such as a Status option, also reached
the run list and opened the highlighted run. The list now ignores keys
that a popup handled and keys on options and menu items.

The artifacts control navigates, so it is now a link: middle click
and "Open in new tab" work, as on the name link.

Registered palette commands shared ids with workflows of the same file
name and with a second registration, which broke the active option.
Their ids now carry the registration.

A guard() prompt stayed open when its section became clean while the
editor draft was dirty, since it closed only when no risk was left. It
now closes when the risk it asks about goes.

Other fixes:
- A legacy sub-run link no longer applies the sub-run's step to the
  root run it opens.
- Step retry disables Retry without the runDags permission, matching
  the guard.
- The subscription event actions wrap in a narrow column.
- useEscInStepYaml updates its callback ref in an effect, not during
  render.
- The pollWhileEmpty doc states the real 2 s interval.
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