* fix: prevent session loss when switching workspaces
Add guard to prevent clearing sidebar sessions when the session store
temporarily returns empty during worker restart/reconnect. This fixes
the issue where sessions disappear from the sidebar when switching
between workspaces or refreshing the window.
Fixes#750, #735
* feat(app): add shouldUpdateSidebarSessions pure function with tests
Extract the guard logic from app.tsx into a testable pure function
to prevent session loss during workspace switches.
- Add `shouldUpdateSidebarSessions` to `lib/sidebar-sessions-guard.ts`
- Add test script `scripts/sidebar-sessions-guard.mjs` with 7 test cases
- Update app.tsx to use the extracted function
- Add `test:sidebar-sessions-guard` script to package.json
The guard prevents the sidebar from being cleared when the server
temporarily returns an empty session list during worker restart/reconnect.
Ref: #750
* fix(session): improve local file-open fallback and diagnostics
* fix(session): normalize file URI local path resolution
* test(session): cover file URI normalization edge cases
* test(app): include local file-path regression in e2e flow
* fix(ci): run app e2e script and normalize file:/ URIs
* test(app): run local file-path regression without bun
---------
Co-authored-by: xj <gh-xj@users.noreply.github.com>
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.
* fix(app): include full prompt text for mentions
* fix(app): send valid file parts for mentions
* chore(desktop): update Cargo.lock
* chore(desktop): regenerate Cargo.lock for linux
* chore(desktop): update Cargo.lock
* fix(desktop): isolate OPENCODE_BIN_PATH in doctor tests