Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 14 additions & 9 deletions docs/ghostty-fork.md
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand All @@ -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

Expand Down Expand Up @@ -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)

Expand Down Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion ghostty
1 change: 1 addition & 0 deletions scripts/ghosttykit-checksums.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,4 @@ c25020f993597285a331a76dcd7c8a6345b7e360 7ada2bddb5a33026fa5ff255a3f5fb4cabd44a6
bccfc8333fecf707dd918d46e3849fc8ed72cca0 26441b6e038523b9c6223bfbb73535a727d5c7c26c225326dc85122bda30881f
9d8aeccac8a76906864c684b340af09f29d13487 66ddf8bc25e53aef8d48cf75491a28882f57d0621ad6efae7060768e677c21d1
617aac44206e6a88761e4b3a253547e07b8870df a2be0acaeaa4740c6f8d27adbc7529d1a7318dd224250f25edfa773b28b1949f
a6d95cc23ee76efd016fee4711007d49f5e73316 992da6a332817fd2bc3fd7f89f5d4a2a3d03405ff1078cc878525e7b5d55774e
1 change: 1 addition & 0 deletions tests_v2/nightly_subset.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading