diff --git a/.beads/interactions.jsonl b/.beads/interactions.jsonl index 395125dd..7822c2d9 100644 --- a/.beads/interactions.jsonl +++ b/.beads/interactions.jsonl @@ -89,3 +89,8 @@ {"id":"int-8e8ab2a4601a3c3d73c09c8ad1ab17b4","kind":"field_change","created_at":"2026-08-28T06:46:02.527491Z","actor":"Val Alexander","issue_id":"psyche-no8.5","extra":{"field":"priority","new_value":"2","old_value":"1"}} {"id":"int-b7f19455f48eecf27b4aa012c85ab747","kind":"field_change","created_at":"2026-08-28T06:46:04.876953Z","actor":"Val Alexander","issue_id":"psyche-310","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Completed by #204 and #203: protected desktop-only release run 32629730508 published and verified v0.0.1 without requiring iOS distribution."}} {"id":"int-49d6f1ea2465d83b830d87cc5922f351","kind":"field_change","created_at":"2026-09-04T10:17:58.315005Z","actor":"Val Alexander","issue_id":"psyche-z7c.4.4","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Delivered by PR #281 (merge 91ed042c): the debug-authorized rendering stress harness is on main and mirror #230 closed on merge. Source-first repair for the state_mismatch recorded in #342."}} +{"id":"int-d2cd0ef411e900bd9abfa94ccdb9fae4","kind":"field_change","created_at":"2026-09-10T10:45:29.560433Z","actor":"Val Alexander","issue_id":"psyche-i7c.9.2","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Merged PR #429 (feat/ios-pane-actions-guarded-confirmations): native pane action menu with guarded confirmations for merge, create PR, stop, close/cleanup, rename, files, rituals. Cleanup routed through PaneAction.CLOSE. iOS Core + iOS app CI green, code review finding addressed (fixture-mode wiring), 36 UI/unit tests passing."}} +{"id":"int-e2e6a1138765177bdc9006dd4ba914f1","kind":"field_change","created_at":"2026-09-10T10:46:00.39582Z","actor":"Val Alexander","issue_id":"psyche-i7c.9.3","extra":{"field":"status","new_value":"in_progress","old_value":"open"}} +{"id":"int-daf70bed1a939e709abc15f69c44b9be","kind":"field_change","created_at":"2026-09-10T10:47:08.39683Z","actor":"Val Alexander","issue_id":"psyche-i7c.10.1","extra":{"field":"status","new_value":"in_progress","old_value":"open"}} +{"id":"int-301b9fceea61d17bf7501a908d5f3560","kind":"field_change","created_at":"2026-09-11T00:01:40.967468Z","actor":"Val Alexander","issue_id":"psyche-i7c.10.1","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"PR #432 merged with bounded protected workspace cache, explicit cache projection, exact host isolation, corrupted-cache recovery, atomic protected persistence, and passing focused/non-UI/CI validation; physical-device pre-first-unlock enforcement remains a documented acceptance proof gap."}} +{"id":"int-5ae3b5cede6dcfd4e50fd8c1d6a84bec","kind":"field_change","created_at":"2026-09-11T00:19:26.762412Z","actor":"Val Alexander","issue_id":"psyche-i7c.9.3","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"PR #436 merged after independent review approval, full iOS suite/CI green, and implementation of host-driven merge confirmation and PR review workflows with cancellation, editing, related-file navigation, and fixture coverage."}} diff --git a/native/ios/PsycheApp/Sources/PsycheApp/Views/ActionSheetView.swift b/native/ios/PsycheApp/Sources/PsycheApp/Views/ActionSheetView.swift index db5d494d..43abf00e 100644 --- a/native/ios/PsycheApp/Sources/PsycheApp/Views/ActionSheetView.swift +++ b/native/ios/PsycheApp/Sources/PsycheApp/Views/ActionSheetView.swift @@ -69,6 +69,7 @@ struct ActionSheetView: View { Text(row.value) .multilineTextAlignment(.trailing) .textSelection(.enabled) + .accessibilityIdentifier("remote-action-scope-\(row.key)") } label: { Text(row.label) } diff --git a/native/ios/PsycheApp/Tests/PsycheAppUITests/PsycheAppUITests.swift b/native/ios/PsycheApp/Tests/PsycheAppUITests/PsycheAppUITests.swift index f9a9c61b..a0d43f11 100644 --- a/native/ios/PsycheApp/Tests/PsycheAppUITests/PsycheAppUITests.swift +++ b/native/ios/PsycheApp/Tests/PsycheAppUITests/PsycheAppUITests.swift @@ -579,9 +579,10 @@ final class PsycheAppUITests: XCTestCase { let host = app.staticTexts["psyche-demo.local"] reveal(host, in: sheet) XCTAssertTrue(host.waitForExistence(timeout: 10)) - let paneID = app.staticTexts["web-home"] + let paneID = element("remote-action-scope-paneId", in: app) reveal(paneID, in: sheet) XCTAssertTrue(paneID.waitForExistence(timeout: 10)) + XCTAssertEqual(paneID.label, "web-home") tapControl("Cancel", in: app) @@ -601,6 +602,7 @@ final class PsycheAppUITests: XCTestCase { XCTAssertTrue(control("AI commit (automatic)", in: app).waitForExistence(timeout: 10)) XCTAssertTrue(control("Manual commit message", in: app).waitForExistence(timeout: 10)) XCTAssertTrue(control("Cancel merge", in: app).waitForExistence(timeout: 10)) + revealControl("Cancel", in: app) XCTAssertFalse(control("Cancel", in: app).exists) tapControl("Cancel merge", in: app)