You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Feature: Centralized File Location Index with Cross-Machine Sync
Problem
Projects stores workspace paths in vscode.ExtensionContext.globalState, which is local to each VS Code installation. When Eric works across Ventress (main workstation), Snoke (server), and his laptop, the same project exists at different absolute paths on each machine (e.g., /home/eric/projects/foo vs /Users/eric/projects/foo vs /mnt/ventress/projects/foo). There is no way to share where a file or project lives across devices, forcing manual path bookkeeping or broken workspace links when switching machines.
Proposed Solution
Introduce a File Location Index (FLI) — a machine-agnostic mapping layer that decouples the logical project identity from its physical path on any given host.
Feature: Centralized File Location Index with Cross-Machine Sync
Problem
Projects stores workspace paths in
vscode.ExtensionContext.globalState, which is local to each VS Code installation. When Eric works across Ventress (main workstation), Snoke (server), and his laptop, the same project exists at different absolute paths on each machine (e.g.,/home/eric/projects/foovs/Users/eric/projects/foovs/mnt/ventress/projects/foo). There is no way to share where a file or project lives across devices, forcing manual path bookkeeping or broken workspace links when switching machines.Proposed Solution
Introduce a File Location Index (FLI) — a machine-agnostic mapping layer that decouples the logical project identity from its physical path on any given host.
Core Data Model
Sync Backend Options (in order of preference)
gist..projects-index.jsonthat can be rsync'd or dropped into Dropbox/iCloud.Implementation Plan
l13Projects.machineIdsetting (auto-detect hostname, user-overridable).l13Projects.sync.enabledandl13Projects.sync.backendsettings (gist,http,file).src/sync/IndexManager.tsthat wraps read/write of the FLI.(projectId, machineId, absolutePath)to the index.machineIdfrom the index; if missing, prompt to "link this location".src/sync/GistSyncProvider.tsimplementing aSyncProviderinterface.pullIndex(),pushIndex(index),resolveConflict(local, remote).lastModifiedtimestamps fromstateInfofor optimistic concurrency.ProjectsState.getByPath()andWorkspacesState.getByPath()to accept aprojectIdand resolve the local path via the index.Projects: Open Project on Another Machine— shows a quick-pick ofmachineIds and copies the SSH/scp path to clipboard."Also on: ventress, snoke".Acceptance Criteria
Open Questions
originURL as the canonical project ID, or a UUID? Git remote is deterministic but fails for non-Git projects.