Commit Graph
107 Commits
Author SHA1 Message Date
Jinwoo-H 15d19c308b feat(mobile): move mobile sessions and settings into the hosted page
Session snapshot/feed/activate/close/createBrowser/createTerminal,
quick commands and agent options now run as Desktop mobileWeb.* adapters
behind the generic host-request forwarder instead of shell translators.
Voice, notification, terminal, browser, chat, About and diagnostics
settings render as hosted page routes with native-*/web-* operation
backends. Adds the hosted WebView e2e journeys used to validate them.

Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb
2026-09-07 04:16:39 -04:00
Jinwoo-H 83f35c079b refactor(mobile): remove unshipped hybrid compatibility paths
Require the first-release hybrid baseline and remove 23 superseded shell operations, fallback adapters, and optional settings paths while preserving native RPC compatibility. Keep large Files, Source Control, and native-chat responses bounded in Desktop adapters, and serialize Terminal preference reads within bridge admission limits. Validate all code gates, rebuild and export, and pass serial iOS and Android adversarial journeys; record remaining domain work and certification gaps.
2026-09-06 23:45:53 -04:00
Jinwoo-H c25d2b50ff docs(mobile): audit unshipped hybrid compatibility paths
Identify removable hybrid fallbacks and shell branches while preserving native-client RPCs, SSH compatibility and active domain paths. Document the final hybrid baseline prerequisite and update the implementation scope. Audit only; runtime behavior is unchanged.
2026-09-06 22:35:12 -04:00
Jinwoo-H 6e949ece6c docs(mobile): reconcile validated OTA migration checkpoint
Record session/host forwarding, Terminal/About migrations, exact code and platform evidence, and remaining domain work. Defer additional crash-loop and resume enhancements under the requested YAGNI scope.
2026-09-06 21:34:07 -04:00
Jinwoo-H de45372b66 docs(mobile-web): reconcile verified OTA migration progress
Record integrated iOS recovery and preference evidence, focused commits and remaining host-scope, session, settings and OTA rollback work.
2026-09-06 20:56:58 -04:00
Jinwoo-H 9be7d26db9 feat(mobile-web): host chat preferences in the page
Reuse the Chat UI settings screen with paired-host page storage and grant-gated navigation. Verify persistence and theme rendering in the full iOS adversarial journey; retain native recovery presentation.
2026-09-06 20:32:21 -04:00
Jinwoo-H ca6c17a9cd feat(mobile): move native chat actions to host-advertised RPC
Resolve host-owned chat resources and reuse terminal.send for authenticated TUI actions. Feature-gate the page consumer on dispatch fencing, share the action deadline across binding and execution, and preserve unknown delivery without fallback after mutation dispatch. Keep native image and persistence capabilities and old shell/host paths. Record green gates and corrected iOS evidence.
2026-09-06 20:07:23 -04:00
Jinwoo-H 2b354df146 fix(mobile): authorize cataloged host adapters on Desktop
Use exact Desktop catalog membership and declared cleanup routes alongside the legacy mobile allowlist. Reproduce the forbidden adapter failure at authenticated dispatch, verify file-result privacy and future fields, and update the legacy unsubscribe census for generic cleanup syntax.
2026-09-06 19:52:32 -04:00
Jinwoo-H ceeacb1572 fix(mobile): revalidate generic requests at transport dispatch
Bound catalog and request lifetime and check page/workspace authority after connection waits. Fence retired physical requests across logical cutover, preserve existing response ambiguity, and advertise dispatch support without changing protocol 2. Record the discovered catalog authorization gap in the tracker.
2026-09-06 19:45:40 -04:00
Jinwoo-H bfb06bad72 feat(mobile): persist hosted page preferences per paired host
Add bounded native preference storage and route hosted AsyncStorage through it. Preserve namespace and credential isolation, serialize writes, and reject unavailable or corrupt storage. Remove the inert adapter and reconcile the implementation tracker with completed generic streams and platform evidence.
2026-09-06 19:34:44 -04:00
Jinwoo-H 041e40265b feat(mobile): forward native-chat feeds through generic subscriptions
Retain future transcript fields, validate host-owned bindings for every event, and use per-stream cleanup tokens. Preserve legacy host/shell fallback and cancellation semantics. Required gates and page export pass.
2026-09-06 19:08:04 -04:00
Jinwoo-H e14164f974 feat(mobile): read native chat through host-owned opaque resources
Scope resource handles to the connection, workspace and shell-injected page session. Desktop validates current chat bindings and retains future transcript fields; hosted reads use the generic lane with legacy fallback. All required gates and page export pass.
2026-09-06 19:01:27 -04:00
Jinwoo-H a0eee2fc21 feat(mobile): forward host-advertised subscriptions
Add bounded generic streams with Desktop cleanup metadata, direct and relay cancellation, and page-owned source-control invalidation. Preserve legacy fallback and protocol 2. Required code gates and page export pass; platform journeys remain tracked.
2026-09-06 18:45:47 -04:00
Jinwoo-H 42c031d85e fix(mobile-web): preserve chat bindings across unavailable host reads
Keep authority on failed or malformed tab snapshots. Exercise headless terminal file links through line-addressed hosted previews, since renderer-backed file tabs require a Desktop renderer. Record the observed native tap and host resolution evidence.
2026-09-06 18:31:37 -04:00
Jinwoo-H d39be4951d fix(mobile): repair hosted journey accessibility and route checks
Label standalone toolbar actions, match WebView accessibility values, and fence workspace return checks by pathname. Reuse Android labelled navigation and support adversarial journeys without native screenshot baselines. Record passing iOS file parity and the unresolved terminal file-link gate on both platforms.
2026-09-06 18:11:18 -04:00
Jinwoo-H 31024ff031 feat(mobile-web): serve page-safe file searches and text reads from desktop
Reuse host file methods behind Desktop-owned identity redaction and move list/text presentation into the hosted page. Preserve older shells and Desktop versions through legacy fallback, without changing the generic bridge contract.
2026-09-06 17:35:23 -04:00
Jinwoo-H a8bbed52da feat(mobile-web): move directory and chunk reads to the generic bridge
Advertise page-safe file reads from Desktop and project their raw results in the hosted page. Preserve legacy handlers and fallback for older shells and oversized replies. Track the remaining long-lived shell implementation and platform evidence.
2026-09-06 17:24:03 -04:00
Jinwoo-H d156826131 refactor(mobile): delete the mobile-web user-gesture window
The hybrid WebView required a recent native-observed touch before a bridge
capability could run. A scroll armed the window, so it gated nothing an
attacker on the first-party page could not already reach, and no peer hybrid
framework (Capacitor, Cordova, RN WebView) gates bridge calls this way.

