Skip to content

Rewrite MoriRemote on the remux architecture - #110

Merged
vaayne merged 10 commits into
mainfrom
rewrite/moriremote-remux
Aug 1, 2026
Merged

Rewrite MoriRemote on the remux architecture#110
vaayne merged 10 commits into
mainfrom
rewrite/moriremote-remux

Conversation

@vaayne

@vaayne vaayne commented Jul 31, 2026

Copy link
Copy Markdown
Owner

Summary

  • replace MoriRemote's SSH PTY + SwiftTerm + tmux polling architecture with a pane-native remux adaptation built on Citadel, tmux control mode, and Mori's universal GhosttyKit runtime
  • preserve legacy profiles, UUIDs, credentials, recent ordering, bundle identity, iOS 17, and iPad support through an idempotent non-destructive migration
  • add explicit TOFU host-key trust, password/private-key auth, tmux 3.2 grouped shadow sessions, active-pane,ignore-size isolation, bounded local history, native selection/input/IME, reconnect fencing, and Mori agent-state projection
  • replace the legacy app shell with adaptive iPhone/iPad library/setup/terminal flows and remove SwiftTerm plus the old coordinator/runtime dependencies
  • harden CI/TestFlight with Swift Testing, machine-verifiable simulator rendering, archive inspection, privacy manifest, provenance, and bundled third-party notices

Durable GhosttyKit production/publication infrastructure was split into and merged through #111. This PR now contains only the MoriRemote consumer and runtime changes.

Architecture and safety

  • MoriRemoteTerminal is the sole native Ghostty/tmux owner; the app target retains persistence, credentials, TOFU, SSH roots, and product UI
  • mobile navigation is client-local; no phone-driven refresh-client -C, remote zoom, or server copy-mode browsing
  • shared split/close/new-window mutations are explicit; stale server copy mode is cancelled only immediately before actual input
  • unknown/changed host keys fail closed
  • old runtime callbacks and native surfaces are fenced by immutable runtime IDs and unregister completion
  • macOS and MoriRemote consume the same source-pinned universal GhosttyKit artifact built by the merged ghostty: split durable artifact infrastructure #111 workflow
  • TestFlight remains pinned to marketing version 0.3.5

Verification

  • mise run test
  • swift build -c release --product Mori
  • swift build --build-path .build-cli -c release --product mori
  • CI=1 bash scripts/bundle.sh
  • mise run ios:test
  • iPhone and iPad Release simulator builds
  • mise run ios:run with process/crash checks and MORI_GHOSTTY_PROBE_RESULT success=true
  • unsigned 0.3.5 archive + scripts/verify-moriremote-archive.sh
  • Fable architecture and phase reviews: approved

Pre-publish gates

These do not block code review, but must block TestFlight publication:

  • run real password/private-key host smoke for shell, vim, agent TUI, input, paste, selection, resize, and reconnect
  • run the two-client desktop isolation checklist
  • perform a signed current-TestFlight-data upgrade and rollback rehearsal

@gitguardian

gitguardian Bot commented Jul 31, 2026

Copy link
Copy Markdown

️✅ There are no secrets present in this pull request anymore.

If these secrets were true positive and are still valid, we highly recommend you to revoke them.
While these secrets were previously flagged, we no longer have a reference to the
specific commits where they were detected. Once a secret has been leaked into a git
repository, you should consider it compromised, even if it was deleted immediately.
Find here more information about risks.


🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.

@vaayne
vaayne force-pushed the rewrite/moriremote-remux branch from b8a74e0 to d037925 Compare July 31, 2026 21:35
@vaayne
vaayne force-pushed the rewrite/moriremote-remux branch from db15bf6 to 3efb297 Compare August 1, 2026 14:35
@vaayne
vaayne merged commit a5da156 into main Aug 1, 2026
5 checks passed
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