Sync ghostty with upstream (1,150 commits)#2374
Conversation
Syncs manaflow-ai/ghostty fork with upstream ghostty-org/ghostty, rebasing 13 cmux patches onto latest upstream. Includes fix for click-after-tab-switch infinite scroll (issue 1199) via upstream ghostty-org/ghostty#11167.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughUpdated the tracked Changes
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Greptile SummaryThis PR bumps the Key points:
Confidence Score: 5/5
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[ghostty upstream\nbc9be90a → ee2595ca\n1,150 commits] --> B{cmux fork rebase\nmanaflow-ai/ghostty}
B --> C[Patches CARRIED FORWARD]
B --> D[Patches DROPPED]
C --> C1[OSC 99 kitty notification parser]
C --> C2[macOS display-link restart]
C --> C3[Resize stale-frame mitigation]
C --> C4[Keyboard copy-mode C API]
C --> C5[Theme picker helper hooks\n7 commits]
C --> C6[Mode 2031 colour scheme fixes\n2 commits]
D --> D1[cursor-click-to-move OSC 133\nalready upstream]
D --> D2[Pure prompt redraw markers\nupstream handles it]
D --> D3[No-reflow resize override revert]
B --> E[Parent repo\nsubmodule pointer update\nghostty @ ee2595ca]
E --> F[Fixes issue 1199\nclick-after-tab-switch\ninfinite scroll-select]
|
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@ghostty`:
- Line 1: The submodule bump to commit ee2595cae16fbdf9d91e9c371fa1f63c189c59a1
is failing CI because scripts/ghosttykit-checksums.txt lacks the checksum for
the new GhosttyKit artifact; compute the correct checksum for the GhosttyKit
artifact that corresponds to commit ee2595ca..., and add a new entry in
scripts/ghosttykit-checksums.txt using the same filename/format as the existing
entries (match spacing and delimiter rules), then commit that change alongside
the submodule bump so CI/macOS jobs can validate the checksum.
- Line 1: The submodule pointer for ghostty references commit
ee2595cae16fbdf9d91e9c371fa1f63c189c59a1 which hasn’t been pushed to the remote
origin/main; push that commit to the manaflow-ai/ghostty repository's main
branch so the submodule pointer resolves, then update docs/ghostty-fork.md to
document the fork/merge notes and any conflict resolution steps for this sync
(mention the commit hash ee2595cae16fbdf9d91e9c371fa1f63c189c59a1 and that the
submodule path ghostty now points to origin/main).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
1005fb3 to
74e5240
Compare
74e5240 to
20f3975
Compare
20f3975 to
24bc630
Compare
24bc630 to
097932e
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 370025545b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| } | ||
| } | ||
| return true | ||
| case ghostty_action_tag_e(rawValue: 33): // GHOSTTY_ACTION_SET_TAB_TITLE |
There was a problem hiding this comment.
Match SET_TAB_TITLE to the correct action enum value
ghostty_action_tag_e(rawValue: 33) does not correspond to tab-title updates in the synced Ghostty API; in the checked-in enum ordering (ghostty.h), raw value 33 is GHOSTTY_ACTION_PRESENT_TERMINAL, while SET_TAB_TITLE is a distinct action after SET_TITLE. This means real tab-title actions will bypass this handler, and any action with tag 33 can be incorrectly consumed here (returning true), potentially suppressing its intended behavior.
Useful? React with 👍 / 👎.
3700255 to
83c2199
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 83c21993d1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| case ghostty_action_tag_e(rawValue: 33): // GHOSTTY_ACTION_SET_TAB_TITLE | ||
| let title = action.action.set_title.title |
There was a problem hiding this comment.
Avoid decoding action tag 33 as tab-title payload
This branch can mis-handle real actions because 33 is not SET_TAB_TITLE in the checked-in C API for this commit: fresh evidence is that ghostty.h maps value 33 to GHOSTTY_ACTION_PROMPT_TITLE (enum section) and its union slot is prompt_title, not set_title. When Ghostty emits tag 33, this code reads action.action.set_title.title from the wrong union member, which can produce invalid strings or crash depending on payload, and it also consumes the action (return true) so the intended prompt-title behavior is lost.
Useful? React with 👍 / 👎.
c6b5e2b to
6ba1ef9
Compare
Upstream added GHOSTTY_ACTION_SET_TAB_TITLE at position 33, shifting all subsequent enum values. Swift/Xcode couldn't import the new value, causing every action after position 33 to be misinterpreted (e.g. COMMAND_FINISHED matched as START_SEARCH, crashing on garbage pointer). Fix: move SET_TAB_TITLE to the end of the C ABI enum so existing values keep their positions. Handle it via raw value in Swift.
6ba1ef9 to
f204e84
Compare
Summary
Updates ghostty submodule to sync fork with upstream ghostty-org/ghostty, catching up 1,150 commits (Feb 17 to Mar 30).
Fixes #1199 (click-after-tab-switch triggers infinite select scroll) via upstream ghostty-org/ghostty#11167.
Ghostty fork PR: manaflow-ai/ghostty#22
Carried forward (13 cmux patches):
Dropped (in favor of upstream):
Test plan
Summary by cubic
Syncs
ghosttysubmodule with upstream (Feb 17–Mar 30) and rebases 13 cmux patches. Fixes the enum-shift crash from upstream tab title action by pinning its value and handling it in Swift (emits.ghosttyDidSetTitle), updates the OSC 99 parser, and resolves #1199 (infinite select scroll after tab switch).GhosttyKitchecksums for the upstream build.ghostty_surface_clear_selectionfor cmux.Written for commit f204e84. Summary will update on new commits.
Summary by CodeRabbit