Removes the gesture module, its React authority hook, the shared requirement
and its census, and all 20 gate sites: native.alert, clipboard write, external
link open, terminal text-scale and custom-key updates, dictation start and
model management, account select and reset-credit consume, agent-history
resume, terminal clipboard paste and image attach, navigation reconnect,
removeHost and terminal-settings route, and both workspace-creation writes.
Each operation now just runs.

The AppState foreground reporting the gesture hook also carried moves to
use-mobile-web-app-foreground-authority. permission_required stays in the
bridge error enum: it parses inbound responses, so narrowing it would break a
new page paired with an older shell.

Drops the G3 gesture-window e2e probe and renames its runner to
run-hosted-ios-webview-app-bound-probe.mjs, which keeps the app-bound probe.

Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb
2026-09-01 23:49:03 -04:00
Jinwoo-H 3b2b1c0b36 docs(mobile): correct the hybrid WebView records against the tree
The audit record claimed a declarative registry prototype covered Tasks, Files,
and Session and proved metadata, grants, and typed calls can be generated. No
prototype existed: bridge-operation-registry.ts was an operation-name list with
a capability enum and a membership check, consumed only by bridge-contract.ts
and one test. Withdraw the claim, reopen the checklist item, and add a
2026-09-01 addendum recording the cleanup this branch landed, referenced by
merge subject.

