English | 日本語
A VS Code extension that manages projects as "lanes" within a workspace and switches the full context at once.
Built for developers running AI coding agents across multiple projects.
The Problem
When running many projects:
- Explorer shows all projects flat, hard to navigate
- Terminals pile up across projects
- Editor tabs from different projects get mixed
- No way to tell which project's agent is idle when running agents in parallel
Features
Each project becomes a "lane". Switching lanes swaps Explorer, editor tabs, terminals, and Git together.
The switch is a view change — background terminals keep running because the workspace folder URI stays stable (a .lanes-root/<workspace-hash>/active symlink whose target is updated on switch). The full 64-character SHA-256 hash gives every .code-workspace file in the same directory an independent active link.
When upgrading from v0.1.13, Project Lanes can use .lanes-root/active as read-only migration input if the current workspace folder and catalog both confirm that legacy state. The legacy link is never changed or removed by the migration.
Project Lanes leaves a new workspace unchanged until you run Project Lanes: Initialize Workspace. Set projectLanes.initializationMode to automatic to initialize new workspaces during extension startup. Already managed workspaces are repaired during startup in either mode.
In a managed workspace, Project Lanes normally sets the workspace default terminal profile to Lane Terminal temporarily so the terminal + button remains lane-aware. It restores the previous workspace value when the extension stops, but only if nothing else changed that setting. Project Lanes does not change terminal.integrated.enablePersistentSessions; its custom terminals are transient instead. When upgrading from v0.1.13, a migration prompt appears only for matching terminal settings that an earlier version may have left behind. Keep Current Settings preserves those matching values, Remove Legacy Settings clears them before acquiring the current reversible lease, and Manage Lane Terminal adopts the matching profile into that lease. Every choice keeps the terminal + button lane-aware while the workspace is managed.
- Lane switching
- Explorer and Git show only the active lane
- Editor tabs are saved and restored per lane
- Saved tabs survive VS Code restarts. Tabs for an inactive lane are restored only when you switch back to it, not during startup
- Terminals persist in the background across switches
- Activity indicator
- Shows
working / waiting / no-agent per lane, including lanes that aren't currently active
- Detection is a generic heuristic over OSC 633 shell integration (bash / zsh) and real-time PTY output observation; not specific to any agent
- Lane management
- Add folders as lanes and reconcile the active lane from title-bar icons on the Lanes panel
- Re-associate a missing or inaccessible lane with a readable folder; available lanes cannot be relocated
- Rename or remove a lane via right-click on the lane item. Rename preserves the lane's opaque identity and terminal sessions; remove rejects the active lane and never touches the folder on disk
Commands
| Command |
Description |
Project Lanes: Initialize Workspace |
Convert the current workspace into a managed Project Lanes workspace |
Project Lanes: Switch Lane |
Switch to a lane |
Project Lanes: Add Folder to Workspace |
Add a folder as a new lane via a folder picker rooted at the active lane's parent |
Project Lanes: Reload Lanes |
Absorb added workspace folders and reconcile the active link and selection cache |
Project Lanes: Locate Folder |
Re-associate a missing or inaccessible lane with a readable folder |
Project Lanes: Rename Lane |
Rename the selected lane's label; duplicate labels are disambiguated by folder path |
Project Lanes: Remove Lane |
Remove the selected lane from the catalog (the folder on disk is left untouched) |
Project Lanes: Close Terminals |
Kill all terminal sessions for the active lane |
Project Lanes: Toggle Activity Indicator |
Show or hide activity indicators without restarting VS Code |
Project Lanes: Find in Lanes |
Search file contents across all lanes with ripgrep and jump to a match |
Project Lanes: Go to File in Lanes |
Fuzzy-find a file across all lanes and open it |
Settings
| Setting |
Default |
Description |
projectLanes.initializationMode |
manual |
Initialize unmanaged workspaces by command or automatically at start |
projectLanes.activity.showIndicator |
true |
Show activity indicator in badge, decoration, and status bar |
projectLanes.terminal.shellPath |
"" |
Shell path for Lane Terminal (empty = $SHELL) |
Limitations
- The symlink-based lane switching assumes a POSIX filesystem (Linux / macOS); Windows is untested
- Activity detection requires shell integration via
bash or zsh and OSC 633. Other shells (fish, pwsh, etc.) skip injection and fall back to no-agent
- Tab restore covers normal file tabs only (not diff views, notebooks, etc.)
- Terminal sessions don't survive VS Code window reloads
- Workspace initialization creates
.lanes-root/<workspace-hash>/ next to the .code-workspace file; add .lanes-root/ to .gitignore if you don't want it tracked
License
MIT