v0.2.0
Highlights
New: rune watch — live, bidirectional interactive passthrough for driving a command in a PTY. Puts your terminal in raw mode, forwards keystrokes to the child live (including raw escape sequences like arrow keys), streams output to your screen as it happens, and logs every chunk as an NDJSON event to a temp file so an AI agent can tail the session live while a human drives it.
Refined through real, live-terminal dogfooding — including driving fledge plugins search --interactive (a genuinely different Rust TUI: animated spinner, type-ahead fuzzy filtering, arrow-key navigation, a nested y/n confirmation) end-to-end.
rune run --timeout=SECONDS and TableParser.parse(format:) (:auto/:pipe/:space).
Test coverage: 57 → 153 RSpec examples, ~98% line / ~83% branch coverage.
Fixes
- A root-cause raw-mode bug where arrow keys never registered in real
rune watchusage (missingrequire 'io/console'). - Missing
require 'io/wait'inpty_runner.rb/pty_watcher.rb— this was a hard crash on Ruby 3.0/3.1, inside the gem's declared>= 3.0support range. rune run --timeoutnow actually kills the timed-out child instead of leaving it running as an orphan.- A double-execution bug where an unrelated error could silently re-run an already-spawned
rune watchsession. PromptDetectorfalse positives on progress output and<placeholder>-style lines.- Signal forwarding,
Script.new { ... }, exit-code composability, PTY-unavailable/allocation-failure handling, and non-UTF-8 output crashes. - A full triage of all 21 automated review comments on #3 — 9 fixed with regression tests, 7 documented as known limitations for 0.2.1 (see
ROADMAP.md).
Install
gem install rune
# or
fledge plugins install runeFull details in ROADMAP.md and docs/getting_started.md.