# Commit history · lucenx/signaltty

[View on GitCafe](https://git.cafe/lucenx/signaltty/commits/refs/heads/server/layout-export)

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

Visibility: public

Requested revision: refs/heads/server/layout-export

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

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

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

- [docs: specify layout export and apply](https://git.cafe/lucenx/signaltty/commit/c19bf58aad1012a9d0f82efd76f616e4347a463b?format=markdown) — c19bf58aad1012a9d0f82efd76f616e4347a463b; 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

- [agents: preserve failures and resume answered approvals \(\#40\)](https://git.cafe/lucenx/signaltty/commit/4feb5bdc6206c6431d72700ebbaa1d207a8595cc?format=markdown) — 4feb5bdc6206c6431d72700ebbaa1d207a8595cc; Simone

- [gui: show shell workspace context in the header \(\#41\)](https://git.cafe/lucenx/signaltty/commit/59f76b0985cbbfc1e0602906e89852e7461dfeb4?format=markdown) — 59f76b0985cbbfc1e0602906e89852e7461dfeb4; Simone

- [gui: improve command palette navigation and visual feedback \(\#39\)](https://git.cafe/lucenx/signaltty/commit/4815c16678dad0128053bde775a06b9691592da5?format=markdown) — 4815c16678dad0128053bde775a06b9691592da5; Simone

- [orchestration: preserve decisions across prompt submission \(\#38\)](https://git.cafe/lucenx/signaltty/commit/ffe2d94eaa7611b5f5b8b10ab35b948f3d8b73cf?format=markdown) — ffe2d94eaa7611b5f5b8b10ab35b948f3d8b73cf; Simone

- [cli: pane attach ends when the pane is closed \(\#37\)](https://git.cafe/lucenx/signaltty/commit/84d0307c39086bc3ee1402c2b183e2c48fb8a5c2?format=markdown) — 84d0307c39086bc3ee1402c2b183e2c48fb8a5c2; Simone

- [gui: refresh approval choices when their answer channel changes \(\#36\)](https://git.cafe/lucenx/signaltty/commit/35b2ca5444386f9a25daf5472165dad0f4827bf3?format=markdown) — 35b2ca5444386f9a25daf5472165dad0f4827bf3; Simone

- [gui: keep task board columns reachable and text readable \(\#35\)](https://git.cafe/lucenx/signaltty/commit/9b6b013c3bbc99df18436bf38e9ae6bc9e212e69?format=markdown) — 9b6b013c3bbc99df18436bf38e9ae6bc9e212e69; Simone

- [term: strip_ansi stays on a char boundary after an escape \(\#34\)](https://git.cafe/lucenx/signaltty/commit/5878aade62930c6bd6900a026560027b4e32ff3c?format=markdown) — 5878aade62930c6bd6900a026560027b4e32ff3c; Simone

- [tasks: default branch stays valid for labels with leading or doubled dots \(\#31\)](https://git.cafe/lucenx/signaltty/commit/49796379e41bbcdbff39c6d4c371bf518e458ce1?format=markdown) — 49796379e41bbcdbff39c6d4c371bf518e458ce1; Simone

- [testkit: reap the test server when it drops \(\#30\)](https://git.cafe/lucenx/signaltty/commit/013c16674d559b355066a354d65800f521234947?format=markdown) — 013c16674d559b355066a354d65800f521234947; Simone

- [tasks: fix relative \-\-repo, early report race and stale workspaces after finish \(\#28\)](https://git.cafe/lucenx/signaltty/commit/c29e7fee8ae20844bb890eaa94e0c363d53f8b83?format=markdown) — c29e7fee8ae20844bb890eaa94e0c363d53f8b83; Simone

- [agent: open Pi as a harness from the new-workspace dialog \(\#27\)](https://git.cafe/lucenx/signaltty/commit/1f2262d624768ba879f04eb5878ff7bf4ebdea37?format=markdown) — 1f2262d624768ba879f04eb5878ff7bf4ebdea37; Simone

- [gui: finished task rows recede and sidebar menus act on tasks \(\#19\)](https://git.cafe/lucenx/signaltty/commit/ce05ab1f171b07c1ce39945ab7fcf502ee2baeb7?format=markdown) — ce05ab1f171b07c1ce39945ab7fcf502ee2baeb7; Simone

- [gui: sidebar nests task workspaces and opens a context menu \(\#18\)](https://git.cafe/lucenx/signaltty/commit/e33e8c1da1164dbb752eef9f0dba07e0d9b4de24?format=markdown) — e33e8c1da1164dbb752eef9f0dba07e0d9b4de24; Simone

- [plugin: hooks can't wedge on stdin or a full stderr pipe \(\#17\)](https://git.cafe/lucenx/signaltty/commit/0bc42aa2965c247f80e9b77e2aaae5e91e0d1a93?format=markdown) — 0bc42aa2965c247f80e9b77e2aaae5e91e0d1a93; Simone

- [orchestrator: task pull-request cycle with CI and review on the board \(020\) \(\#16\)](https://git.cafe/lucenx/signaltty/commit/4d7ffcc5597607a2e910841f9868d059e900136a?format=markdown) — 4d7ffcc5597607a2e910841f9868d059e900136a; Simone

- [orchestrator: record T031 quickstart run and close 018 \(\#15\)](https://git.cafe/lucenx/signaltty/commit/04773791469bf05a3ee5b11c23e88ddc073b6fc8?format=markdown) — 04773791469bf05a3ee5b11c23e88ddc073b6fc8; Simone

- [gui: task board groups orchestrator tasks by what they need \(019\) \(\#14\)](https://git.cafe/lucenx/signaltty/commit/afdc8b5b020fb1c5e3e9e47bec1761b321d1046a?format=markdown) — afdc8b5b020fb1c5e3e9e47bec1761b321d1046a; Simone

- [gui: workspace sidebar resizes by dragging its edge \(\#13\)](https://git.cafe/lucenx/signaltty/commit/52669758b21a4609f4f5a96233d6f0503a62aa21?format=markdown) — 52669758b21a4609f4f5a96233d6f0503a62aa21; Simone

- [integration: opencode plugin uses documented V1\+V2 dual entrypoint \(\#12\)](https://git.cafe/lucenx/signaltty/commit/8e37e8ffd0f5aa5968a8eb1285205b5f1b67cd33?format=markdown) — 8e37e8ffd0f5aa5968a8eb1285205b5f1b67cd33; Simone

- [integration: opencode plugin satisfies v1 and v2 loaders](https://git.cafe/lucenx/signaltty/commit/7ad75e97e83da7c8629aefdf12be92a259321e98?format=markdown) — 7ad75e97e83da7c8629aefdf12be92a259321e98; Lucenx9

- [Merge pull request \#11 from Lucenx9/orch/audit-followup](https://git.cafe/lucenx/signaltty/commit/607650f8ac9456e6da01483a3bd3aae8e31bf49a?format=markdown) — 607650f8ac9456e6da01483a3bd3aae8e31bf49a; Simone

- [server: map generic one-shot exit to done/failed \(\#10\)](https://git.cafe/lucenx/signaltty/commit/1faa0b14851eff3d7da13334f121f9c4259ba0a4?format=markdown) — 1faa0b14851eff3d7da13334f121f9c4259ba0a4; Simone

- [orchestrator: audit and bug-hunt fixes \(submit stalls, attention, finish\) \(\#9\)](https://git.cafe/lucenx/signaltty/commit/802c1506359462d58b5d8da6c623129d43186792?format=markdown) — 802c1506359462d58b5d8da6c623129d43186792; Simone

- [orchestrator: tasks, reliable submit, rendered reads and safe finish \(\#8\)](https://git.cafe/lucenx/signaltty/commit/9ae710812f220d89f53d7772de0e9dc298657605?format=markdown) — 9ae710812f220d89f53d7772de0e9dc298657605; Simone

- [gui: themes and a less stock-Adwaita look \(\#7\)](https://git.cafe/lucenx/signaltty/commit/9f1ead01675ba9d6804bff4207afe4df9959b987?format=markdown) — 9f1ead01675ba9d6804bff4207afe4df9959b987; Simone

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