The bump script updates Cargo.toml but never regenerated Cargo.lock,
causing it to show as dirty after every version bump until someone
manually ran cargo. Now runs cargo generate-lockfile automatically.
Add docker-compose.dev.yml using off-the-shelf node:22-bookworm-slim image
that starts headless + web UI with auto-wired tokens and health checks.
Builds Linux binaries into /tmp to avoid overwriting host macOS binaries.
Store a default directory on workspace identities and auto-create bindings on first inbound message. Remove the bindings editor from the Identities UI and keep /dir as the advanced override.
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).