Pull requests / #3347
#3347 [GUI] Add opt-in Mac pairing and shared iPhone conversations
open · draft · @jorge123255 · 0 comments · View on GitHub
Setup & installAMD / HIPSecurityWindowsLinux
Description
## Problem and result A Mac conversation currently cannot be securely reopened and continued by a paired native iPhone client. This adds opt-in **Pair iPhone** in the sidebar and Settings, plus shared history, existing-session continuation, visible Thinking/progress, browser/tool activity, approvals and Stop. Closing the phone leaves the Mac's work running. ## Related discussion Scope proposal: #3346. Maintainer agreement is pending; this PR is a draft for scope and implementation discussion. The native iPhone client is submitted separately in #3348 and depends on this API. Both branches start from the same upstream base so their diffs can be reviewed independently; the client needs this Mac support at runtime. ## Approach - Keep the inference host on loopback. Start the companion's authenticated HTTPS listener only after explicit enablement; use certificate-pinned, expiring one-use invitations and revocable per-device token hashes. - Import desktop history after opt-in and persist a shared catalog independently of any connected screen. Stable chat/message IDs, revision checks, deletion tombstones and turn-bound callbacks prevent stale caches or delayed work from replacing a newer turn. A conversation already running before first enablement is imported when that response finishes. - Continue with the Mac chat's existing model, folder and permissions. Expose only bounded controls and display data; omit provider configuration, raw tool arguments and runtime protocol. Existing private phone-only routes remain compatible. Paired devices are trusted to read the shared catalog and answer its pending approvals. - Stage the bridge and a local Core Image QR helper through normal desktop builds. Packaged Python disables bytecode writes to preserve signed application contents; source Python behavior is unchanged. ## Validation Fresh checks at **818ecf4c**, based on upstream **e88ee39d**, on **macOS 26.5 arm64, Node 24.12.0, Xcode 26.6**. Host dependencies matched the existing lockfile installation. **Passed:** ```sh /Applications/Strata.app/Contents/Resources/node/node --test apps/companion-bridge/test/*.test.mjs # 23 passed, 0 failed, 0 skipped STRATA_HARNESS_DIR=/Applications/Strata.app/Contents/Resources/harness \ /Applications/Strata.app/Contents/Resources/node/node --test \ apps/host/tests/conversations.test.mjs \ apps/host/tests/conversation-migration.test.mjs \ apps/host/tests/conversation-agent.test.mjs \ apps/host/tests/conversation-events.test.mjs \ apps/host/tests/conversation-routes.test.mjs \ apps/host/tests/companion.test.mjs \ apps/host/tests/companion-routes.test.mjs \ apps/host/tests/packaged-python-cache.test.mjs # 48 passed, 0 failed, 0 skipped npm --prefix apps/host run typecheck npm --prefix apps/desktop run build:ui git diff --check ``` The focused host run includes real shipped Harness session continuity/detach with scripted inference, private event/origin restrictions, no capture before opt-in, migration during an active response, stale-turn/Stop races, reasoning timing, and real bundled-Python cache isolation. The UI build also compiled and signed the QR helper. Its existing large-chunk warning remains. **Failed:** None in the fresh checks above. Earlier broad full-feature development runs had nine failure locations reproduced on their clean dependency-matched baseline; this PR does not claim a clean complete host suite. **Not run:** The full host suite on this split revision; fresh Tauri app/installer packaging, Developer ID signing or notarization; Windows/Linux desktop acceptance; physical iPhone interaction against this exact split branch; native local-model inference. No engine/GPU backend code changes or performance claims are included. ## Limits Initial support is local-network Mac pairing. Polling follows the selected conversation while the phone is active. Browser cards show actions and results rather than browser pixels. Earlier installed full-feature fork checks are separate from acceptance of these split upstream revisions. Release packaging and the permission/API boundary need maintainer review before this draft is ready.
Related on this site
Quick links to related pages.