Files
nucleic-remote-ios/NucleicRemote/README.md
T
abkslmandNucleic 6ff0a3fb91 Remove Face ID Permission Text
Nucleic-Session: 3EF7F067-2199-41C2-997C-5546C1A8A5C4
Co-authored-by: Nucleic <[email protected]>
2026-07-04 23:31:40 -07:00

40 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# NucleicRemote (iPhone client)
The thin iOS remote client for Nucleic (PLAN milestone **M4**). It's a pure projection of the
Mac host over LAN: monitor sessions, read transcripts/diffs, **answer approvals**, and send
follow-up input — scope `approve`. No local git or CLI; the Mac is the single authority
(see [`docs/UX_IOS.md`](../../docs/UX_IOS.md) and [`docs/SYNC_PROTOCOL.md`](../../docs/SYNC_PROTOCOL.md)).
## Architecture
All wire/crypto logic is shared with the Mac via the **`NucleicProtocol`** SwiftPM library
(this Xcode project links it as a local package at `../..`):
- **Transport** — `NWFrameChannel` (NWConnection) + `LANDiscovery` (Bonjour `_nucleic._tcp`).
- **Engine** — `NucleicProtocol.SyncClient` runs the Noise handshake (XXpsk0 to pair, IK to
reconnect), exchanges hello/welcome, and turns `HostMsg`s into a `SyncClient.Event` stream.
- **State** — `RemoteStore` (`ObservableObject`) is the single on-device UI state, a pure
projection of the host. Identity + pinned host live in `IdentityStore` (Keychain + UserDefaults).
- **UI** — SwiftUI: `SessionsView` (attention-first list), `SessionDetailView`
(transcript/diff + status-driven action area), `ApprovalCardView` (approve/deny,
high-risk answered in-app), `PairingScannerView` (QR), `SettingsView`.
## Build & run
```sh
# Resolves the local NucleicProtocol package automatically.
xcodebuild -project ios/NucleicRemote/NucleicRemote.xcodeproj \
-scheme NucleicRemote \
-destination 'platform=iOS Simulator,name=iPhone 17 Pro' build
```
Or open `NucleicRemote.xcodeproj` in Xcode and run. To pair, start the sync server on the Mac
(Nucleic ▸ Settings ▸ Add iPhone shows the QR), then scan it. On a real device, both must be
on the same Wi‑Fi.
## Status
The full pair → list → subscribe → approve → reconnect path is implemented and the protocol/
server side is covered by tests in `Tests/NucleicProtocolTests` and `Tests/NucleicCoreTests`.
Push notifications / Live Activity (UX_IOS §5.1/§5.3) are the M5 follow-up (needs the relay).