Releases: msmps/pilotty
Release list
v0.0.11
pilotty v0.0.11 removes heuristic UI detection and narrows snapshots to evidence the terminal actually provides.
Truthful terminal snapshots
Snapshots now report only terminal facts:
- terminal dimensions
- cursor position and visibility
- visible screen text
- content hash for change observation
- capture outcome and exit evidence when applicable
The inferred elements collection and unused snapshot_id field have been removed. Snapshots no longer classify buttons, inputs, toggles, focus, checked state, or confidence.
Snapshot protocol v3
Snapshot commands and responses now require protocol v3 because their wire shape changed. After upgrading, restart any running older daemon before taking a snapshot:
pilotty stopThe next command will automatically start the updated daemon.
Smaller implementation
The detector, classifier, style segmentation, terminal grid adapter, related tests and templates, and direct unicode-width dependency have been removed. Documentation and the bundled skill now use screen text, cursor state, keyboard input, and coordinate clicks directly.
Full changelog: v0.0.10...v0.0.11
v0.0.10
pilotty v0.0.10 clarifies terminal observation around three distinct questions:
pilotty snapshot: what the terminal looks like nowpilotty output: what the process emitted over the retained history windowpilotty status: whether the process is running or exited
Readable retained output
pilotty output replays the bounded retained byte window through the terminal emulator and prints a readable terminal-history tail. Cursor movement, line erasure, colors, and other ANSI/VT control sequences are applied instead of being written into the viewing terminal.
The command works for live sessions and retained exited-session evidence. Raw-byte retention accounting remains on stderr, including total, retained, dropped, and truncation values.
Exact terminal bytes
pilotty output --ansi writes the exact retained ANSI/VT bytes to stdout without adding text formatting. This mode is intended for byte-exact diagnostics, replay, and fixture capture.
Command rename
The logs command is replaced by output across the CLI, daemon protocol, documentation, error guidance, npm package README, and bundled agent skill.
Included changes
- readable retained output by default: b831d74
- synchronized
0.0.10package versions: 11b0a59 - rename retained evidence command to
output: 542c2d9
Full changelog: v0.0.9...v0.0.10
v0.0.9
pilotty v0.0.9 makes terminal state and process lifecycle observable from startup through exit, while preserving bounded evidence for agent recovery.
Highlights
Terminal output stays current
Session output is continuously consumed in the background, so snapshots, waits, logs, idle duration, and final evidence no longer depend on a client polling the PTY. Session finalization has a bounded drain and reports whether final output is complete.
Bounded logs and final evidence
pilotty logs returns retained raw terminal output with exact total, retained, dropped, and truncation accounting. Retention defaults to 2 MiB per live session and can be configured with spawn --retain-bytes.
Exited sessions retain their final screen, exit metadata, and the last 64 KiB of raw output in memory for up to 10 minutes. Input commands targeting an exited session return SESSION_EXITED instead of conflating exit with an unknown session.
Lifecycle status
pilotty status reports running or exited state through one stable response. Running sessions include geometry, launch settings, idle duration, and retention accounting. Exited sessions include exit code or signal, success, end time, explicit-kill state, final geometry, output completeness, and retained-evidence accounting.
Explicit capture outcomes
JSON snapshots now report immediate, changed, settled, deadline, or exited. Deadlines return the latest screen, and exited captures return final screen and process evidence.
Evidence is returned with exit 0 by default. snapshot --strict maps a deadline to exit 3 and an ended session to exit 4 without discarding the printed evidence.
Protocol and daemon reliability
Protocol capability checks reject unsupported commands before sending them to an older daemon and provide restart guidance. Explicit test servers no longer mutate the environment-derived global socket directory.
Included changes
- fix(daemon): do not touch the environment-derived socket directory when binding explicit paths in #16
- feat(daemon): continuously pump session output in #17
- feat(protocol): enforce command capability requirements in #18
- feat(logs): retain bounded session output in #19
- feat(session): preserve finalized session evidence in #20
- feat(status): report session lifecycle state in #21
- feat(snapshot): report capture outcomes in #22
Full changelog: v0.0.8...v0.0.9
v0.0.8
pilotty is back under active development. v0.0.8 is the first of a series of releases focused on reliability: making sure an agent can always trust what pilotty tells it about a terminal.
Highlights
--await-change and --settle now actually wait. Since v0.0.6 the snapshot wait loops compared a screen hash that was never computed, so --await-change returned immediately claiming the screen had changed, and --settle silently degraded to a fixed sleep. Both now do what they document, backed by regression tests that fail on the old behavior. If you use these flags, this release is worth taking for this alone.
Client/daemon version skew is now detected. Every request and response carries a protocol version. If you upgrade pilotty while an older daemon is still running, the client tells you — and tells you the fix (pilotty stop; the next command auto-starts the new binary) — instead of failing in confusing ways later.
Also in this release: the bundled agent skill no longer documents a nonexistent command (pilotty shutdown → pilotty stop), an unused dependency is gone, and a new CONTEXT.md pins the project's vocabulary ahead of upcoming features.
What's next
v0.0.9 focuses on session reliability: a status command, exit reporting for ended sessions (exit code, final screen, crash output), explicit capture outcomes that say why a waited snapshot returned, and bounded pilotty logs.
What's Changed
- fix(snapshot): compute content hash on every read so --await-change and --settle work by @msmps in #13
- chore: foundation housekeeping — fix skill docs, drop unused termwiz, ignore internal tooling by @msmps in #14
- feat(protocol): version the daemon wire protocol by @msmps in #15
Full Changelog: v0.0.7...v0.0.8
v0.0.7
What's Changed
Full Changelog: v0.0.6...v0.0.7
v0.0.6
What's Changed
Full Changelog: v0.0.5...v0.0.6
v0.0.5
What's Changed
Full Changelog: v0.0.4...v0.0.5