FINALLY
Finally, folders for your VS Code terminals.
Rename a terminal with a slash and FINALLY renders it as a nested folder in the activity bar. The terminal name is the path. There is no separate folder database to drift out of sync.
v0.2.0 — Reload-recovery shipped. Terminal organization now survives Developer: Reload Window and editor restarts. Auto-defends against agent CLIs (Claude Code, Codex, Copilot, Gemini) that try to overwrite the tab title via OSC sequences. See the CHANGELOG for details.
Why
VS Code has no native way to organize the terminal panel. After a few hours of work you have fifteen terminals named 02_AURORA_AUTH_OAUTH_REFACTOR, *Review payments billing audit, and three different zsh shells. You scroll. You squint. You open the wrong one twice.
FINALLY collapses all of that into a tree you can actually navigate.
How it works
Path is identity. Rename a terminal to Projects/Aurora/Auth/OAuth_Refactor and FINALLY parses the slashes into folder structure:
Projects
└── Aurora
└── Auth
└── OAuth_Refactor
Rename it again in VS Code's tab UI to Local_Tools/Build_Audit and the tree reflects it on the next poll tick. No database. No JSON. No drift.
Drag a terminal between folders in the FINALLY tree and the terminal is renamed with the new path prefix. Rename a folder and every descendant terminal is renamed in a planned, confirmed batch. The folder is the prefix.
Since v0.2.0, your organized names survive Developer: Reload Window and editor restarts — FINALLY records each non-generic terminal name to local storage, and on the next activation it re-applies any name that VS Code restored as a generic shell or an agent-CLI banner (2.1.146, 1.0.0, etc.). The sticky store is a reload-recovery cache only; live terminals still drive the tree. No drift.
Install
From the VS Code Marketplace:
ext install fibogacci.finally
Or via the Quick Open palette: Ctrl+P, then paste:
ext install fibogacci.finally
Use
- Open the FINALLY view in the activity bar (the cascading bars icon).
- Rename any terminal with
/ between segments. Example: Projects/Aurora/Auth/OAuth_Refactor.
- The tree appears. Click a leaf to focus that terminal. Right-click for rename, move, and close actions. Drag terminals between folders to reorganize.
That is the entire product surface. There is no configuration to learn.
Showcase
Tree from terminal names
Rename with /. The tree appears. No database. No JSON. No drift.
|
screen capture coming soon
Drag-drop reorganization
Drop a terminal into a folder. It is renamed with the new path prefix. Conflict modal prevents silent overwrites — never swaps, never merges.
|
|
screen capture coming soon
Native terminal right-click
VS Code's own terminal context menu now includes Move to FINALLY folder (v0.1.4). No panel switching, no command palette.
|
screen capture coming soon
Folder rename batch
Rename a folder. Every descendant terminal is renamed in a planned, confirmed batch with per-rename status — never silently halfway-done.
|
What's shipped
Cumulative across the v0.1.x and v0.2.0 line:
- Reload-recovery — terminal names organized via FINALLY survive
Developer: Reload Window and editor restarts. Auto-defends against agent CLIs (Claude Code, Codex, Copilot, Gemini) that try to overwrite the tab title via OSC sequences. (v0.2.0)
- Live tree derived from terminal names — no separate folder database.
- Drag-drop reorganization with conflict guard (modal append-or-cancel; never silently overwrites).
- F2 rename on tree nodes, with batched folder rename (confirm → execute → per-rename status).
- New Folder / New Subfolder commands, including empty-folder persistence across reloads.
- New Terminal in Folder spawns a terminal directly inside a target folder.
- Move to Folder / Move out of Folder via tree right-click.
- Native terminal right-click → Move to FINALLY folder (v0.1.4) integrates with VS Code's own terminal context menu.
- Move-to-folder inline icon on terminal tabs for one-click reorganization (v0.1.3).
- Rich hover tooltips on tree nodes (v0.1.3).
- Auto-color tabs per folder for visual scanning (v0.1.1).
- Generic-shell bucketing —
zsh, bash, node collapse into a quiet Unfiled group at the bottom.
- Close all in folder as an opt-in danger action with typed confirmation.
Configuration
| Setting |
Default |
Description |
finally.separator |
/ |
Character that separates folder segments in terminal names. |
finally.pollIntervalMs |
250 |
How often FINALLY checks terminals for renames originating outside the extension. |
finally.hideGenericShells |
true |
Hide auto-named shells like zsh, bash, and node under a collapsed Unfiled group at the bottom of the tree. |
Compatibility
FINALLY pairs naturally with Claude Recall, the local-first session memory tool for Claude Code. Both products treat the terminal tab name as the source of truth. When FINALLY renames a terminal, Claude Recall picks up the new name as the session alias automatically. No code-level integration. No coupling. Just a shared invariant.
FINALLY works without Claude Recall.
Privacy
FINALLY runs entirely on your machine. No network calls. No telemetry. No usage analytics. No crash reports. No transmission of terminal names, contents, or commands to anyone.
This is a contractual commitment, not just a design choice. See the License Agreement, Section 5.
Roadmap
v0.2 (in progress): convert-existing-terminals wizard, multi-select drag, additional keyboard shortcuts.
v0.3: per-folder colors, custom icons, accessibility polish.
License
FINALLY is licensed under a proprietary End User License Agreement. See LICENSE for the full text. The short version: free for personal and Internal Business Purpose use, no redistribution, no reverse engineering, no derivative works. The current version is offered at no monetary cost; future versions may introduce paid tiers without affecting your rights in any version you have already installed.
Feedback
Bug reports and feature requests are welcome through the contact channel listed on the Visual Studio Code Marketplace publisher profile for fibogacci.