Also correct three factual conflicts with the code:

- The rollback runbook told support to direct users to the retained native
  workspace route while its own Safety Invariants said the hybrid candidate has
  no such fallback. Scope that step to the native-default build, since
  isRetiredNativeWorkspaceRoute redirects every /h/... workspace route to
  /hybrid in a hybrid build.
- The architecture reference described the Android network fence as load
  blocking only, omitted that a sub-threshold WebView process restart now
  retires the capability broker, and did not say that the Android bridge
  accepts a message on the origin host derived from activeSessionId with the
  fragment as a secondary check. Name the build scripts that run each delivery
  step while there.
- The remaining-work tracker did not record that the native store suites now
  run in CI, or that hosted-mobile-webview-ssh.spec.ts is excluded from the
  ubuntu e2e lane because no hosted runner has a simulator and Docker at once.

mobile/README.md needed no change: every entrypoint in its e2e and native store
tables resolves to a real script.

Claude-Session: https://claude.ai/code/session_01JNnE9qzUZMMnqpZWCqM3nb
2026-09-01 18:49:19 -04:00
Jinwoo-H cffec8a37a feat(mobile): make hybrid architecture an explicit build mode 2026-08-31 22:51:07 -04:00
Jinwoo-H 1f4401d9e8 fix(mobile): preserve hosted route recovery semantics 2026-08-30 23:41:08 -04:00
Jinwoo-H 7e4a23ba11 refactor(mobile): split hybrid host and browser surfaces 2026-08-30 17:44:00 -04:00
Jinwoo-H 4d2b71f593 fix(mobile): optimize hybrid package delivery and progress 2026-08-24 17:11:41 -04:00
Jinwoo-H 6e4507204f docs(mobile): record lifecycle hardening evidence 2026-08-23 20:36:40 -04:00
Jinwoo-H 9e2da765fa feat(mobile): complete hybrid parity hardening 2026-08-23 20:08:01 -04:00
Jinwoo-H e220fc6811 docs(mobile): reconcile hybrid audit evidence 2026-08-23 05:51:08 -04:00
Jinwoo-H bc99618482 docs(mobile): condense hybrid migration records 2026-08-23 05:20:05 -04:00
Jinwoo-H 06f23ec818 docs(mobile): plan hybrid simplification audit 2026-08-23 04:51:34 -04:00
Jinwoo-H 611428c9d5 Merge remote-tracking branch 'origin/main' into mobile-rearch
# Conflicts:
#	config/reliability-gates.jsonc
#	mobile/app/h/[hostId]/index.tsx
#	mobile/app/h/[hostId]/session/[worktreeId].tsx
#	mobile/app/h/[hostId]/tasks.tsx
#	mobile/app/index.tsx
#	mobile/package.json
#	mobile/pnpm-lock.yaml
#	mobile/src/browser/MobileBrowserPane.tsx
#	mobile/src/components/NewWorktreeModal.test.tsx
#	mobile/src/components/NewWorktreeModal.tsx
#	mobile/src/components/pr-sidebar/PRChecksSection.tsx
#	mobile/src/components/pr-sidebar/PRConflictingFilesSection.tsx
#	mobile/src/components/pr-sidebar/PRSidebarHeader.tsx
#	mobile/src/files/mobile-file-preview-source.test.ts
#	mobile/src/session/QuickCommandsSheet.test.ts
#	mobile/src/session/QuickCommandsSheet.tsx
#	mobile/src/session/mobile-file-tap-open.ts
#	mobile/src/session/mobile-session-route-types.ts
#	mobile/src/session/mobile-terminal-tab-agent.ts
#	mobile/src/session/use-mobile-diff-review-comment-actions.ts
#	mobile/src/session/use-mobile-diff-review-controller.ts
#	mobile/src/session/use-mobile-diff-review-send-actions.ts
#	mobile/src/session/use-mobile-native-chat-controller.ts
#	mobile/src/session/use-mobile-native-chat-drafts.test.ts
#	mobile/src/session/use-mobile-native-chat-drafts.ts
#	mobile/src/session/use-mobile-native-chat-message-send.ts
#	mobile/src/session/use-mobile-session-tabs-reconciliation.ts
#	mobile/src/session/use-quick-commands.ts
#	mobile/src/tasks/smart-source-paste-intent.ts
#	mobile/src/terminal/terminal-path-tap.ts
#	mobile/src/transport/host-removal-lifecycle.ts
#	mobile/src/transport/rpc-client.ts
#	package.json
#	src/main/browser/agent-browser-bridge.test.ts
#	src/main/browser/browser-screencast-stream.ts
#	src/main/daemon/headless-emulator.ts
#	src/main/native-chat/transcript-file-version.ts
#	src/main/native-chat/transcript-incremental-reader.ts
#	src/main/native-chat/transcript-tail-reader.ts
#	src/main/native-chat/transcript-watch-engine.ts
#	src/main/providers/filesystem-provider-contract.ts
#	src/main/providers/ssh-filesystem-provider.ts
#	src/main/providers/types.ts
#	src/main/runtime/orca-runtime-files.test.ts
#	src/main/runtime/orca-runtime-files.ts
#	src/main/runtime/orca-runtime.ts
#	src/main/runtime/rpc/methods/files.ts
#	src/main/runtime/rpc/terminal-multiplex.test.ts
#	src/relay/fs-handler.ts
#	src/renderer/src/components/ui/dialog.tsx
#	src/shared/terminal-quick-commands.ts
2026-08-21 03:46:22 -04:00
OrcaWin ce43d114be feat(mobile): cut over to hybrid workspace route 2026-08-09 18:35:02 -04:00
OrcaWin f480eb23c4 test(mobile): harden hosted Android touch activation 2026-08-09 18:35:02 -04:00
OrcaWin 5112aa837d test(mobile): stabilize hosted Android journey 2026-08-09 18:35:02 -04:00
OrcaWin 279a1ff68e test(mobile): complete hybrid adversarial validation 2026-08-09 18:35:02 -04:00
OrcaWin 158cd4a311 test(mobile): harden hosted terminal links 2026-08-09 18:35:01 -04:00
OrcaWin 352fc2e0cb test(mobile): validate hosted image metadata 2026-08-09 18:35:01 -04:00
OrcaWin 32fef856af test(mobile): validate hosted repository files 2026-08-09 18:35:01 -04:00
OrcaWin 00e443fef2 test(mobile): validate hosted adversarial content 2026-08-09 18:35:01 -04:00
OrcaWin 2b81179eca docs(mobile): reconcile Android privacy evidence 2026-08-09 18:35:01 -04:00
OrcaWin edc215d1a3 test(mobile): audit Android hosted privacy 2026-08-09 18:35:01 -04:00
OrcaWin ed31999634 test(mobile): prove automatic package rollback 2026-08-09 18:35:01 -04:00
OrcaWin cb86bcc766 test(mobile): audit hosted page privacy 2026-08-09 18:35:01 -04:00
OrcaWin b87bfae972 docs(mobile): record hosted isolation validation 2026-08-09 18:35:01 -04:00
OrcaWin d6b8b14c82 fix(mobile): isolate hosted credential authority 2026-08-09 18:35:01 -04:00
OrcaWin 8ee4fcdac1 fix(mobile): redact hosted privacy surfaces 2026-08-09 18:35:01 -04:00
OrcaWin f2a6a5d8b6 fix(mobile): reject page-owned package persistence 2026-08-09 18:35:01 -04:00
OrcaWin 64f28fcb2f test(mobile): expand native cache concurrency 2026-08-09 18:35:01 -04:00
OrcaWin b2068661f7 fix(mobile): bind hosted mutations and responses 2026-08-09 18:35:01 -04:00
OrcaWin 1560c4890f fix(mobile): harden shell response admission 2026-08-09 18:35:00 -04:00
OrcaWin b956d701a9 chore(mobile): record latest main rebase 2026-08-09 18:35:00 -04:00
OrcaWin e526780848 fix(mobile): harden bridge message lifecycle 2026-08-09 18:35:00 -04:00