Skip to content

v0.2.0

Choose a tag to compare

@0xLeif 0xLeif released this 27 Jul 23:24

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 watch usage (missing require 'io/console').
  • Missing require 'io/wait' in pty_runner.rb/pty_watcher.rb — this was a hard crash on Ruby 3.0/3.1, inside the gem's declared >= 3.0 support range.
  • rune run --timeout now 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 watch session.
  • PromptDetector false 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 rune

Full details in ROADMAP.md and docs/getting_started.md.