Skip to content

moriremote: restore the full pane-native terminal experience - #112

Merged
vaayne merged 22 commits into
rewrite/moriremote-remuxfrom
rewrite/moriremote-remux-full
Aug 1, 2026
Merged

moriremote: restore the full pane-native terminal experience#112
vaayne merged 22 commits into
rewrite/moriremote-remuxfrom
rewrite/moriremote-remux-full

Conversation

@vaayne

@vaayne vaayne commented Aug 1, 2026

Copy link
Copy Markdown
Owner

What

  • replace the initial compact MoriRemote terminal shell with the full pane-native remux terminal runtime
  • add retained window/pane surfaces, local scrollback, selection/copy, IME-safe input, keyboard chrome, searchable server/session/window/pane navigation, and explicit shared tmux mutations
  • discover live tmux sessions from saved SSH servers and add authenticated, atomic photo/clipboard image upload
  • preserve Mori persistence, TOFU/authentication, pooled SSH roots, grouped shadow isolation, server-authoritative grids, iOS 17/iPad support, and TestFlight version contracts

Stack

  • depends on #110
  • durable GhosttyKit infrastructure was split and merged independently in #111

Architecture cleanup

The branch began from the behavior-complete transplant, then removed superseded pane preview/selection capture, one-adapter modeling protocols, the one-caller screen-model facade, test fixtures from the production target, excluded composer completion plumbing, producerless tracing, unread runtime revision signaling, and manual workspace persistence paths.

The remaining deep modules own real state machines. SSH discovery, terminal control, and image upload now share one concrete app-owned authenticated-root recipe while retaining operation-owned TOFU retries.

Verification

  • MoriRemote: 54 tests in 7 suites
  • MoriRemoteTerminal: 217 XCTest cases
  • generic iOS Release build
  • isolated simulator smoke after terminal ownership cleanup
  • unsigned archive and payload verification from the behavior-complete branch
  • multiple internal TestFlight/device iterations

No new TestFlight build is published without explicit approval.

vaayne added 22 commits August 1, 2026 22:36
The app-owned searchable Navigator is now the sole window/pane browser. Delete the unreachable upstream selection sheets, pixel capture/cache, picker-grid resizing, and their tests while retaining renderer-frame publication for safe presentation and scroll-state refresh.
Let the public facade directly own the terminal session and concrete screen adapter. Remove one-adapter modeling protocols, dead topology identities/refocus policies, excluded tracked-composer input, test fixtures from the production target, and tracing flows that had no producer.
Make the retained runtime the observable authority for status, topology, and metadata. Remove the unread revision counter, manual change relay, dead reconnecting state, and identity passthrough; cover direct observation through runtime shutdown.
Resolve library material, credentials, canonical endpoints, pool identity, Citadel connection, and host trust in one concrete app-owned module. Discovery, terminal control, and image upload now consume the same lazy root source while retaining operation-owned TOFU retries.
Server profiles now model only server and SSH identity input. Remove the unused workspace draft, profile-workspace optional branch, direct workspace save/delete APIs, and tautological tests while preserving migrated/discovered workspace IDs and recency.
Give generic SSH leases their own reusable/invalidated disposition and map the terminal facade vocabulary only inside SSHTmuxControlTransport. SSH pooling no longer imports the terminal module.
Delete the composer-only pane current-directory query, unrendered readiness/status projections, dead disconnect state, and redundant facade observation/presentation channels. Keep only the active viewport and input state consumed by MoriRemote.
@vaayne
vaayne merged commit 9390499 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