logs.gokuls.in

4 pull requests merged across 1 repo

bahdotsh/wrkflw

  • README.md — rewrite the Features list, TUI controls (now 7 tabs, new hotkeys), runtime modes table (adds secure-emulation), and Supported / Not Supported lists. Document wrkflw watch and the --event / --diff / --changed-files / --base-branch trigger-filter flags. Add wrkflw-trigger-filter and wrkflw-watcher to the crate table.
  • BREAKING_CHANGES.md — three entries were labeled \(v0.7.3)\ but the underlying commits (#73, #91) landed *after* the v0.7.3 tag. Relabel as \(Unreleased)\ with a pointer at the top.
  • Crate READMEs — new READMEs for \wrkflw-trigger-filter\ and \wrkflw-watcher\ (previously missing). Update \wrkflw-executor\ (expression evaluator, artifacts/cache, reusable-workflow output aggregation, secure emulation), \wrkflw-ui\ (7 tabs, new hotkeys), \wrkflw-runtime\ (secure emulation), \wrkflw\ (watch, trigger-filter flags), and \crates/README.md\ (new crate rows).
  • Example code fixes — \ExecutionConfig\ examples referenced the wrong field name (\runtime\ → \runtime_type\) and a non-existent \summary_status\ field; also missing \secrets_config\ and \show_action_messages\. \run_wrkflw_tui\ example was missing the \show_action_messages\ argument.

No code changes — docs only.

Test plan

  • Spot-check the README renders correctly on GitHub (tables, code blocks, headings)
  • Verify every CLI flag mentioned in the README exists in \wrkflw run --help\ / \wrkflw watch --help\
  • Verify TUI hotkeys match \crates/ui/src/views/help_overlay.rs\
  • Confirm the Rust snippets in executor / wrkflw / ui READMEs reflect the actual struct fields and function signatures
  • Regenerate \INDEX.md\ locally (the indxr \regenerate_index\ tool wasn't available in this session)
  • Re-record demo.gif against the post-#104/#105 TUI — the old GIF was showing the pre-redesign UI
  • Tour covers: Workflows list + preview, Tweaks overlay with accent cycling, DAG view across diamond/wide-fan/linear shapes, Trigger tab (GitHub/GitLab + curl preview), Secrets tab (providers + runtime selector), Help tab, and a live Podman run so Execution and Logs tabs show real streaming output
  • Check in demo.tape so future UI changes can regenerate with vhs demo.tape

Test plan

  • Verify demo.gif renders in the README on the PR diff view
  • Confirm vhs demo.tape reproduces the recording end-to-end with Podman running

Picks up the TUI screens from the Claude Design handoff that PR #104 deliberately left out, honoring that PR's rule: only build UI on top of features that actually exist.

  • DAG (tab 3) — full topological view of the selected workflow, g toggles graph ↔ stage-list. Reuses dag::topo_levels.
  • Trigger (tab 5) — form + live curl preview. Dispatches via wrkflw_github::trigger_workflow or wrkflw_gitlab::trigger_pipeline. p toggles platform, + adds inputs, Enter dispatches, c copies curl into the log buffer.
  • Secrets (tab 6) — lists configured providers from SecretConfig, masked-by-default detail pane with m to reveal, runtime pills.
  • Matrix sub-tab (Step Inspector) — now calls wrkflw_matrix::expand_matrix and renders up to 32 combos; status glyph inherits from the parent job because per-combo runtime status isn't tracked yet.
  • Tweaks overlay (, key) — accent color cycling via a, recolors brand + focused borders through a thread-local in theme.rs. Density + theme knobs from the mockup were dropped — they'd be dead toggles today.

What's still NOT in

Screen 6 (Run history + diff). Requires a storage layer that doesn't exist today: no run persistence, no serialized records, no diff engine. Left for a follow-up PR that starts from storage, not from render work.

Test plan

  • cargo build --workspace — clean
  • cargo clippy --workspace --all-targets -- -D warnings — clean
  • cargo test --workspace — 734 tests, all green
  • cargo test -p wrkflw-ui — 25/25
  • Manual: launch wrkflw tui, cycle through tabs 1–7, toggle DAG graph/list with g, open Tweaks with , and cycle accents with a
  • Manual: dispatch a real workflow via the Trigger tab against a test repo (requires GITHUB_TOKEN)
  • Manual: confirm Matrix sub-tab renders combos for a matrix job (e.g. e2e-matrix.yml)

Phase 1 of the TUI redesign from the Claude Design handoff bundle. Three of the eight designed screens land now; the rest are scoped for follow-up PRs that need real feature plumbing first.

  • Visual DNA: palette swapped to exact RGB from the design (#5fd3f3 cyan, #f5d76e yellow, #8fce8f green, #d68cff trigger purple, …) so the TUI looks the same on every terminal. New BadgeKind-based badge / key-chip / pulse helpers in theme.rs.
  • Title bar (views/title_bar.rs): flat 1-row with brand mark, numbered tabs, right-side pulsing LIVE indicator + runtime badge.
  • Status bar (views/status_bar.rs): left-aligned [key] desc chips, right-aligned validation/runtime/availability/workflow count. The string-blob build_context_help is replaced with a per-mode Vec<(key, desc)>.
  • Workflows tab → Dashboard (views/workflows_tab.rs): 60/40 split. Table on the left grows trigger-match dot + job-count columns. Right column stacks Preview (parsed name / on / jobs / chain / counts), Trigger filter (live match/skip counts), Quick actions (six labelled key tiles).
  • Execution tab → Live Run (views/execution_tab.rs): three panes — Jobs (synthesised from Workflow.job_names so pending jobs show too) · Steps + Live output · Mini DAG (topo levels from Job.needs) + Timing chart.
  • Job detail → Step Inspector (views/job_detail.rs): tabbed sub-view — Output / Env / Files / Matrix / Timeline. Tab cycles them when detailed_view is true. Env/Files render honest placeholders because per-step env snapshots and workspace-diff capture don't exist in the executor yet.
  • New components: components/dag.rs, components/progress_dots.rs, components/timing.rs — small render helpers used by Live Run and Step Inspector.
  • Data: Workflow now carries an Arc<WorkflowDefinition> populated at load time so the Preview pane and mini DAG read real data without re-parsing on every frame. App gains step_inspector_tab: usize plus a Tab/BackTab handler scoped to detailed view.

What's deferred (and why)

Out of scope for this PR — design screens 4-8:

ScreenWhy deferred
4 · DAG full viewLargely covered by the mini DAG; full screen needs zoom/pan handling.
5 · Matrix expansionMatrix execution support in the executor is partial.
6 · Run history + diffNo persisted history store today.
7 · Secrets managerVault/AWS/file routing UI without backing providers is theatre.
8 · Remote triggerwrkflw trigger exists as CLI; UI needs a modal flow.

Tweaks panel (theme/accent/density switcher) is also deferred — single dark theme for now, but theme.rs is structured so a future runtime theme switcher is a set_theme(&Theme) call.

Test plan

  • \cargo build --workspace\ — clean
  • \cargo clippy --workspace --all-targets -- -D warnings\ — clean
  • \cargo test -p wrkflw-ui\ — 25/25 passing
  • \cargo test --workspace\ — exit 0
  • Smoke-test interactively: \cargo run -- tui .\ from a repo with workflows; verify Dashboard renders, \Tab\ switches top-level tabs, \Enter\ on a job opens Step Inspector, \Tab\ cycles inspector sub-tabs, \Esc\ returns.
  • Sanity-check colours in iTerm2 + a 16-colour terminal — RGB should render; older terminals will downgrade gracefully via ratatui.