Skip to content

Update ghostty submodule to latest upstream (112 commits past v1.3.1)#2704

Merged
lawrencecchen merged 11 commits intomainfrom
upgrade-ghostty-upstream
Apr 8, 2026
Merged

Update ghostty submodule to latest upstream (112 commits past v1.3.1)#2704
lawrencecchen merged 11 commits intomainfrom
upgrade-ghostty-upstream

Conversation

@lawrencecchen
Copy link
Copy Markdown
Contributor

@lawrencecchen lawrencecchen commented Apr 8, 2026

Summary

  • Merges ghostty-org/ghostty main into manaflow-ai/ghostty (112 commits past v1.3.1)
  • Re-adds cmux-specific selectCursorCell and clearSelection APIs against new upstream Selection API
  • Some cmux-specific patches lost in merge (OSC 99, color scheme report, theme picker hooks) need re-application

Notable upstream changes

  • iOS slices in lib-vt xcframework
  • Universal xcframework build support
  • Fix ghostty_surface_free_text parameter mismatch
  • 64-bit unique ID for core surfaces
  • CMake build support
  • Various macOS fixes

Test plan

  • Build macOS app with tagged reload
  • Verify terminal rendering, colors, splits, tabs
  • Verify keyboard input and shortcuts
  • Check CI passes

Summary by cubic

Updates the ghostty submodule to upstream origin/main with all cmux patches restored. Adds the missing GhosttyKit checksum for the latest upstream archive.

  • Bug Fixes

    • Accept xcframework-* tag format matching build.zig’s vX.Y.Z requirement.
    • Zig 0.15.2 compatibility.
  • Dependencies

    • Update ghostty to upstream origin/main, including the CLI helper step and cmux selectCursorCell/clearSelection APIs.
    • Add GhosttyKit checksums for recent upstream archives, including the latest.
    • Includes upstream changes: iOS slices in lib-vt, universal xcframework and CMake support, 64-bit surface IDs, macOS fixes, and a ghostty_surface_free_text parameter fix.

Written for commit 1a05555. Summary will update on new commits.

Summary by CodeRabbit

  • Chores
    • Updated a project submodule to a newer revision.
    • Appended checksum entries for the submodule's pinned archive(s) to the project's checksum records.

Merges ghostty-org/ghostty main into manaflow-ai/ghostty.
See manaflow-ai/ghostty#29 for details.
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 8, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmux Ready Ready Preview, Comment Apr 8, 2026 5:54am

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 8, 2026

Note

Reviews paused

It 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 reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Updated the ghostty Git submodule pointer to a new commit and appended two checksum mappings to scripts/ghosttykit-checksums.txt linking Ghostty submodule SHAs to pinned tarball SHA256s.

Changes

Cohort / File(s) Summary
Ghostty Submodule
ghostty
Updated subproject commit from ae3cc5d298d6a913297fc4dc7cd8b08283e1fa019fa02f69abc945e480eed50c1eb77fe18514456e.
Checksums
scripts/ghosttykit-checksums.txt
Appended two checksum mappings: cc6f4c287983325a3d87ec99f7d201eab53487daf4f8a6d3cc13b184d3834cf42a231e79116e4a8cc2f9911aa22e2906b5c23447, and 9fa02f69abc945e480eed50c1eb77fe18514456e136ef6ff9c576e82f2d7e6b413df2fa1185aa46d577630a7c65d6a875a763ebf.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related PRs

Poem

🐇 I hopped to a new commit, light and quick,
Two checksums tucked in my carroted pick.
A SHA and a tarball, snug in line,
Ghostty's trail now maps just fine. ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: updating the ghostty submodule to the latest upstream version with version context.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description check ✅ Passed The pull request description provides a comprehensive summary of changes, upstream updates, and a test plan checklist, but is missing sections for Testing methodology and Demo Video per the template.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch upgrade-ghostty-upstream

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 8, 2026

Greptile Summary

This PR advances the ghostty submodule pointer by 112 commits past v1.3.1 (ae3cc5d2fec0e6bc), merging upstream Ghostty main into the manaflow-ai/ghostty fork and re-applying the selectCursorCell/clearSelection selection C API. However, three cmux-specific patches acknowledged in the PR description as lost — OSC 99 notifications, color-scheme mode 2031 reporting, and theme-picker hooks — are not re-applied in this PR, and docs/ghostty-fork.md (required by the fork update checklist) has not been updated to reflect the new submodule head or the missing patches.

  • Missing OSC 99 patch: cmuxd/app-side OSC 99 (kitty notification) integration will silently stop working; no upstream patch replaces it.
  • Missing color-scheme mode 2031 patch: cmux relies on the initial DSR 997 report for immediate color-scheme awareness; without it, color-scheme sync is broken after config reloads.
  • docs/ghostty-fork.md not updated: the checklist in that doc requires updating it for every submodule bump; the file still lists the old pin ae3cc5d29 and the three missing patches as "current."

