Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Downside UpNew to Visual Studio Code? Get it now.
Downside Up

Downside Up

Fredrik Vinkvist

|
2 installs
| (0) | Free
The Downside Up: understand unfamiliar code in plain language. Explain functions beside the source, map the project's architecture and main flows, and review changed functions, with grounded, cached AI explanations.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

The Downside Up

Understand unfamiliar code beside the source. Downside Up turns functions into plain-language explanations, pseudocode, and flowcharts in a synchronized VS Code preview. Explore the project's architecture or prepare explanations for changed functions before reviewing a branch.

The extension appears as Downside Up in Extensions, Settings, and commands. Requires VS Code 1.90 or newer.

Quick start

  1. Install Downside Up and open a source file in your project.
  2. Run Downside Up: Open Preview to the Side, or use the preview button in the editor title bar.
  3. Choose a model with the Functions button at the top of the preview. For GitHub Copilot, sign in to Copilot in VS Code first. Other extensions that provide VS Code language models also work.
  4. Click Explain beside a function. Review the repository/model sharing prompt before any code is sent.

The default provider is mock: it shows deterministic placeholder output without external requests. Choosing a VS Code language model switches to that provider. Requests use your provider's subscription and usage limits; they are not free or unlimited. OpenAI API access is also supported with a separate key and billing.

Read and explore

  • Explain functions. Read purpose, inputs, results, and steps in plain language. Pseudocode and flowcharts are enabled by default; More detail adds edge cases, language notes, and related code.
  • Stay beside the source. Editor and preview scroll together. Steps highlight their source lines, and saved explanations reappear when you return to a file. Click a function's name to navigate to its source; use Explain to request an explanation.
  • Explore the project. Run Downside Up: Preview Project, preview a folder from the Explorer, or navigate the breadcrumbs. Project maps show parts and connections; folder pages offer summaries and main flows.
  • Prepare a review. Run Downside Up: Review Changes…, select a comparison, and confirm the changed functions to explain.
  • Choose models by role. Functions handles explanations and file summaries. Project overview handles repository context, architecture maps, folder summaries, and flows.
  • Follow callers. The Show callers icon beside a function lists direct callers using your language extension's incoming Call Hierarchy. Choose one to open its source and preview; use VS Code's Go Back to return. This works regardless of the selected steps, pseudocode, or flowchart tab.

Caller lookup prefers a language extension's incoming Call Hierarchy. Without it, Go and Rust use a bounded local scan of direct free-function calls, labelled Statically found callers. That fallback omits uncertain receiver methods, interface/trait dispatch, macros, and closures; results are not exhaustive. Results are limited to eligible files in the current repository. Lookup itself makes no AI requests. Navigation shows cached explanations; with prefetch enabled and sharing already approved, the existing reader-focused queue loads missing explanations.

Rust, Go, JavaScript, and TypeScript (including JSX and React) have bundled function discovery. JavaScript/TypeScript dependency lookup uses VS Code's built-in TypeScript tooling. Other languages depend on installed extensions providing document symbols and go-to-definition; support varies.

Initialize, refresh, and clear

Initialize project, above the divider, appears when repository context is missing, including after Clear. It builds the shared overview and project map. Opening the project preview also requests a map if none is current.

The Refresh icon beside a page title updates only the checked outdated items on that page, not the whole repository. An amber divider indicates known outdated content; an animated blue divider, stage, and elapsed time show active work. Slow models can take several minutes; Cancel remains available.

Clear removes this repository's cached results and saved sharing consent. It does not start generation or require a restart. Tokens in current cache expands into input/output totals by role and model. These are retained-record totals, not lifetime usage or billing.

Privacy and control

Generation normally requires an explicit action. Opening files, moving the cursor, editing source, hovering, and cache misses do not send provider requests. Opening an unmapped project preview is an explicit mapping request. Optional prefetch is off by default; enabling it allows background explanations and consumes provider quota or billing, but only with existing repository/model sharing approval. It never prompts for consent on its own.

External requests require a trusted workspace and approval per repository and model. Depending on the action, requests include selected source, related code, file text, or bounded repository context. The extension respects Git ignore rules, .copilotignore, VS Code exclusions, and secret/generated-file exclusions. API keys are stored in VS Code SecretStorage.

GitHub Copilot's server-side content exclusions do not apply to this extension's Language Model API requests. Configure the extension's exclusions to match your organization's policy before sharing source. Provider data-handling terms still apply.

Explanations and maps are AI-generated and may be wrong or incomplete. Outdated indicators check recorded inputs; they are not a correctness guarantee or a whole-repository audit.

More information

In the repository and extension package:

  • docs/configuration.md: detailed usage, OpenAI setup, settings, prefetch, review mode, request limits, and enterprise exclusions.
  • docs/development.md: contributor setup, tests, packaging, and releases.
  • docs/prototype.md: architecture, privacy contract, and known limitations.
  • CHANGELOG.md: release notes.

For a locally built package, install the current version with code --install-extension the-downside-up-0.35.1.vsix.

License

MIT. See the repository's LICENSE file.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft