April 21, 2026
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 watchand the--event/--diff/--changed-files/--base-branchtrigger-filter flags. Addwrkflw-trigger-filterandwrkflw-watcherto 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.gifagainst 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.tapeso future UI changes can regenerate withvhs demo.tape
Test plan
- Verify
demo.gifrenders in the README on the PR diff view - Confirm
vhs demo.tapereproduces 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,
gtoggles graph ↔ stage-list. Reusesdag::topo_levels. - Trigger (tab 5) — form + live curl preview. Dispatches via
wrkflw_github::trigger_workfloworwrkflw_gitlab::trigger_pipeline.ptoggles platform,+adds inputs,Enterdispatches,ccopies curl into the log buffer. - Secrets (tab 6) — lists configured providers from
SecretConfig, masked-by-default detail pane withmto reveal, runtime pills. - Matrix sub-tab (Step Inspector) — now calls
wrkflw_matrix::expand_matrixand 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 viaa, recolors brand + focused borders through a thread-local intheme.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 withg, open Tweaks with,and cycle accents witha - 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 (
#5fd3f3cyan,#f5d76eyellow,#8fce8fgreen,#d68cfftrigger purple, …) so the TUI looks the same on every terminal. NewBadgeKind-based badge / key-chip / pulse helpers intheme.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] descchips, right-aligned validation/runtime/availability/workflow count. The string-blobbuild_context_helpis replaced with a per-modeVec<(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 fromWorkflow.job_namesso pending jobs show too) · Steps + Live output · Mini DAG (topo levels fromJob.needs) + Timing chart. - Job detail → Step Inspector (
views/job_detail.rs): tabbed sub-view — Output / Env / Files / Matrix / Timeline.Tabcycles them whendetailed_viewis 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:
Workflownow carries anArc<WorkflowDefinition>populated at load time so the Preview pane and mini DAG read real data without re-parsing on every frame.Appgainsstep_inspector_tab: usizeplus aTab/BackTabhandler scoped to detailed view.
What's deferred (and why)
Out of scope for this PR — design screens 4-8:
| Screen | Why deferred |
|---|---|
| 4 · DAG full view | Largely covered by the mini DAG; full screen needs zoom/pan handling. |
| 5 · Matrix expansion | Matrix execution support in the executor is partial. |
| 6 · Run history + diff | No persisted history store today. |
| 7 · Secrets manager | Vault/AWS/file routing UI without backing providers is theatre. |
| 8 · Remote trigger | wrkflw 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.