Brings the desktop beta work into dev as a merge commit, so its history is kept.
Core, server and client changes from beta were backported to dev one PR at a time
first (#59081 to #59107).
Left out of this merge, so dev keeps its current behaviour:
- Generated UI, entirely: the plugin-genui package, its core registration and
publishing, the session-ui surfaces, charts, form replies and streaming tool
input, the app setting and its strings, tool-input delta publishing, and their
tests. It lands on dev later through its own pull request.
- The `ast-grep-ignore: no-star-import` comment in cross-spawn-spawner.ts,
which lint:effect-patterns still needs.
Notes:
- Dev-channel builds now use their own service-dev.json, port and
opencode-dev.db (#58331), so dev-build users start on a fresh database.
- #56550 (plugin instruction entries) and #57527 (untracked folder rows) come
in as on beta; follow-ups go to dev.
- Docs from beta are pointed at check-test.yml, after the workflow rename.
- #59132's fix (settings toggles MCP servers in the session's location) is
ported onto beta's rewritten Extensions page, and #59131's browser title test
joins beta's tab tests.
Give the TUI client timeout: false, share the no-timeout fetch helper across run, mini and the TUI via @opencode/util/no-timeout-fetch, and surface existing-session shell failures with a toast and composer restore.
Closes#54974
Co-authored-by: Finn763 <finn763@users.noreply.github.com>