Skip to content

[BUG][Desktop] App UI becomes unresponsive after switching to remote server #21058

@damho1104

Description

@damho1104

Description

Summary When switching from a local server to a remote server in the OpenCode desktop app, the UI becomes completely unresponsive. The app doesn't crash, but no interactions (clicks, typing, etc.) work. Even switching back to the local server doesn't resolve the issue.

Root Cause Analysis(analyzed by Opencode)

  1. PTY WebSocket Connection Leak (Primary)
    PTY WebSocket connections (GET /pty/{id}/connect) from the previous server are not cleaned up during server switch
    The leaked WebSocket continues trying to connect, blocking the UI thread

  2. Global Event Stream Start Failure
    global-sdk.tsx changed to manual event stream start (start())
    global-sync.tsx's onMount may not call start() in time or gets blocked

  3. Related Issues
    Session/PTY IDs from previous server are invalid on new server (NotFoundError)
    ConnectionGate's while(true) loop may not exit properly

Opencode Server Log

  • The path '/Users/damho1104/Develop/src' is my macbook local path not server.
INFO  2026-04-05T00:05:02 +415ms service=default version=1.3.15 args=["serve","--hostname","0.0.0.0","--port","11455","--log-level","INFO"] opencode
INFO  2026-04-05T00:05:02 +7ms service=config path=/home/damho1104/.config/opencode/config.json loading
INFO  2026-04-05T00:05:02 +2ms service=config path=/home/damho1104/.config/opencode/opencode.json loading
INFO  2026-04-05T00:05:02 +13ms service=config path=/home/damho1104/.config/opencode/opencode.jsonc loading
INFO  2026-04-05T00:05:27 +25311ms service=server method=GET path=/global/health request
INFO  2026-04-05T00:05:27 +0ms service=server status=started method=GET path=/global/health request
INFO  2026-04-05T00:05:27 +1ms service=server status=completed duration=1 method=GET path=/global/health request
INFO  2026-04-05T00:05:29 +1538ms service=server method=PUT path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
INFO  2026-04-05T00:05:29 +0ms service=server status=started method=PUT path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
INFO  2026-04-05T00:05:29 +2ms service=default directory=/Users/damho1104/Develop/src creating instance
INFO  2026-04-05T00:05:29 +3ms service=project directory=/Users/damho1104/Develop/src fromDirectory
INFO  2026-04-05T00:05:29 +1ms service=server method=PUT path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
INFO  2026-04-05T00:05:29 +0ms service=server status=started method=PUT path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
INFO  2026-04-05T00:05:29 +2ms service=db path=/home/damho1104/.local/share/opencode/opencode.db opening database
INFO  2026-04-05T00:05:29 +3ms service=db count=10 mode=bundled applying migrations
INFO  2026-04-05T00:05:29 +5ms service=default directory=/Users/damho1104/Develop/src bootstrapping
INFO  2026-04-05T00:05:29 +16ms service=config path=/home/damho1104/.opencode/opencode.json loading
INFO  2026-04-05T00:05:29 +1ms service=config path=/home/damho1104/.opencode/opencode.jsonc loading
INFO  2026-04-05T00:05:29 +0ms service=npm dir=/home/damho1104/.config/opencode checking dependencies
INFO  2026-04-05T00:05:29 +1ms service=npm dependencies in sync
INFO  2026-04-05T00:05:29 +3ms service=server method=GET path=/agent request
INFO  2026-04-05T00:05:29 +0ms service=server status=started method=GET path=/agent request
INFO  2026-04-05T00:05:29 +5ms service=server method=GET path=/config request
INFO  2026-04-05T00:05:29 +0ms service=server status=started method=GET path=/config request
INFO  2026-04-05T00:05:29 +0ms service=server method=GET path=/session/status request
INFO  2026-04-05T00:05:29 +0ms service=server status=started method=GET path=/session/status request
INFO  2026-04-05T00:05:29 +0ms service=server method=GET path=/session request
INFO  2026-04-05T00:05:29 +0ms service=server status=started method=GET path=/session request
INFO  2026-04-05T00:05:29 +0ms service=default directory=/home/damho1104/src/opencode creating instance
INFO  2026-04-05T00:05:29 +1ms service=project directory=/home/damho1104/src/opencode fromDirectory
INFO  2026-04-05T00:05:29 +0ms service=server method=GET path=/session request
INFO  2026-04-05T00:05:29 +0ms service=server status=started method=GET path=/session request
INFO  2026-04-05T00:05:29 +0ms service=default directory=/home/damho1104/src/claude-code-wrapper-api-server creating instance
INFO  2026-04-05T00:05:29 +0ms service=project directory=/home/damho1104/src/claude-code-wrapper-api-server fromDirectory
INFO  2026-04-05T00:05:29 +0ms service=server method=GET path=/session request
INFO  2026-04-05T00:05:29 +0ms service=server status=started method=GET path=/session request
INFO  2026-04-05T00:05:29 +0ms service=default directory=/home/damho1104/src/gemini-proxy-api-server creating instance
INFO  2026-04-05T00:05:29 +0ms service=project directory=/home/damho1104/src/gemini-proxy-api-server fromDirectory
INFO  2026-04-05T00:05:29 +3ms service=plugin name=CodexAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:29 +0ms service=plugin name=CopilotAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:29 +1ms service=plugin name=gitlabAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:29 +0ms service=plugin name=PoeAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:29 +1ms service=npm dir=/home/damho1104/.opencode checking dependencies
INFO  2026-04-05T00:05:29 +1ms service=npm dependencies in sync
INFO  2026-04-05T00:05:29 +15ms service=plugin path=oh-my-openagent@latest loading plugin
INFO  2026-04-05T00:05:29 +1ms service=plugin path=opencode-gemini-auth@latest loading plugin
INFO  2026-04-05T00:05:29 +5ms service=default directory=/home/damho1104/src/opencode bootstrapping
INFO  2026-04-05T00:05:29 +3ms service=npm pkg=oh-my-openagent@latest installing package
INFO  2026-04-05T00:05:29 +2ms service=npm pkg=opencode-gemini-auth@latest installing package
INFO  2026-04-05T00:05:29 +28ms service=default directory=/home/damho1104/src/claude-code-wrapper-api-server bootstrapping
INFO  2026-04-05T00:05:29 +2ms service=default directory=/home/damho1104/src/gemini-proxy-api-server bootstrapping
INFO  2026-04-05T00:05:29 +12ms service=config path=/home/damho1104/src/opencode/.opencode/opencode.json loading
INFO  2026-04-05T00:05:29 +1ms service=server method=GET path=/file request
INFO  2026-04-05T00:05:29 +0ms service=server status=started method=GET path=/file request
INFO  2026-04-05T00:05:29 +0ms service=server method=PUT path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
INFO  2026-04-05T00:05:29 +0ms service=server status=started method=PUT path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
INFO  2026-04-05T00:05:29 +0ms service=server method=GET path=/pty/pty_d5af25359001buRgk1QZyHUKlO/connect request
INFO  2026-04-05T00:05:29 +0ms service=server status=started method=GET path=/pty/pty_d5af25359001buRgk1QZyHUKlO/connect request
INFO  2026-04-05T00:05:29 +1ms service=config path=/home/damho1104/src/opencode/.opencode/opencode.jsonc loading
INFO  2026-04-05T00:05:29 +131ms service=npm dir=/home/damho1104/.config/opencode checking dependencies
INFO  2026-04-05T00:05:29 +5ms service=npm dependencies in sync
INFO  2026-04-05T00:05:29 +13ms service=config path=/home/damho1104/.opencode/opencode.json loading
INFO  2026-04-05T00:05:29 +7ms service=config path=/home/damho1104/.opencode/opencode.json loading
INFO  2026-04-05T00:05:29 +1ms service=config path=/home/damho1104/.opencode/opencode.jsonc loading
INFO  2026-04-05T00:05:29 +5ms service=config path=/home/damho1104/.opencode/opencode.jsonc loading
INFO  2026-04-05T00:05:29 +56ms service=npm dir=/home/damho1104/src/opencode/.opencode checking dependencies
INFO  2026-04-05T00:05:29 +4ms service=npm dependencies in sync
INFO  2026-04-05T00:05:29 +3ms service=plugin name=CodexAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:29 +0ms service=plugin name=CopilotAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:29 +0ms service=plugin name=gitlabAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:29 +0ms service=plugin name=PoeAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:29 +1ms service=plugin name=CodexAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:29 +0ms service=plugin name=CopilotAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:29 +0ms service=plugin name=gitlabAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:29 +0ms service=plugin name=PoeAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:29 +2ms service=npm dir=/home/damho1104/.opencode checking dependencies
INFO  2026-04-05T00:05:29 +3ms service=config path=/home/damho1104/.opencode/opencode.json loading
INFO  2026-04-05T00:05:29 +1ms service=npm dependencies in sync
INFO  2026-04-05T00:05:29 +0ms service=config path=/home/damho1104/.opencode/opencode.jsonc loading
INFO  2026-04-05T00:05:30 +1129ms service=plugin name=CodexAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:30 +1ms service=plugin name=CopilotAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:30 +0ms service=plugin name=gitlabAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:30 +0ms service=plugin name=PoeAuthPlugin loading internal plugin
INFO  2026-04-05T00:05:30 +12ms service=npm dir=/home/damho1104/.opencode checking dependencies
INFO  2026-04-05T00:05:30 +0ms service=npm dir=/home/damho1104/.config/opencode checking dependencies
INFO  2026-04-05T00:05:30 +1ms service=npm dependencies in sync
INFO  2026-04-05T00:05:30 +0ms service=npm dependencies in sync
INFO  2026-04-05T00:05:30 +0ms service=plugin path=oh-my-openagent@latest loading plugin
INFO  2026-04-05T00:05:30 +0ms service=plugin path=opencode-gemini-auth@latest loading plugin
INFO  2026-04-05T00:05:30 +1ms service=npm pkg=oh-my-openagent@latest installing package
INFO  2026-04-05T00:05:30 +0ms service=npm pkg=opencode-gemini-auth@latest installing package
INFO  2026-04-05T00:05:30 +133ms service=npm dir=/home/damho1104/.config/opencode checking dependencies
INFO  2026-04-05T00:05:30 +1ms service=npm dependencies in sync
INFO  2026-04-05T00:05:30 +0ms service=plugin path=oh-my-openagent@latest loading plugin
INFO  2026-04-05T00:05:30 +0ms service=plugin path=opencode-gemini-auth@latest loading plugin
INFO  2026-04-05T00:05:30 +1ms service=npm pkg=oh-my-openagent@latest installing package
INFO  2026-04-05T00:05:30 +0ms service=npm pkg=opencode-gemini-auth@latest installing package
INFO  2026-04-05T00:05:31 +25ms service=npm dir=/home/damho1104/.opencode checking dependencies
INFO  2026-04-05T00:05:31 +1ms service=npm dependencies in sync
INFO  2026-04-05T00:05:31 +8ms service=plugin path=oh-my-openagent@latest loading plugin
INFO  2026-04-05T00:05:31 +0ms service=plugin path=opencode-gemini-auth@latest loading plugin
INFO  2026-04-05T00:05:31 +31ms service=npm pkg=oh-my-openagent@latest installing package
INFO  2026-04-05T00:05:31 +0ms service=npm pkg=opencode-gemini-auth@latest installing package
INFO  2026-04-05T00:05:31 +42ms service=bus type=* subscribing
INFO  2026-04-05T00:05:31 +4ms service=bus type=session.updated subscribing
INFO  2026-04-05T00:05:31 +0ms service=bus type=message.updated subscribing
INFO  2026-04-05T00:05:31 +0ms service=bus type=message.part.updated subscribing
INFO  2026-04-05T00:05:31 +0ms service=bus type=session.diff subscribing
INFO  2026-04-05T00:05:31 +2ms service=format init
INFO  2026-04-05T00:05:31 +1ms service=lsp serverIds=deno, typescript, vue, eslint, oxlint, biome, gopls, ruby-lsp, pyright, elixir-ls, zls, csharp, fsharp, sourcekit-lsp, rust, clangd, svelte, astro, jdtls, kotlin-ls, yaml-ls, lua-ls, php intelephense, prisma, dart, ocaml-lsp, bash, terraform, texlab, dockerfile, gleam, clojure-lsp, nixd, tinymist, haskell-language-server, julials enabled LSP servers
INFO  2026-04-05T00:05:31 +1ms service=file init
INFO  2026-04-05T00:05:31 +4ms service=file.watcher directory=/Users/damho1104/Develop/src init
INFO  2026-04-05T00:05:31 +1ms service=file.watcher directory=/Users/damho1104/Develop/src platform=linux backend=inotify watcher backend
INFO  2026-04-05T00:05:31 +4ms service=bus type=command.executed subscribing
ERROR 2026-04-05T00:05:31 +20ms service=server error=Session not found failed
INFO  2026-04-05T00:05:31 +0ms service=server status=completed duration=1732 method=GET path=/config request
INFO  2026-04-05T00:05:31 +0ms service=server status=completed duration=1732 method=GET path=/session/status request
INFO  2026-04-05T00:05:31 +4ms service=server status=completed duration=1660 method=GET path=/pty/pty_d5af25359001buRgk1QZyHUKlO/connect request
INFO  2026-04-05T00:05:31 +1ms service=server status=completed duration=1779 method=PUT path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
INFO  2026-04-05T00:05:31 +0ms service=server status=completed duration=1773 method=PUT path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
INFO  2026-04-05T00:05:31 +0ms service=server status=completed duration=1661 method=PUT path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
INFO  2026-04-05T00:05:31 +8ms service=server status=completed duration=1669 method=GET path=/file request
WARN  2026-04-05T00:05:31 +31ms service=skill name=web-design-guidelines existing=/home/damho1104/.claude/skills/web-design-guidelines/SKILL.md duplicate=/home/damho1104/.agents/skills/web-design-guidelines/SKILL.md duplicate skill name
WARN  2026-04-05T00:05:31 +0ms service=skill name=vercel-react-best-practices existing=/home/damho1104/.claude/skills/vercel-react-best-practices/SKILL.md duplicate=/home/damho1104/.agents/skills/vercel-react-best-practices/SKILL.md duplicate skill name
WARN  2026-04-05T00:05:31 +0ms service=skill name=mermaid-diagrams existing=/home/damho1104/.claude/skills/mermaid-diagrams/SKILL.md duplicate=/home/damho1104/.agents/skills/mermaid-diagrams/SKILL.md duplicate skill name
INFO  2026-04-05T00:05:31 +3ms service=bus type=* subscribing
INFO  2026-04-05T00:05:31 +0ms service=bus type=session.updated subscribing
INFO  2026-04-05T00:05:31 +0ms service=bus type=message.updated subscribing
INFO  2026-04-05T00:05:31 +0ms service=bus type=message.part.updated subscribing
INFO  2026-04-05T00:05:31 +0ms service=bus type=session.diff subscribing
INFO  2026-04-05T00:05:31 +0ms service=format init
INFO  2026-04-05T00:05:31 +1ms service=lsp serverIds=deno, typescript, vue, eslint, oxlint, biome, gopls, ruby-lsp, pyright, elixir-ls, zls, csharp, fsharp, sourcekit-lsp, rust, clangd, svelte, astro, jdtls, kotlin-ls, yaml-ls, lua-ls, php intelephense, prisma, dart, ocaml-lsp, bash, terraform, texlab, dockerfile, gleam, clojure-lsp, nixd, tinymist, haskell-language-server, julials enabled LSP servers
INFO  2026-04-05T00:05:31 +0ms service=file.watcher directory=/home/damho1104/src/opencode init
INFO  2026-04-05T00:05:31 +0ms service=file.watcher directory=/home/damho1104/src/opencode platform=linux backend=inotify watcher backend
INFO  2026-04-05T00:05:31 +2ms service=bus type=command.executed subscribing
INFO  2026-04-05T00:05:31 +2ms service=server status=completed duration=1784 method=GET path=/session request
INFO  2026-04-05T00:05:31 +27ms service=vcs branch=dev default_branch=dev initialized
INFO  2026-04-05T00:05:31 +0ms service=bus type=file.watcher.updated subscribing
WARN  2026-04-05T00:05:31 +4ms service=skill name=web-design-guidelines existing=/home/damho1104/.agents/skills/web-design-guidelines/SKILL.md duplicate=/home/damho1104/.config/opencode/skills/web-design-guidelines/SKILL.md duplicate skill name
WARN  2026-04-05T00:05:31 +0ms service=skill name=vercel-react-best-practices existing=/home/damho1104/.agents/skills/vercel-react-best-practices/SKILL.md duplicate=/home/damho1104/.config/opencode/skills/vercel-react-best-practices/SKILL.md duplicate skill name
WARN  2026-04-05T00:05:31 +0ms service=skill name=mermaid-diagrams existing=/home/damho1104/.agents/skills/mermaid-diagrams/SKILL.md duplicate=/home/damho1104/.config/opencode/skills/mermaid-diagrams/SKILL.md duplicate skill name
INFO  2026-04-05T00:05:31 +1ms service=skill count=4 init
INFO  2026-04-05T00:05:31 +3ms service=server status=completed duration=1824 method=GET path=/agent request
INFO  2026-04-05T00:05:31 +10ms service=bus type=* subscribing
INFO  2026-04-05T00:05:31 +0ms service=bus type=session.updated subscribing
INFO  2026-04-05T00:05:31 +0ms service=bus type=message.updated subscribing
INFO  2026-04-05T00:05:31 +0ms service=bus type=message.part.updated subscribing
INFO  2026-04-05T00:05:31 +0ms service=bus type=session.diff subscribing
INFO  2026-04-05T00:05:31 +1ms service=format init
INFO  2026-04-05T00:05:31 +0ms service=lsp serverIds=deno, typescript, vue, eslint, oxlint, biome, gopls, ruby-lsp, pyright, elixir-ls, zls, csharp, fsharp, sourcekit-lsp, rust, clangd, svelte, astro, jdtls, kotlin-ls, yaml-ls, lua-ls, php intelephense, prisma, dart, ocaml-lsp, bash, terraform, texlab, dockerfile, gleam, clojure-lsp, nixd, tinymist, haskell-language-server, julials enabled LSP servers
INFO  2026-04-05T00:05:31 +1ms service=file.watcher directory=/home/damho1104/src/gemini-proxy-api-server init
INFO  2026-04-05T00:05:31 +0ms service=file.watcher directory=/home/damho1104/src/gemini-proxy-api-server platform=linux backend=inotify watcher backend
INFO  2026-04-05T00:05:31 +1ms service=bus type=command.executed subscribing
INFO  2026-04-05T00:05:31 +1ms service=server status=completed duration=1832 method=GET path=/session request
INFO  2026-04-05T00:05:31 +21ms service=vcs branch=main default_branch=main initialized
INFO  2026-04-05T00:05:31 +0ms service=bus type=file.watcher.updated subscribing
INFO  2026-04-05T00:05:31 +13ms service=bus type=* subscribing
INFO  2026-04-05T00:05:31 +1ms service=bus type=session.updated subscribing
INFO  2026-04-05T00:05:31 +0ms service=bus type=message.updated subscribing
INFO  2026-04-05T00:05:31 +0ms service=bus type=message.part.updated subscribing
INFO  2026-04-05T00:05:31 +0ms service=bus type=session.diff subscribing
INFO  2026-04-05T00:05:31 +0ms service=format init
INFO  2026-04-05T00:05:31 +0ms service=lsp serverIds=deno, typescript, vue, eslint, oxlint, biome, gopls, ruby-lsp, pyright, elixir-ls, zls, csharp, fsharp, sourcekit-lsp, rust, clangd, svelte, astro, jdtls, kotlin-ls, yaml-ls, lua-ls, php intelephense, prisma, dart, ocaml-lsp, bash, terraform, texlab, dockerfile, gleam, clojure-lsp, nixd, tinymist, haskell-language-server, julials enabled LSP servers
INFO  2026-04-05T00:05:31 +1ms service=file.watcher directory=/home/damho1104/src/claude-code-wrapper-api-server init
INFO  2026-04-05T00:05:31 +0ms service=file.watcher directory=/home/damho1104/src/claude-code-wrapper-api-server platform=linux backend=inotify watcher backend
INFO  2026-04-05T00:05:31 +1ms service=bus type=command.executed subscribing
INFO  2026-04-05T00:05:31 +1ms service=server status=completed duration=1870 method=GET path=/session request
INFO  2026-04-05T00:05:31 +12ms service=server method=GET path=/path request
INFO  2026-04-05T00:05:31 +0ms service=server status=started method=GET path=/path request
INFO  2026-04-05T00:05:31 +1ms service=server status=completed duration=1 method=GET path=/path request
INFO  2026-04-05T00:05:31 +0ms service=server method=GET path=/command request
INFO  2026-04-05T00:05:31 +0ms service=server status=started method=GET path=/command request
INFO  2026-04-05T00:05:31 +4ms service=mcp key=websearch type=remote found
INFO  2026-04-05T00:05:31 +4ms service=mcp key=context7 type=remote found
INFO  2026-04-05T00:05:31 +1ms service=mcp key=grep_app type=remote found
INFO  2026-04-05T00:05:31 +1ms service=server method=GET path=/vcs request
INFO  2026-04-05T00:05:31 +0ms service=server status=started method=GET path=/vcs request
INFO  2026-04-05T00:05:31 +1ms service=server status=completed duration=1 method=GET path=/vcs request
INFO  2026-04-05T00:05:31 +0ms service=server method=GET path=/project/current request
INFO  2026-04-05T00:05:31 +0ms service=server status=started method=GET path=/project/current request
INFO  2026-04-05T00:05:31 +1ms service=server status=completed duration=1 method=GET path=/project/current request
INFO  2026-04-05T00:05:31 +0ms service=server method=GET path=/question request
INFO  2026-04-05T00:05:31 +0ms service=server status=started method=GET path=/question request
INFO  2026-04-05T00:05:31 +1ms service=server status=completed duration=1 method=GET path=/question request
INFO  2026-04-05T00:05:31 +0ms service=server method=GET path=/permission request
INFO  2026-04-05T00:05:31 +0ms service=server status=started method=GET path=/permission request
INFO  2026-04-05T00:05:31 +1ms service=server status=completed duration=1 method=GET path=/permission request
INFO  2026-04-05T00:05:31 +0ms service=server method=GET path=/session request
INFO  2026-04-05T00:05:31 +0ms service=server status=started method=GET path=/session request
INFO  2026-04-05T00:05:31 +1ms service=server status=completed duration=1 method=GET path=/session request
INFO  2026-04-05T00:05:31 +6ms service=server method=GET path=/mcp request
INFO  2026-04-05T00:05:31 +0ms service=server status=started method=GET path=/mcp request
INFO  2026-04-05T00:05:31 +3ms service=vcs branch=main default_branch=main initialized
INFO  2026-04-05T00:05:31 +0ms service=bus type=file.watcher.updated subscribing
INFO  2026-04-05T00:05:31 +146ms service=server method=GET path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
INFO  2026-04-05T00:05:31 +0ms service=server status=started method=GET path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
ERROR 2026-04-05T00:05:31 +1ms service=server error=NotFoundError failed
INFO  2026-04-05T00:05:31 +0ms service=server status=completed duration=1 method=GET path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
INFO  2026-04-05T00:05:31 +13ms service=server method=POST path=/pty request
INFO  2026-04-05T00:05:31 +0ms service=server status=started method=POST path=/pty request
INFO  2026-04-05T00:05:31 +2ms service=pty id=pty_d5af57eca001LeEaQBEEd9BwTz cmd=/bin/bash args=["-l"] cwd=/Users/damho1104/Develop/src creating session
INFO  2026-04-05T00:05:31 +14ms service=bus type=pty.created publishing
INFO  2026-04-05T00:05:31 +6ms service=server status=completed duration=22 method=POST path=/pty request
INFO  2026-04-05T00:05:31 +24ms service=server method=PUT path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
INFO  2026-04-05T00:05:31 +0ms service=server status=started method=PUT path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
INFO  2026-04-05T00:05:31 +1ms service=server status=completed duration=1 method=PUT path=/pty/pty_d5af25359001buRgk1QZyHUKlO request
INFO  2026-04-05T00:05:31 +1ms service=server method=PUT path=/pty/pty_d5af57eca001LeEaQBEEd9BwTz request
INFO  2026-04-05T00:05:31 +0ms service=server status=started method=PUT path=/pty/pty_d5af57eca001LeEaQBEEd9BwTz request
INFO  2026-04-05T00:05:31 +0ms service=bus type=pty.updated publishing
INFO  2026-04-05T00:05:31 +1ms service=server status=completed duration=1 method=PUT path=/pty/pty_d5af57eca001LeEaQBEEd9BwTz request
INFO  2026-04-05T00:05:31 +2ms service=server method=GET path=/pty/pty_d5af57eca001LeEaQBEEd9BwTz/connect request
INFO  2026-04-05T00:05:31 +0ms service=server status=started method=GET path=/pty/pty_d5af57eca001LeEaQBEEd9BwTz/connect request
INFO  2026-04-05T00:05:31 +2ms service=pty id=pty_d5af57eca001LeEaQBEEd9BwTz client connected to session
INFO  2026-04-05T00:05:31 +0ms service=server status=completed duration=2 method=GET path=/pty/pty_d5af57eca001LeEaQBEEd9BwTz/connect request
INFO  2026-04-05T00:05:31 +210ms service=mcp key=websearch transport=StreamableHTTP connected
INFO  2026-04-05T00:05:31 +218ms service=mcp key=websearch toolCount=1 create() successfully created client
INFO  2026-04-05T00:05:32 +132ms service=mcp key=grep_app transport=StreamableHTTP connected
INFO  2026-04-05T00:05:32 +218ms service=mcp key=context7 transport=StreamableHTTP connected
INFO  2026-04-05T00:05:32 +80ms service=mcp key=grep_app toolCount=1 create() successfully created client
INFO  2026-04-05T00:05:33 +691ms service=mcp key=context7 toolCount=2 create() successfully created client
INFO  2026-04-05T00:05:33 +1ms service=server status=completed duration=1766 method=GET path=/mcp request
ERROR 2026-04-05T00:05:33 +198ms service=mcp clientName=context7 error=MCP error -32601: Method not found failed to get prompts
ERROR 2026-04-05T00:05:33 +55ms service=mcp clientName=grep_app error=MCP error -32601: Method not found failed to get prompts
INFO  2026-04-05T00:05:33 +2ms service=server status=completed duration=2042 method=GET path=/command request
INFO  2026-04-05T00:05:33 +39ms service=server method=GET path=/provider request
INFO  2026-04-05T00:05:33 +0ms service=server status=started method=GET path=/provider request
INFO  2026-04-05T00:05:33 +14ms service=provider status=started state
INFO  2026-04-05T00:05:33 +14ms service=provider init
INFO  2026-04-05T00:05:34 +937ms service=provider providerID=zai-coding-plan found
INFO  2026-04-05T00:05:34 +0ms service=provider providerID=openrouter found
INFO  2026-04-05T00:05:34 +0ms service=provider providerID=opencode-go found
INFO  2026-04-05T00:05:34 +0ms service=provider providerID=openai found
INFO  2026-04-05T00:05:34 +0ms service=provider providerID=github-copilot found
INFO  2026-04-05T00:05:34 +0ms service=provider providerID=opencode found
INFO  2026-04-05T00:05:34 +1ms service=provider providerID=google found
INFO  2026-04-05T00:05:34 +0ms service=provider providerID=lmstudio found
INFO  2026-04-05T00:05:34 +0ms service=provider providerID=cl-co-wrapper found
INFO  2026-04-05T00:05:34 +0ms service=provider status=completed duration=952 state
INFO  2026-04-05T00:05:34 +38ms service=server status=completed duration=1004 method=GET path=/provider request

Plugins

opencode-openai-codex-auth, oh-my-openagent@latest

OpenCode version

1.3.15

Steps to reproduce

  1. Launch OpenCode desktop app
  2. Connect to local server and work (create sessions, use terminals)
  3. Switch to a remote server via the server selection menu
  4. After health check succeeds, UI freezes

Screenshot and/or share link

2026-04-05.09.28.03.mov

Operating System

macOS 26.4

Terminal

No response

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingwebRelates to opencode on web / desktop

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions