This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

Release 0.9.0

Big release. Highlights:

- Session naming refactor: every session has an immutable `name` (short
random id by default) and an optional mutable `displayName`. `pty
rename` sets/clears the displayName; every CLI ref accepts either.
- Interactive TUI "Create new session..." is now one keystroke.
- Security audit fixes: socket-path length, acquireLock atomicity,
PacketReader size cap, --isolate-env, umask tightening.
- Mouse tracking mode replay, EventFollower new-file offset, and
session_exit-on-SIGTERM race fixes.
- Remote sessions via pty-relay now render with tags + displayName in
pty list --remote.
- pty up removes tags dropped from pty.toml.
- Client API adds extractFilterTags/matchesAllTags, setDisplayName,
launcher override on SpawnDaemonOptions, and
PtyHandle.alternateScreen/kittyKeyboardFlags.

Nathan Herald (Apr 16, 2026, 4:19 PM +0200) e48a59b2 cd2a1012

+11 -8
+3
.gitignore
··· 4 4 .swp 5 5 pty.toml 6 6 .claude-session-id 7 + .claude/settings.local.json 8 + .claude/scheduled_tasks.* 9 + .claude/worktrees/
+7 -7
CHANGELOG.md
··· 2 2 3 3 ## Unreleased 4 4 5 + ## 0.9.0 6 + 5 7 ### Session naming 6 8 - **Breaking (default behaviour):** `pty run` without `--name` now assigns a short random id (Crockford-ish base32, 8 chars) to the session's `name` field, and stores the old human-friendly cwd+command label in a new optional `displayName` field. `PTY_SESSION`, events, `ptyfile.session`, and anything else that references a session by its stable id will see the random id for sessions created after this release. Sessions created before this release continue to work unchanged (their `name` stays what it was). 7 9 - Add `pty run --no-display-name` — generates the random id but skips the `displayName` auto-gen. Useful for throwaway shells you might promote later. ··· 28 30 - Fix mouse tracking modes (1000/1002/1003) not being replayed when a client reattaches to a session with mouse tracking already enabled — the server previously only replayed the SGR encoding (1006), cursor visibility, and kitty keyboard flags. Clients (e.g., pty-layout) checking tracking mode to decide whether to forward mouse events will now see the correct state. 29 31 - Fix `EventFollower` starting at EOF when its directory watcher detected a brand-new `.events.jsonl` — `session_start` was already on disk by the time the dir event fired, so followers were skipping it. New-file detections now start at offset 0 while existing-file watches still start at EOF. 30 32 - Fix `session_exit` sometimes missing from the events log when the daemon was killed via SIGTERM (`pty kill` and similar). The event was queued on the `EventWriter` chain but the daemon exited before the append flushed. `close()` now waits for the child process's `onExit` (bounded at 2s) and then drains the writer before resolving. 33 + - Fix garbage characters in `less`/`git log`: respond to terminal queries (OSC 10/11/4, DA2, DSR, XTVERSION) and strip them from client broadcast so the client's terminal doesn't respond with duplicate input 31 34 32 35 ### Interactive TUI 33 36 - **"Create new session..." is now a one-keystroke action.** Pressing Enter spawns `$SHELL` (fallback `bash`) in `$HOME` with a random id and no `displayName`. No wizard, no directory picker, no name/command prompts. Use `pty rename` and `pty exec` from inside the new session to promote it into something specific. Remote "Create new session..." mirrors the same one-shot flow via `pty-relay connect <url> --spawn <random-id>` (the relay is responsible for the remote-side shell/cwd defaults). ··· 36 39 - Remote session spawns forward filter tags to pty-relay as `--tag key=value` so remote sessions created from a filtered TUI are tagged on the remote side and stay in the filtered view 37 40 - Tag filter is shown in the Filter line; remote groups are filtered by their `tags` field when a tag filter is active 38 41 - Session rows in the interactive list now show user-facing tags inline (`#key=value`) alongside cwd and command (matches `pty list` output) 42 + - Interactive TUI shows "Create new session..." for spawn-enabled remote hosts 43 + - Interactive filter hides "Create new session..." items when filter doesn't match "new" 44 + - `host/session` filter syntax: type `prod/api` to filter by host then session 45 + - Extracted `buildFilteredGroups` as a pure function for unit testing 39 46 40 47 ### Listing 41 48 - `pty list` now shows tags by default (hashtag format, e.g., `#role=web`) — internal bookkeeping keys (`ptyfile*`, `strategy`, `supervisor.status`) are hidden ··· 53 60 ### Project files 54 61 - `pty up` now removes tags that were removed from `pty.toml` — toml-managed tag keys are tracked in a `ptyfile.tags` meta tag so manually-added tags (set via `pty tag`) are preserved 55 62 56 - ### Fixes 57 - - Fix garbage characters in `less`/`git log`: respond to terminal queries (OSC 10/11/4, DA2, DSR, XTVERSION) and strip them from client broadcast so the client's terminal doesn't respond with duplicate input 58 - 59 63 ### pty exec 60 64 - Add `pty exec -- <command> [args...]` to replace the current session's command from inside the session 61 65 - Updates session metadata so the supervisor restarts the new command, not the original 62 66 - Errors if not inside a pty session (`PTY_SESSION` not set) or if the session is managed by a pty.toml 63 67 - Preserves existing tags and other metadata 64 68 - Emits `session_exec` event with previous and new command 65 - - Interactive TUI shows "Create new session..." for spawn-enabled remote hosts 66 - - Interactive filter hides "Create new session..." items when filter doesn't match "new" 67 - - `host/session` filter syntax: type `prod/api` to filter by host then session 68 - - Extracted `buildFilteredGroups` as a pure function for unit testing 69 69 70 70 ## 0.8.0 71 71
+1 -1
package.json
··· 1 1 { 2 2 "name": "@myobie/pty", 3 - "version": "0.8.0", 3 + "version": "0.9.0", 4 4 "description": "Persistent terminal sessions with detach/attach, plus a Playwright-style testing library for TUI apps", 5 5 "type": "module", 6 6 "license": "MIT",