# Commit history · lucenx/signaltty

[View on GitCafe](https://git.cafe/lucenx/signaltty/commits/refs/heads/gui/workspace-refinement)

Repository: [lucenx/signaltty](https://git.cafe/lucenx/signaltty)

Visibility: public

Requested revision: refs/heads/gui/workspace-refinement

- [gui: mark workspace refinement PR submission complete](https://git.cafe/lucenx/signaltty/commit/384fd2c42b744d5db2fc5ed4a80261441eeba67a?format=markdown) — 384fd2c42b744d5db2fc5ed4a80261441eeba67a; Lucenx9

- [gui: record native workspace refinement verification](https://git.cafe/lucenx/signaltty/commit/5cc349157c82303eff8ed6b579d010c9111f9cb3?format=markdown) — 5cc349157c82303eff8ed6b579d010c9111f9cb3; Lucenx9

- [gui: bundle directory symbol and verify actual high contrast](https://git.cafe/lucenx/signaltty/commit/0ebff6583a525bc6fccb7f90654da396b62cd846?format=markdown) — 0ebff6583a525bc6fccb7f90654da396b62cd846; Lucenx9

- [gui: refine workspace selection and activity hierarchy](https://git.cafe/lucenx/signaltty/commit/4fa4613d78664e2ac54cdc4296af5c70a008d1f5?format=markdown) — 4fa4613d78664e2ac54cdc4296af5c70a008d1f5; Lucenx9

- [server: resolve workspace under the write lock in rename and refresh_git \(\#96\)](https://git.cafe/lucenx/signaltty/commit/ef2a56d44a29286ed88d1810ae5209445c8f6862?format=markdown) — ef2a56d44a29286ed88d1810ae5209445c8f6862; Simone

- [agents: fix sandboxed workspace access with a stdio MCP bridge \(\#95\)](https://git.cafe/lucenx/signaltty/commit/2ab2e31df8eea7d67a3d3fdff8d63d5f2b6dc0e4?format=markdown) — 2ab2e31df8eea7d67a3d3fdff8d63d5f2b6dc0e4; Simone

- [gui: polish workspace panel and generate first-prompt AI titles \(\#94\)](https://git.cafe/lucenx/signaltty/commit/086b7583fba633b637db04aa473175c66b40b084?format=markdown) — 086b7583fba633b637db04aa473175c66b40b084; Simone

- [agent: detect spinnerless Grok turns without OSC progress](https://git.cafe/lucenx/signaltty/commit/79e7f7e31d12d4a0b0747a1776a496aecfcd77ad?format=markdown) — 79e7f7e31d12d4a0b0747a1776a496aecfcd77ad; Lucenx9

- [docs: record publication of Grok detection PR](https://git.cafe/lucenx/signaltty/commit/dfd6a8c7773d6a349ff78ece3bb2ea69af637809?format=markdown) — dfd6a8c7773d6a349ff78ece3bb2ea69af637809; Lucenx9

- [docs: record Grok detection verification](https://git.cafe/lucenx/signaltty/commit/c92fc194bff1acc0e72e2aaf8e607a3a1406c011?format=markdown) — c92fc194bff1acc0e72e2aaf8e607a3a1406c011; Lucenx9

- [agent: clarify PTY progress lifetime and satisfy warning policy](https://git.cafe/lucenx/signaltty/commit/7d84d7c0a02c8b8005379e73193a296a50a16fe5?format=markdown) — 7d84d7c0a02c8b8005379e73193a296a50a16fe5; Lucenx9

- [agent: detect Grok using OSC progress and screen rules](https://git.cafe/lucenx/signaltty/commit/15c25fc9f31c26d822db6fd1cf94ac9aee79c761?format=markdown) — 15c25fc9f31c26d822db6fd1cf94ac9aee79c761; Lucenx9

- [gui: polish workspace attention hierarchy and empty states \(\#91\)](https://git.cafe/lucenx/signaltty/commit/45cc02e066b7891ef625f964ea60870d306dc994?format=markdown) — 45cc02e066b7891ef625f964ea60870d306dc994; Simone

- [server: strip terminal controls from hook decision prompts and labels \(\#93\)](https://git.cafe/lucenx/signaltty/commit/e04c08d4515460264fec2837d045b6999f14d4b7?format=markdown) — e04c08d4515460264fec2837d045b6999f14d4b7; Simone

- [gui: implement discoverable SignalTTY workspace shell \(\#89\)](https://git.cafe/lucenx/signaltty/commit/fc1a517ddf2a2c50847d87cb31521562f2a0c10f?format=markdown) — fc1a517ddf2a2c50847d87cb31521562f2a0c10f; Simone

- [gui: preserve remote titles and readable light terminal inks \(\#90\)](https://git.cafe/lucenx/signaltty/commit/b1947c4526d7eba56ab4718dddab95091ee89fe7?format=markdown) — b1947c4526d7eba56ab4718dddab95091ee89fe7; Simone

- [gui: refine native hierarchy with T3 Code and Geist patterns \(\#87\)](https://git.cafe/lucenx/signaltty/commit/2e31432a28a829d2b64aae1358253103875ee1d6?format=markdown) — 2e31432a28a829d2b64aae1358253103875ee1d6; Simone

- [plugin: keep only a bounded prefix of hook output \(\#88\)](https://git.cafe/lucenx/signaltty/commit/d09e551a30ab37ee3bf875da52a77a498f0f1392?format=markdown) — d09e551a30ab37ee3bf875da52a77a498f0f1392; Simone

- [server: fix procscan stat parsing and prevent shell tail-exec in screen detection test \(\#86\)](https://git.cafe/lucenx/signaltty/commit/ae2f74485375c2eb354ed7be73d33ad7b60ab757?format=markdown) — ae2f74485375c2eb354ed7be73d33ad7b60ab757; Simone

- [Craft pass: stale agent messages, readable light terminals, cleaner panes \(\#85\)](https://git.cafe/lucenx/signaltty/commit/30a546ba6ac0a5c661cfef9cb2a28a443e3c084f?format=markdown) — 30a546ba6ac0a5c661cfef9cb2a28a443e3c084f; Simone

- [server: skip non-UTF-8 paths in the worktree diff instead of failing it \(\#84\)](https://git.cafe/lucenx/signaltty/commit/53032513ffa459fa59758f4d5eeaa760d2b03139?format=markdown) — 53032513ffa459fa59758f4d5eeaa760d2b03139; Simone

- [gui: open a workspace details card from the breadcrumb \(\#83\)](https://git.cafe/lucenx/signaltty/commit/204da91697e742738c17ce12996ef4feaaa22fe8?format=markdown) — 204da91697e742738c17ce12996ef4feaaa22fe8; Simone

- [gui: preview schemes as miniature windows and themes as orbs \(\#82\)](https://git.cafe/lucenx/signaltty/commit/93f9f3659872bfbd028d516dbd6f2d89471e7b8d?format=markdown) — 93f9f3659872bfbd028d516dbd6f2d89471e7b8d; Simone

- [docs: shorten the README and show the window](https://git.cafe/lucenx/signaltty/commit/0a3eb9942cf527d129d5e50c7c1a4918600b61e7?format=markdown) — 0a3eb9942cf527d129d5e50c7c1a4918600b61e7; Lucenx9

- [Scope the Changes panel to the latest agent turn \(\#81\)](https://git.cafe/lucenx/signaltty/commit/77ed96a734a08ff5c7aa2e8d92f907fa9cce08e1?format=markdown) — 77ed96a734a08ff5c7aa2e8d92f907fa9cce08e1; Simone

- [Fix spurious bell from oversized OSC and duplicate CLI attach output \(\#80\)](https://git.cafe/lucenx/signaltty/commit/43eef479915e1aa4c5f85a3dbc420f5d94944bdb?format=markdown) — 43eef479915e1aa4c5f85a3dbc420f5d94944bdb; Simone

- [docs: document layout export and apply](https://git.cafe/lucenx/signaltty/commit/7aabedd83f86e05f377f34161e7851003e9ccbaf?format=markdown) — 7aabedd83f86e05f377f34161e7851003e9ccbaf; Lucenx9

- [cli: add tab export and tab apply](https://git.cafe/lucenx/signaltty/commit/4d1ced8935478b40cc48ce65bf9cfdf5f3a5fa7e?format=markdown) — 4d1ced8935478b40cc48ce65bf9cfdf5f3a5fa7e; Lucenx9

- [server: add layout.export and layout.apply](https://git.cafe/lucenx/signaltty/commit/bdb60a5b9b8a441df8530c53e0598c0d6a4da085?format=markdown) — bdb60a5b9b8a441df8530c53e0598c0d6a4da085; Lucenx9

- [docs: specify layout export and apply](https://git.cafe/lucenx/signaltty/commit/2b3b9860906ac333c10f2ae45fbccd0af877b161?format=markdown) — 2b3b9860906ac333c10f2ae45fbccd0af877b161; Lucenx9

- [gui: offer bundled generic agents in New Workspace](https://git.cafe/lucenx/signaltty/commit/42199f6580fa9e949d4061b979e2d999f6860752?format=markdown) — 42199f6580fa9e949d4061b979e2d999f6860752; Lucenx9

- [agent: expose bundled generic programs with display names](https://git.cafe/lucenx/signaltty/commit/7276ddc0b61dd98ba1b3c1d67f1a5208d3b92f20?format=markdown) — 7276ddc0b61dd98ba1b3c1d67f1a5208d3b92f20; Lucenx9

- [gui: dock Changes as a right-hand panel \(t3code diff panel\) \(\#77\)](https://git.cafe/lucenx/signaltty/commit/0873b9f6c824a1d8bd8d9fa57c9325f5740a7e33?format=markdown) — 0873b9f6c824a1d8bd8d9fa57c9325f5740a7e33; Simone

- [gui: t3code polish pass \(sidebar, working pulse, palette, dark dialogs\) \(\#76\)](https://git.cafe/lucenx/signaltty/commit/cc103f21b960a289a4ad0854def80ec94edce870?format=markdown) — cc103f21b960a289a4ad0854def80ec94edce870; Simone

- [server: add pane.rename and accept pane names as ids \(\#73\)](https://git.cafe/lucenx/signaltty/commit/15f073628adec96241f41c4c2db4fc53058a8a65?format=markdown) — 15f073628adec96241f41c4c2db4fc53058a8a65; Simone

- [paths: treat empty SIGNALTTY\_\* path overrides as unset \(\#75\)](https://git.cafe/lucenx/signaltty/commit/3911e5b5f8562d8286a4a35eaf948194873b3129?format=markdown) — 3911e5b5f8562d8286a4a35eaf948194873b3129; Simone

- [server: treat empty HOME and SHELL as unset \(\#74\)](https://git.cafe/lucenx/signaltty/commit/e4390def14a3e1ac7911938d0f11535905f3c9d0?format=markdown) — e4390def14a3e1ac7911938d0f11535905f3c9d0; Simone

- [server: assert pane.updated and emptied-tab focus on pane.move](https://git.cafe/lucenx/signaltty/commit/fb53c5cf11c107a74ccac69c6382aa2426124a32?format=markdown) — fb53c5cf11c107a74ccac69c6382aa2426124a32; Lucenx9

- [docs: specify pane.swap and pane.move](https://git.cafe/lucenx/signaltty/commit/8fbe2dee0b943eee077f2349d02a376f636d1bfd?format=markdown) — 8fbe2dee0b943eee077f2349d02a376f636d1bfd; Lucenx9

- [cli: add pane swap and pane move](https://git.cafe/lucenx/signaltty/commit/d6b2ca4c0ffbf1b57cf37a2d953c20f7a8dcddc0?format=markdown) — d6b2ca4c0ffbf1b57cf37a2d953c20f7a8dcddc0; Lucenx9

- [server: add pane.swap and pane.move](https://git.cafe/lucenx/signaltty/commit/c7e84bd5b98e6085298f29f9eb650a69dd74409c?format=markdown) — c7e84bd5b98e6085298f29f9eb650a69dd74409c; Lucenx9

- [core: swap two layout leaves in place](https://git.cafe/lucenx/signaltty/commit/f605e1ded4b6bcf7080c3ae5706cc9d3de0d9f84?format=markdown) — f605e1ded4b6bcf7080c3ae5706cc9d3de0d9f84; Lucenx9

- [docs: state pane.clear and wait_for_output limits](https://git.cafe/lucenx/signaltty/commit/8ee2d05409a7a07d63961b247ba7ebdec73053ad?format=markdown) — 8ee2d05409a7a07d63961b247ba7ebdec73053ad; Lucenx9

- [docs: tick spec 036 tasks](https://git.cafe/lucenx/signaltty/commit/eec13e4f011a9c4509e264ac480ec0724b47ac11?format=markdown) — eec13e4f011a9c4509e264ac480ec0724b47ac11; Lucenx9

- [docs: note the rendered poll cap for pane.wait_for_output](https://git.cafe/lucenx/signaltty/commit/f4f354ccab7f2a78e6b90085b62bdf618e1eb2bb?format=markdown) — f4f354ccab7f2a78e6b90085b62bdf618e1eb2bb; Lucenx9

- [cli: pass \-\-raw to pane wait-output](https://git.cafe/lucenx/signaltty/commit/725f84f35fecc70a5c1f7ceadefdd76d1ddfe1da?format=markdown) — 725f84f35fecc70a5c1f7ceadefdd76d1ddfe1da; Lucenx9

- [server: stop pane waits on disconnect and read rendered polls in full](https://git.cafe/lucenx/signaltty/commit/dd7b4395fd7c356bb7e4fed75ca029a061c099ca?format=markdown) — dd7b4395fd7c356bb7e4fed75ca029a061c099ca; Lucenx9

- [docs: record pane.wait_for_output and pane.clear \(spec 036\)](https://git.cafe/lucenx/signaltty/commit/34fecf3c29db6bd21174b5cbb99aed8953fe6be5?format=markdown) — 34fecf3c29db6bd21174b5cbb99aed8953fe6be5; Lucenx9

- [cli: add pane wait-output and pane clear](https://git.cafe/lucenx/signaltty/commit/6acd8b60a354d5315da7f9ee8267b1f8ef85320d?format=markdown) — 6acd8b60a354d5315da7f9ee8267b1f8ef85320d; Lucenx9

- [server: add pane.wait_for_output and pane.clear](https://git.cafe/lucenx/signaltty/commit/43a617285aaf63b82b9716d7b6e2b877eefb131c?format=markdown) — 43a617285aaf63b82b9716d7b6e2b877eefb131c; Lucenx9

- [term: forget scrolled-off history on demand](https://git.cafe/lucenx/signaltty/commit/e54cbbe9d49bad46d4ec4207c36e4d59084ed89a?format=markdown) — e54cbbe9d49bad46d4ec4207c36e4d59084ed89a; Lucenx9

- [server: put request_shutdown's doc back on request_shutdown \(\#70\)](https://git.cafe/lucenx/signaltty/commit/dc9abd2a4f256042bd6eecea44695adf5fefcad7?format=markdown) — dc9abd2a4f256042bd6eecea44695adf5fefcad7; Simone

- [docs: record muse and antigravity rules \(spec 035\)](https://git.cafe/lucenx/signaltty/commit/fd40d390feb795482646924b491b2b02052ef5ed?format=markdown) — fd40d390feb795482646924b491b2b02052ef5ed; Lucenx9

- [agents: bundle herdr screen rules for muse and antigravity](https://git.cafe/lucenx/signaltty/commit/a0fe2a8b23012d1a29676e9ff56b0692a4962bb6?format=markdown) — a0fe2a8b23012d1a29676e9ff56b0692a4962bb6; Lucenx9

- [agents: let binaries entries match a prefix](https://git.cafe/lucenx/signaltty/commit/292ecedbcd8ab93783848f09a688269a6a6c4871?format=markdown) — 292ecedbcd8ab93783848f09a688269a6a6c4871; Lucenx9

- [server: keep the shutdown snapshot final](https://git.cafe/lucenx/signaltty/commit/9d6a1b82609051390cea453f06d7652e93bef62b?format=markdown) — 9d6a1b82609051390cea453f06d7652e93bef62b; Lucenx9

- [integration: treat empty provider and HOME variables as unset \(\#67\)](https://git.cafe/lucenx/signaltty/commit/fc530c76741b53730d72d6ad2584ecce4ef14983?format=markdown) — fc530c76741b53730d72d6ad2584ecce4ef14983; Simone

- [docs: record agent manifest reload \(spec 034\)](https://git.cafe/lucenx/signaltty/commit/f3b549bd0a6ecc32607765193db78cb6d77873ea?format=markdown) — f3b549bd0a6ecc32607765193db78cb6d77873ea; Lucenx9

- [agents: reload agent manifests without restarting the server](https://git.cafe/lucenx/signaltty/commit/f9e8907ab56121b4ba7fd99da7b2ea1178971f08?format=markdown) — f9e8907ab56121b4ba7fd99da7b2ea1178971f08; Lucenx9

- [store: put mark_hooked's doc back on mark_hooked \(\#65\)](https://git.cafe/lucenx/signaltty/commit/a9d3693702742265493753cb9beca686829159cc?format=markdown) — a9d3693702742265493753cb9beca686829159cc; Simone

- [tests: release screen-rule turns explicitly instead of sleeping](https://git.cafe/lucenx/signaltty/commit/5b686d757b0778d8ed3c73f7843cc70ead4b8f1a?format=markdown) — 5b686d757b0778d8ed3c73f7843cc70ead4b8f1a; Lucenx9

- [docs: record program-scoped screen rules \(spec 033, ADR-0028\)](https://git.cafe/lucenx/signaltty/commit/455c3ebed7593d5ac881df1efa575f9507f023ab?format=markdown) — 455c3ebed7593d5ac881df1efa575f9507f023ab; Lucenx9

- [agents: scope generic screen rules to the pane's program](https://git.cafe/lucenx/signaltty/commit/073641d093b5327535c72165654080e94352f699?format=markdown) — 073641d093b5327535c72165654080e94352f699; Lucenx9

- [server: save resume metadata before logind shutdown \(\#63\)](https://git.cafe/lucenx/signaltty/commit/afb91b8c2f824be05d68b711da5c943c1c54f095?format=markdown) — afb91b8c2f824be05d68b711da5c943c1c54f095; Simone

- [gui: let the connection banner be the only offline message \(\#61\)](https://git.cafe/lucenx/signaltty/commit/ebb7dc24ce892ef4e3de4cde2108c5bf49045420?format=markdown) — ebb7dc24ce892ef4e3de4cde2108c5bf49045420; Simone

- [gui: consistent status page titles and a task icon for the board \(\#62\)](https://git.cafe/lucenx/signaltty/commit/7be5c7439df4496e5c1e3546160e0d59e75770aa?format=markdown) — 7be5c7439df4496e5c1e3546160e0d59e75770aa; Simone

- [params: explicit null means absent for defaulted fields \(\#60\)](https://git.cafe/lucenx/signaltty/commit/9300f357132eabf375c358db99302d04a8c30f28?format=markdown) — 9300f357132eabf375c358db99302d04a8c30f28; Simone

- [plugin: reserved SIGNALTTY\_\* env wins over hook.env \(\#26\)](https://git.cafe/lucenx/signaltty/commit/c33340cc813748995e2a5306107b779aca40e539?format=markdown) — c33340cc813748995e2a5306107b779aca40e539; Simone

- [contrib: desktop entry launches the GUI by absolute path \(\#32\)](https://git.cafe/lucenx/signaltty/commit/43220b7ce93568b7bb87dccbde0cf6917d332cdd?format=markdown) — 43220b7ce93568b7bb87dccbde0cf6917d332cdd; Simone

- [cli: refresh outdated marked skills on install \(\#25\)](https://git.cafe/lucenx/signaltty/commit/d40c12e8e81bc626e6989708edec192322352e86?format=markdown) — d40c12e8e81bc626e6989708edec192322352e86; Simone

- [gui: collapse tilde only on a true home path boundary \(\#24\)](https://git.cafe/lucenx/signaltty/commit/85c1bf364c62c1e358fa47c5bfa96b18d66a2641?format=markdown) — 85c1bf364c62c1e358fa47c5bfa96b18d66a2641; Simone

- [plugin: reject hook timeout_secs above documented max \(\#23\)](https://git.cafe/lucenx/signaltty/commit/0c60e2894b6efbec7a400243fc4d2c8d60cb2b68?format=markdown) — 0c60e2894b6efbec7a400243fc4d2c8d60cb2b68; Simone

- [plugin: keep hook statistics isolated across reloads \(\#21\)](https://git.cafe/lucenx/signaltty/commit/20a0cb23ebac8416aca222302890603c046eeb9e?format=markdown) — 20a0cb23ebac8416aca222302890603c046eeb9e; Simone

- [server: recover plugin hooks after broadcast lag \(\#20\)](https://git.cafe/lucenx/signaltty/commit/3160343700a9199f63be747a4c671fde82972e2e?format=markdown) — 3160343700a9199f63be747a4c671fde82972e2e; Simone

- [agents: leak an overlay's display name once, not per metadata\(\) call \(\#59\)](https://git.cafe/lucenx/signaltty/commit/a097f292428b13bd7d838b44657513cc1fc0891e?format=markdown) — a097f292428b13bd7d838b44657513cc1fc0891e; Simone

- [paths: treat empty XDG variables as unset \(\#58\)](https://git.cafe/lucenx/signaltty/commit/1fcffa398f0dbbf028bcbe704f04353f9a01dabf?format=markdown) — 1fcffa398f0dbbf028bcbe704f04353f9a01dabf; Simone

- [docs: record codex review and full verification](https://git.cafe/lucenx/signaltty/commit/2bac06a4538c4e787f05cfac7c0a189e5ab444e3?format=markdown) — 2bac06a4538c4e787f05cfac7c0a189e5ab444e3; Lucenx9

- [docs: record codex screen rules \(spec 031, ADR-0027\)](https://git.cafe/lucenx/signaltty/commit/04826795226b1bb3bf9fc42188f36dab76ee1903?format=markdown) — 04826795226b1bb3bf9fc42188f36dab76ee1903; Lucenx9

- [agents: bundle herdr screen rules for codex](https://git.cafe/lucenx/signaltty/commit/8338b5c4caa290a02fb0eb5612073e7dbe8b3808?format=markdown) — 8338b5c4caa290a02fb0eb5612073e7dbe8b3808; Lucenx9

- [agents: add Codex prompt-marker regions and a top region](https://git.cafe/lucenx/signaltty/commit/51b7d28ae98e9bd59c878877dac51c9da9f5357e?format=markdown) — 51b7d28ae98e9bd59c878877dac51c9da9f5357e; Lucenx9

- [tests: name temp dirs with unique ids, not the clock](https://git.cafe/lucenx/signaltty/commit/ed09ea8661962646c6c6ec6d2fbace6bc44c816b?format=markdown) — ed09ea8661962646c6c6ec6d2fbace6bc44c816b; Lucenx9

- [docs: record claude screen rules \(spec 030, ADR-0026\)](https://git.cafe/lucenx/signaltty/commit/519e236f35f8d1ab914bd2a4043c910ac5e6b473?format=markdown) — 519e236f35f8d1ab914bd2a4043c910ac5e6b473; Lucenx9

- [agents: bundle herdr screen rules for claude](https://git.cafe/lucenx/signaltty/commit/9a2f2a0669956535a8a9a601046f3ca383cdb27d?format=markdown) — 9a2f2a0669956535a8a9a601046f3ca383cdb27d; Lucenx9

- [agents: add prompt-aware screen regions and a hold state](https://git.cafe/lucenx/signaltty/commit/5f0ebaa1af3b3951ceccaabfc1e06847af7ba43f?format=markdown) — 5f0ebaa1af3b3951ceccaabfc1e06847af7ba43f; Lucenx9

- [docs: record pane.explain \(spec 029\)](https://git.cafe/lucenx/signaltty/commit/c91f27df413ee2845dc41ac3eaa86482cff45f76?format=markdown) — c91f27df413ee2845dc41ac3eaa86482cff45f76; Lucenx9

- [agents: explain a pane's screen classification](https://git.cafe/lucenx/signaltty/commit/7f548228441fc1fa1a4912190ec2910a579cb816?format=markdown) — 7f548228441fc1fa1a4912190ec2910a579cb816; Lucenx9

- [docs: record bundled screen rules \(spec 028, ADR-0025\)](https://git.cafe/lucenx/signaltty/commit/3f63f1b7373ecb2d9a169d71b28f4c0abbd333c6?format=markdown) — 3f63f1b7373ecb2d9a169d71b28f4c0abbd333c6; Lucenx9

- [agents: bundle herdr screen rules for pi, opencode and cursor](https://git.cafe/lucenx/signaltty/commit/de6e873ceecd89a7f1042724920bd08b1e2fe4e6?format=markdown) — de6e873ceecd89a7f1042724920bd08b1e2fe4e6; Lucenx9

- [agents: add all/not gates to screen rules](https://git.cafe/lucenx/signaltty/commit/454f9b002a184bf8eb4f78d5a24e8354c0e8723c?format=markdown) — 454f9b002a184bf8eb4f78d5a24e8354c0e8723c; Lucenx9

- [agents: screen-detection rules in manifests \(herdr parity, spec 027\) \(\#52\)](https://git.cafe/lucenx/signaltty/commit/4357d34deccd0c9fb9a7429ef4830dd94276c545?format=markdown) — 4357d34deccd0c9fb9a7429ef4830dd94276c545; Simone

- [tests: publish drained input atomically in pty_input_cancel \(\#51\)](https://git.cafe/lucenx/signaltty/commit/d5c87a29ad4c7066b743dbb400ce8277941c951a?format=markdown) — d5c87a29ad4c7066b743dbb400ce8277941c951a; Simone

- [herdr parity: pane env, self-reported resume argv, snapshot history \(\#50\)](https://git.cafe/lucenx/signaltty/commit/34a1cfb6e2d92246263a79ff0f6823c1d8b0ef78?format=markdown) — 34a1cfb6e2d92246263a79ff0f6823c1d8b0ef78; Simone

- [docs: align orchestration contracts with task behavior \(\#49\)](https://git.cafe/lucenx/signaltty/commit/f14cb1e65773db38d96a58fc4761bdea5cc8e5b7?format=markdown) — f14cb1e65773db38d96a58fc4761bdea5cc8e5b7; Simone

- [gui: preserve the task board through live updates \(\#48\)](https://git.cafe/lucenx/signaltty/commit/cfad352ef04d219c27aa9668caa06efa1caa0555?format=markdown) — cfad352ef04d219c27aa9668caa06efa1caa0555; Simone

- [agents: retain selected executable when resuming sessions \(\#46\)](https://git.cafe/lucenx/signaltty/commit/5dff6507ddcac1ed7af520487acc22b26bc06b44?format=markdown) — 5dff6507ddcac1ed7af520487acc22b26bc06b44; Simone

- [orchestration: cancel and bound stalled PTY input \(\#47\)](https://git.cafe/lucenx/signaltty/commit/917941d20696d37a10e19cdd8cf83d300fb2937e?format=markdown) — 917941d20696d37a10e19cdd8cf83d300fb2937e; Simone

- [orchestration: await pane writers outside the blocking pool \(\#44\)](https://git.cafe/lucenx/signaltty/commit/27c054d81d9185385e6e2106f6eaaf883b7a29e6?format=markdown) — 27c054d81d9185385e6e2106f6eaaf883b7a29e6; Simone

- [orchestration: isolate stalled PTY input by pane \(\#42\)](https://git.cafe/lucenx/signaltty/commit/2864a879c9808a782afe7e4cdd1843ce2fa2fe3b?format=markdown) — 2864a879c9808a782afe7e4cdd1843ce2fa2fe3b; Simone

- [agents: keep reviewed terminal outcomes quiet \(\#45\)](https://git.cafe/lucenx/signaltty/commit/8e4354d0d84807eed00a3558cc3e6eaab25834fa?format=markdown) — 8e4354d0d84807eed00a3558cc3e6eaab25834fa; Simone

- [gui: explain the completed task history subset \(\#43\)](https://git.cafe/lucenx/signaltty/commit/e6d1845dd7a4eb684565d9b6fa5ca3b8ef568d4e?format=markdown) — e6d1845dd7a4eb684565d9b6fa5ca3b8ef568d4e; Simone

More commits follow; continue with `GET /api/repos/lucenx/signaltty/commits?after=IjRmZWI1YmRjNjIwNmM2NDMxZDcyNzAwZWJiYWExZDIwN2E4NTk1Y2Mi`.
