Repository navigation
ci: pin GhosttyKit archive for ghostty 17357e12 - #18598
Merged
Merged
Conversation
Generated from the published GhosttyKit archive using the standard release packaging and SHA-256 verification path.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configuration
You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
teamleaderleo
added a commit
that referenced
this pull request
Oct 8, 2026
* test(cmux-next): the chat menu opens the chat in a new window (red) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * cmux-next: open a chat in a new window from its menu, Codex-style The chat menu's Open in new window runs the app's tab.moveToNewWindow on the chat's tab, after Move to new workspace. The string is in all 21 locales; the keycap comes from the action catalog when one is bound. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * cmux-next: the pane reads Open in new window's key from the catalog AgentPaneShortcuts.actions lists every header action, so the menu row shows tab.moveToNewWindow's binding when the user sets one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * cmux-next: red tests for serving other apps' sign-in sessions (cx-q3y7) WebAuthSessionBrokerTests: a sign-in (ASWebAuthenticationSession) opens in a tab, ends with its custom-scheme or https callback exactly once, is cancelled when the tab closes, closes its tab when the system cancels, and ephemeral sessions ask for a non-persistent profile. The shim's C++ callback rule (auth_callback_policy_test.cpp) cancels only the session's own callback navigation. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * cmux-next: serve other apps' sign-in sessions as the default browser (cx-q3y7) macOS hands the default browser every ASWebAuthenticationSession another app starts once the browser declares ASWebAuthenticationSessionWebBrowserSupportCapabilities and installs a session handler. cmux now does both: - WebAuthSessionHandler (installed at launch) passes each request to WebAuthSessionBroker, the one owner of pending sessions: each opens in its own sign-in panel (the popup panel: title, origin, close, Escape) with a Chromium page, ends once with its callback URL (the panel closes), and is cancelled when the person closes the panel; a system cancel closes the panel without an answer. - The shim stops the callback before it loads (cmux_shim_set_auth_callback, auth_callback_policy.h: custom scheme, or https host and path; event AUTH_CALLBACK), so the code never reaches the network or another app. The system's matcher confirms it; observing the page URL is the last line when the callback could not be read. - Ephemeral sessions use an off-the-record profile that ends with the panel; normal ones use the default profile (an existing sign-in stays). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * cmux-next: do not declare the sign-in capability until macOS delivers requests (cx-q3y7) Live test on cmux-lawrence-2 (macOS 27.0.1) with a test app starting an ASWebAuthenticationSession while cmux DEV was the default browser: the system sent the session's Apple event and cmux's framework reported the request, but SafariLaunchAgent never handed it over, so the handler was not called. Chrome as the default browser fails the same way on that host (no sign-in page), which points at the system (FB21939656 reports the same on macOS 26.2). With the key declared, a sign-in would hang instead of using Safari, so the key stays out; the handler stays installed and is inert without it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * cmux-next: install the sign-in session handler only when the capability is declared Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * cmux-next: sign-in review fixes (cx-q3y7) - A stopped https URL the system's matcher rejects loads once with the shim callback cleared (no stop-reload loop); a rejected custom-scheme link from a sign-in page does not open another app; a late event after the session ended does nothing. - The callback opened in a new tab (target=_blank, window.open) still ends the session instead of leaking to a normal tab. - A system cancel that arrives before its begin opens nothing; a repeated begin opens one panel. - A log line when the callback could not be read. - WebAuthSessionHandler.install installs only with the capability key (test: theHandlerInstallsOnlyWithTheCapabilityKey). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * cmux-next: sign-in callbacks off CEFTab and AppServices; split the broker file CEFSignInCallbacks holds the sign-in tabs (set, re-applied on attach, AUTH_CALLBACK routed by CEFRuntime), so CEFTab and AppServices stay under the god-type limit; AppDelegate's WebAuthSessionHandler owns the broker. WebAuthCallback and the session protocols get their own files. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * cmux-next: crash-allow the SDK's implicitly unwrapped sign-in request and its main-actor hop Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * ci: pin GhosttyKit for ghostty 17357e12 (#18598) Generated from the published GhosttyKit archive using the standard release packaging and SHA-256 verification path. * fix(cmux-next): render account registry marks in both themes (#18081) * fix(cmux-next): render account registry marks in brand color Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(cmux-next): use theme tone and ChatGPT account mark --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix: keep the pane catalog in base's layout The base merge rewrote the agent pane catalog's layout (792 lines removed). Rebuild it as the merge base's text plus this branch's keys; the strings are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com>
teamleaderleo
added a commit
that referenced
this pull request
Oct 9, 2026
…he palette (#16614) * cmux-next agent pane: log every acpmux message and socket change The agent pane now keeps a log of what it sent to and received from acpmux: each JSON-RPC request, its reply or error with latency, each notification, and the socket's lifecycle (connecting, open, close with code, errors, reconnect delays, a lost daemon and the handshake that follows). The log survives reconnects, never holds the daemon token, and is bounded to 2000 entries and about 4 MB of message text. window.cmuxAcpmuxDebug.acpLog and acpLogExport (JSON Lines) read it, so the DEBUG debug.agent_pane socket method can fetch it. The inspector panel and the export action build on this. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * agent-pane: add an ACP inspector panel A header icon opens a panel over the transcript with the pane's wire log (every ACP request, reply, notification and socket event, with latency), the selected session's ACP journal, connection and session state, request and error counts, latency p50 and max, a filter, expandable JSON rows and an export as JSON Lines. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * agent-pane: save the ACP log natively and toggle the inspector from the palette The inspector's Export now asks the host for a save panel (pane.saveLog, capped at 16 MB) and copies the log only when the host cannot save; a cancelled panel does nothing. Show ACP Inspector (agentPane.toggleInspector) toggles the focused agent pane's inspector through the page bridge, and debug.agent_pane gains an inspector action for dogfood capture. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Test opening the inspector from the current chat menu * Test inspector journal selection and list isolation * Open the localized ACP inspector from the chat menu * Include inspector styles in the shipped agent pane bundle * Run inspector checks against feat-cmux-next * red: a workspace any daemon client creates lands at the top by default (cx-8351) workspaces.newPlacement (top by default) is applied only by the Mac app today: a plain workspace.create (TUI, CLI, iOS, agents) still gets the last personal row. The test creates workspaces through the protocol with Home and a group right below it and expects each new one first below Home, above the group, stored across a restart. * fix: the daemon puts every new workspace at workspaces.newPlacement, for every client (cx-8351) The personal row a workspace gets in the commit that creates it (every creation path: the app, iOS, the TUI, the CLI, agents) now goes where the settings file's workspaces.newPlacement says, instead of last: top (default, also for a missing or unknown value) right after the home workspace's row, else first, ungrouped, so above every group at that place; afterCurrent right after the session's active workspace before the commit, in its group (top when there is none, it has no row, it is Home, or the new workspace is pinned to another room than the group's); bottom last. Several workspaces of one commit keep their order. Home always takes the top; a reopened workspace is created last and then takes its closed row's place, so no other row moves. The creation's session.events batch carries each new and moved placement and each group whose top_index moved (tests replay the events against the store). Decision: the daemon reads the setting from the app's settings file itself (new cmux_tui_core::user_settings: CMUX_NEXT_CONFIG_FILE, else ~/.config/cmux/cmux-next.json, else classic cmux.json before the app's first launch; regular files only, cached by mtime and size; the JSONC reader moved from the MCP config, which now reads the same file), not from a field on the create intent: the order is the daemon's state, the file is the config layer every client on the machine shares, it works while the app is quit, and no protocol field or binding changes. A caller that wants another place still sends workspace.place after the creation; that later write wins. The managed (MDM) layer is not read. App: the classic-session import names an explicit bottom slot, so its batch keeps the saved order now that the daemon itself puts new workspaces on top. * Route inspector export through the shared page host and declare its action surfaces * cmux-next: open a chat in a new window from its menu (#17611) * test(cmux-next): the chat menu opens the chat in a new window (red) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * cmux-next: open a chat in a new window from its menu, Codex-style The chat menu's Open in new window runs the app's tab.moveToNewWindow on the chat's tab, after Move to new workspace. The string is in all 21 locales; the keycap comes from the action catalog when one is bound. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * cmux-next: the pane reads Open in new window's key from the catalog AgentPaneShortcuts.actions lists every header action, so the menu row shows tab.moveToNewWindow's binding when the user sets one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * cmux-next: red tests for serving other apps' sign-in sessions (cx-q3y7) WebAuthSessionBrokerTests: a sign-in (ASWebAuthenticationSession) opens in a tab, ends with its custom-scheme or https callback exactly once, is cancelled when the tab closes, closes its tab when the system cancels, and ephemeral sessions ask for a non-persistent profile. The shim's C++ callback rule (auth_callback_policy_test.cpp) cancels only the session's own callback navigation. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * cmux-next: serve other apps' sign-in sessions as the default browser (cx-q3y7) macOS hands the default browser every ASWebAuthenticationSession another app starts once the browser declares ASWebAuthenticationSessionWebBrowserSupportCapabilities and installs a session handler. cmux now does both: - WebAuthSessionHandler (installed at launch) passes each request to WebAuthSessionBroker, the one owner of pending sessions: each opens in its own sign-in panel (the popup panel: title, origin, close, Escape) with a Chromium page, ends once with its callback URL (the panel closes), and is cancelled when the person closes the panel; a system cancel closes the panel without an answer. - The shim stops the callback before it loads (cmux_shim_set_auth_callback, auth_callback_policy.h: custom scheme, or https host and path; event AUTH_CALLBACK), so the code never reaches the network or another app. The system's matcher confirms it; observing the page URL is the last line when the callback could not be read. - Ephemeral sessions use an off-the-record profile that ends with the panel; normal ones use the default profile (an existing sign-in stays). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * cmux-next: do not declare the sign-in capability until macOS delivers requests (cx-q3y7) Live test on cmux-lawrence-2 (macOS 27.0.1) with a test app starting an ASWebAuthenticationSession while cmux DEV was the default browser: the system sent the session's Apple event and cmux's framework reported the request, but SafariLaunchAgent never handed it over, so the handler was not called. Chrome as the default browser fails the same way on that host (no sign-in page), which points at the system (FB21939656 reports the same on macOS 26.2). With the key declared, a sign-in would hang instead of using Safari, so the key stays out; the handler stays installed and is inert without it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * cmux-next: install the sign-in session handler only when the capability is declared Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * cmux-next: sign-in review fixes (cx-q3y7) - A stopped https URL the system's matcher rejects loads once with the shim callback cleared (no stop-reload loop); a rejected custom-scheme link from a sign-in page does not open another app; a late event after the session ended does nothing. - The callback opened in a new tab (target=_blank, window.open) still ends the session instead of leaking to a normal tab. - A system cancel that arrives before its begin opens nothing; a repeated begin opens one panel. - A log line when the callback could not be read. - WebAuthSessionHandler.install installs only with the capability key (test: theHandlerInstallsOnlyWithTheCapabilityKey). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * cmux-next: sign-in callbacks off CEFTab and AppServices; split the broker file CEFSignInCallbacks holds the sign-in tabs (set, re-applied on attach, AUTH_CALLBACK routed by CEFRuntime), so CEFTab and AppServices stay under the god-type limit; AppDelegate's WebAuthSessionHandler owns the broker. WebAuthCallback and the session protocols get their own files. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * cmux-next: crash-allow the SDK's implicitly unwrapped sign-in request and its main-actor hop Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * ci: pin GhosttyKit for ghostty 17357e12 (#18598) Generated from the published GhosttyKit archive using the standard release packaging and SHA-256 verification path. * fix(cmux-next): render account registry marks in both themes (#18081) * fix(cmux-next): render account registry marks in brand color Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(cmux-next): use theme tone and ChatGPT account mark --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * fix: keep the pane catalog in base's layout The base merge rewrote the agent pane catalog's layout (792 lines removed). Rebuild it as the merge base's text plus this branch's keys; the strings are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com> * test(pages): a rebound pooled page view forgets the old page's activation; submenu choice counts (red, cx-qoxe) Red on cmux-lawrence-2 (nx-remote 1008-154834-be660b): retarget and resetPooledPage keep the old document's gesture timestamp. The submenu test is new coverage of the menu walk (already green). * fix(pages): a rebound or parked pooled page view forgets the old page's activation (cx-qoxe) retarget and resetPooledPage now clear PageWKWebView's gesture timestamp and opened context menu, so a new document cannot use a click or key the person made in the previous one for clipboard.write or person-only actions. Gate: cmux-lawrence-2 nx-remote 1008-155539-e0ff66, PageUserActivationTests, PageHostRetargetTests, PageHostPoolTests, PageDesktopDefaultsTests, PageRouterTests, PageProvidersTests green. * Test inspector action focus intent for automation * Require explicit focus intent for automated inspector toggles * Regenerate inspector action exports and complete localization audit * ci(cmux-next): repin app FFI to published source (#18575) * ci(cmux-next): repin app FFI to published source The f1a32f1 build passed the app FFI release checks. Pin its immutable release and checksum so the target push verifies the current sources. * ci(cmux-next): pin app FFI for current base * cmux-tui-core: red tests: legacy ops, TUI workspace ops and older ledgers record the daemon (cx-44j.5 landing 3b) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * cmux-tui-core: legacy ops, TUI workspace ops and older ledgers record their actor (cx-44j.5 landing 3b) P8 landing 3b (plans/cmux-next/identity.md section 3). The paths that still recorded `daemon` for a caller now record the caller's actor: - Legacy commands pass the connection actor: select-tab, close-pane / close-screen / close-tab-group with end_terminals (and the close-screen-group end_terminals branch), move-tab-to-split/column, move-tab-to-workspace, set-column-dock, set-row-heights, undo-layout, apply-layout, every tab group and screen group command (StripRequest::local takes an actor), set-tab-pinned, notify, the keyed bookmark ops, bind-conversation-tab-session, update-frontend-browser-tab owner, and the provider-managed close/rename. - The in-process TUI (Session::Local) closes, renames and moves workspaces and undoes layouts as the local user. - terminal.move projections, the v2 workspace.close effect and the apply-layout rollback commit as their caller. Agent hooks, terminal OSC notifications, reaps, runtime commits, interrupted-creation recovery and host-loss respawn stay the daemon's own work. - The older ledgers (mutations, terminal_mutations, projection_mutations, bookmark_mutations) get a nullable actor column (design D: NULL reads `legacy`, an older daemon that omits it keeps working) and one shared write, insert_keyed_mutation. A fresh journal record takes the actor of the row its own commit wrote, matched by (origin, key), so another origin's row under the same key never lends it its actor. - Key-less op names exist only under cfg(test) (mux/legacy_actor_test_wrappers.rs, TuiMuxOps, DaemonMuxOps). - mux/tab_groups/reopen_saved.rs and server/group_outcome_json.rs move code out of two god files (no baseline raised). Test fix vs the red commit: the undo check reads the effect receipt too (a layout undo is effectful). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * red: the top of the first remote row in one list is a slot of that computer (cx-hzpd) Restores SidebarOntoGroupTests.theTopOfARowReorders to the flat list (sidebar.groupByComputer off, the default); cx-plf5 had switched it to grouping-on. * fix(sidebar): the open gap holds when the card's leading edge is over rows it cannot join (cx-hzpd) In the one-list sidebar (sidebar.groupByComputer off) a remote computer's rows follow the local rows with no header. Dragging a remote workspace to the top of its computer's first row opened the gap there, the card's centre then sat in that gap, and the leading edge (the card's top, over the last local row) decided: a slot among the local rows, which a remote workspace cannot take, so the drop was refused. Rule: with the centre in the open gap, that gap is the drop the list shows; the leading edge moves it only to a slot the dragged rows can take, else the gap holds. Away from the gap an unreachable slot still refuses the drop. --------- Co-authored-by: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Resolve concurrent catalog additions and regenerate pane strings * Keep inspector strings outside concurrently changed catalog rows * agent-pane: ACP inspector panel (#16604) * cmux-next agent pane: log every acpmux message and socket change The agent pane now keeps a log of what it sent to and received from acpmux: each JSON-RPC request, its reply or error with latency, each notification, and the socket's lifecycle (connecting, open, close with code, errors, reconnect delays, a lost daemon and the handshake that follows). The log survives reconnects, never holds the daemon token, and is bounded to 2000 entries and about 4 MB of message text. window.cmuxAcpmuxDebug.acpLog and acpLogExport (JSON Lines) read it, so the DEBUG debug.agent_pane socket method can fetch it. The inspector panel and the export action build on this. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * agent-pane: add an ACP inspector panel A header icon opens a panel over the transcript with the pane's wire log (every ACP request, reply, notification and socket event, with latency), the selected session's ACP journal, connection and session state, request and error counts, latency p50 and max, a filter, expandable JSON rows and an export as JSON Lines. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Test opening the inspector from the current chat menu * Test inspector journal selection and list isolation * Open the localized ACP inspector from the chat menu * Include inspector styles in the shipped agent pane bundle * Run inspector checks against feat-cmux-next --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * cmux-next: tab hover cards without empty thumbnails or unavailable text (#17636) * test(cmux-next): tab cards drop empty thumbnails and unavailable resources Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(cmux-next): tab cards drop empty thumbnails and unavailable resources A tab with no resource numbers (an agent chat, the New Tab page) showed "Resource usage unavailable" over an empty thumbnail frame. The card now leaves out the resource line when the sample says unavailable and drops the thumbnail once its fetch returns none, remembered per tab so the next hover opens at the right size. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> * test: reject inspector toggles on hidden surfaces * fix: reject inspector toggles on hidden surfaces * Keep inspector save panel and bridge handlers in focused owners * Follow the existing reply type in the namespace lint ratchet * Keep inspector strings separate from concurrently removed dialog strings * Declare the stable inspector callback in the bridge effect --------- Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com>
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.
Problem
Commit
b89fdeaa0504104062b1280c3e0ff0209823d4a5moved theghosttygitlink to17357e12a0ac4a50841d8635ef593d4aaa6552c1without adding the matching GhosttyKit archive checksum. Nightly-next run37779335812then failed before compilation could start.Change
Add the checksum generated from the published
xcframework-17357e12a0ac4a50841d8635ef593d4aaa6552c1-crashsubdir-cmux-crash-sentry-off-noi18n-v2archive. The existingtests/test_ci_ghosttykit_checksum_present.shguard already checks the exact checked-in gitlink and is wired intoci-guardsrelease-tooling coverage; it reproduces the reported failure on the bad run head, so this PR does not duplicate it.Validation
scripts/download-prebuilt-ghosttykit.sh --verify-onlywith the generated row: passtests/test_ci_ghosttykit_checksum_present.sh: passtests/test_ci_ghosttykit_checksum_verification.sh: passtests/test_ci_ghosttykit_release_check.sh: passgit diff --check: passChangelog
none
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Adds the GhosttyKit archive checksum for ghostty commit
17357e12so nightly-next CI no longer fails before compilation. The previous commit bumped the ghostty gitlink without adding the matching checksum entry inscripts/ghosttykit-checksums.txt.Written for commit f68e8c4. Summary will update on new commits.
Note
Low Risk
Single checksum table entry for CI artifact verification; no application or security logic changes.
Overview
Adds the missing GhosttyKit xcframework checksum for ghostty submodule
17357e12a0ac4a50841d8635ef593d4aaa6552c1inscripts/ghosttykit-checksums.txt, so CI can verify/download the matching prebuilt archive after the gitlink was bumped without this row.This unblocks nightly-next and other jobs that run
download-prebuilt-ghosttykit.sh --verify-onlyand the existing checksum guard tests.Reviewed by Cursor Bugbot for commit f68e8c4. Bugbot is set up for automated code reviews on this repo. Configure here.