Skip to content

Finish cross-OS Starter workspace path normalization for session isolation #1136

@benjaminshafii

Description

@benjaminshafii

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 session in 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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions