Skip to content

[WIP] ivrix-prompt-selection-edit-app - #7

Merged
DananzMolt merged 10000 commits into
mainfrom
ivrix-prompt-selection-edit-app
Oct 15, 2026
Merged

DananzMolt merged 10000 commits into
mainfrom
ivrix-prompt-selection-edit-app

Conversation

@DananzMolt

Copy link
Copy Markdown
Collaborator

Parked by open-wip-prs.sh on 20260802-234157.

29 commit(s) that existed only on this machine. Opened so the work can be
continued elsewhere and the local worktree freed.

Resume: git fetch origin && git switch ivrix-prompt-selection-edit-app

austinywang and others added 30 commits September 20, 2026 05:38
…-timing-ui

# Conflicts:
#	Sources/Cloud/CloudTreeNodeActions+WorkspaceLifecycle.swift
#	Sources/Surfaces/CmuxTuiSurfaceProviderRegistry.swift
#	Sources/cmuxApp+CloudWorkspace.swift
…-12715-clipboard-paste-wedge

# Conflicts:
#	cmux.xcodeproj/project.pbxproj
The package test step now selects packages through
scripts/ci/select_package_tests.py and writes the selection under
RUNNER_TEMP. The harness ran the step without either, so the step exited
before invoking swift and the call log was never written.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…tion-duplicate-build

ci: reuse the shared build for notification semantics
* feat(cli): group help by task

* cli: restore task-oriented help output

* cli: localize task help text

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
austinywang and others added 13 commits September 21, 2026 02:27
…lay-core-rpc-v2

Restore scoped core RPC discovery over the SSH relay
…i#13147)

* Expose Claude and Codex team launchers in command palette

* Move launcher availability off the palette hot path

* Use existing localized launcher labels

* Isolate agent launcher availability tests

* Simplify agent launcher palette availability wiring

* Fence launcher availability by palette presentation

* Share command palette agent resolution

* fix: label Codex Teams launcher in palette

* fix: translate Codex Teams palette label

* fix: preserve main localization catalog during integration

* fix: resolve palette agent availability off main actor
Brings the Ivrix Hebrew/BIDI fork up to current cmux main, from the
previous base 015b603 (2026-07-26). Done as a real merge rather than a
re-apply onto a fresh base, so the next sync has an ancestor to merge from.

ghostty submodule moves to the matching merge on the fork
(manaflow ghostty c5c31ce8 + the 37 Hebrew/BIDI commits, Zig 0.16 ported).

Conflict resolution (17 files):
- Info.plist: rebuilt from upstream, then re-ran the Ivrix rebrand rule
  ("A program running within cmux" -> "... Ivrix", SUFeedURL -> Ivrix's
  appcast, ATSApplicationFontsPath = Fonts). Upstream had grown from 4
  such strings to 34, so re-running the rule beat patching the old text.
- ShortcutAction: upstream split `group` and `displayName` into
  ShortcutAction+Group.swift / +DisplayName.swift; toggleTextDirection
  re-added in all three files.
- SettingsNavigation: upstream moved SettingsSearchIndex to
  Sources/SettingsSearchIndex.swift; the two Ivrix rows follow it there.
- UpdateFeedResolver: kept upstream's hostArchitecture init, with the
  fallback defaulting to Ivrix's appcast, never upstream cmux's.
- GhosttyTerminalView: kept appliedHebrewFont, dropped the stale
  bellAudioSound field upstream replaced with TerminalBellService.
- project.pbxproj: took upstream and re-applied the 12 Ivrix entries
  (Fonts resource, HebrewAsciiQuotes + its tests). Version left at
  Ivrix 1.1.3 / 104 -- this is a sync, not a release.
- CHANGELOG: Ivrix entries stay on top of upstream's.
- TerminalSection, KeyboardShortcutSettings(+FileStore), cmux-shortcuts,
  cmux.schema.json, shortcut-actions.md, updater tests: both sides kept.

Verified so far: ghostty builds (GhosttyKit xcframework, zig 0.16) and
`zig build test-lib-vt` gives 5210/5245 with 54/54 bidi tests. The one
failure (kitty temporary file bool ABI) reproduces on clean upstream
c5c31ce8, so it is pre-existing and not from this merge.
Ivrix 1.1.3 had zero "cmux" left in InfoPlist.xcstrings values; the merge
brought in 321 new upstream permission strings across all locales, all
naming cmux. Same 4->34 pattern already handled in Resources/Info.plist.

Localizable.xcstrings needed nothing: Ivrix only rebrands 4 app-name keys
there (about.appName, dialog.quitCmux.title, menu.app.about, menu.quitCmux)
and all 4 are still Ivrix in all 19 locales after the merge. The other ~2500
body-copy strings mentioning cmux were deliberately left alone in 1.1.3.
…rtcut routing

Two compile breaks the merge could not see, both from upstream APIs that
grew after Ivrix 1.1.3:

- iconLabel() gained a required foregroundColor; the titlebar direction
  button now passes it like its neighbours.
- ShortcutAction gained dockShortcutRoutingDisposition, an exhaustive
  switch. toggleTextDirection is .mainContainer: it flips a global
  UserDefaults value (WorkspaceRuntimeSettings.toggleDirection) rather
  than acting on a surface tree, so it must not be Dock-scoped.
…acOS 26

