# Commit history · lucenx/signaltty

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

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

Visibility: public

Requested revision: refs/heads/gui/changes-reading-polish

- [gui: wrap Changes scope labels with enlarged fonts](https://git.cafe/lucenx/signaltty/commit/39f4bd4f788c6eca5b59212bb68eccb9d3fffd04?format=markdown) — 39f4bd4f788c6eca5b59212bb68eccb9d3fffd04; Lucenx9

- [gui: retain Changes native review evidence](https://git.cafe/lucenx/signaltty/commit/1f7a270ee4196f48842f71319d2e78f37cb4cddb?format=markdown) — 1f7a270ee4196f48842f71319d2e78f37cb4cddb; Lucenx9

- [gui: clarify Changes scopes and diff hierarchy](https://git.cafe/lucenx/signaltty/commit/c18cadfa6c0f0b6e020cc4b92eb821416e63fea7?format=markdown) — c18cadfa6c0f0b6e020cc4b92eb821416e63fea7; Lucenx9

- [diff: keep submodule commit changes visible in explicit reviews \(\#118\)](https://git.cafe/lucenx/signaltty/commit/2d5b4cc519242e7ec9a6ab7b0f9b21685fda151a?format=markdown) — 2d5b4cc519242e7ec9a6ab7b0f9b21685fda151a; Simone

- [cli: reject forward output gaps during attach \(\#117\)](https://git.cafe/lucenx/signaltty/commit/effa354d0717fbcb3c3ebaa6530af3a2df930b70?format=markdown) — effa354d0717fbcb3c3ebaa6530af3a2df930b70; Simone

- [ci: avoid duplicate runs and standardize PR delivery \(\#116\)](https://git.cafe/lucenx/signaltty/commit/1122658e10809216bd9d2cbf2e585451bd19c99b?format=markdown) — 1122658e10809216bd9d2cbf2e585451bd19c99b; Simone

- [agents: organize repository workflow and verification proof \(\#115\)](https://git.cafe/lucenx/signaltty/commit/fd4e4ff2a9b9cea33cf67922c2e0055f9caa55e6?format=markdown) — fd4e4ff2a9b9cea33cf67922c2e0055f9caa55e6; Simone

- [ipc: honor null defaults for workspace creation and diffs \(\#114\)](https://git.cafe/lucenx/signaltty/commit/b7d39e9cb9cdc8a402308459ad8b9b470560039b?format=markdown) — b7d39e9cb9cdc8a402308459ad8b9b470560039b; Simone

- [cli: fix named attaches and relative working directories \(\#113\)](https://git.cafe/lucenx/signaltty/commit/0908da30d56c846ebdb216a2aa9c2dcadc362b6a?format=markdown) — 0908da30d56c846ebdb216a2aa9c2dcadc362b6a; Simone

- [server: preserve occupied socket paths during startup \(\#112\)](https://git.cafe/lucenx/signaltty/commit/7fac1147705ceaf1b67bf52d5d34e00f85dcda6a?format=markdown) — 7fac1147705ceaf1b67bf52d5d34e00f85dcda6a; Simone

- [agents: remember automatic permissions for launches, resumes and workers \(\#111\)](https://git.cafe/lucenx/signaltty/commit/45ea97435849d37cc29cddaca0eb4d9dc2578567?format=markdown) — 45ea97435849d37cc29cddaca0eb4d9dc2578567; Simone

- [gui: restore centered workspace identity with compact spacing \(\#110\)](https://git.cafe/lucenx/signaltty/commit/225faa8553cdf564b1aed960038367b2ea683bd2?format=markdown) — 225faa8553cdf564b1aed960038367b2ea683bd2; Simone

- [gui: keep workspace identity compact in wide headers \(\#109\)](https://git.cafe/lucenx/signaltty/commit/bc39d5b4dfc515dfb9792f3ac368d0045da871b2?format=markdown) — bc39d5b4dfc515dfb9792f3ac368d0045da871b2; Simone

- [gui: refine sidebar identity and app icons \(\#108\)](https://git.cafe/lucenx/signaltty/commit/0a2cdddcd794c10b254e28e83674e76cb3f50f53?format=markdown) — 0a2cdddcd794c10b254e28e83674e76cb3f50f53; Simone

- [orchestration: make task report retries idempotent \(\#107\)](https://git.cafe/lucenx/signaltty/commit/c7c8a02760901a2bf4db0abd771ded07386b6eb7?format=markdown) — c7c8a02760901a2bf4db0abd771ded07386b6eb7; Simone

- [gui: clarify top bar hierarchy and adapt to content width \(\#106\)](https://git.cafe/lucenx/signaltty/commit/51757f9882bb291b2eef967789d44f38694117a0?format=markdown) — 51757f9882bb291b2eef967789d44f38694117a0; Simone

- [orchestration: verify PR readiness from fresh merge facts \(\#105\)](https://git.cafe/lucenx/signaltty/commit/f3f42f28e07eabcff3e9294938f9da49619be3c9?format=markdown) — f3f42f28e07eabcff3e9294938f9da49619be3c9; Simone

- [gui: compact workspace navigation and clarify header hierarchy \(\#104\)](https://git.cafe/lucenx/signaltty/commit/9d1913a24db2fa54ace362f701489d088797eb4a?format=markdown) — 9d1913a24db2fa54ace362f701489d088797eb4a; Simone

- [gui: add selectable projects to the workspace sidebar \(\#103\)](https://git.cafe/lucenx/signaltty/commit/d957d93f128686b599a9cce6573fb62e9b996e3f?format=markdown) — d957d93f128686b599a9cce6573fb62e9b996e3f; Simone

- [gui: convert symbolic icons to filled paths for GTK theme recoloring \(\#102\)](https://git.cafe/lucenx/signaltty/commit/553343f5e49176a592eb08afb5df34b7f4570474?format=markdown) — 553343f5e49176a592eb08afb5df34b7f4570474; Simone

- [gui: clarify icon roles and contextual action placement \(\#101\)](https://git.cafe/lucenx/signaltty/commit/abc0e6c8de185551364c7ce620d1340db08b5ff0?format=markdown) — abc0e6c8de185551364c7ce620d1340db08b5ff0; Simone

- [gui: protect terminal closure and make workspace setup recoverable \(\#100\)](https://git.cafe/lucenx/signaltty/commit/745f72fe7887c7f5fc1bff117d4b491b4cfa5501?format=markdown) — 745f72fe7887c7f5fc1bff117d4b491b4cfa5501; Simone

- [gui: unify workspace and dialog styling \(\#99\)](https://git.cafe/lucenx/signaltty/commit/4eadcc0855c281c5b608053e68d166c7a3d73d91?format=markdown) — 4eadcc0855c281c5b608053e68d166c7a3d73d91; Simone

- [docs: preserve third-party licenses and record provenance \(\#98\)](https://git.cafe/lucenx/signaltty/commit/9242690f3a5747b993c49c57730eb765be0d33c9?format=markdown) — 9242690f3a5747b993c49c57730eb765be0d33c9; Simone

- [gui: refine workspace navigation and visual hierarchy \(\#97\)](https://git.cafe/lucenx/signaltty/commit/ab9d8490511cf7cd20a143a70730d60fdb126207?format=markdown) — ab9d8490511cf7cd20a143a70730d60fdb126207; Simone

- [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

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