Skip to content

Update ghostty for fallback font sizing#2242

Open
austinywang wants to merge 1 commit into
mainfrom
issue-2162-korean-fallback-sizing
Open

Update ghostty for fallback font sizing#2242
austinywang wants to merge 1 commit into
mainfrom
issue-2162-korean-fallback-sizing

Conversation

@austinywang
Copy link
Copy Markdown
Contributor

@austinywang austinywang commented Mar 27, 2026

Summary

Testing

  • manually launched a tagged local dev build to verify the app bundle still opens
  • not run: local automated tests (repo policy)

Summary by cubic

Updates ghostty to clamp CoreText fallback glyphs to the primary cell height so Hangul/CJK fallback text fits the cell (meets Linear issue 2162). Adds docs detailing the fork-only change in docs/ghostty-fork.md.

Written for commit 0de6601. Summary will update on new commits.

Summary by CodeRabbit

  • Documentation

    • Documented improvements to fallback font glyph rendering and sizing.
  • Chores

    • Updated ghostty submodule dependency.

@vercel
Copy link
Copy Markdown

vercel Bot commented Mar 27, 2026

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

Project Deployment Actions Updated (UTC)
cmux Ready Ready Preview, Comment Mar 27, 2026 7:01am

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 27, 2026

📝 Walkthrough

Walkthrough

The PR updates the ghostty submodule to a newer commit implementing CoreText fallback glyph height clamping and documents this change. The mechanism prevents fallback glyphs from rendering larger than the primary monospace font by caching metrics and propagating fallback flags through face copies.

Changes

Cohort / File(s) Summary
Ghostty Submodule and Documentation Update
ghostty, docs/ghostty-fork.md
Submodule pointer updated to commit bb60bc964 implementing CoreText fallback glyph height clamp; fork documentation added describing the mechanism's implementation details including flag propagation, metric caching, and targeted glyph remapping.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 A submodule hops to a commit so new,
Where CoreText glyphs learn what they should do,
Fallback heights are gracefully constrained,
Metrics cached, flags fully maintained,
The docs now bloom with glyph delight! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title directly and clearly summarizes the main change: updating ghostty to handle fallback font sizing, which is the primary objective of the pull request.
Description check ✅ Passed The description covers the Summary and Testing sections from the template with specifics about the changes and testing approach, though demo video and checklist are incomplete.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch issue-2162-korean-fallback-sizing

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.

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.

No issues found across 2 files

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Mar 27, 2026

Greptile Summary

This PR advances the Ghostty submodule to commit bb60bc964, which caches CoreText face metrics and adds a height-clamp pass for unconstrained fallback text glyphs (Hangul, CJK, etc.), preventing them from rendering taller than the primary monospace cell. The docs/ghostty-fork.md documentation is updated to record the new section 8 fork change and to add merge-conflict notes for the two affected Zig files (src/font/face/coretext.zig and src/font/Collection.zig).\n\n- The documentation change is clean and follows the established section-by-section structure precisely.\n- Submodule safety concern: CLAUDE.md requires that the submodule commit be reachable from manaflow-ai/ghostty main before the parent pointer is committed. The PR description attributes the new SHA to manaflow-ai/ghostty#19 (an open PR), which means the commit may live only on a feature branch and could become orphaned when that branch is deleted. Confirm bb60bc964 is on origin/main of the fork (or that PR #19 is merged) before merging.

Confidence Score: 4/5

Safe to merge once the submodule commit is confirmed to be on the fork's main branch per CLAUDE.md policy.

The code and documentation changes are straightforward and well-structured. The single concern — whether bb60bc964 is on manaflow-ai/ghostty main — is a process/policy check, not a logic bug in the changes themselves. Once that is confirmed, there is no remaining blocking issue.

ghostty (submodule pointer) — verify commit reachability from fork main before merging.

Important Files Changed

Filename Overview
docs/ghostty-fork.md Adds section 8 documenting the CoreText fallback glyph height clamp patch and corresponding merge-conflict notes for the two affected Zig files; follows the established structure of prior sections cleanly.
ghostty Submodule pointer advanced from bc9be90a to bb60bc96; the PR description attributes this to manaflow-ai/ghostty#19, raising a concern about whether the commit is on the fork's main branch as required by CLAUDE.md submodule safety policy.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Glyph rasterization request] --> B{Primary font?}
    B -- Yes --> C[Render at normal size]
    B -- No --> D{Fallback font\nfallback_flag = true}
    D --> E{Glyph type}
    E -- Icon / emoji constraint path --> F[Render at constrained size\nno change]
    E -- Unconstrained text glyph\ne.g. Hangul / CJK --> G[Clamp height to\nprimary cell vertical extents]
    G --> H[Render at clamped size\nfits monospace grid]
Loading

Reviews (1): Last reviewed commit: "Update ghostty for fallback font sizing" | Re-trigger Greptile

Comment thread ghostty
@@ -1 +1 @@
Subproject commit bc9be90a21997a4e5f06bf15ae2ec0f937c2dc42
Subproject commit bb60bc964be4a616e61ed4e0229f72c222df039e
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 Verify submodule commit is on manaflow-ai/ghostty main

CLAUDE.md requires that submodule commits be on the fork's main branch before the parent-repo pointer is committed, and instructs to verify with cd ghostty && git merge-base --is-ancestor HEAD origin/main.

