Skip to content
| Marketplace
Sign in
Visual Studio Code>Visualization>Traverse — Codebase SurveyNew to Visual Studio Code? Get it now.
Traverse — Codebase Survey

Traverse — Codebase Survey

kushagra

|
2 installs
| (0) | Free
Surveys the workspace you have open as an isometric city. Every file is a solid with real mass; hover any of them for its detected tech stack and the evidence that proved it.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info
Traverse — a core sample pulled from the ground and stood on end

Traverse

Survey the workspace you have open as an isometric city.

Stars Contributors Licence CI

The survey plane: every file in the workspace drawn as a solid, districts following the folder tree, with the Key at bottom right

VS Code shows you a codebase as a list of names in a tree. That tells you where files sit and nothing about what they weigh, what they lean on, what they are built with, or which ones the whole thing rests on.

Traverse draws the same repository as ground you can walk. Every file is a solid with real mass. Hover any of them for what it does and the stack that reaches it — with the evidence that proved it.

The drawings on this page are Traverse surveying its own repository. Nothing is mocked up.


📐 What the drawing means

You see It means
Colour the language it is written in — ochre JavaScript, drafting-blue TypeScript, magenta stylesheets, viridian Python
Height line count, log-scaled
Footprint file size
A wider base and buttresses many files import it — load-bearing
Orthogonal lines with diamond junctions imports, routed as streets
An orange crack in the ground a dependency cycle — a fault line
A crane uncommitted changes in your working tree right now
Scaffolding on a façade unresolved TODO and FIXME markers
A weathered, faded solid nobody has touched it in a long time
A sealed vault a file Traverse recognised as secret-shaped and never opened

Colour and hatch carry two different facts and never fight over one. Colour is the language; hatch is the role — what the file is for. Press C to put role on the plane instead, on a dark-to-light value scale.

The Key sits on the drawing itself, bottom right, because a survey without a key is a decoration. It lists only the languages this workspace actually contains, commonest first, with file counts — and every row is a control: click one to show only those files.

Districts follow the real folder tree, so the map matches the mental model you already have.


✦ Features

Clicking traces a file

Selecting a solid draws what that file is connected to, in two directions at once, with the import routes lit as ribbons and the rest faded to a whisper.

  • Signal orange — downstream. What imports this file, transitively. The blast radius: what a change here would reach.
  • Deep teal — upstream. What this file imports. What it rests on.

The status line reports the count in words: "model.ts — changing it reaches 35 files." Press B for the blast radius alone. Esc clears it.

model.ts selected, its blast radius lit in orange across the plane, with the Field Card open beside it

The core sample

Select any building and the Field Card cuts a core sample: the file pulled and stood on end, imports at the bedrock, exports at the cap, band thickness in proportion to line count, each band hatched with the same mark its role wears on the plane.

The bands carry symbol names, never source text — a deliberate limit.

The Field Card for model.ts: language, lines, size, symbol count, importers, and the core sample broken into declarations, types and constants

The survey query

Type / then firebase, and every file that actually touches Firebase lights up — not every file with the word somewhere in its path.

Overlays

Churn, weathering, orphans, cycles and scaffolding wash the ground without repainting it, so the colour underneath stays readable and switching one on does not throw away the reading you had.

Plan view

P looks straight down, like a site plan — the import graph as orthogonal routes between districts.

Plan view: the same survey seen from directly above, imports running as orthogonal routes between districts

Poster and Browser

Poster exports the current view as a true vector SVG with the key and metrics baked in — sharp at A1, and openable in a vector editor.

Browser writes the survey as a single self-contained page and opens it — the same drawing and the same controls, for a second monitor or for sending to someone who was not here. It is deliberately a file, not a server.


🖼 Two palettes

Survey Table by day; Drafting Lamp on a dark theme — the same drawing under a lamp, not a second product.

The same survey in the Drafting Lamp palette, dark ground with the solids lit from above

Under a high contrast theme Traverse hands over to your editor's own colours entirely, because someone running high contrast has told the editor that legibility beats decoration — and a drawing board is decoration.


⌨️ Usage

Requires VS Code 1.90 or newer.

Traverse is on the pre-release channel. Everything described here works and is covered by tests, but it has not yet met many repositories other than its author's. If you hit something wrong, an issue is genuinely useful right now.

Install from the Marketplace — search Traverse in the Extensions view (Ctrl+Shift+X), then press Switch to Pre-Release Version. Or run:

