The Downside UpUnderstand 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
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
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 clearInitialize 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 controlGeneration 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, 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 informationIn the repository and extension package:
For a locally built package, install the current version with
LicenseMIT. See the repository's |