Enforces workspace-scoped owpenbot identities/bindings via openwork-server, updates the Identities UI and Tauri status schema, and adds UX evidence screenshots.
Reuse an existing Vite dev server instead of failing on busy ports, avoid Node 25 top-level await exit, and ensure opencode sidecar tracks latest when unpinned.
* fix(owpenbot): guard health timer cleanup
Avoid calling clearInterval with a null timer so TypeScript builds stay green.
* feat(owpenbot): add operator TUI
Add a TTY-first interactive menu that talks to the owpenbot health API (direct or via openwork-server proxy) for QR, token, groups, and bindings management.
* chore(desktop): refresh Cargo.lock
Update the lockfile to match the current desktop crate version so Linux CI can run with --locked.
* fix(owpenbot): require client token for proxy TUI
When using openwork-server proxy mode, include a Bearer client token for /owpenbot/health while still supporting host-token for admin endpoints.
* feat(openwrk): add deploy ssh adapter
Add an SSH deploy command that bootstraps openwrk on a remote Linux host via the npm tarball, optionally syncs workspace config, and starts the host under nohup with a connect artifact for pairing.
* chore(desktop): refresh Cargo.lock
Update the lockfile to match the current desktop crate version so Linux CI can run with --locked.
Run tauri dev with a separate bundle identifier and OPENWRK_DATA_DIR so dev and production can run side-by-side without clobbering app data or openwrk state.
Gate verbose logs behind openwork.debug.workspaceSwitch to capture timing, session list counts, and sidebar refresh behavior during remote->local switches.
Limit sidebar session list payload and avoid refreshing remote workspaces when only local engine auth/baseUrl changes (common on remote->local switches).
* feat: proxy owpenbot via openwork-server
Unify client surface by routing owpenbot through /owpenbot/* (+ /w/:id/owpenbot/*), and move QR/token flows off interactive CLI calls. Sandbox mode keeps owpenbot internal (no extra published port) while preserving health + config via the edge.
* chore(desktop): refresh Cargo.lock
Update the Tauri crate lockfile so linux CI can run with --locked.
- Replace flat step list with compact single-line rows featuring status dots,
tool-type-specific icons (read/edit/search/terminal/etc), and truncated details
- Add classifyTool() for semantic tool categorization and icon mapping
- Improve summarizeStep() to extract filenames, commands, and patterns
instead of dumping raw output with line numbers
- Replace bordered card container with clean left-border-line expand panel
- Show step count badge in collapsed state ('N steps')
- Add running state indicator with pulse animation
- Use ChevronRight rotate animation instead of ChevronDown for expand/collapse
- Extract StepsContainer as reusable component for both cluster and inline steps
- Filter out raw file content markers (<file> 00001|) from detail text
- Parse 'Success. Updated...' messages to show just the filename
The Plugins nav item was dropped during the DLS alignment refactor (bd6062c).
The PluginsView component and tab routing were still wired correctly --
only the sidebar and mobile bottom-nav buttons were missing.
- Add Plugins button to right sidebar (between Skills and Apps)
- Add Plugins button to mobile bottom nav (5-col grid)
- Import Cpu icon from lucide-solid (same icon used before removal)