Skip to content

fix(app): improve touch controls and standalone PWA relaunch - #46391

Merged
Brendonovich merged 5 commits into
v2from
touch-pwa-polish
Aug 31, 2026
Merged

Brendonovich merged 5 commits into
v2from
touch-pwa-polish

Conversation

@Brendonovich

@Brendonovich Brendonovich commented Aug 31, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Keep transcript copy controls, agent/model/time metadata, and shell/code/tool actions visible on non-hover devices while preserving desktop hover and keyboard-focus behavior.
  • Keep touch input placeholders compact at 13px while actual entered text remains 16px to avoid iOS focus zoom.
  • Detect standalone PWA mode and restore the last allowed route at root startup, then persist router location; retain the existing URL router rather than introducing a separate memory router.

Related PRs

Independent against v2. The mobile UI stack is #46388 (shell/Home/settings), #46389 (session panels), and #46390 (diff review). This PR can merge separately; its shared review CSS changes are limited to non-hover Open file visibility, separate from #46390's summaries and header layout.

Sessions

  • ses_fa8ce9ae1ffeJaH6I8O4Ut1d67: touch transcript controls and metadata.
  • ses_fa8f428cfffe2PwaFX2PhjaYy0: compact iOS placeholders.
  • ses_fa8c9b9c6ffeULe3oLIORr07X2: standalone PWA route restoration.
  • Commits retain these associations as Session-Id trailers.

Before / After

Touch controls, compact mobile placeholders, and standalone PWA route restoration. Before/after captures use real production components with deterministic fixture data at 390x844, light mode, English, UTC, and touch input.

Surface Before After
Message copy actions and agent/model/timestamp metadata without hover Before: Message copy actions and agent/model/timestamp metadata without hover After: Message copy actions and agent/model/timestamp metadata without hover
Completed shell command copy without hover Before: Completed shell command copy without hover After: Completed shell command copy without hover
Code Mode execution copy without hover Before: Code Mode execution copy without hover After: Code Mode execution copy without hover
Fenced Markdown code copy without hover Before: Fenced Markdown code copy without hover After: Fenced Markdown code copy without hover
Webfetch external-link affordance without hover Before: Webfetch external-link affordance without hover After: Webfetch external-link affordance without hover
Expanded patch failure copy without hover Before: Expanded patch failure copy without hover After: Expanded patch failure copy without hover
Compact mobile input placeholders while input font stays 16px Before: Compact mobile input placeholders while input font stays 16px After: Compact mobile input placeholders while input font stays 16px
Standalone relaunch: Home before, restored Session after Before: Standalone relaunch: Home before, restored Session after After: Standalone relaunch: Home before, restored Session after
Delegated task Session navigation affordance without hover Before: Delegated task Session navigation affordance without hover After: Delegated task Session navigation affordance without hover
Shared review Open File control without hover Before: Shared review Open File control without hover After: Shared review Open File control without hover
  • All ten pairs were visually inspected. No live personal data or credentials are included.
  • Task navigation and shared review screenshots use a temporary fixture rendering the real ToolDisplay and SessionReview with existing providers and local no-op callbacks. The temporary story was removed from the worktree after capture; no production component changes or extra commits were made.
  • The legacy session-turn diff toggle has no active TSX consumer, so there is no user-visible surface to capture.
  • PWA standalone mode is emulated using navigator.standalone; service workers are blocked. This comparison verifies route restoration, not an actual installed-device lifecycle.

Validation

  • CI Linux/Windows E2E and typecheck passed. Linux unit CI failed in untouched CLI ACP permission-behavior timeout (2 seconds); Linux rerun failed with the same untouched CLI timeout; Windows rerun is pending. UI tests passed locally.
  • All four PR groups merge cleanly in an isolated integration worktree; the combined production build passes all eight mobile browser regressions and app typechecking.
  • App and session-ui package typechecks, production app build, formatting, and diff checks pass.
  • Five PWA unit tests; all 74 app browser tests; all 166 session-ui unit tests pass.
  • Five component regressions pass, covering mobile non-hover metadata/actions, shell/error controls, and desktop hover/keyboard focus.
  • Production navigation benchmark passes before and after: stable content 134.8ms on clean v2 and 139.8ms on this head; stable tab 47.4ms and 46.2ms. Single machine-local samples, not statistical performance conclusions.
  • PWA capture uses emulated standalone detection, not an actual installed-device lifecycle; service workers are blocked to isolate route restoration.
  • Actual iOS Safari focus zoom still needs device validation. No production behavior was added solely for screenshots.
  • Original dirty user worktree/staging and existing app/server processes remain untouched. This does not duplicate the already-merged channel favicon/PWA icon PR.

Session-Id: ses_fa8c9b9c6ffeULe3oLIORr07X2
Session-Id: ses_fa8f428cfffe2PwaFX2PhjaYy0
Session-Id: ses_fa8ce9ae1ffeJaH6I8O4Ut1d67
Session-Id: ses_fa8ce9ae1ffeJaH6I8O4Ut1d67
@Brendonovich
Brendonovich merged commit 5894e46 into v2 Aug 31, 2026
8 checks passed
@Brendonovich
Brendonovich deleted the touch-pwa-polish branch August 31, 2026 15:35
jinhuang712 pushed a commit to jinhuang712/opencode that referenced this pull request Sep 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant