Commit Graph

99 Commits

Author SHA1 Message Date
gsxdsm 50b324a8c8
Fix file loading on web and mobile remote clients 2026-06-16 14:39:25 -07:00
gsxdsm f47832cce0
fix(mobile): show usage bars for system-default login (#5499)
Show mobile account usage for Claude/Codex system-default logins when rate-limit data exists without Orca-managed accounts.\n\nReview fixes:\n- match inactive account usage to the runtime rateLimits payload shape\n- share usage-bar state so stale window data remains visible during transient fetch errors\n- add regression coverage for both cases
2026-06-16 13:29:45 -07:00
Jinwoo Hong adf5ccbc92
feat(mobile): view image files from the Files tree (#5472)
Co-authored-by: Orca <help@stably.ai>
2026-06-15 22:30:05 -07:00
Jinwoo Hong e3bf7d8614
feat(mobile): pickers, workspace parity, active-workspace focus, tap-to-open, source-control parity, artifact viewing (#5330)
Co-authored-by: Orca <help@stably.ai>
2026-06-15 22:02:51 -07:00
gsxdsm 26121a4315
fix(mobile): respect Android device rotation lock instead of forcing rotation (#5403)
* release: v1.4.48-rc.0 [rc-slot:2026-06-05-15]

* release: v0.0.1-rc.0 [rc-slot:2026-06-06-03]

* fix(mobile): respect Android device rotation lock instead of forcing rotation

The app rotated on Android even when the system auto-rotate lock was on.
Expo's top-level `orientation: "default"` emits `android:screenOrientation="unspecified"`,
which auto-rotates on many devices regardless of the lock, and the
`react-native-screens` `orientation: 'all'` screenOption mapped to FULL_SENSOR,
which forces rotation outright.

react-native-screens exposes no orientation value that honors the rotation lock
(even 'default' calls setRequestedOrientation(UNSPECIFIED) at runtime, overriding
the manifest). The Android value that respects the lock is "fullUser", which must
come from the manifest. So:

- Add an `android-respect-rotation-lock` Expo config plugin that sets the main
  activity to `android:screenOrientation="fullUser"` (honors the lock; allows all
  orientations when unlocked, matching iOS).
- Remove the runtime `orientation` screenOption so the manifest value governs.

iOS behavior is unchanged (UISupportedInterfaceOrientations still lists all four).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-15 13:45:58 -07:00
gsxdsm cd31cd702d
feat(mobile): add terminal text size (zoom) setting (#5388)
* release: v1.4.48-rc.0 [rc-slot:2026-06-05-15]

* release: v0.0.1-rc.0 [rc-slot:2026-06-06-03]

* feat(mobile): add terminal text size (zoom) setting

The mobile terminal fits the desktop's full column count to the phone
width with a CSS scale, which cancels out xterm's raw fontSize — so there
was no way to make text bigger or smaller. Add a persisted baseline zoom
multiplier the WebView applies on top of the fit.

- Settings → Terminal → "Text size": 50%–200% presets.
- Pinch-to-zoom in the terminal snaps to the same presets and persists.
- Per-device display preference; does not change the desktop terminal.
- Extracts the xterm WebView HTML into terminal-webview-html.ts to keep
  TerminalWebView.tsx within its max-lines budget.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* refactor(mobile): make terminal text size reflow columns instead of CSS scaling

Text size now drives the real xterm fontSize rather than a CSS transform
baseline. A larger cell means fewer columns fit the phone width, so the
existing measure -> terminal.updateViewport pipeline resizes the PTY and the
shell rewraps to the new width (and smaller sizes show more columns). Pinch
still snaps to a preset, but now changes the font size and reflows instead of
scaling pixels; the refit hook re-fits the PTY whenever the scale changes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(mobile): restore terminal touch scrollback (undefined contentWiderThanViewport)

The single-finger touchmove handler gated horizontal panning on
contentWiderThanViewport(), which is never defined — so every one-finger
touchmove threw a ReferenceError before reaching the vertical-scroll code
below it, killing all touch scrolling including scrollback.

Replace the call with the inline overflow check clampPan() already uses
(scrollWidth * getTotalScale() > innerWidth). Vertical scroll now always runs;
two-finger pinch-to-zoom is unaffected. Merged two adjacent var decls to keep
the file under its max-lines cap without a disable.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* test(mobile): guard terminal text scale viewport refit

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

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-15 13:14:58 -07:00
gsxdsm d17c22c826
feat(mobile): add terminal keyboard autocomplete toggle (#5348)
* release: v1.4.48-rc.0 [rc-slot:2026-06-05-15]

* release: v0.0.1-rc.0 [rc-slot:2026-06-06-03]

* feat(mobile): add terminal keyboard autocomplete toggle

Terminal command inputs disable autocorrect/suggestions and use a
password-class keyboard so the OS never rewrites commands, flags, or
paths. Some users want phone-style typing in the command bar.

Add a Settings → Terminal "Autocomplete & autocorrect" toggle
(persisted locally, default off). When on, the command bar enables
autoCorrect/spellCheck and uses the default keyboard so Android shows
its suggestion strip; iOS drops the ascii-capable restriction. The
direct keyboard-capture input is unchanged — it streams raw keystrokes
where suggestions cannot apply.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(mobile): remount command input when autocomplete toggles

Android caches the IME inputType at mount, so flipping the toggle did
not switch suggestions on until the field remounted.

* fix(mobile): guard autocomplete pref loads against unmount and fast toggle

Address review feedback: the settings toggle's initial load could clobber
a fast user toggle, and the session focus-effect could setState after the
screen unfocused. Both now use a guard flag.

* test mobile terminal autocomplete preference

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

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-15 13:07:07 -07:00
Jinwoo Hong 618b5d3177
fix(mobile): retry handshake before latching auth-failed (#5200) (#5304) 2026-06-13 14:25:43 -07:00
Antonio Cardoso c4fade90e7
Add mobile Review Changes workflow (#5313)
* Add mobile diff review

* Wrap mobile review notes prompt

* Fix mobile review unreviewed navigation

* Clear review completion when a refreshed diff invalidates a reviewed file

mergeMobileDiffReviewState invalidates a file's reviewed flag when its
diff identity changes, but left completedAt set — inconsistent with
markUnreviewed. Drop completedAt on invalidation and add a regression
test.

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-13 14:24:26 -07:00
Jinwoo Hong 71bfbbf840
Fix rich markdown image paste bloat (#5290)
Co-authored-by: Orca <help@stably.ai>
2026-06-12 16:48:09 -07:00
Jinwoo Hong 55db0ab12e
Fix Windows multiline terminal paste (#5291) 2026-06-12 19:12:08 -04:00
Jinwoo Hong 6837cca9f3
Fix Tasks PR detail drawer and GitHub attachment videos (#5288)
Co-authored-by: Orca <help@stably.ai>
2026-06-12 16:02:09 -07:00
Carlos Baraza 1205457d53
feat(mobile): paste clipboard images into terminals (#5264) 2026-06-12 14:37:43 -07:00
Jinjing dccea75b0e
Fix active tab scrolling and editor keyboard layout on mobile (#5271)
* Improve mobile session tab scrolling and editor keyboard layout

- Auto-scroll the active session tab into view within the horizontal
  tab strip, using a new layout-aware utility with minimal scrolling.
- Use visual viewport measurements in the editor WebView to accurately
  report keyboard insets and lift floating controls above the keyboard,
  as native events can under-report covered areas.

* Fix active tab scrolling and normalize editor keyboard inset

- Ensure the active session tab is scrolled into view immediately when
  its layout finishes to prevent it from remaining hidden off-screen.
- Round, clamp, and validate WebView visualViewport bottom measurements
  to avoid rendering inconsistencies from fractional or invalid insets.
- Trigger an immediate keyboard inset report on script initialization.

* Update tabStripOffsetRef when scrolling mobile tab strip

Ensure the cached offset is updated to match the next scroll position. Without this update, subsequent scroll calculations would use stale offset values.
2026-06-12 11:09:08 -07:00
Jinwoo Hong 58ce969fcb
fix(mobile): preserve repeated iOS terminal hyphens (#5222)
Co-authored-by: Orca <help@stably.ai>
2026-06-11 15:53:56 -07:00
Jinwoo Hong 469cbe387d
feat(mobile): drag-to-reorder terminal shortcut keys in settings (#5076)
Co-authored-by: Orca <help@stably.ai>
2026-06-11 14:05:07 -07:00
Brennan Benson a4a1b12d80
Move workspace board to sidebar bottom toolbar (#5146)
Co-authored-by: Orca <help@stably.ai>
2026-06-10 21:51:58 -07:00
Jinwoo Hong 93e59ab086
fix(mobile): recover Android remote sessions without an app restart (#5061)
Co-authored-by: Orca <help@stably.ai>
2026-06-09 17:55:20 -07:00
Jinwoo Hong b42b286879
Fix mobile markdown actions above keyboard (#4945)
Co-authored-by: Orca <help@stably.ai>
2026-06-08 21:27:33 -07:00
Jinwoo Hong 66035716f0
Fix mobile diff syntax highlighting (#4922)
Co-authored-by: Orca <help@stably.ai>
2026-06-08 17:41:27 -07:00
Jinwoo Hong f5efdd5945
Fix remote runtime terminal sharing with mobile (#4901)
Co-authored-by: Orca <help@stably.ai>
2026-06-08 14:26:07 -07:00
Jinwoo Hong c23ab4323c
Prepare mobile 0.0.12 (#4627)
Co-authored-by: Orca <help@stably.ai>
2026-06-04 01:06:45 -07:00
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
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 5ab1fe09b9
Fix mobile Tailnet pairing (#4415)
Co-authored-by: Orca <help@stably.ai>
2026-06-01 17:30:10 -07:00
Neil 0bb62b9d29
Add braces to mobile control flow (#4351) 2026-05-31 21:32:37 -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 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 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 8acb47cede Derive mobile session create warning before paint 2026-05-31 03:11:53 -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 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 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