Confidence Score: 3/5

Not safe to merge: three cmux-specific patches (OSC 99, color-scheme mode 2031, theme-picker hooks) are acknowledged missing and represent current functional regressions.

Score reflects two P1 findings: missing OSC 99 and color-scheme mode 2031 patches break user-facing features that cmux explicitly depends on. The selection C API re-application is correct, but the incomplete patch set means this submodule bump ships known regressions. The fork doc is also stale. Once the three missing patches are re-applied and the doc updated, this should be safe to merge.

ghostty submodule (missing patches); docs/ghostty-fork.md (stale, must be updated)

Vulnerabilities

No security concerns identified. This PR updates a submodule pointer; no secrets, auth logic, or input-validation paths are changed in the parent repository.

Important Files Changed

Filename Overview
ghostty Submodule pointer advanced from ae3cc5d2 to fec0e6bc (112 upstream commits); selection C API re-added but OSC 99, mode 2031 color-scheme, and theme-picker patches are missing.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[ghostty upstream main\nfec0e6bc\n112 commits past v1.3.1] -->|merged into| B[manaflow-ai/ghostty fork]
    B --> C{cmux patches\nre-applied?}
    C -->|✅ Re-applied| D[Selection C API\nselectCursorCell / clearSelection]
    C -->|✅ Present| E[macOS display link restart\nmacOS resize stale-frame\nmacos-background-from-layer]
    C -->|❌ Missing| F[OSC 99 kitty notifications]
    C -->|❌ Missing| G[Color-scheme mode 2031]
    C -->|❌ Missing| H[Theme picker helper hooks]
    F --> I[Kitty desktop notifications broken]
    G --> J[Color-scheme sync broken after reload]
    H --> K[Live theme preview and cli-helper broken]
Loading

Reviews (1): Last reviewed commit: "Update ghostty submodule to upstream mai..." | Re-trigger Greptile

Comment thread ghostty Outdated
@@ -1 +1 @@
Subproject commit ae3cc5d298d6a913297fc4dc7cd8b08283e1fa01
Subproject commit fec0e6bc039887bc9bbb2c7817ec339e4fc49bad
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Three cmux patches are absent from the new fork head

The PR description acknowledges these are missing, but they represent current functional regressions that ship with this pointer update:

  • OSC 99 (kitty notifications)src/terminal/osc.zig / osc/parsers/kitty_notification.zig are not re-patched. Any app relying on kitty-protocol desktop notifications via the terminal will silently receive no events.
  • Color-scheme mode 2031 reportingsrc/Surface.zig / src/termio/stream_handler.zig patches are gone. docs/ghostty-fork.md explicitly states cmux relies on the initial DSR 997 report for "immediate color-scheme awareness"; without it, color-scheme sync is broken after config reloads.
  • Theme-picker helper hooksbuild.zig / src/cli/list_themes.zig / src/main_ghostty.zig patches are absent. Live theme preview and the cli-helper build step will not function.

These patches should be re-applied before merging, or the PR should be scoped to carry a follow-up issue that explicitly tracks each missing patch so they are not silently forgotten.

Comment thread ghostty Outdated
@@ -1 +1 @@
Subproject commit ae3cc5d298d6a913297fc4dc7cd8b08283e1fa01
Subproject commit fec0e6bc039887bc9bbb2c7817ec339e4fc49bad
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 docs/ghostty-fork.md not updated for new submodule head

The fork update checklist in docs/ghostty-fork.md requires updating the doc with the new change summary and conflict notes on every submodule bump. The file still lists the old pinned head (ae3cc5d29) and includes the three now-missing patches as "Current fork changes," which will mislead future rebases. The doc should be updated to reflect the new head fec0e6bc, remove or mark the absent patches, and record any new conflict notes for the 112 upstream commits.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9692022c6b

ℹ️ 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".

Comment thread ghostty Outdated
@@ -1 +1 @@
Subproject commit ae3cc5d298d6a913297fc4dc7cd8b08283e1fa01
Subproject commit fec0e6bc039887bc9bbb2c7817ec339e4fc49bad
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Add checksum for new ghostty SHA before bumping submodule

Updating ghostty to fec0e6bc... without adding a matching entry in scripts/ghosttykit-checksums.txt will break CI/release jobs on the first cache miss: workflows such as .github/workflows/ci.yml run ./scripts/download-prebuilt-ghosttykit.sh, and that script hard-fails at lines 45-47 when the pinned SHA is missing. Because the cache key includes the ghostty gitlink, this commit guarantees a cold-key path at least once, so the pipeline fails until the checksum is added.

