Skip to content

Releases: navbytes/roost

v0.1.11

Choose a tag to compare

@github-actions github-actions released this 21 Aug 08:28
12789ec

Two silent data-loss bugs, both worth knowing about

  • Alt+w on the last pane threw that pane away. Its own prompt calls it "quit roost", but it removed the pane and then quit — so the saved workspace named a pane its map no longer had, and the repair minted a blank shell spec on next launch. The session id, cwd, title and note of the pane you quit on were gone. Alt+q on the same pane kept all of them. (#147)
  • A recycled pane id inherited a dead pane's session-detection clock, so a new pane could scan hours back and resume a stranger's conversation, permanently. (#141)

Desktop notifications changed channel — read this if you use Apple Terminal or Alacritty

roost used to fork osascript, which macOS attributes to Script Editor — there is no flag for that; a CLI cannot post a notification under its own name. roost now asks the terminal instead, with a bell and an OSC 9. Ghostty, iTerm2, WezTerm and kitty raise a real notification from it, attributed to themselves, and it survives ssh.

A terminal that ignores OSC 9 — Apple Terminal, Alacritty — now gets only the bell, not a desktop banner. (#152)

And a pane's notification no longer arrives twice. There were two emitters; that was invisible as a duplicate only while one of them was the osascript fork. The named one won, so: one banner, saying which pane, and silence for the pane you are already looking at. (#153)

Idle cost, measured against v0.1.10 on one machine

idle CPU terminal traffic
v0.1.10 2.20% / 3.48% ~890 B/s
v0.1.11 0.36% / 0.28% ~61 B/s

Four shell panes at 200×50, no input, alternating runs to cancel drift. Flat in the pane count at every step, because it was all fixed per-frame chrome: the quick-launch picker's $PATH probe running ~1,500 stat(2) a second with no dialog on screen, plus the whole help table, on every frame (#144); an unconditional 30 fps repaint (#146); and 12 fps even with nothing animating (#149).

Under the hood

Three new fuzzers over input surfaces nothing reached before — the mouse router, the key router, and paste (#147, #148). The mouse one found the Alt+w bug on seed 15. rustfmt and clippy are now enforced in CI (#150), tuned to the style the tree already had rather than imposed; that turned up ten unsafe blocks missing the SAFETY: comment every other one in the tree has.


What's Changed

  • panes: a recycled pane id inherited the dead pane's session-detection clock by @navbytes in #141
  • CLAUDE.md: record main's protection, and that the tap sync is not optional by @navbytes in #145
  • perf: the chrome computed the picker and the help table on every idle frame by @navbytes in #144
  • perf: roost repainted 30 times a second whether or not anything moved by @navbytes in #146
  • workspace: quitting with Alt+w threw away the pane it quit on by @navbytes in #147
  • test: the last two unfuzzed input surfaces — the key router, and paste by @navbytes in #148
  • perf: a fleet at rest still repainted twelve times a second by @navbytes in #149
  • chore: rustfmt + clippy, enforced in CI by @navbytes in #150
  • chore: keep the reformat out of git blame by @navbytes in #151
  • notify: roost's notifications came from "Script Editor" by @navbytes in #152
  • notify: two banners for one event, and neither said which pane by @navbytes in #153
  • tests: three gates blamed roost for the machine being out of ptys by @navbytes in #154
  • v0.1.11 everywhere: version badge, pin examples, landing page, release request by @navbytes in #155

Full Changelog: v0.1.10...v0.1.11

v0.1.10

Choose a tag to compare

@github-actions github-actions released this 21 Aug 01:48
7c3b0b9

What's Changed

  • Reliability audit: 20 bugs, a standing fuzzer, and the fixtures that would have caught them by @navbytes in #122
  • panes: the session sweep never worked on macOS — Apple's pgrep has no -s by @navbytes in #123
  • perf: observe panes with syscalls, not lsof/ps/pgrep — the 2s UI freeze by @navbytes in #124
  • vt100: two wide-glyph panics that killed roost and orphaned the whole fleet by @navbytes in #125
  • main: a panic must not orphan the fleet — catch it, tear down, re-raise by @navbytes in #126
  • tests: two standing panic sweeps — the renderer, and the pane-output path by @navbytes in #127
  • perf: a line of history costs what it holds, not what the window is wide by @navbytes in #128
  • extension: fsync before the rename — the user's settings.json deserves it by @navbytes in #129
  • notify: a pane's OSC 9 loop forked one osascript per notification by @navbytes in #130
  • main: a background thread's panic wrecked the terminal roost was still using by @navbytes in #131
  • cli: the client had no deadline — a wedged roost hung roost list forever by @navbytes in #132
  • test(harness): settle agreed with itself before roost had drawn anything by @navbytes in #133
  • chore: take clippy to zero, and assert the thing one warning was pointing at by @navbytes in #134
  • panes: the EOF sweep skipped itself whenever roost beat the reap by @navbytes in #135
  • perf: quit paid the hangup grace once per pane — 4.0s for eight, budget is 2s by @navbytes in #136
  • workspace: two tabs could still share a pane after the repair by @navbytes in #137
  • test: the layout fuzzer now walks the whole control plane, not two verbs of it by @navbytes in #138
  • C3/C4/C32: the pane's label moves to its border, off the pane's own output by @navbytes in #139
  • perf: the pane blit allocated a String for every cell, every frame by @navbytes in #140
  • ci: drop paths-ignore — a required check that never triggers never merges by @navbytes in #142
  • v0.1.10 everywhere: version badge, pin examples, landing page, release request by @navbytes in #143

Full Changelog: v0.1.9...v0.1.10

v0.1.9

Choose a tag to compare

@github-actions github-actions released this 20 Aug 03:19
1f436c2

What's Changed

  • Comparative UX review vs zellij/lazygit/gh dash + C33: move a pane within its tab by @navbytes in #112
  • C34: the help overlay and hint bar read the live keymap by @navbytes in #113
  • Make C34's rule mechanical: no chord spelled outside a resolver by @navbytes in #114
  • roost keys, and Alt+; goes back (F11 + F6) by @navbytes in #115
  • C36: Alt+' broadcasts one composed message to every pane by @navbytes in #116
  • C37: Alt+Shift+g reverses the layout cycle by @navbytes in #117
  • Simulation pass: three silent-failure bugs, one false alarm, and the gate that was missing by @navbytes in #118
  • Close two of the three open §7 questions — neither needed a decision by @navbytes in #119
  • C39: the keymap filters (/) by @navbytes in #120
  • v0.1.9 — the dead-pane keys reach the overlay, and the version bump by @navbytes in #121

Full Changelog: v0.1.8...v0.1.9

v0.1.8

Choose a tag to compare

@github-actions github-actions released this 16 Aug 12:25
6f3c9d9

What's Changed

  • CLAUDE.md: record the PR-mergeable release path and why it exists by @navbytes in #108
  • release: warn loudly when the tap sync skips; CLAUDE.md records the unset secret by @navbytes in #109
  • panes: one dialog for name + note — Alt+r absorbs the note editor, Alt+Shift+n retires by @navbytes in #110
  • v0.1.8 everywhere: version badge, pin examples, landing page, release request by @navbytes in #111

Full Changelog: v0.1.7...v0.1.8

v0.1.7

Choose a tag to compare

@github-actions github-actions released this 15 Aug 13:38
26383c0

What's Changed

  • panes: parking notes — Alt+Shift+n leaves a note that greets you on the badge by @navbytes in #104
  • v0.1.7 everywhere: version badge, pin examples, landing page by @navbytes in #105
  • release: make the workflow dispatchable — the tag becomes an output, not only a trigger by @navbytes in #106
  • release: a PR-mergeable release trigger — touch .github/release-request by @navbytes in #107

Full Changelog: v0.1.6...v0.1.7

v0.1.6

Choose a tag to compare

@github-actions github-actions released this 11 Aug 15:30
44a9a85

What's Changed

  • v0.1.5 everywhere: formula checksums, README, landing page by @navbytes in #100
  • packaging: automate the Homebrew formula bump on release by @navbytes in #98
  • ponytail audit: −4,300 lines, −1 dep, no behavior change by @navbytes in #101
  • panes: zoomed panes announce themselves — ZOOM · N hidden on the border by @navbytes in #102
  • v0.1.6 by @navbytes in #103

Full Changelog: v0.1.5...v0.1.6

v0.1.5

Choose a tag to compare

@github-actions github-actions released this 09 Aug 14:48

What's Changed

  • v0.1.4 everywhere: formula checksums, README, landing page by @navbytes in #93
  • infra: promote roost's input threads to macOS interactive QoS by @navbytes in #94
  • infra: local perf telemetry for the QoS keep-or-delete decision by @navbytes in #95
  • site: perch the bird on the demo terminal, lead installs with brew by @navbytes in #96
  • packaging: point everything at navbytes/homebrew-tap by @navbytes in #97
  • panes: y on the exited bar copies a pasteable resume command by @navbytes in #99

Full Changelog: v0.1.4...v0.1.5

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 08 Aug 17:28

What's Changed

  • v0.1.3 everywhere: formula checksums, README, landing page by @navbytes in #86
  • CI: skip the matrix on docs-only changes, cancel superseded PR runs by @navbytes in #87
  • README: document read's --full and default-screen modes by @navbytes in #88
  • docs: refresh ROADMAP + README, archive the shipped promotion-auth-gate change by @navbytes in #89
  • ROADMAP: shelve leader-key chords with the reliability verdict recorded by @navbytes in #90
  • status: exact turn-ends, ask-question surfacing, and a title-channel signal by @navbytes in #91
  • status: recover the two commits stranded by #91's merge, plus review fixes by @navbytes in #92

Full Changelog: v0.1.3...v0.1.4

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 08 Aug 01:24

What's Changed

  • v0.1.2 everywhere: formula checksums, README, landing page by @navbytes in #83
  • A config file for exactly one problem: Alt bindings that collide with readline by @navbytes in #84
  • Freeze the view while you're dragging a selection, so you copy what you highlighted by @navbytes in #85

Full Changelog: v0.1.2...v0.1.3

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 07 Aug 16:16

What's Changed

  • v0.1.1 everywhere: formulas, docs, and the demo mock spins for real by @navbytes in #80
  • Bound the control socket's writes, not just its reads by @navbytes in #81
  • Promotion requires authentication, at both doors by @navbytes in #82

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