Repository navigation
chore: move Ghostty to libghostty-vt's vt-1.0.0 tag (0fa3d577a) - #597
Merged
Merged
Conversation
The single Ghostty pin, which both the app's GhosttyKit and the daemon build from, moves from v1.4.0 (83fb95624) to vt-1.0.0: libghostty-vt's stable 1.x C ABI, and upstream's OSC 7 hostname fix (#14971). ghostty#14444 (the #547 freeze) is not in it. Daemon (ghostty-vt crate): callback payloads, GhosttyGridRef and GhosttySelection lose their size fields; the formatter is driven through ghostty_formatter_set with EMIT, UNWRAP=false and TRIM=false set and the extras mask built from zero, so 1.0's new defaults (trim on, palette, style and hyperlink extras) stay out; the Kitty keys are renamed and PIXELS replaces the pointer and length reads. repaint_golden_matches proves the repaint bytes are identical to the old pin's (golden captured before any change; red with TRIM at its new default). App: follows ghostty.h's new pointer nullability. The runtime config is built from typed callback constants: closures written inline took main-actor isolation and trapped on libghostty's off-main wakeup. SOURCE.md records the check; QA-libghostty.md §N drops a stale modulemap pointer and notes the trap and the DerivedData step for going back to an older pin. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QxGw2gUmeT3FCNK7RnCdky
This was referenced Nov 8, 2026
Closed
Owner
Author
|
🤖 Left by Claude Code: the §N engine-bump checks, run by hand in this branch's dev app in UI-test fixture mode (2026-11-08), with run tabs also checked in the VM. Summary: 21 pass, 0 fail. 1 not testable in fixture mode (25), 4 skipped as agreed (18, 20–22), 1 doesn't apply (19). Rows 23 and 24 are notes, not passes or fails.
Found, but not caused by this bump; filed:
|
joelmoss
marked this pull request as ready for review
November 8, 2026 18:54
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 Opened by Claude Code. Draft until the owner's by-hand §N checks are done.
Summary
This moves the single Ghostty pin (
GHOSTTY_SHA) from v1.4.0 (83fb95624) to libghostty-vt'svt-1.0.0tag (0fa3d577a, announcement, docs). Both the app's GhosttyKit and the daemon's libghostty-vt build from that one pin. ghostty-org/ghostty#14444 (the #547 freeze fix) is not in it, and comes as a later bump when it merges.What it brings:
One trap found and fixed. Building the runtime config with its callbacks written inline gave them main-actor isolation. libghostty's off-main wakeup then trapped the test host (EXC_BREAKPOINT in libdispatch, three run-tab test classes). They're now typed constants, and §N records the trap.
Evidence
Gates
make vcs-test(workspace)make vcs-test(terminal-state)make app-testmake vcs-lint,app-format,app-build,app-lint,docs-checkprotocolreportsterminal-state yesFormatter byte-identity
repaint_golden_matchescompares the daemon's repaint of a rich fixture withrepaint.golden, captured on the old pin before any change. The fixture has a styled history, links, wide characters, tabstops, modes, OSC 7, kitty flags, a DEC charset, a scroll region, the alternate screen, and a kitty image.UI smoke in Tart guests
testClickingInvestigateSeedsTheRealDiagnosisNotABareCommandandtestOneLineFixLandsAtThePromptUnexecuted. They fail the same way on the old pin, so this PR didn't cause them. They'll be filed separately.Not run locally:
make vcs-lint-linuxfails on this Mac at either pin, while linking Ghostty's own build-time generators (ld.lld: undefined symbol: __divti3). CI's Linux jobs are the check here.Merge Danger
Door: two-way. Reverting the pin restores the old engine. Snapshots are internal and not persisted across a downgrade.
Blast Radius: wide. It's the terminal engine for every pane, and the daemon's screen shadow. Upstream rewrote the terminal core (style packing, the print fast path, blank-row tracking), and it needs time in Nightly.
Before merge, by hand (
macapp/QA-libghostty.md§N):$TERM/infocmp.Refs #547 (not fixed here)
🤖 Generated with Claude Code
https://claude.ai/code/session_01QxGw2gUmeT3FCNK7RnCdky