Add Ghostty to the terminal app picker - #2831
Conversation
|
🦞👀 Pull request received. I will update this pull request when review starts. |
|
Codex review: needs maintainer review before merge. Reviewed August 12, 2026, 11:56 AM ET / 15:56 UTC. ClawSweeper reviewWhat this changesThe PR adds Ghostty to CodexBar’s default-terminal picker and launches menu and provider-login commands through Ghostty’s AppleScript interface with a Terminal.app fallback. Merge readinessThis PR remains necessary because current main still offers only Terminal and iTerm. The focused implementation has no code-level finding; accepting Ghostty’s preview AppleScript API is the remaining maintainer compatibility decision. Likely related people: steipete (high confidence). Priority: P3 Review scores
Verification
How this fits togetherCodexBar’s terminal launcher receives commands from menu and provider-login actions, then dispatches them through the terminal selected in Settings. The selected terminal’s AppleScript opens a shell window and falls back to Terminal.app when the non-default app is unavailable or rejects automation. flowchart LR
A[Menu and login actions] --> B[Terminal launcher]
B --> C[Saved terminal choice]
C --> D{Selected app available?}
D -->|Yes| E[Terminal AppleScript]
D -->|No or script fails| F[Terminal.app fallback]
E --> G[Command shell window]
F --> G
Decision needed
Why: The implementation and signed-app evidence support the path, but accepting a preview third-party automation API is a product compatibility commitment. Before merge
Agent review detailsSecurityNone. Review metrics
Root-cause clusterRelationship: Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Support Ghostty through the existing terminal abstraction while retaining Terminal.app as the recovery path for unavailable, incompatible, disabled, or failing Ghostty automation. Do we have a high-confidence way to reproduce the issue? Not applicable as a bug reproduction: the PR body supplies after-fix evidence from a signed CodexBar bundle using the production launcher with Ghostty 1.3.1. Is this the best way to solve the issue? Yes, conditionally: extending the shared terminal abstraction and preserving its fallback is the narrowest maintainable approach, subject to accepting Ghostty’s preview API contract. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against c4ed34d0e44a. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (4 earlier review cycles)
|
|
@clawsweeper re-review — runtime proof added to the PR body: transcript of the generated AppleScript run against Ghostty 1.3.1 (returns the new window id) plus a redacted screenshot of the resulting window running |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
c7dd91b to
c63162e
Compare
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
Summary
Add Ghostty 1.3+ as a third option in Settings → General → Default terminal so shared “Open Terminal” and provider login actions can launch commands in the user’s configured Ghostty shell.
TerminalApp.ghosttywith bundle IDcom.mitchellh.ghosttynew window with configuration {initial input:… & linefeed}pathCaseIterableterminal abstractionThis branch is rebased onto current
main; the public commit metadata is human-only and contains no model attribution.Compatibility decision
Ghostty documents AppleScript support starting in 1.3.0 and still describes the interface as preview. Merging this PR makes Ghostty 1.3+ an explicitly supported terminal choice while retaining Terminal.app as the compatibility fallback.
Recommendation: accept the bounded integration. It uses the existing launcher boundary, has direct signed-app proof, and degrades to established behavior on unsupported installations.
Validation
CODEXBAR_SUPPRESS_TEST_KEYCHAIN_ACCESS=1 swift test --filter 'TerminalAppTests|PreferencesPaneSmokeTests'— 38 tests passedmake check— passedStatusItemController.openTerminal→NSAppleScriptpath against installed Ghostty 1.3.1 on macOS 26.6.1Signed-app proof
The signed CodexBar bundle selected Ghostty in-process, called its real
openTerminalmethod, created a Ghostty window, and executed:The marker file contained
ghostty-proof, and the captured Ghostty accessibility tree showed the command in the terminal content followed by the returned shell prompt. No standaloneosascriptsubstitute was used for this proof.The same signed bundle opened Settings with Ghostty detected and selected:
The original contributor transcript and redacted Ghostty screenshot remain useful independent corroboration.
Fixes #2830