Skip to content

feat(ios): Lisa Pocket — native SwiftUI companion app (compile-verified)#122

Merged
oratis merged 1 commit into
mainfrom
feat/ios-app
Jun 19, 2026
Merged

feat(ios): Lisa Pocket — native SwiftUI companion app (compile-verified)#122
oratis merged 1 commit into
mainfrom
feat/ios-app

Conversation

@oratis

@oratis oratis commented Jun 19, 2026

Copy link
Copy Markdown
Owner

Stacked on #120#119#117#115#114#113. Retarget to main as the stack merges.

What

Lisa Pocket — the native SwiftUI iOS companion the plan called for, now a compile-verified app at packaging/ios-companion/. It's a thin client to your Mac's lisa serve --web, consuming the iOS-facing backend from the rest of this stack.

  • Dispatch — roster from /api/agents/sessions + live /events SSE; rows keyed off controllable / resumable; per-session control: managed approve/deny · send · cancel; PTY send · output · cancel; adopt (resume) for idle claude sessions (surfaces the server's 409 live / 403 policy responses).
  • Chat — streams POST /chat.
  • Settings — pairing (paste lisa-pair://… / ?token= → Keychain), ntfy push registration, read-only remote-control-policy view.
  • Net layer (LisaClient, SSE parser, Models) mirrors src/integrations/types.ts.

How it's built / verified

  • Project generated from project.yml via XcodeGen (the .xcodeproj + generated Info.plist are git-ignored — project.yml + Sources/ are the source of truth).
  • ./build.sh runs xcodegen generate + xcodebuild for the iOS Simulator (no code signing).
  • Verified: ** BUILD SUCCEEDED ** against the iOS 26.5 SDK with Xcode 26.5, reproducibly from clean sources via ./build.sh (I removed the generated artifacts and rebuilt). Modeled on the Markup project's native-iOS layout; production/App-Store signing is a separate pipeline (out of scope here, like Markup's EAS flow).

Not yet (follow-ups)

🤖 Generated with Claude Code

packaging/ios-companion/ — a native iOS app consuming the iOS-facing backend (#113#119): Dispatch roster from /api/agents/sessions + live /events SSE; per-session control (managed approve/deny/send/cancel, pty send/output/cancel, resume-adopt of idle claude sessions, handling the 409/403 the server returns); chat over /chat SSE; settings (pairing → Keychain, ntfy push register, control-policy view). The Net layer mirrors src/integrations/types.ts.

Project is generated from project.yml via XcodeGen (not committed); build.sh runs xcodegen + xcodebuild for the simulator (no signing). VERIFIED: BUILD SUCCEEDED against the iOS 26.5 SDK with Xcode 26.5 (reproducibly via ./build.sh).

Follow-ups: Live Activity / Dynamic Island + Widgets (widget-extension target), APNs (ntfy works today), QR scanner (paste pairing string for now).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@oratis oratis changed the base branch from docs/ios-plan-sync to main June 19, 2026 05:08
@oratis oratis merged commit e929af8 into main Jun 19, 2026
1 check passed
@oratis oratis deleted the feat/ios-app branch June 19, 2026 05:09
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