The PR description says this update "depend[s] on manaflow-ai/ghostty#19", which implies the commit bb60bc964 lives on a PR/feature branch. If ghostty PR #19 has not yet been merged to manaflow-ai/ghostty main, the submodule pointer here points to a branch commit that can be orphaned when the branch is eventually deleted.

Please confirm that bb60bc964 is reachable from manaflow-ai/ghostty main before merging this PR.

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: 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: CI is failing because the new ghostty submodule SHA (bb60bc964...)
wasn't added to the pinned checksums file; update
scripts/ghosttykit-checksums.txt by appending the canonical checksum entry for
the new GhosttyKit SHA (use the same format as existing entries), commit that
change alongside the submodule update so test_ci_ghosttykit_checksum_present.sh
and macOS checks pass.
- Line 1: The submodule pointer references an unreachable commit
(bb60bc964be4a616e61ed4e0229f72c222df039e) in the manaflow-ai/ghostty submodule
on main; fix by either pushing that commit to the manaflow-ai/ghostty
repository’s main branch so the SHA becomes reachable, or update the submodule
pointer to point to an existing commit on that repo’s main (update the submodule
entry and commit the change), then re-run git submodule sync/update so cloning
will succeed.
🪄 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: 295e1a4d-1d8f-4d49-b308-f402b1ff698d

📥 Commits

Reviewing files that changed from the base of the PR and between 1f4fc47 and 0de6601.

📒 Files selected for processing (2)
  • docs/ghostty-fork.md
  • ghostty

Comment thread ghostty
@@ -1 +1 @@
Subproject commit bc9be90a21997a4e5f06bf15ae2ec0f937c2dc42
Subproject commit bb60bc964be4a616e61ed4e0229f72c222df039e
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

Add the pinned GhosttyKit checksum for this new submodule SHA before merge.

Updating ghostty to bb60bc964... without adding its entry to scripts/ghosttykit-checksums.txt is currently breaking CI (test_ci_ghosttykit_checksum_present.sh and macOS compatibility both fail with “Missing pinned GhosttyKit checksum…”).

✅ Required follow-up change
# scripts/ghosttykit-checksums.txt
+bb60bc964be4a616e61ed4e0229f72c222df039e <sha256_of_GhosttyKit.xcframework.tar.gz_for_bb60bc964>
🧰 Tools
🪛 GitHub Actions: CI

[error] 1-1: Test failed: scripts/ghosttykit-checksums.txt is missing an entry for ghostty bb60bc964be4a616e61ed4e0229f72c222df039e.


[error] 1-1: Step failed (exit code 1): ./tests/test_ci_ghosttykit_checksum_present.sh.

🪛 GitHub Actions: macOS Compatibility

[error] 1-1: Missing pinned GhosttyKit checksum for ghostty bb60bc964be4a616e61ed4e0229f72c222df039e in /Users/runner/work/cmux/cmux/scripts/ghosttykit-checksums.txt


[error] 1-1: Process completed with exit code 1.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ghostty` at line 1, CI is failing because the new ghostty submodule SHA
(bb60bc964...) wasn't added to the pinned checksums file; update
scripts/ghosttykit-checksums.txt by appending the canonical checksum entry for
the new GhosttyKit SHA (use the same format as existing entries), commit that
change alongside the submodule update so test_ci_ghosttykit_checksum_present.sh
and macOS checks pass.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

git -C ghostty fetch origin main
SHA="bb60bc964be4a616e61ed4e0229f72c222df039e"

echo "Verifying submodule SHA exists and is on origin/main..."
git -C ghostty cat-file -e "${SHA}^{commit}"
git -C ghostty merge-base --is-ancestor "$SHA" origin/main

echo "OK: $SHA is present and reachable from origin/main"

Repository: manaflow-ai/cmux

Length of output: 393


Do not merge: submodule pointer is unreachable from manaflow-ai/ghostty main.

The submodule commit bb60bc964be4a616e61ed4e0229f72c222df039e is not reachable from origin/main. This will cause failures when cloning the repository. Either push this commit to the manaflow-ai/ghostty repository's main branch, or update the submodule pointer to an existing commit on main.

🧰 Tools
🪛 GitHub Actions: CI

[error] 1-1: Test failed: scripts/ghosttykit-checksums.txt is missing an entry for ghostty bb60bc964be4a616e61ed4e0229f72c222df039e.


[error] 1-1: Step failed (exit code 1): ./tests/test_ci_ghosttykit_checksum_present.sh.

🪛 GitHub Actions: macOS Compatibility

[error] 1-1: Missing pinned GhosttyKit checksum for ghostty bb60bc964be4a616e61ed4e0229f72c222df039e in /Users/runner/work/cmux/cmux/scripts/ghosttykit-checksums.txt


[error] 1-1: Process completed with exit code 1.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@ghostty` at line 1, The submodule pointer references an unreachable commit
(bb60bc964be4a616e61ed4e0229f72c222df039e) in the manaflow-ai/ghostty submodule
on main; fix by either pushing that commit to the manaflow-ai/ghostty
repository’s main branch so the SHA becomes reachable, or update the submodule
pointer to point to an existing commit on that repo’s main (update the submodule
entry and commit the change), then re-run git submodule sync/update so cloning
will succeed.

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