Skip to content

fix: Workflow dashboard blocks input by reloading history on animation ticks #420

Description

@tt-a1i

Problem

Opening the Workflow TUI dashboard during a run causes severe keyboard/navigation lag. The dashboard animation timer runs every 120 ms but calls refresh() -> loadRunEntries() on each tick. That loader synchronously reads every persisted workflow and hydrates result/transcript artifacts before filtering by session and request time.

Observed evidence

  • Configured local runtime: c8f2c13d49f2e6cd3b389dfff72ccc2eaca970c1.
  • The live Pi process reached approximately 101% CPU. A macOS sample captured the main thread inside a timer callback, with string processing, JSON parsing, file opens and GC; JavaScript function names were not available in that sample.
  • Calling the real loadRunEntries(new Map(), "diagnostic-no-session", new Set(), Date.now()) against approximately 13 MB of local history returned zero entries but took 3522, 3327 and 3952 ms under Node. Bun measurements were 3764, 2138 and 1942 ms. These are exploratory local measurements under concurrent load, not a formal benchmark.
  • The reported run had eight children. Raw sessions, transcripts and screenshots are private local evidence and are not attached.

Expected behavior / acceptance

  • Animation ticks and keyboard navigation must not repeatedly scan or hydrate historical artifacts.
  • Filter unrelated runs before expensive normalization/hydration; load transcript artifacts only when the user opens the corresponding detail.
  • Preserve live updates, terminal transitions, historical navigation and canonical recovery semantics.
  • Add deterministic regression coverage for filesystem work on animation ticks and lazy artifact loading.
  • Run bun run check, bun run test, and repeat the local read-only timing probe.

The separate ordinary conversation view may have additional performance costs; this issue targets the reproduced dashboard path.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions