-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Finish cross-OS Starter workspace path normalization for session isolation #1136
Description
Problem
OpenWork relies on OpenCode for session isolation, but OpenWork still owns the path identity it passes into OpenCode. Today, Starter/local workspace behavior is improved but not yet proven cross-OS safe because path resolution and persisted workspace identity can still depend on path formatting details.
This leaves us vulnerable to cases where the same logical workspace is represented differently across app bootstrap, restart, workspace creation, or New session, for example:
~/OpenWork/starter/Users/name/OpenWork/starter- non-canonical paths with
.. - Windows separator/casing variants
When that happens, OpenCode may correctly isolate sessions by the directory it receives, but OpenWork may accidentally scope history to the wrong directory or split one logical workspace into multiple identities.
Goal
Make Starter/local workspace session scoping fully cross-OS safe and provably stable across:
- first-run bootstrap
- app restart
New session- workspace creation/switching
- persisted workspace state migration
What remains
- Create a single OS-aware source of truth for resolving the Starter workspace path to an absolute canonical path.
- Ensure all local workspace flows use that resolved path instead of raw
~/...strings. - Never persist or compare raw tilde paths; only persist normalized/canonical absolute paths.
- Migrate existing saved local workspace state that may contain tilde or non-canonical paths.
- Verify workspace identity is derived from normalized canonical paths only.
- Run real desktop verification on macOS, Linux, and Windows for Starter/local workspace session isolation.
Test matrix
Run on each OS:
- first launch bootstraps Starter
- create a session in Starter
- quit/relaunch app and verify Starter history remains
- click
New sessionin Starter and verify it stays attached to Starter - create another workspace and verify Starter history remains
- switch away/back and verify history remains
- verify migration from old persisted state with tilde/non-canonical paths
Notes
- OpenCode already provides session isolation for the directory/project scope it receives.
- The remaining risk is in OpenWork's path resolution, persistence, and reconnect behavior.
- Related fix work is in PR fix(session): preserve workspace history during local reconnects #1135, but this issue tracks the remaining work needed to call the behavior truly finished and cross-OS safe.