Useful? React with 👍 / 👎.

Comment thread ghostty Outdated
@@ -1 +1 @@
Subproject commit ae3cc5d298d6a913297fc4dc7cd8b08283e1fa01
Subproject commit fec0e6bc039887bc9bbb2c7817ec339e4fc49bad
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Reapply required cmux fork patches before updating ghostty

This submodule bump is explicitly noted as dropping cmux-specific Ghostty patches (OSC 99 parser, mode 2031 color-scheme reporting, theme picker hooks), but the parent repo does not include follow-up changes to restore those behaviors. docs/ghostty-fork.md describes these patches as relied-on runtime behavior (including immediate color-scheme awareness), so pinning to this SHA introduces functional regressions in notification/theme flows until those patches are reintroduced.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 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: Push the submodule commit fec0e6bc039887bc9bbb2c7817ec339e4fc49bad to
the manaflow-ai/ghostty main branch, then update the ghostty fork documentation
entry that lists the "Current cmux pinned fork head" to this new hash and add a
concise summary of the 112-commit update plus any merge/conflict notes and
notable changes so the parent pointer update is documented before merging.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f83404e0-6a0e-46a1-a690-2ca6b8aa293e

📥 Commits

Reviewing files that changed from the base of the PR and between 2669b6d and 9692022.

📒 Files selected for processing (1)
  • ghostty

Comment thread ghostty Outdated
@@ -1 +1 @@
Subproject commit ae3cc5d298d6a913297fc4dc7cd8b08283e1fa01
Subproject commit fec0e6bc039887bc9bbb2c7817ec339e4fc49bad
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Verify the new ghostty submodule commit is pushed to manaflow-ai/ghostty main branch

cd ghostty || { echo "Failed to enter ghostty submodule directory"; exit 1; }

# Check if the new commit exists and is an ancestor of origin/main
if git merge-base --is-ancestor fec0e6bc039887bc9bbb2c7817ec339e4fc49bad origin/main 2>/dev/null; then
  echo "✓ Commit fec0e6bc039887bc9bbb2c7817ec339e4fc49bad is on origin/main"
  exit 0
else
  echo "✗ Commit fec0e6bc039887bc9bbb2c7817ec339e4fc49bad is NOT on origin/main"
  echo "Please push the submodule commit to manaflow-ai/ghostty main before merging this PR"
  exit 1
fi

Repository: manaflow-ai/cmux

Length of output: 215


🏁 Script executed:

# Check if docs/ghostty-fork.md exists and examine its contents
if [ -f "docs/ghostty-fork.md" ]; then
  echo "=== docs/ghostty-fork.md EXISTS ==="
  cat docs/ghostty-fork.md
else
  echo "✗ docs/ghostty-fork.md DOES NOT EXIST"
fi

Repository: manaflow-ai/cmux

Length of output: 8060


🏁 Script executed:

# Examine PR description or commit messages for status of lost patches
# Look for any recent commits or branch information about patch re-application
git log -n 20 --oneline --all -- docs/ghostty-fork.md 2>/dev/null || echo "No commits found for docs/ghostty-fork.md"

Repository: manaflow-ai/cmux

Length of output: 1178


🏁 Script executed:

# Check if there are any pending branches or work related to patching
cd ghostty && git log -n 10 --oneline 2>/dev/null | head -20

Repository: manaflow-ai/cmux

Length of output: 135


Push the submodule commit to origin/main and update the documentation before merging.

The new commit fec0e6bc039887bc9bbb2c7817ec339e4fc49bad is not currently on the manaflow-ai/ghostty fork's main branch. This blocks the merge. Per the project guidelines and the documented fork checklist in docs/ghostty-fork.md, submodule commits must be pushed to their remote main branch before updating the parent pointer.

Additionally, docs/ghostty-fork.md still lists the old pinned fork head (ae3cc5d29) and has not been updated with the new commit and its associated changes. The documented checklist requires updating this file with change summaries and conflict notes before committing the submodule pointer.