ext install abhinavkushagra.traverse

Or install a release build — download the .vsix from Releases and run:

code --install-extension traverse-<version>.vsix

Then run Traverse: Survey This Workspace from the command palette, or press Ctrl+Alt+M (Cmd+Alt+M on macOS). A few hundred files take about a tenth of a second.

Getting around

Key Does
Drag pan
Shift + drag orbit off the isometric axis
Scroll zoom
Click trace — select, and light what it connects to
Double-click open the file
Enter go inside a district
Backspace come back out
B blast radius alone, without the upstream half
L labels: automatic → everything that fits → off
C colour by language ↔ colour by role
P plan view, straight down, like a site plan
T palette: follow the editor → light → dark → match my theme
F full screen
R reset the view
Esc clear the trace
/ survey query

Every control explains itself: hover or tab to any chip, key row or hint and it says what it does, in a sentence.

Commands

Command What it does
Traverse: Survey This Workspace Draw the city
Traverse: Re-run the Survey Re-scan after changes
Traverse: Export Poster… Save the current view as vector SVG
Traverse: Open This Survey in a Browser Write a standalone page and open it
Traverse: Follow the Active Editor Keep the selection in step with your tabs
Traverse: Show What Traverse Reads Open the threat model
Traverse: Open Getting Started Walkthrough The three-step introduction

⚙️ Customization

Setting Default What it does
traverse.appearance.palette auto auto, day, night, or theme to take every colour from your editor theme
traverse.appearance.colorBy language What colour means when the panel opens — language or role
traverse.appearance.labelBudget 150 How many file names may be on screen at once
traverse.scan.maxFiles 25000 Hard ceiling on files inspected in one survey
traverse.scan.maxFileSizeKb 512 Larger files are counted and drawn, never read
traverse.scan.maxDepth 16 Maximum directory depth walked
traverse.scan.extraExcludes [] Directory names to skip, on top of the always-excluded set
traverse.scan.respectGitignore true Skip files matched by .gitignore
traverse.git.enabled true Read git history for churn, weathering and crane markers
traverse.enrichment.enabled false Look up package licence, latest version and vulnerability counts
traverse.notifications.posterSaved true Notify after a poster is exported

The scan and git settings are machine-scoped on purpose: a repository must not be able to raise a ceiling from its own .vscode/settings.json.

The palette switch in the rail (T) writes the setting rather than holding the choice for the session, so the rail and the Settings UI are one control with two surfaces and cannot drift apart.


🔒 Privacy and security

Traverse reads every file in your workspace, so the security work is not a section at the end — it is the shape of the architecture.

  • No network. The webview's content security policy sets connect-src 'none', so telemetry is not disabled by a setting; it is impossible in the page. Dependency enrichment is opt-in, off by default, and asks for per-workspace consent naming the exact hosts and the exact data.
  • Secrets are never opened. .env*, key material, .npmrc, credentials files and the like are counted and drawn as sealed vaults. You can see on the map exactly which files were refused.
  • No file contents leave the analyser. The webview receives structure and symbol names, never source text — and, by CSP, has nowhere to send them.
  • Ceilings on everything: file count, file size, depth and wall-clock, all machine-scoped.
  • Untrusted workspaces draw from the file inventory only. Nothing is parsed, git does not run, and enrichment cannot be switched on.

Every one of those claims has a test that fails the build if it stops being true. The reasoning, the known limits and what is deliberately out of scope are in the threat model — or run Traverse: Show What Traverse Reads from the palette.


♿ Accessibility

The whole survey is also emitted as a real DOM tree — headings, lists, focusable rows, one per file — visually hidden until you tab into it. It is the screen-reader view and the keyboard view.

It is also the fallback. If WebGL is unavailable — remote SSH, a VM without a GPU, software rendering — that view takes the whole pane rather than showing you a dead canvas. If VS Code reports a screen reader attached, it becomes the view.

The scene has no motion to reduce; it renders on demand behind a dirty flag. What motion exists in the chrome is turned off by either signal: the operating system's prefers-reduced-motion, or VS Code's own workbench.reduceMotion.

The keyboard focus ring uses --vscode-focusBorder in every palette, not just theme mode.


Contributing

Bug reports and pull requests are welcome — see CONTRIBUTING.md for the architecture, the test suites and how to run the headless survey tool.

Licence

MIT. See LICENSE.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft