OpenCode is assigned a random port on every restart, so the cached
baseUrl in localStorage is always stale after a relaunch. Restoring it
caused all sidebar session.list requests to fail with ECONNREFUSED,
showing "Failed to load tasks" for every local workspace.
The correct baseUrl is provided by engine_info() after boot.
localStorage restore is kept for web mode where the server URL is fixed."
Co-authored-by: hao2015 <hzhang@ssnc-corp.global>
Show Recover only when a worker connection is in error and rename the menu label. Run recover via per-workspace connection state instead of global busy UI so it no longer hijacks app-wide synchronous blocking state.
Add a non-technical Get back online action in worker menus and route it through a recovery flow. Reuse existing OpenWork tokens during sandbox restarts so reconnects preserve existing access.
Remove the in-app artifact editor in favor of read-only artifact actions, with reveal and optional Obsidian open for markdown files. Add workspace reveal from worker menus and plugin removal controls so users can manage workers and plugins directly in the UI.
Made-with: Cursor
Deduplicate equivalent remote workspace entries and relax stale connecting locks so workspace rows remain actionable. Reuse the shared session workspace sidebar in dashboard views and remove redundant grouped headers to keep navigation consistent.
Made-with: Cursor
* feat(app,docs): apply Orbita session layout direction
* fix(app): restore session contrast with theme-safe colors
* docs(pr): refresh Orbita session screenshot evidence
* fix(app): correct dark mode contrast for composer gradient and user bubble
* docs(pr): update screenshot evidence after dark mode contrast fix
* fix(app): revert assistant message back to sans-serif font
* refactor(app): split workspace/session sidebar into component
Move the sidebar workspace/session list out of session.tsx so session view logic stays focused and future long-session iterations can evolve independently without reworking a 4k-line page.
* docs(pr): add sidebar extraction verification screenshot
Capture the session view after sidebar extraction so reviewers can quickly validate that worker navigation remains intact in the refactored component.
* Delete packages/app/pr/screenshots/ui-audit-2026-02-25/session-sidebar-component-after-extraction.png
Treat workspace-relative paths and common file-reference suffixes as local files so session output links open the intended file instead of falling back to external link behavior.