diff --git a/docs/ghostty-fork.md b/docs/ghostty-fork.md index 8bbdde82f..516314e89 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, @@ -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 @@ -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. diff --git a/ghostty b/ghostty index 617aac442..a6d95cc23 160000 --- a/ghostty +++ b/ghostty @@ -1 +1 @@ -Subproject commit 617aac44206e6a88761e4b3a253547e07b8870df +Subproject commit a6d95cc23ee76efd016fee4711007d49f5e73316 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 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