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.
Removes the experimental turn navigator rail beside the session timeline, its Experimental setting, search entry and copy, and the message list `before` query the server and protocol added only for it. The persisted showTurnNavigator key stays as a retired optional preference so stored settings still decode and round-trip.
Panel rows are subgrids of one table on the capsule's grid: the same hairline
and 10px inset put row glyphs on the capsule's glyph and names and commands on
its label, and run times end at the mirrored inset. Agent names, descriptions
and run times each line up in a column; descriptions take the remaining width,
and the run-time column is as wide as the longest time, with the stop button
swapping in place on hover. Right and centre placements share the capsule's end
edge or centre, and the e2e checks cover all three.
The server reports its hostname in /api/info. The current server (the
desktop sidecar or the server that served the web app) now shows its
hostname instead of "Local Server" or its address; a custom name still
wins and "This computer" is the fallback when no hostname is known.
Lists omit the current server, and the "This computer" hint appears only
in pickers that choose a server. Remotes on localhost addresses no
longer lose their tags in the new-session project picker.
Completion notices for background subagents and shells were merged into the
neighbouring collapsed tool groups on the Compact and Detailed presets, so
they were never visible. They now render as separate rows at the point where
the work finished, starting at the column edge with an outcome icon and
colour (finished, failed, cancelled), the capitalized agent name shared with
the subagent card, and click-through to the child session. Subagent outcomes
follow the Subagents setting; shell outcomes follow Notices.
Timeline benchmark unchanged.
Searches sessions across online servers, recent first. The button sits next to Home in top tabs and as a row in side tabs and the inbox. The command has no default keybind and is bindable in Shortcuts.
- The GUI project list comes from the server (GET /api/project) everywhere, in
its order (most recently active first), and follows project.updated: unknown
projects join, archived ones leave, activity re-sorts. "Add project" resolves
the directory on the server and reloads the list.
- Home lists only the server projects this client has used (per server, by
project ID), with a Close menu item that hides a project until it is used
again. The new-session location dialog lists used projects first, then the
rest; Settings and the command palette keep the full list.
- Projects sharing one directory under several IDs collapse to the most
recently active one on Home and in the location dialog.
- The directory list older builds stored is migrated once per server to used
project IDs after the server list loads, then dropped.
- Removed local project reordering, recently closed, close-as-hide of the
local list, the per-directory icon override cache and the opencode-test path
filter.