M-5: webview HUD camera button — typed Vision.requestFrameAttach call (atomic with Swift) #124

Open
opened 2026-05-12 19:37:20 +00:00 by KofTwentyTwo · 0 comments
KofTwentyTwo commented 2026-05-12 19:37:20 +00:00 (Migrated from github.com)

Goal

Webview HUD camera button switches from frameAttachRequested inbound emit to typed Vision.requestFrameAttach call expecting Result. ATOMIC commit with Swift surface in same feature branch. Old frameAttachRequested kept as deprecated alias for one release. Rebuild webview/dist/.

Scope

  • Webview HUD camera button onClick: vision.requestFrameAttach()
  • Handles Result.success (UI confirms armed) vs .failure (UI shows permission denied)
  • Old frameAttachRequested inbound case stays as deprecated alias (App/AppDelegate.swift:2115-2117)
  • bash scripts/build-webview.sh rebuilds webview/dist/ (committed alongside Swift)

Files

  • webview/src/... (Vision API call)
  • webview/dist/ (rebuild + commit)
  • App/AppDelegate.swift:2115-2117 (keep deprecated alias)

Acceptance

  • Webview camera button triggers typed Vision call
  • Result.success/failure both rendered in UI
  • webview/dist/ matches bash scripts/build-webview.sh output (parity gate)
  • Deprecated frameAttachRequested inbound alias still works as fallback

Test

S-VIS-001 non-skippable in .jsonRoundTripWebView mode — this is the B-03 dissolution gate.

Parent epic

#9

Source

.planning/architecture/JARVIS-API-MIGRATION-PLAN.md §2.6 (M-5.4) + §4 webview lockstep choreography
.planning/architecture/REVIEW-MIGRATION-RISK.md R-015 partial

## Goal Webview HUD camera button switches from frameAttachRequested inbound emit to typed Vision.requestFrameAttach call expecting Result. ATOMIC commit with Swift surface in same feature branch. Old frameAttachRequested kept as deprecated alias for one release. Rebuild webview/dist/. ## Scope - Webview HUD camera button onClick: `vision.requestFrameAttach()` - Handles `Result.success` (UI confirms armed) vs `.failure` (UI shows permission denied) - Old `frameAttachRequested` inbound case stays as deprecated alias (App/AppDelegate.swift:2115-2117) - `bash scripts/build-webview.sh` rebuilds `webview/dist/` (committed alongside Swift) ## Files - `webview/src/...` (Vision API call) - `webview/dist/` (rebuild + commit) - `App/AppDelegate.swift:2115-2117` (keep deprecated alias) ## Acceptance - [ ] Webview camera button triggers typed Vision call - [ ] Result.success/failure both rendered in UI - [ ] `webview/dist/` matches `bash scripts/build-webview.sh` output (parity gate) - [ ] Deprecated `frameAttachRequested` inbound alias still works as fallback ## Test `S-VIS-001` non-skippable in `.jsonRoundTripWebView` mode — this is the B-03 dissolution gate. ## Parent epic #9 ## Source `.planning/architecture/JARVIS-API-MIGRATION-PLAN.md` §2.6 (M-5.4) + §4 webview lockstep choreography `.planning/architecture/REVIEW-MIGRATION-RISK.md` R-015 partial
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/Jarvis#124