From c923d53c013f6c1aa935a4fbde91ac6e86ff22a0 Mon Sep 17 00:00:00 2001 From: arzafran Date: Mon, 19 Oct 2026 16:29:33 -0300 Subject: [PATCH 1/5] fix: bump ghostty for OSC 99 kitty notification dispatch The fork had the OSC 99 parser file but no dispatch to it, so kitty notifications were dropped. Pins the fork commit that wires it in. --- ghostty | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ghostty b/ghostty index 617aac442..a6d95cc23 160000 --- a/ghostty +++ b/ghostty @@ -1 +1 @@ -Subproject commit 617aac44206e6a88761e4b3a253547e07b8870df +Subproject commit a6d95cc23ee76efd016fee4711007d49f5e73316 From 88fe26c3a90007dc4cb86191e1c0acde72045782 Mon Sep 17 00:00:00 2001 From: arzafran Date: Mon, 19 Oct 2026 16:36:44 -0300 Subject: [PATCH 2/5] docs: record the OSC 99 dispatch commit in the ghostty fork notes --- docs/ghostty-fork.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/docs/ghostty-fork.md b/docs/ghostty-fork.md index 8bbdde82f..6d41684e9 100644 --- a/docs/ghostty-fork.md +++ b/docs/ghostty-fork.md @@ -13,9 +13,9 @@ When we change the fork, update this document and the parent submodule SHA. ## Current fork changes -The pinned fork head is `617aac442` on the fork branch `idle-park-display-link`, which is -fork `main`'s `bccfc8333fecf707dd918d46e3849fc8ed72cca0` plus the OSC 7501 patch group and the -idle display link park. Never delete that branch: the pin and its xcframework release point at it. It is built on +The pinned fork head is `a6d95cc23` on the fork branch `programa/kitty-osc99`, which is +fork `main`'s `bccfc8333fecf707dd918d46e3849fc8ed72cca0` plus the OSC 7501 patch group, the +idle display link park and the OSC 99 dispatch. Never delete that branch: the pin and its xcframework release point at it. It is built on `ghostty-org/ghostty` `main` at `c8634f3fce12f8189ed058e018195eb693f8562b` and Zig 0.16.0, and carries the twelve patch groups below: display-link restart, resize stale-frame mitigation, OSC 99 notifications, theme picker hooks, color scheme mode 2031, keyboard copy mode selection API, @@ -61,13 +61,17 @@ tend to conflict together during rebases. - Commits: - `2033ffebc` (Add OSC 99 notification parser) - `a75615992` (Fix OSC 99 parser for upstream API changes) + - `a6d95cc23` (terminal: dispatch OSC 99 kitty notifications to the parser) - Files: - `src/terminal/osc.zig` - `src/terminal/osc/parsers.zig` - `src/terminal/osc/parsers/kitty_notification.zig` - Summary: - - Adds a parser for kitty OSC 99 notifications and wires it into the OSC dispatcher. - - Adapts the parser to upstream's newer capture API so the Programa OSC 99 hook survives the March 30 upstream sync. + - Parses kitty OSC 99 notifications (title and body, chunked with `d=0`, optional base64) and emits + `show_desktop_notification`, the same command OSC 9 and OSC 777 produce. + - The dispatch is the `99` parser state in `Parser.next`/`Parser.end`, the `kitty_notification_pending` + field on `Parser` (it outlives `reset` so chunks can span sequences), and the `parsers.zig` export. + The parser reads its payload through the `capture`/`captureTrailing()` API. ### 4) Programa theme picker helper hooks (unused) @@ -241,8 +245,9 @@ When syncing with upstream, re-check these areas. These files change frequently upstream; be careful when rebasing the fork: - `src/terminal/osc.zig` - - OSC dispatch logic moves often. Re-check the integration points for the OSC 99 parser and keep - the newer `capture`/`captureTrailing()` API usage intact. + - OSC dispatch logic moves often. Re-check the integration points for the OSC 99 parser (the `99` + state, `kitty_notification_pending`, the `end` prong) and keep the `capture`/`captureTrailing()` + API usage intact. A sync that drops them leaves `kitty_notification.zig` compiled but unreachable. - `src/terminal/osc/parsers.zig` - Ensure `kitty_notification` stays imported after upstream parser reorganizations. From 1e6afb46dd79c5a945e93769a24ef83b64d75dd0 Mon Sep 17 00:00:00 2001 From: arzafran Date: Mon, 19 Oct 2026 16:37:44 -0300 Subject: [PATCH 3/5] test: run test_notifications.py in the nightly tests_v2 subset --- tests_v2/nightly_subset.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/tests_v2/nightly_subset.txt b/tests_v2/nightly_subset.txt index 2c0242278..7e991bba5 100644 --- a/tests_v2/nightly_subset.txt +++ b/tests_v2/nightly_subset.txt @@ -33,6 +33,7 @@ test_nested_split_panel_routing.py test_nested_split_preserves_existing_split.py test_new_claude_workspace_shortcut.py test_new_tab_interactive_after_splits.py +test_notifications.py test_pane_break_swap_preserve_focus.py test_pane_resize_preserves_ls_scrollback.py test_pane_resize_preserves_visible_content.py From 500dc927ffdf660b7091c261a9910ceab7dc458e Mon Sep 17 00:00:00 2001 From: arzafran Date: Mon, 19 Oct 2026 16:48:23 -0300 Subject: [PATCH 4/5] chore: pin GhosttyKit checksum for the OSC 99 fork commit --- scripts/ghosttykit-checksums.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/ghosttykit-checksums.txt b/scripts/ghosttykit-checksums.txt index 0d829c183..31678f2ff 100644 --- a/scripts/ghosttykit-checksums.txt +++ b/scripts/ghosttykit-checksums.txt @@ -24,3 +24,4 @@ c25020f993597285a331a76dcd7c8a6345b7e360 7ada2bddb5a33026fa5ff255a3f5fb4cabd44a6 bccfc8333fecf707dd918d46e3849fc8ed72cca0 26441b6e038523b9c6223bfbb73535a727d5c7c26c225326dc85122bda30881f 9d8aeccac8a76906864c684b340af09f29d13487 66ddf8bc25e53aef8d48cf75491a28882f57d0621ad6efae7060768e677c21d1 617aac44206e6a88761e4b3a253547e07b8870df a2be0acaeaa4740c6f8d27adbc7529d1a7318dd224250f25edfa773b28b1949f +a6d95cc23ee76efd016fee4711007d49f5e73316 992da6a332817fd2bc3fd7f89f5d4a2a3d03405ff1078cc878525e7b5d55774e From 9e72dae9b59a51f5076f883857d3d326cb0affae Mon Sep 17 00:00:00 2001 From: arzafran Date: Mon, 19 Oct 2026 16:48:23 -0300 Subject: [PATCH 5/5] docs: name the current GhosttyKit prebuilt in the fork notes --- docs/ghostty-fork.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/ghostty-fork.md b/docs/ghostty-fork.md index 6d41684e9..516314e89 100644 --- a/docs/ghostty-fork.md +++ b/docs/ghostty-fork.md @@ -25,8 +25,8 @@ display link parking. Prebuilt framework for the pinned head: -- Release: `xcframework-bccfc8333fecf707dd918d46e3849fc8ed72cca0` -- Asset SHA-256: `26441b6e038523b9c6223bfbb73535a727d5c7c26c225326dc85122bda30881f` +- Release: `xcframework-a6d95cc23ee76efd016fee4711007d49f5e73316` +- Asset SHA-256: `992da6a332817fd2bc3fd7f89f5d4a2a3d03405ff1078cc878525e7b5d55774e` ### 1) macOS display link restart on display changes