DERANGED PREVIEWER
A universal project preview, runtime, build, recovery and inspection system for Visual Studio Code.
Understand the project first. Then decide how to preview it.
Deranged Previewer is not a file-extension previewer. When you run
Deranged: Open Preview, it analyses the whole workspace — languages,
frameworks, package managers, runtimes, build systems, scripts, entry points,
services and their dependencies — builds a Preview Plan, and starts the
best available preview in a dedicated window. When something is broken it
keeps previewing what still works and shows exactly what failed, instead of
collapsing to a single BUILD FAILED screen.
Features
- Project Intelligence Engine — evidence-based, confidence-scored
detection of languages, frameworks, package managers, architecture and
individual components. Never claims a framework from a filename alone.
- Multi-component / monorepo aware — a workspace can contain a frontend,
an API, a worker and a database; Deranged builds a service graph and lets
you pick which application to preview.
- Automatic strategy selection — dev server, runtime execution,
compile-and-run, server preview, static preview, document render or data
inspection, chosen from evidence and local toolchain probing.
- Best Effort & Strict preview modes — Best Effort preserves the working
parts of an application when one part fails; Strict blocks the preview on a
compilation failure. Switch at any time.
- Last-Known-Good preview — a transient syntax error does not destroy the
existing preview; you see the last valid render with a clear warning that
the current source has errors.
- Live reload & incremental updates — uses your framework's own HMR
(Vite, Next, Nuxt, …) when present, and a built-in SSE reload channel for
the static fallback server. A dependency graph computes affected modules so
a one-file change does not rebuild everything.
- Integrated panels — Console, Problems, Network, Services, Inspector and
Document, with timestamps, search, filtering and auto-scroll.
- Document previewers — Markdown, JSON (tree), CSV (table), YAML, XML,
TOML, SVG (sanitized) and SQL (statement analysis + destructive-query
detection).
- Truthful state reporting — a service only shows Running when its
process is actually up. Missing compilers, missing dependencies and failed
services are reported honestly, never faked.
- Security-first — argument-array execution only (no shell strings),
path-traversal and symlink-escape guards, localhost-only servers, secret
redaction in every log/console/report, and explicit consent before running
custom or unknown commands.
- No telemetry, no network uploads — nothing leaves your machine.
Supported technologies
Only technologies that are genuinely implemented are listed. "Tested" means
covered by the automated suite in this repository; "Implemented" means the
code path exists but the required toolchain was not available in the
development environment, so it could not be exercised end-to-end here.
| Technology |
Mode |
External runtime |
Status |
| HTML / CSS / JS (static) |
Static Preview (built-in server) |
No |
Tested |
| React + Vite |
Web Preview (project dev server) |
Node |
Tested (detection + planning; live server needs installed deps) |
| Vue / Svelte / Angular / Next / Nuxt / Astro |
Web Preview |
Node |
Implemented (detection tested; launch needs deps) |
| Node.js app / CLI |
Runtime Execution |
Node |
Tested |
| Express / Fastify / Nest / Koa |
Server Preview |
Node |
Implemented (detection tested) |
| Python (script) |
Runtime Execution |
Python |
Tested |
| Django / Flask / FastAPI |
Server Preview |
Python |
Implemented (detection + planning tested) |
| Rust / Cargo |
Compile & Run |
Rust toolchain |
Implemented, toolchain-gated (not tested — no cargo here) |
| Go |
Compile & Run |
Go |
Implemented, toolchain-gated (not tested — no go here) |
| .NET |
Compile & Run |
dotnet SDK |
Implemented, toolchain-gated (not tested) |
| Java / Kotlin |
Compile & Run |
JDK + Gradle/Maven |
Implemented, toolchain-gated (not tested) |
| C / C++ |
Compile & Run |
gcc/clang |
Implemented, toolchain-gated (not tested) |
| PHP / Ruby / Dart / Flutter |
Detection + extensible adapters |
respective runtime |
Implemented (detection tested) |
| Markdown / JSON / CSV / YAML / XML / TOML / SVG / SQL |
Document Render / Inspection |
No |
Tested |
| Docker / Compose |
Detection + service graph |
Docker |
Implemented (detection tested; never auto-run) |
The Project Intelligence Engine is designed to be extensible: new languages,
frameworks, runtimes and preview strategies plug in without touching the core
(see ARCHITECTURE.md).
Installation
From the Marketplace
Search for Deranged Previewer and click Install.
From a VSIX (local build)
# build the package (see Development below)
npm install
npm run package # produces deranged-previewer-<version>.vsix
# install it into your local VS Code
code --install-extension deranged-previewer-0.1.0.vsix
To update: install the newer .vsix the same way. To uninstall:
code --uninstall-extension deranged.deranged-previewer
Usage
- Open a project folder in VS Code.
- Run Deranged: Open Preview (
F5 in the preview window, or the 👁 icon
in the editor title bar).
- Deranged scans the workspace, shows what it detected, and starts the
planned preview. If several applications are previewable it asks you to
choose.
- Edit source files — affected parts update live; errors appear without
destroying the working preview.
To preview a single file (Markdown, JSON, CSV, …), right-click it in the
Explorer and choose Preview with Deranged Previewer.
Opening the preview in its own window
Deranged uses an official VS Code WebviewPanel. To float it into a separate
OS window, drag the preview tab out of the editor area, or run VS Code's
built-in "View: Move Editor into New Window" / "Float Editor" command
while the preview is focused. This is the most robust, Marketplace-compatible
way to get a detached window — see Known limitations.
Commands
| Command |
Description |
Deranged: Open Preview |
Analyse the workspace and start the best preview |
Deranged: Refresh Preview |
Reload the current preview |
Deranged: Restart Preview |
Restart the running services |
Deranged: Stop Preview |
Stop the session and clean up processes |
Deranged: Open in Browser |
Open the running URL in the system browser |
Deranged: Detect Project |
Show a project-analysis report without previewing |
Deranged: Check Environment |
List detected runtimes/toolchains and versions |
Deranged: Show Logs |
Focus the Deranged output channel |
Deranged: Configure Preview |
Create/edit .deranged/preview.json |
Deranged: Select Application |
Choose which app to preview in a monorepo |
Deranged: Select Runtime |
Open runtime settings |
Deranged: Set Preview Mode |
Switch Best Effort / Strict |
Deranged: Show Onboarding |
Replay the first-run tour |
Configuration
All settings live under derangedPreview.*. Only implemented features are
exposed.
| Setting |
Default |
Description |
previewMode |
bestEffort |
bestEffort keeps previewing unaffected parts; strict blocks on compile failure |
liveReload |
true |
Watch source files and refresh the preview |
autoDetect |
true |
Analyse the workspace on preview |
defaultPort |
0 |
Preferred port for the built-in static server (0 = any free localhost port) |
openBrowser |
false |
Also open the running preview in the external browser |
killProcessesOnClose |
true |
Stop every process Deranged started on session end / deactivate |
maxScanDepth |
6 |
Maximum directory depth the scanner descends |
ignorePatterns |
[] |
Extra globs the scanner/watcher ignore (beyond the built-in set) |
logLevel |
info |
Structured log verbosity |
rememberWindowState |
true |
Remember viewport, zoom and panel layout |
host |
127.0.0.1 |
Interface the built-in server binds to (never public by default) |
allowCustomCommands |
false |
Allow .deranged/preview.json custom commands (still confirms per run) |
Manual preview configuration
For unusual projects, create .deranged/preview.json:
{
"preview": {
"command": ["npm", "run", "dev"],
"port": 5173,
"url": "http://127.0.0.1:5173",
"kind": "web"
}
}
command must be an argument array (or a simple single command string);
shell operators are rejected. url must point at localhost. Execution still
requires derangedPreview.allowCustomCommands and a per-run confirmation.
Runtime requirements
Deranged itself needs only VS Code ≥ 1.85. To preview a project you need
that project's own toolchain installed locally — Deranged detects existing
runtimes and never bundles compilers:
- Web projects: Node.js + the project's package manager (npm/pnpm/yarn/bun)
- Python:
python / python3 / py
- Rust:
cargo/rustc · Go: go · .NET: dotnet · Java: JDK + Gradle/Maven
- C/C++:
gcc/g++/clang
If a required runtime is missing, Deranged reports it clearly and offers a
fallback where one is technically valid — it does not crash or fake success.
Security
Deranged can execute code, so security is a first-class concern. The full
threat model and mitigations are in SECURITY.md. Highlights:
- All subprocesses run via argument arrays with
shell: false; shell
metacharacters in arguments are rejected.
- Path-traversal and symlink-escape protection on every served file.
- Dev servers and the static server bind to
127.0.0.1 only.
- Secrets (API keys, tokens, JWTs, connection strings, private keys) are
redacted from every log, console line and report; secret-named env vars are
dropped.
- No telemetry, no analytics, no project uploads.
- Custom/unknown commands and dependency installs require explicit consent.
Best Effort Preview
When a project contains errors, Best Effort mode:
- analyses the failure,
- determines which component is affected,
- keeps previewing the unaffected components,
- preserves the Last-Known-Good render where appropriate,
- clearly labels the state as
Preview running with errors or
Showing last valid preview.
Switch to Strict mode when you want the preview blocked on any compile
failure. The system always distinguishes CURRENT VALID, CURRENT WITH ERRORS, LAST KNOWN GOOD and FALLBACK — it never misrepresents state.
Troubleshooting
- "No runnable services in the plan" — the detected toolchain is missing,
or dependencies aren't installed. Run
Deranged: Check Environment, then
install deps (npm install, etc.) with your project's package manager.
- Port already in use — Deranged auto-selects a free localhost port and
reports the substitution in the Console.
- Preview shows an old state — you are viewing the Last-Known-Good render;
fix the reported errors and it updates.
- Custom command refused — enable
derangedPreview.allowCustomCommands
and confirm the run prompt.
- A file won't preview as a document — right-click it and use
Preview with Deranged Previewer (the editor-title button previews the
project, not the file).
Development
npm install
npm run compile # tsc -> out/
npm run watch # incremental build
npm run lint # eslint
npm test # compile + run all unit & integration tests (64)
npm run package # vsce package -> deranged-previewer-<version>.vsix
Press F5 in VS Code to launch an Extension Development Host.
Packaging & publishing
See PUBLISHING.md for the full, current Marketplace
workflow. Verify the latest Microsoft authentication requirements before
publishing — they change over time.
Known limitations (honest list)
- Separate OS window. The VS Code extension API exposes no public,
Marketplace-safe way to open an arbitrary native Electron window. Deranged
uses a
WebviewPanel, which the user can float into a separate window via
VS Code's own "Move/Float Editor" commands. This is documented, not faked.
- Live dev-server launch for web frameworks is fully wired, but the
automated suite exercises detection + planning + the built-in static server;
launching a real Vite/Next server requires a project with its dependencies
installed.
- Compiled-language adapters (Rust/Go/.NET/Java/C++) are implemented and
toolchain-gated, but were not run end-to-end in this environment because
those compilers are not installed here.
- Network panel captures the built-in static/inspector server's traffic;
it does not proxy or packet-capture a third-party dev server (that would be
invasive). Use browser DevTools for full network inspection.
- Inspector is a lightweight DOM inspector for the static preview; it is
not a Chrome DevTools replacement.
- SQL is analysed and structured; actual query execution against a live
database is intentionally out of scope for this release (no auto-run of
destructive queries, no bundled DB clients).
- Markdown renderer covers the documented subset (headings, lists, code,
tables, links, images, blockquotes, rules), not the entire CommonMark spec.
License
Released under the MIT License.