Skip to content

ui(logs): Add run actions cluster, cached logs and log popout page - #22

Open
SCcagg5 wants to merge 7 commits into
stack/21-ui17from
stack/22-ui18
Open

SCcagg5 wants to merge 7 commits into
stack/21-ui17from
stack/22-ui18

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 22/31. Base branch: stack/21-ui17. Review and merge in order; this PR builds on the previous one.
Size: 20 files changed, 3689 insertions(+), 441 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 run actions cluster of the bar, a "Copy to editor" hook, the cached logs of reused steps, and the popout page for a log. It reworks the shared log viewers (ExecutionLog, StepLog) to support cached lines and a log order toggle, and adds a canvas preview to the retry dialog.

Why

A run of one step reuses earlier outputs, so its log must show the lines of the source runs too. A user also needs the stop, retry and reschedule actions on the bar, and a log in its own window. This PR follows PR 21 (step list, data provider). Later PRs mount the cluster, cached logs and popout in the page.

Changes

Counts: 10 existing files modified, 10 new files (4 tests new, 3 updated).

  • Bar: RunActionsCluster (stop, cancel auto-retry, reject, retry, reschedule, dequeue, then Copy to editor; each group keeps a fixed slot), useCopyRunSpecToEditor (confirms when the editor has unsaved changes).
  • Dock: CachedLogs (reads the last 500 lines of each source run log, in activity or raw mode).
  • Popout: LogPopoutPage and PopoutBar (step log or run scheduler log, with links back to the workspace).
  • Log viewers: new LogOrderToggle and useLogOrder; ExecutionLog and StepLog take cachedLines and pageView, and keep search and scroll per log identity; LogViewModeSwitch, ActivityLine (24 px rows with details), ForeachBodyStepLog follow.
  • DAGRunActions: stopAll (stop all running instances), markActions, onRescheduled, onDequeued, and a previewEngine choice (mermaid or canvas) for the retry preview. A reused step shows as Skipped in the preview.
  • DAGSpecReadOnly: reworked, with the canvas loaded lazily.

How to review

  1. dock/CachedLogs.tsx.
  2. ExecutionLog.tsx and StepLog.tsx (cached lines, tail and page view).
  3. bar/RunActionsCluster.tsx and DAGRunActions.tsx.
  4. popout/LogPopoutPage.tsx, PopoutBar.tsx.
  5. DAGSpecReadOnly.tsx.

Most attention: the follow and pause logic of the live log end in StepLog and ExecutionLog, and the retry preview in DAGRunActions.

Tests

  • New: RunActionsCluster, CachedLogs, LogPopoutPage, StepLog.
  • Updated: ExecutionLog, DAGRunActions, DAGSpecReadOnly (each grows by several hundred lines).

Screenshots

These components are used by later PRs. The screenshot shows the Log tab with the "cached" lines of reused steps in the final UI.

Log tab with cached lines

This was referenced Oct 28, 2026
@yohamta0
yohamta0 force-pushed the stack/22-ui18 branch 4 times, most recently from e7c0757 to a1f4947 Compare October 29, 2026 12:58
@yohamta0
yohamta0 force-pushed the stack/22-ui18 branch 3 times, most recently from ed94b5a to 1138d42 Compare October 30, 2026 08:07
@yohamta0
yohamta0 force-pushed the stack/22-ui18 branch 2 times, most recently from 29a591b to cc6206c Compare October 31, 2026 04:50
@yohamta0
yohamta0 force-pushed the stack/22-ui18 branch 2 times, most recently from a77738e to b67869c Compare October 31, 2026 09:21
SCcagg5 and others added 7 commits October 31, 2026 19:44
…step list (dagucloud#3401)

* UI: workflow-workspace/continuous, workflow-workspace/bar, workflow-workspace/data
* Bound the samples cache and fix chart input
* Test that run history polls under re-renders
* Sync the webhook chip and fix bar and chart input
* Read a continuous step again when its run ends
Without a variant the note was a success toast, which shows nothing.
Stop all reported success when the server returned 200 with a list of
runs that did not stop. The error modal now lists those runs, and the
view still refreshes.

The run that an edited retry creates opened on the page named after
the DAG, which finds no file when the DAG name differs from the file
name. It now opens on the page of the source file.

The line count of the run log was a live region, so screen readers
announced it on every poll of a live run. It is now plain text for
screen readers.

Activity lines were keyed by their row, so open details moved to
another line when a new line shifted the rows. They are now keyed by
line number.

Copy to editor checked only the editor handle when the user confirmed
the replace. The editor can freeze or become read-only while the
question is open, so the confirm now checks the same conditions as
the button.
A toast without a variant is a success and shows nothing, so "Stop
signal sent to all running instances" never appeared. It is now a
note, like the toast of a single stop.
The Details chevron of an activity line had no handler of its own. Its
click reached the row, which ignores a click while text is selected so
that a drag-select does not toggle. Tab keeps a selection, so Enter on
the chevron did nothing. The chevron now toggles on its own press.

A log without the Page View switch shows only its tail, but Jump to
line still opened a page. The run log then had no way back to the
tail. The jump controls now follow the switch.
A pause while another stream loaded froze the previous stream: after
a switch to stderr, a focus on Search or a scroll before the response
kept stdout under the stderr label. A pause now freezes only loaded
content, and freezes the new stream once it comes.

A reschedule with a DAG name override makes a run of another DAG,
which this workflow page does not list. The page now stays on its run
instead of selecting the new one and reporting it as not found.

The run ID link of the log pop-out named the workflow by its DAG name.
It now names the file, whose name can differ.
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