feat(app): Mobile Touch Optimization#18767
Closed
noahbentusi wants to merge 88 commits into
Closed
Conversation
…t and message rendering When the client clock is ahead of the server, user message IDs (generated client-side) sort after assistant message IDs (generated server-side). This broke the prompt loop exit check and the UI message pairing logic. - Extract shouldExitLoop() into a pure function that uses parentID matching instead of relying on ID ordering - Extract findAssistantMessages() with forward+backward scan to handle messages sorted out of expected order due to clock skew - Remove debug console.log statements added during investigation - Add tests for both extracted functions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…uch the container edge
…t-loop-exit # Conflicts: # packages/ui/src/components/session-turn.tsx
…t-loop-exit # Conflicts: # packages/ui/src/components/session-turn.tsx
…lers Use Node's createServer for MCP OAuth callback and Codex plugin OAuth servers instead of Bun.serve, making them work under Node.js.
Use npm-install:${pkg} instead of a global npm-install lock so
concurrent installs of different packages can run in parallel.
When the lockfile exists but .bin is empty or absent, add() would read the lockfile via loadVirtual() and return early without calling reify(). Delete the lockfile before calling add() so it proceeds with a full install.
Replace tsx dependency with explicit 'node' invocation for the compiled ESLint server. Remove all BUN_BE_BUN env var references which are no longer needed after the Bun-to-Node migration.
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Npm.which now returns undefined instead of throwing when binary not found. Update all callers to check for undefined and return early. Avoid explicit union types by using a resolved variable pattern.
This restores the SIGHUP handler that was previously reverted. The handler ensures the process exits on terminal hangup (eg. closing the terminal tab), preventing long-running commands like `serve` from becoming orphaned processes.
- Replace manual subscription Map with PubSub.unbounded per instance - Per-type PubSubs + wildcard PubSub, cleaned up via addFinalizer - InstanceDisposed published before PubSub shutdown so subscribers see it - Add makeRuntime to run-service.ts (single runtime with runPromise + runFork) - Legacy facade preserved: publish/subscribe/subscribeAll same signatures - subscribe/subscribeAll fork stream consumer fibers, return interrupt function - Extract Format.file() for explicit formatting, remove event-driven subscription - Inline Format.file() calls in write/edit/apply_patch tools - Drop Bus.once (zero callers) - Keep makeRunPromise as deprecated wrapper for existing services
This was referenced Apr 25, 2026
This was referenced Apr 28, 2026
This was referenced May 6, 2026
This was referenced May 14, 2026
Collaborator
|
Automated PR Cleanup Thank you for contributing to opencode. Due to the high volume of PRs from users and AI agents, we periodically close older PRs using automated criteria so maintainers can focus review time on the most active and community-supported contributions. This PR was closed because it matched the following cleanup criteria:
PRs created within the last month are not affected by this cleanup. If you believe this PR was closed incorrectly, or if you are still actively working on it, please leave a comment explaining why it should be reopened. A maintainer can review and reopen it if appropriate. Thanks again for taking the time to contribute. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue for this PR
Closes #
Type of change
What does this PR do?
This PR optimizes the OpenCode App for mobile/touch devices while preserving the existing desktop experience. It addresses 5 key pain points for mobile users:
The changes include:
These improvements enhance mobile usability by making touch interactions more intuitive and preserving the desktop experience for larger screens.
How did you verify your code works?
All features tested on mobile viewport (720×1920):
Screenshots / recordings
Mobile toolbar with overflow menu and back button visible. File tree in fullscreen mode with file content displayed.
Checklist