Commit Graph

289 Commits

Author SHA1 Message Date
gsxdsm a19e16f718
fix: Android terminal text overflow and stale viewport after unfold
Fix Android terminal text overflow and stale foldable viewport handling.

- Pin terminal WebView textZoom so Android system font scale cannot inflate xterm glyphs past measured cells.
- Refit mobile terminal viewport on window dimension changes for fold/unfold, rotation, and split-screen.
- Harden viewport refit fallback handling for stale async runs and updateViewport responses.

Fixes #4579
2026-06-04 02:38:57 -04:00
Hüseyin Serkan Özaydin 4fc28da450
added horizontal screen support (#4316)
Co-authored-by: hsmnzaydn <serkan.ozaydin@applixus.com>
2026-06-03 19:08:41 -04:00
Neil 6dc779c4f4
Address react doctor warnings 2026-06-03 12:48:00 -07:00
Jinwoo Hong aa8451b3e9
Fix mobile Linear issue list parsing (#4576)
Co-authored-by: Orca <help@stably.ai>
2026-06-03 11:06:43 -07:00
Jinwoo Hong 8959535f1b
Auto-dismiss agent notifications on acknowledgement (#4518)
Co-authored-by: Orca <help@stably.ai>
2026-06-02 18:01:23 -07:00
Neil 45aea830ed
Enforce mobile max-lines budgets (#4516) 2026-06-02 15:44:08 -07:00
Jinwoo Hong 46a66dd64a
Prepare mobile 0.0.11 build 2 (#4422)
Co-authored-by: Orca <help@stably.ai>
2026-06-01 17:35:55 -07:00
Jinwoo Hong 5ab1fe09b9
Fix mobile Tailnet pairing (#4415)
Co-authored-by: Orca <help@stably.ai>
2026-06-01 17:30:10 -07:00
Neil 41bf76aef2
chore: gate high-signal react doctor rules
Adds a focused React Doctor oxlint gate for high-signal state/effect rules, disables the noisy js-combine-iterations React Doctor rule, and refactors the mobile new-worktree modal away from prop-change state reset effects.
2026-05-31 22:35:15 -07:00
Neil 6f60541130
Make mobile lint inherit root policy
Squashed from PR #4353.
2026-05-31 21:58:17 -07:00
Neil 0bb62b9d29
Add braces to mobile control flow (#4351) 2026-05-31 21:32:37 -07:00
Jinwoo Hong 319087e5db
Prepare mobile 0.0.11 for iOS
Bump mobile app version to 0.0.11 for iOS App Store submission.
2026-05-31 23:58:59 -04:00
Jinwoo Hong b555e66598
Keep migrated mobile shortcut order canonical (#4349)
Co-authored-by: Orca <help@stably.ai>
2026-05-31 20:48:34 -07:00
Jinwoo Hong a34a6bec7e
Add mobile terminal Space shortcut (#4335)
Co-authored-by: Orca <help@stably.ai>
2026-05-31 20:35:31 -07:00
Neil 12d75587a5
fix: ignore stale mobile socket events 2026-05-31 09:43:36 -07:00
Neil 71d6a30b09
perf: move mobile session cache cleanup to root ref 2026-05-31 09:35:57 -07:00
Neil 7a92f9b4b8
perf: move pair scan cleanup to root ref 2026-05-31 09:28:31 -07:00
Neil 8db35593b5
fix: handle malformed mobile diagnostic endpoints 2026-05-31 09:24:07 -07:00
Neil 38d3b1d458
perf: move mobile session timer cleanup to root ref 2026-05-31 09:18:21 -07:00
Neil 853fa454ef
fix: honor mobile rpc timeout while reconnecting 2026-05-31 09:15:46 -07:00
Neil 8e34b33930
perf: move mobile source control cleanup to root ref 2026-05-31 09:13:26 -07:00
Neil ef5f818978
perf: move troubleshoot cleanup to root ref 2026-05-31 09:09:45 -07:00
Neil 990d371d4e
perf: move pair confirm cleanup to root ref 2026-05-31 09:01:50 -07:00
Neil f0141a1d1f
perf: move mobile task copy cleanup to root ref (#4224) 2026-05-31 08:50:56 -07:00
Neil 0cfb3d3962 Move mobile session ref mirrors out of effects 2026-05-31 05:06:11 -07:00
Neil 81f4559049
perf: bound mobile terminal WebView queues
Bounds the mobile terminal WebView pre-ready write backlog, avoids Array.shift() in the embedded xterm write drain, disposes old xterm observers, and clears successful fallback timers.
2026-05-31 04:23:39 -07:00
Neil 49153d933f
perf: cap mobile dictation audio backlog (#4078) 2026-05-31 03:33:00 -07:00
Neil 1bb7073f23
fix: clean mobile session delayed timers (#4075) 2026-05-31 03:26:26 -07:00
Neil 7fa23737ad
perf: stream mobile PR diff previews (#4071)
Stream capped mobile PR file diff previews while preserving exact total row counts.
2026-05-31 03:21:57 -07:00
Neil 255bb24c37
perf: cap mobile diff preview rows (#4067) 2026-05-31 03:14:29 -07:00
Neil 8acb47cede Derive mobile session create warning before paint 2026-05-31 03:11:53 -07:00
Neil 49af39f68b
perf: trim android audio hot path work (#4062) 2026-05-31 03:08:21 -07:00
Neil 5c37ddfca8
perf: clean mobile diagnostic fetch timeout (#4063) 2026-05-31 03:02:14 -07:00
Neil 2067bebf50
perf: clean up mobile pairing attempts (#4058) 2026-05-31 02:58:24 -07:00
Neil 8757e6c724
perf: avoid duplicate mobile terminal setting updates (#4056) 2026-05-31 02:52:41 -07:00
Neil 11fa033170
perf: memoize mobile tasks derived data (#4054) 2026-05-31 02:46:31 -07:00
Neil 361240a757
perf: defer hidden picker option rows
Moves PickerModal row rendering into a child component so hidden BottomDrawer pickers avoid mapping option rows on parent renders.
2026-05-31 02:41:55 -07:00
Neil fcd267a309
perf: clean mobile live input focus timer (#4050) 2026-05-31 02:36:49 -07:00
Neil a83afd5a11
perf: guard mobile session toast timers (#4048) 2026-05-31 02:30:19 -07:00
Neil 549ab29489
perf: clean mobile task copy feedback timers (#4047) 2026-05-31 02:27:58 -07:00
Neil 3fda981dc7
perf: pause mobile session fallback polling (#4045) 2026-05-31 02:24:03 -07:00
Neil 69ec6a9c92
perf: pause mobile host polling when hidden (#4043) 2026-05-31 02:19:24 -07:00
Neil 35e1c221a9
perf: reject mobile rpc waiters after retry cap (#4041) 2026-05-31 02:12:53 -07:00
buf0-bot[bot] aa5d911c36
fix: address pr-bug-scan validated finding from #3583 (#3856)
Removed duplicate 'openclaude' entry at index 3 of MOBILE_TUI_AGENT_AUTO_PICK_ORDER so mobile pickers no longer render two OpenClaude rows or emit duplicate-key warnings.

Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-05-31 01:49:27 -07:00
Neil be2dfe4bac
fix: drop mobile notification stream on cleanup (#2887) 2026-05-30 20:17:45 -07:00
Neil 68ad291d3d
Resolve bottom drawer mount before commit (#3226)
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
2026-05-30 19:26:00 -07:00
Neil 3dbc38f4f3
Resolve mobile browser address sync before commit (#3228) 2026-05-30 19:25:34 -07:00
Neil 2c55de5589
Move mobile dictation ref mirrors out of effect (#3234)
* Move mobile dictation refs out of effect

* Guard mobile dictation option refs

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-30 19:19:17 -07:00
Neil 7366c3d32e
Resolve mobile new-worktree agent before commit (#3238) 2026-05-30 19:19:00 -07:00
Neil f2fa3ee904
Resolve mobile pair-confirm route state before commit (#3240)
* Resolve pair confirm route state before commit

* Preserve pair confirm back handling

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-30 19:18:32 -07:00
Neil c082f21d2e
Resolve host new-worktree route action before commit (#3242) 2026-05-30 19:15:42 -07:00
Neil 67f74a29a8
Move mobile home client ref sync out of effect (#3247) 2026-05-30 19:15:24 -07:00
Neil 8d8dc9ae05
Resolve mobile task agent selection before commit (#3261) 2026-05-30 18:58:55 -07:00
Neil 7f770ae559
Add mobile review note actions (#3518)
* Add mobile review note actions

* fix: align mobile diff note gutter lines

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-30 13:43:33 -07:00
Neil ddbb6a1e7d
Update oxlint and oxfmt 2026-05-30 13:09:17 -07:00
Neil 7b1ff0d055
Move mobile connection log scroll into content handler (#3402) 2026-05-30 14:48:50 -04:00
Neil fb462e1f77
Add mobile committed branch changes (#3498) 2026-05-30 14:33:30 -04:00
Neil 554388b28d
fix: cancel mobile browser long press from root ref 2026-05-30 14:32:56 -04:00
Neil ca53816aaa
fix: stabilize audio recording store subscription (#3524) 2026-05-30 14:26:42 -04:00
Neil c99eb29bb0
chore: remove unused code 2026-05-30 11:05:58 -07:00
Neil fc1ad4906a
fix: handle large mobile host name lists (#3721) 2026-05-30 07:43:24 -07:00
Neil c9f0fa92be
fix: include OpenClaude in mobile agent catalog (#3722) 2026-05-30 07:39:55 -07:00
Jinwoo Hong fc10bc4cc0
Fix mobile terminal tap mouse reports
Co-authored-by: Orca <help@stably.ai>
2026-05-29 22:44:57 -04:00
Neil f2f6493316
Move mobile browser ref mirrors out of effects (#3230)
* Move mobile browser refs out of effects

* Use layout effect for mobile browser ref mirrors

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-29 22:27:24 -04:00
Neil 016ee18fe7
Add mobile new-tab agent presets (#3334)
* feat: add mobile new-tab agent presets

* fix: harden mobile agent preset launch

Co-authored-by: Orca <help@stably.ai>

* fix: keep mobile worktree id parsing local

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-29 22:13:27 -04:00
Neil 2e185a7c4f
Move mobile tasks client ref sync out of effect (#3253)
* Move mobile tasks client ref sync out of effect

* Use layout effect for mobile tasks client ref

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-29 22:13:19 -04:00
Neil 8ace23b6c8
Fix mobile terminal selection autoscroll (#3343) 2026-05-29 21:53:17 -04:00
Jason Weingardt 191183882a
feat: add iPad responsive layout support (#2433) 2026-05-29 20:10:47 -04:00
Jinwoo Hong 30a09f3bd9
Add mobile terminal shortcut bar customization (#3012)
Co-authored-by: Orca <help@stably.ai>
2026-05-29 16:39:52 -07:00
Neil 116a9f4d75
Remove mobile accounts dead client ref (#3244) 2026-05-29 10:13:12 -07:00
Neil fbac80e253
Remove mobile modal reset effects (#3223) 2026-05-29 09:14:18 -07:00
Trevin Chow bf51593706
fix(worktree): make generated workspace names unique across repos (#2857)
Auto-generated workspace names walked the marine-creature list in order
and deduped only within the active repo (the default when workspaces are
nested), so the first auto-named worktree in every repo landed on
"Nautilus". That guaranteed identical branch names across repos, which
appear flat and indistinguishable in the sidebar.

The in-order walk also produced "Nautilus-2", "Nautilus-3", ... within a
single repo: the suggester ignores branches left behind by deleted
worktrees, so it kept re-proposing "Nautilus", and the create-time retry
loop suffixed it to dodge the lingering branch. Random selection now
yields a fresh creature each time instead of marching the same name.

- Dedup against worktrees in every repo, not just the active one
- Pick randomly from the unused pool instead of the first list entry
- Lowercase the result to match branch-name convention (fix/seahorse)
- Expand the corpus 260 -> 552 (more marine species plus public-domain
  mythological sea creatures) so random picks rarely repeat

getSuggestedCreatureName drops the now-unused repoId/nestWorkspaces
params; the RNG is injectable for deterministic tests.

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-28 20:41:10 -04:00
Jinjing bda658a364
Add agent enablement controls (#2972)
* Add agent enablement controls

Implements the Enable/Disable Agents Dashboard behavior described in docs/enable-disable-agents-dashboard.md, including persisted agent enablement state, filtered launch surfaces, and settings UI affordances.

* Clarify agent availability controls

* Respect disabled agents across workspace and AI defaults

- Filter disabled TUI agents from mobile and quick workspace selection
- Avoid implicitly choosing disabled agents for commit/PR AI settings
- Broadcast settings changes to open windows for disabled-agent updates

* rm design doc

* fix: complete agent enablement propagation
2026-05-28 17:29:49 -07:00
Jinwoo Hong 6df52607fc
Add live terminal input mode on mobile (#2982)
Co-authored-by: Orca <help@stably.ai>
2026-05-28 13:41:37 -07:00
Jinwoo Hong 52096f07e8
Preserve mobile microphone usage description
Keep the iOS microphone usage string in Expo config after prebuild plugin resolution.
2026-05-27 01:25:16 -04:00
Jinwoo Hong fc1ea1a536
Prepare mobile 0.0.10
Bump mobile app version to 0.0.10 for App Store submission.
2026-05-27 01:18:55 -04:00
Jinwoo Hong 3f8fad9e9e
Improve mobile terminal startup and scrolling (#2828)
Co-authored-by: Orca <help@stably.ai>
2026-05-27 00:59:14 -04:00
Neil 9b2c05fa77
Fix keyboard layout shortcut dispatch
Fix shortcut dispatch so app commands follow the produced logical key for the active keyboard layout, while preserving intentional physical-code fallbacks for terminal byte paths and unavailable logical keys.\n\nCloses #2858
2026-05-26 18:28:55 -07:00
Jinwoo Hong 6f18d362cc
Improve mobile markdown editing (#2826)
Co-authored-by: Orca <help@stably.ai>
2026-05-26 00:07:53 -07:00
Neil ab80339158
Fix shell-launched OMP status hooks (#2821)
* Fix shell-launched OMP status hooks

* Update oh-my-pi branding

* Add OMP to mobile agent metadata
2026-05-25 22:20:15 -07:00
Brennan Benson e8837275fe
Default workspace list to repo grouping (#2657)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 20:14:45 -07:00
Jinwoo Hong ac4cf8cb88
Prepare mobile 0.0.9
Bump mobile app version to 0.0.9.
2026-05-22 18:28:55 -04:00
Jinwoo Hong cb8596af6e
Add mobile custom shortcut combos (#2387)
Co-authored-by: Orca <help@stably.ai>
2026-05-21 22:39:25 -07:00
Jinwoo Hong b1973657ea
Add mobile Tasks parity (#2452)
Co-authored-by: Orca <help@stably.ai>
2026-05-21 20:26:07 -07:00
dependabot[bot] 5ce01c8644
build(deps): bump ws from 8.20.0 to 8.20.1 in /mobile (#2278)
Signed-off-by: dependabot[bot] <support@github.com>
2026-05-19 23:21:55 -07:00
Jason Weingardt 9355493bc3
feat(mobile): add Shift+Tab accessory key (#2322)
* feat(mobile): add Shift+Tab accessory key

* review: cover mobile terminal accessory keys

- move built-in terminal accessory keys into a testable module

- add Shift+Tab reverse-tab regression coverage

- pin built-in repeatability policy

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-19 15:10:04 -04:00
dependabot[bot] 65658fcba6
build(deps): bump brace-expansion from 5.0.5 to 5.0.6 in /mobile (#2253)
Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 23:54:46 -07:00
Jinwoo Hong 8b9340dcb7
Fix mobile mic permission requester build (#2228)
Co-authored-by: Orca <help@stably.ai>
2026-05-17 23:33:28 -07:00
Jinwoo Hong 1deb769f37
Prepare mobile 0.0.8
Bump mobile app version to 0.0.8 and slightly shorten the mobile browser URL toolbar.
2026-05-18 01:58:15 -04:00
Jinwoo Hong 4b7c9b7213
Improve remote client runtime parity (#1975)
Co-authored-by: Orca <help@stably.ai>
2026-05-17 22:24:38 -07:00
Jinwoo Hong 2f7da8109e
Open mobile source control diffs in editor tabs (#2202)
Co-authored-by: Orca <help@stably.ai>
2026-05-17 20:24:46 -07:00
Jinwoo Hong afe90a616f
Add mobile source control actions (#2193)
Co-authored-by: Orca <help@stably.ai>
2026-05-17 19:35:55 -07:00
Jinjing 73d4a1781e
fix: combine buf0-bot validated bug fixes (#2086) 2026-05-16 11:34:13 -07:00
Jinjing 90e49669e6
fix: improve cross-platform compatibility (#2064) 2026-05-15 21:58:58 -07:00
Neil e7f3bb6034
Add Grok agent support 2026-05-15 13:52:39 -07:00
Jinwoo Hong 9217cf625d
Fix mobile TUI scroll gestures (#1940)
Co-authored-by: Orca <help@stably.ai>
2026-05-15 13:17:35 -07:00
Jinwoo Hong a22717bb35
Refactor runtime app architecture (#1878)
Co-authored-by: Orca <help@stably.ai>
2026-05-14 23:13:37 -07:00
Jinjing a7d2a09188
docs: clarify mobile command directory (#1883) 2026-05-14 19:12:10 -07:00
Jinwoo Hong 9562d9776f
Fix mobile notification tap routing (#1871)
Co-authored-by: Orca <help@stably.ai>
2026-05-14 15:22:08 -07:00
Jinwoo Hong 151040f05f
Add desktop-backed mobile voice dictation (#1869)
Co-authored-by: Orca <help@stably.ai>
2026-05-14 14:36:44 -07:00
buf0-bot[bot] cd4aa06f85
fix: pr-bug-scan validated finding from #1700 (#1728)
Clear initializedHandlesRef on reconnect so the auto-resubscribed scrollback frame re-inits xterm instead of being dropped by the has(handle) guard.

Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
2026-05-13 11:12:30 -07:00
Jinwoo Hong 7944293815
Improve mobile terminal streaming performance (#1700)
* Improve mobile terminal streaming performance

Co-authored-by: Orca <help@stably.ai>

* Add mobile clear terminal action

Co-authored-by: Orca <help@stably.ai>

* Fix terminal connection test mock

Co-authored-by: Orca <help@stably.ai>

* WIP: mobile markdown tabs before rebase

Co-authored-by: Orca <help@stably.ai>

* Add mobile markdown editing

Co-authored-by: Orca <help@stably.ai>

* Harden mobile tab and markdown sync

Co-authored-by: Orca <help@stably.ai>

* Fix mobile terminal reconnect loading race

Co-authored-by: Orca <help@stably.ai>

* Polish mobile terminal keyboard behavior

Co-authored-by: Orca <help@stably.ai>

* Simplify mobile markdown editor chrome

Co-authored-by: Orca <help@stably.ai>

* Move mobile markdown actions to top

Co-authored-by: Orca <help@stably.ai>

* Use app modals for markdown discard

Co-authored-by: Orca <help@stably.ai>

* Dismiss keyboard before markdown confirmations

Co-authored-by: Orca <help@stably.ai>

* Add mobile file explorer

Co-authored-by: Orca <help@stably.ai>

* Fix mobile file explorer type narrowing

Co-authored-by: Orca <help@stably.ai>

* Fix mobile files navigation param

Co-authored-by: Orca <help@stably.ai>

* Show mobile files connection wait state

Co-authored-by: Orca <help@stably.ai>

* Preview text files on mobile

Co-authored-by: Orca <help@stably.ai>

* Simplify mobile file previews

Co-authored-by: Orca <help@stably.ai>

* Clarify unavailable mobile file types

Co-authored-by: Orca <help@stably.ai>

* Fix mobile subscription and preview review issues

Co-authored-by: Orca <help@stably.ai>

* Keep fallback terminals visible on mobile

Co-authored-by: Orca <help@stably.ai>

* Keep mobile terminal tap active

Co-authored-by: Orca <help@stably.ai>

* Preserve mobile terminal fallback order

Co-authored-by: Orca <help@stably.ai>

* Fix mobile session tab authority

Co-authored-by: Orca <help@stably.ai>

* Run mobile tests in mobile CI lane

Co-authored-by: Orca <help@stably.ai>

* Bump mobile app version to 0.0.7

Co-authored-by: Orca <help@stably.ai>

* Allow main window IPC wiring size

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-12 14:38:12 -07:00
Brennan Benson 2050fa87a0
feat(source-control): send all notes to agent in a new terminal tab (#1568)
Co-authored-by: Orca <help@stably.ai>
2026-05-08 13:52:08 -07:00
buf0-bot[bot] 32b88bcdc5
fix: pr-bug-scan findings from #1481 (#1566)
Split session screen's clearTerminalCache cleanup into a mount-only effect; included client identity in home-screen wireUp dep key via a WeakMap-derived clientKey so forceReconnect re-attaches subs.

Findings addressed:
- mobile/app/h/[hostId]/session/[worktreeId].tsx:436 — clearTerminalCache fires on every client identity change
- mobile/app/index.tsx — useEffect deps array uses inline expression — runs every render

Rebased onto current main.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-07 23:11:06 -07:00
buf0-bot[bot] 57d095bf6f
fix: pr-bug-scan findings from #1475 (#1562)
host-store: write AsyncStorage metadata before SecureStore token to avoid orphaned keychain tokens on crash. mobile IPC: coalesce repeated getPairingQR calls onto a single pending device token via new DeviceRegistry.getOrCreatePendingDevice.

Findings addressed:
- [high] mobile/src/transport/host-store.ts — saveHost orders Keychain write before AsyncStorage — orphaned tokens on crash
- [low] src/main/ipc/mobile.ts:84-95 — getPairingQR creates a device token on every call, leaking pre-paired entries

Rebased onto current main to resolve conflicts; preserved tokenCache.set added on main.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-07 23:11:03 -07:00
buf0-bot[bot] 75ae6d9f6a
fix: pr-bug-scan findings from #1518 (#1575)
Added seq + ref guards after awaits in post-scrollback re-subscribe path; awaitReady's prior in-flight promise now resolves before re-arming so old waiters don't pin 3s timers.

Findings addressed:
- mobile/app/h/[hostId]/session/[worktreeId].tsx:280 — Post-scrollback re-subscribe path lacks a seq guard after awaits
- mobile/src/terminal/TerminalWebView.tsx:770 — awaitReady promise replaced without resolving the prior one

Rebased onto current main; conflict in worktreeId.tsx resolved by preserving main's existing 'why: scrollback null viewport' comment alongside the new seq-recheck comment.

Co-authored-by: orca-bot <bot@stably.ai>
2026-05-07 23:00:12 -07:00
buf0-bot[bot] 9cf605796a
fix: pr-bug-scan findings from #1532 (#1574)
Updated reconnect-backoff comments in rpc-client.ts and connection-health.ts to reflect the actual ~6m total (not ~2m). Made valueFromMs() snap non-preset ms to the closest finite preset so the picker's selected radio agrees with the row sublabel.

Rebased onto current main to resolve conflicts; only the 3 Fixer-summary files.

Co-authored-by: buf0-bot <buf0-bot@users.noreply.github.com>
2026-05-07 22:59:26 -07:00
Neil fc0a3f241f
fix(mobile): silence no-control-regex on bracketed-paste sanitizer (#1580)
The regex /\x1b\[20[01]~/g intentionally matches control characters —
that's the entire point of the sanitizer (stripping embedded \x1b[200~ /
\x1b[201~ markers from clipboard text). Suppress the lint warning with
the same convention used elsewhere in mobile/ (see scripts/repro-worktree-startup-stream.ts).

Comment-only change, zero runtime impact. Follows up #1576.

Co-authored-by: hermes <hermes@stably.ai>
2026-05-07 22:54:54 -07:00
buf0-bot[bot] 52cc6d5f97
fix: address pr-bug-scan findings from #1553 (#1576)
Strip embedded \x1b[200~/\x1b[201~ sequences from clipboard text before bracketed-paste wrap; route accessory-key repeat through a ref so held-key repeats use the current handleAccessoryKey.

Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
2026-05-07 22:48:27 -07:00
buf0-bot[bot] 5e8f796200
fix: pr-bug-scan findings from #1452 (#1560)
Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
2026-05-07 22:18:17 -07:00
Jinwoo Hong 66df0e461a
chore(mobile): bump version to 0.0.6 build 1 (#1555)
Co-authored-by: Orca <help@stably.ai>
2026-05-07 18:38:59 -07:00
Jinwoo Hong cc14a0ade3
feat(mobile): terminal text selection, copy, and paste (#1553)
Co-authored-by: Orca <help@stably.ai>
2026-05-07 18:24:05 -07:00
Jinwoo Hong 49b250a0f3
Settings: rephrase phone-fit-hold copy to drop third-party brand name (#1554)
Co-authored-by: Orca <help@stably.ai>
2026-05-07 18:19:42 -07:00
Jinwoo Hong 22b63a0191
Mobile: indefinite phone-fit hold + configurable auto-restore (#1532)
Co-authored-by: Orca <help@stably.ai>
2026-05-07 16:47:31 -07:00
zerone0x 998815c2dd
fix: allow omitted optional rpc schema fields with zod 4.4 (#1541) 2026-05-07 16:13:20 -07:00
Jinwoo Hong 568d3175cf
Pin zod to ~4.3.6 (revert 4.4.x bump from #1526) (#1539)
Co-authored-by: Orca <help@stably.ai>
2026-05-07 12:47:41 -07:00
Neil f441ee8f3d
chore(deps): bump deps to clear Dependabot alerts (#1526)
Run pnpm update in root + mobile to pull patched versions of vite, hono,
@hono/node-server, dompurify, uuid, picomatch, lodash, brace-expansion,
path-to-regexp, postcss, @xmldom/xmldom, and other transitive packages
flagged by Dependabot.

Co-authored-by: Orca <help@stably.ai>
2026-05-06 22:39:54 -07:00
Jinwoo Hong e83d92eede
Mobile: server-authoritative phone-fit state machine + race fixes + UX cleanup (#1518)
Co-authored-by: Orca <help@stably.ai>
2026-05-06 21:54:23 -07:00
Neil db12df2ae5
feat(mobile): show detailed pairing log + cap connecting timeout (#1520)
When pairing fails (e.g. broken Tailscale route, firewall blocking the
WS, expired token, etc.) the mobile app previously got stuck on
'Connecting…' forever with no signal about *where* it stalled.

Adds a structured connection-log stream from the rpc client and renders
it under the 'Connecting…' spinner on both pair-scan and pair-confirm.
Each phase emits a timestamped, color-coded entry: Opening WebSocket,
WebSocket open, Sent e2ee_hello, Received e2ee_ready, Authenticated,
WebSocket closed / Reconnect scheduled / Connect timeout / Handshake
timeout, etc. The log auto-scrolls and stays visible after a failure so
the user can see the last successful step.

Also fixes the silent infinite spinner: pairing now has a 25s overall
timeout — rpc-client retries forever by design (right behaviour for
live sessions), but for the *initial* pair we want a hard ceiling that
surfaces an actionable error with the log visible instead of spinning.

- Adds ConnectionLogEntry / ConnectionLogSink to transport/types.ts
- connect() now accepts { onStateChange, onLog } (legacy fn form kept)
- New ConnectionLog component (mono, level-coloured, +Xs elapsed)
- Pair flows track logs in a ref and render them in connecting/error
- 25s pairing-overall timeout that closes the client and surfaces a
  'see log below for where it stalled' error

Co-authored-by: Orca <help@stably.ai>
2026-05-06 19:20:53 -07:00
Jinwoo Hong 9c24425504
fix(mobile): handle notification permission changes (#1506)
Co-authored-by: Orca <help@stably.ai>
2026-05-06 11:57:42 -07:00
Jinwoo Hong bba744a8cb
fix(mobile): use neutral camera permission copy (#1504)
Co-authored-by: Orca <help@stably.ai>
2026-05-06 11:45:37 -07:00
Jinwoo Hong 07d10c8e8d
fix(mobile): WS heartbeat to reap half-open mobile sockets (#1500)
Co-authored-by: Orca <help@stably.ai>
2026-05-06 02:05:38 -07:00
Jinwoo Hong 97c8969246
Mobile: drop unused NSMicrophoneUsageDescription + bump iOS build to 9 (#1495)
Co-authored-by: Orca <help@stably.ai>
2026-05-06 00:16:55 -07:00
Jinwoo Hong b95c338c58
chore(mobile): bump iOS buildNumber to 8 to ship updated app icon (#1492)
Picks up the icon update from #1490. Apple requires monotonically
increasing build numbers — 7 was already uploaded to TestFlight.

Co-authored-by: Orca <help@stably.ai>
2026-05-05 23:22:16 -07:00
Neil 3664507f85
mobile: update iOS app icon (#1490)
Co-authored-by: Orca <help@stably.ai>
2026-05-05 22:32:04 -07:00
Jinwoo Hong 97b177d24c
Mobile: declare mass-market encryption exemption + bump iOS build to 7 (#1488)
Co-authored-by: Orca <help@stably.ai>
2026-05-05 21:25:22 -07:00
Jinwoo Hong 82b078efa9
Mobile: App Store v0.0.4 prep + connection-stability fixes (#1486)
Co-authored-by: Orca <help@stably.ai>
2026-05-05 20:46:56 -07:00
Jinwoo Hong 63e36d05fd
chore(mobile): App Store prep — privacy manifest, debug-log cleanup, and protocol-version compat block (#1440)
Co-authored-by: Orca <help@stably.ai>
2026-05-05 19:23:56 -07:00
Jinwoo Hong a35b6f1495
chore(mobile): bump to v0.0.4 (build 5) (#1482)
Co-authored-by: Orca <help@stably.ai>
2026-05-05 19:03:34 -07:00
Jinwoo Hong 087c00b02e
Mobile: stabilise connection + terminal-fit fixes + share one RpcClient per host (#1481)
Co-authored-by: Orca <help@stably.ai>
2026-05-05 18:58:13 -07:00
Jinwoo Hong 7f2f39b804
feat(mobile): pairing paste flow + Keychain-backed device tokens + deep link (#1475)
Co-authored-by: Orca <help@stably.ai>
2026-05-05 17:14:08 -07:00
Jinwoo Hong 4140d6a4c0
Revert "feat(mobile): pairing paste flow + Keychain-backed device tokens (#1452)" (#1474)
This reverts commit 55d3a42079.
2026-05-05 16:29:00 -07:00
Jinwoo Hong 1b25138e06
fix(mobile): remove dead-row gap above keyboard accessory bar (#1457)
Co-authored-by: Orca <help@stably.ai>
2026-05-05 16:24:44 -07:00
Jinwoo Hong 55d3a42079
feat(mobile): pairing paste flow + Keychain-backed device tokens (#1452)
Co-authored-by: Orca <help@stably.ai>
2026-05-05 16:09:26 -07:00
Jinwoo Hong f938ff185f
feat(mobile): account switcher and rate-limit usage on mobile (#1467)
Co-authored-by: Orca <help@stably.ai>
2026-05-05 16:09:16 -07:00
Jinwoo Hong cdd21423eb
fix(mobile): unstick worktree spinner once agent exits, match desktop StatusIndicator (#1449)
Co-authored-by: Orca <help@stably.ai>
2026-05-05 12:43:47 -07:00
Jinwoo Hong b7d6bcb00c
chore(mobile): bump to v0.0.2 and update Settings release link (#1427)
Co-authored-by: Orca <help@stably.ai>
2026-05-05 00:03:43 -07:00
Jinwoo Hong d1b26e2eb7
Mobile improvements: scrollback hydration, keyboard layout, and worktree-creation polish (#1423)
Co-authored-by: Orca <help@stably.ai>
2026-05-04 23:24:22 -07:00
Jinwoo Hong fc578f5ea9
feat(mobile): Expo companion app [beta] (#1245)
Co-authored-by: Orca <help@stably.ai>
2026-05-04 13:08:27 -07:00