Required before merge:

  1. Push commit fec0e6bc039887bc9bbb2c7817ec339e4fc49bad to manaflow-ai/ghostty main branch
  2. Update docs/ghostty-fork.md: change "Current cmux pinned fork head" to the new commit hash and document what changed in this 112-commit update
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ghostty` at line 1, Push the submodule commit
fec0e6bc039887bc9bbb2c7817ec339e4fc49bad to the manaflow-ai/ghostty main branch,
then update the ghostty fork documentation entry that lists the "Current cmux
pinned fork head" to this new hash and add a concise summary of the 112-commit
update plus any merge/conflict notes and notable changes so the parent pointer
update is documented before merging.

Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3 issues found across 1 file

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="ghostty">

<violation number="1" location="ghostty:1">
P1: This submodule bump drops three cmux-specific patches that provide relied-upon runtime behavior:

- **OSC 99 (kitty notifications)** — desktop notification events will silently stop working.
- **Mode 2031 color-scheme reporting** — the initial DSR 997 report for immediate color-scheme awareness is gone; color-scheme sync will break after config reloads.
- **Theme-picker helper hooks** — live theme preview and the `cli-helper` build step will not function.

These patches should be re-applied before merging, or a follow-up issue should be filed and linked here to explicitly track each missing patch so they are not silently forgotten.</violation>

<violation number="2" location="ghostty:1">
P1: The new submodule commit `fec0e6bc` is not currently on the `manaflow-ai/ghostty` fork's `main` branch. Anyone cloning or doing a fresh `git submodule update --init` will fail to resolve this commit. Per the fork checklist in `docs/ghostty-fork.md`, the submodule commit must be pushed to the remote before updating the parent pointer. Additionally, `docs/ghostty-fork.md` should be updated to reflect the new pinned head and document the 112-commit update.</violation>

<violation number="3" location="ghostty:1">
P1: The submodule pointer is updated to `fec0e6bc` but `scripts/ghosttykit-checksums.txt` does not contain a matching entry for this SHA. The `download-prebuilt-ghosttykit.sh` script will hard-fail on the first cache miss because the checksum lookup for the new commit will find no match. Add the checksum entry for the new SHA before merging.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment thread ghostty Outdated
Comment thread ghostty Outdated
@@ -1 +1 @@
Subproject commit ae3cc5d298d6a913297fc4dc7cd8b08283e1fa01
Subproject commit fec0e6bc039887bc9bbb2c7817ec339e4fc49bad
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: The new submodule commit fec0e6bc is not currently on the manaflow-ai/ghostty fork's main branch. Anyone cloning or doing a fresh git submodule update --init will fail to resolve this commit. Per the fork checklist in docs/ghostty-fork.md, the submodule commit must be pushed to the remote before updating the parent pointer. Additionally, docs/ghostty-fork.md should be updated to reflect the new pinned head and document the 112-commit update.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At ghostty, line 1:

<comment>The new submodule commit `fec0e6bc` is not currently on the `manaflow-ai/ghostty` fork's `main` branch. Anyone cloning or doing a fresh `git submodule update --init` will fail to resolve this commit. Per the fork checklist in `docs/ghostty-fork.md`, the submodule commit must be pushed to the remote before updating the parent pointer. Additionally, `docs/ghostty-fork.md` should be updated to reflect the new pinned head and document the 112-commit update.</comment>

<file context>
@@ -1 +1 @@
-Subproject commit ae3cc5d298d6a913297fc4dc7cd8b08283e1fa01
+Subproject commit fec0e6bc039887bc9bbb2c7817ec339e4fc49bad
</file context>
Fix with Cubic

Comment thread ghostty Outdated
@@ -1 +1 @@
Subproject commit ae3cc5d298d6a913297fc4dc7cd8b08283e1fa01
Subproject commit fec0e6bc039887bc9bbb2c7817ec339e4fc49bad
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot Apr 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: The submodule pointer is updated to fec0e6bc but scripts/ghosttykit-checksums.txt does not contain a matching entry for this SHA. The download-prebuilt-ghosttykit.sh script will hard-fail on the first cache miss because the checksum lookup for the new commit will find no match. Add the checksum entry for the new SHA before merging.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At ghostty, line 1:

<comment>The submodule pointer is updated to `fec0e6bc` but `scripts/ghosttykit-checksums.txt` does not contain a matching entry for this SHA. The `download-prebuilt-ghosttykit.sh` script will hard-fail on the first cache miss because the checksum lookup for the new commit will find no match. Add the checksum entry for the new SHA before merging.</comment>

<file context>
@@ -1 +1 @@
-Subproject commit ae3cc5d298d6a913297fc4dc7cd8b08283e1fa01
+Subproject commit fec0e6bc039887bc9bbb2c7817ec339e4fc49bad
</file context>
Fix with Cubic

Points to cc6f4c287 which includes 112 upstream commits past v1.3.1
plus cmux selectCursorCell/clearSelection APIs.
Fixes CI panic: "tagged releases must be in vX.Y.Z format matching build.zig"
caused by xcframework-* tags created by build-ghosttykit CI job.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant