v2.7.0
Release notes for orun v2.7.0.
Highlights
- Cockpit UX:
orun status,orun get runs,orun logs,orun status --watch, andorun tuiall render through one shared layer. The CLI is the TUI compressed to a single frame; the TUI is the CLI with navigation. - New
internal/cockpit/*packages:style,viewmodel,render,surface,bridge,watch. - Shared palette (Linear/Claude Code violet
#7c3aed/#a78bfa) and glyph set across CLI and TUI — one file to reskin Orun. - Live watch loop unified:
orun status --watchand TUI panes now subscribe to the same poll stream with the same terminal-state semantics.
The cockpit bridge
.orun/ ──▶ cockpit/bridge ──▶ cockpit/viewmodel ──▶ cockpit/render
│ │
└──▶ cockpit/watch (live updates) ─────────────┤
▼
cockpit/surface → stdout / TUI
cockpit/style— design tokens (palette, glyphs, separators). Consumed byinternal/ui(ANSI) andinternal/tui/theme(lipgloss adaptive colours).cockpit/viewmodel— pure value objects (RunView,RunListView,LogsView) built from.orunstate.cockpit/render— surface-agnostic formatters (brand wedge, status legend, progress bar, component tree, grouped logs with… N more linestruncation).cockpit/bridge— oneSourceinterface over either a localstate.Storeor a remotestatebackend.Backend.cockpit/watch— polling stream emittingUpdate{View, Err, Terminal}. Shared byorun status --watchand the TUI'sLiveOrunService.WatchRunView.
New stdout frame
▲ orun multi-environment-platform
Plan: sha256-ad6ce · Run: gh-26563885741-... · State: completed · Duration: 0ms
Scope: 1 component · 1 job
Status: ✓ 1 succeeded · ◐ 0 running · ○ 0 queued
Progress: ▓▓▓▓▓▓▓ 100%
● api-edge-worker
│ └─ ✓ verify-deploy 19.0s
NO_COLOR strips colour while keeping glyphs. Glyph legend on the
orun status reference.
Improvements
orun logsnow prints a cockpit frame with grouped log blocks per job/step and… N more linestruncation (default 8 lines;--rawprints everything).orun status --watchproduces byte-identical frames to non-watchorun status— no more divergent rendering between the two paths.- TUI
internal/tui/themeis now a thin lipgloss wrapper overcockpit/style.Palette. Changing a colour is a one-file edit that ripples to both CLI and TUI automatically.
Compatibility
- All existing flags retained on
orun status,orun logs, andorun get runs. Output is visually new but the data shape is unchanged;--json(on the get path) continues to emit the same schema. - Legacy renderers retained as
*Legacyhelpers incmd/orun/during the migration. They will be removed in v2.8 once the remote-state path andorun runruntime presenter are also ported. NO_COLOR,CLICOLOR_FORCE, andGITHUB_ACTIONSdetection unchanged.
What's next (v2.8)
- Port
orun runruntime presenter through cockpit. - Remote-state path of
orun statusthrough cockpit end-to-end. JSONSurfaceexposed via--output=jsonon everygetverb.- GHA renderer migrated to
cockpit/surface.GHASurface. - TUI run pane rendering directly from
viewmodel.RunView(behind a--cockpitflag while we validate parity).