The sidecar pinned Rust 1.88.0. On macOS 26 that toolchain emits host
proc-macro dylibs the system dyld refuses to load:

  dlopen(libserde_derive-*.dylib): mis-aligned LINKEDIT string pool
  error[E0463]: can't find crate for `thiserror_impl`

which fails the whole app build. Isolated it to MACOSX_DEPLOYMENT_TARGET,
which build-diff-sidecar.sh sets: with the variable unset 1.88.0 builds
fine, with ANY value (14.0, 15.0, 26.0) it fails. Rust 1.98.1 builds
cleanly with the deployment target set.

This file is untouched by Ivrix and identical to upstream cmux main, so
this is an upstream macOS 26 breakage rather than something the sync
introduced. Bumping it here because the app cannot otherwise be built on
a current macOS; drop this commit if you would rather hold the pin and
fix it upstream instead.
Upstream keeps adding buttons to the leading controls row, so each sync
pushed the direction toggle further toward the middle of the window and it
ended up cramped. It now lives in its own `.right` titlebar accessory,
pinned to the trailing edge, and the `buttonRowWidth` reservation hack it
needed in the leading row is gone.

Two things this needed that are easy to get wrong in a titlebar accessory:

- Vertical alignment. AppKit hands the accessory a full-height titlebar
  slot (32pt) but sizes the accessory from its own view's frame, so a
  button-height (28pt) view lands on the slot's bottom edge and reads as
  misaligned. The controller now takes the slot's height and centres the
  button inside it.
- Clicks. The symbol is backed by an NSImageView, which wins AppKit hit
  testing inside the accessory and swallowed the mouse-down before
  SwiftUI's Button saw it, so the toggle did nothing. The icon is
  decoration, so it is no longer hit-testable; the button's own
  contentShape owns the hit area. Verified by clicking the control and
  watching `terminal.textDirection` flip ltr -> rtl.

The accessory mirrors the leading row's view structure (a
TitlebarAccessoryContainerView wrapping the hosting view) because the
hosting view's hitTest only resolves a left-mouse-down through that path.

Claude-Session: https://claude.ai/code/session_01GC88h6yLLyAKizGSw2cgVJ
Sets the fork's own version. The upstream merge had carried cmux's
MARKETING_VERSION/CURRENT_PROJECT_VERSION (0.64.25 / 106) into the project
file; shipping that would have broken Sparkle's version comparison against
the 1.1.3 users already have, and named the build after upstream.

1.2.0 / 105 follows Ivrix 1.1.3 / 104.

Claude-Session: https://claude.ai/code/session_01GC88h6yLLyAKizGSw2cgVJ
Apple rejected the Ivrix 1.2.0 notarization (submission 949eb880) with 12
errors across exactly two paths, both new in this upstream sync and both
outside the inside-out signing loops:

  Contents/Library/cmux Computer Use.app/Contents/MacOS/cmux-cua
  Contents/Library/SystemExtensions/cmuxTunnel.systemextension/.../cmuxTunnel

The loops covered Resources/bin, PlugIns and Frameworks, so both stayed
ad-hoc signed: no Developer ID, no secure timestamp, no hardened runtime.

The Computer Use helper is now signed with the helper entitlements and
without --deep, matching step 2 of upstream's scripts/sign-cmux-bundle.sh.

The Cloud tunnel system extension is removed from the bundle instead, which
is what upstream's own script does whenever the profile lacks the
capability. Two independent reasons it cannot ship in Ivrix:

  1. TunnelExtension/*.entitlements hardcode cmux's team (7WLXT3NR37) and
     need a Developer ID NetworkExtension profile. Ivrix signs as
     Q2V86449AC and has none, so the extension could never activate.
  2. macOS rejects allow-unsigned-executable-memory and
     disable-library-validation on an app bundling a packet-tunnel system
     extension, and scripts/ivrix.entitlements needs both. Shipping it
     would break app launch, not just notarization.

Also adds a pre-flight audit that asserts every nested Mach-O carries the
Developer ID authority and the hardened runtime before anything is uploaded,
so a gap like this fails locally in seconds rather than after a multi-minute
round-trip through Apple's notary service. Non-Mach-O helpers are left to the
bundle seal, since signing a script stores the signature in an xattr that
Sparkle's BinaryDelta refuses to diff.

Claude-Session: https://claude.ai/code/session_01GC88h6yLLyAKizGSw2cgVJ
The appcast hardcoded 13.0, carried forward since Ivrix 1.0.0. Upstream raised
MACOSX_DEPLOYMENT_TARGET to 14.0 during the 2026-09 sync, so the shipped 1.2.0
bundle declares LSMinimumSystemVersion 14.0 and its Mach-O headers say
minos 14.0, while the feed still advertised 13.0.

Sparkle uses minimumSystemVersion to decide whether to offer an update at all,
so a macOS 13 machine would have been offered a build it cannot launch. Read it
from MACOSX_DEPLOYMENT_TARGET the same way the build number is read, so the
next floor change carries into the feed on its own.

Claude-Session: https://claude.ai/code/session_01GC88h6yLLyAKizGSw2cgVJ
@DananzMolt
DananzMolt merged commit bacfb3a into main Oct 15, 2026
25 of 58 checks passed
@DananzMolt
DananzMolt requested a deployment to cloud-vm-image-checks October 29, 2026 14:26 — with GitHub Actions Queued

This branch is being deployed

1 queued deployment
cloud-vm-image-checks — bacfb3ad Deployed Oct 29, 2026 by DananzMolt via reachable #16
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.

5 participants