Skip to content

Releases: CorvidLabs/rune

v0.2.1

Choose a tag to compare

@0xLeif 0xLeif released this 29 Jul 03:08
fc5f70a

Fixed

  • Preserve --json and --ndjson flags after the command separator instead of consuming flags intended for the wrapped process.
  • Decode UTF-8 incrementally so multi-byte characters split across PTY reads remain intact.
  • Mirror terminal dimensions into watched child processes and track resize changes while polling.
  • Kill and reap watched children when an output sink closes with EPIPE.
  • Create default watch logs as collision-safe, symlink-resistant, owner-only 0600 files.

Changed

  • Test every supported Ruby minor from 3.0 through 4.0 and enforce strict SpecSync, risk, and provenance gates.
  • Include linked documentation and examples in the built gem and correct installation guidance.
  • Add release version parity, package, smoke, and provenance checks before publishing.

Full Changelog: v0.2.0...v0.2.1

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.

v0.1.3

Choose a tag to compare

@0xLeif 0xLeif released this 27 Jul 17:35

What's Changed

  • fix(v0.1.2): fix Ruby requirement, TableParser overflow, PTY prompt detection & script execution, and add PTY architecture docs by @0xLeif in #1
  • fix(pty): add signal forwarding, ANSI stripping in TableParser, and non-blocking stdin writes by @0xLeif in #2

New Contributors

  • @0xLeif made their first contribution in #1

Full Changelog: v0.1.1...v0.1.3

v0.1.2

Choose a tag to compare

@0xLeif 0xLeif released this 27 Jul 17:33

Full Changelog: v0.1.1...v0.1.2

v0.1.1 โ€” Active Script Execution & Robust TTY Parsing

Choose a tag to compare

@0xLeif 0xLeif released this 27 Jul 16:45

Rune v0.1.1 Release Notes

  • Active Rune::Script Execution: Connected step-by-step TUI script execution directly into PTYRunner (wait_for, send_keys, pause).
  • Enhanced Prompt Detection: Updated regex to detect shell & TUI prompts (>, >>, %, โฏ, โ€บ, โžœ, ?, :, $, #).
  • Live Streaming Output: Added on_output callback to PTYRunner to yield output lines in real-time.
  • Fixed-Width Column Table Parser: TableParser now calculates header column span positions to handle cell values containing internal spaces.
  • CorvidLabs Trust & Package Automation: Added trust toolchain integration and GitHub Packages auto-publishing workflow.

v0.1.0 โ€” Initial Release: Universal TTY โ†” AI Agent Bridge

Choose a tag to compare

@0xLeif 0xLeif released this 27 Jul 16:33

Rune v0.1.0 โ€” Initial Release

Rune is a Ruby CLI tool and library designed from the ground up to be human and AI agent first-class. It serves as a universal pseudo-terminal (PTY) runner and structured data bridge for any CLI command or interactive TUI application.

Features

  • Dual Output Modes: Formatted terminal output for humans, raw structured JSON (--json) or streaming NDJSON (--ndjson) for AI agents.
  • Universal PTY Process Runner (Rune::PTYRunner): Spawns any binary or TUI in a pseudo-terminal session, stripping ANSI codes and measuring duration in milliseconds.
  • Terminal Pager Bypass: Automatically injects PAGER=cat / GIT_PAGER=cat so commands like git log return immediately without hanging.
  • Auto-Parsers (Rune::Parsers):
    • TableParser: Parses space or pipe-delimited terminal tables into array of hashes.
    • KeyValueParser: Parses key-value output into typed hashes.
    • TextSanitizer: Normalizes line endings and cleans ANSI escape codes.
  • Interactive Script DSL (Rune::Script): Step-by-step TUI script automation DSL for driving interactive prompts.
  • CorvidLabs Integration: Pre-configured with fledge task runner, spec-sync contracts (specs/), and GitHub Actions CI workflow.

Install

gem install rune