Apr 9, 2026

Per-Project Code Intelligence and an AI Diff Review Panel for Claude Code Sessions

Real per-project language servers (typescript-language-server, gopls, pyright, rust-analyzer, and five more) replace Monaco's false-error squiggles with accurate diagnostics, and a brand new AI Diff panel tracks every file modification any AI agent makes — Claude Code, Codex, Gemini, Amp — with per-file Accept and Revert.

1DevTool Team13 min read
Per-Project Code Intelligence and an AI Diff Review Panel for Claude Code Sessions

You open a TypeScript file in a fresh project. Before you've typed a character, the editor is already lit up with red squiggles. Cannot find module './Foo.module.css'. JSX element implicitly has type 'any'. Cannot find module 'react/jsx-runtime'. Six more on every component you scroll past. The build runs fine. The app loads fine. Every single one of those errors is a lie.

This is the experience of running a sandboxed TypeScript worker — like the one Monaco ships with — against a real project. The worker can't read your node_modules, can't parse your tsconfig.json, can't resolve your *.d.ts declarations, and can't see your CSS Modules plugin. So it invents errors for everything it can't verify, and your editor turns into a noise machine that you eventually train yourself to ignore. Which means the day a realtype error appears, you ignore it too.

1DevTool v1.13.0 ships the fix for both halves of this problem. Per-Project Code Intelligence spawns a real language server — typescript-language-server, gopls, pyright, rust-analyzer, and five more — for the projects you opt into, with full access to your filesystem, your config, and your dependencies. And the brand-new AI Diff Review Panel tracks every file modification any AI agent makes — Claude Code, Codex, Gemini, Amp, custom — and gives you per-file Accept and Revert buttons so you can review your agents' work before it lands.

Code Intelligence settings page in 1DevTool listing detected and installed language engines
The new Code Intelligence settings page lists every detected language engine and the version installed on your machine.

Why Monaco's Built-In TypeScript Lies to You

Monaco — the editor component that powers VS Code, 1DevTool's editor strip, and a long list of web-based IDEs — ships with a bundled TypeScript worker. The worker runs in a sandboxed thread inside the renderer, with no filesystem access. It can't read node_modules. It can't open your tsconfig.json. It can't parse your CSS Modules side-effect declarations. It can't walk your monorepo to find a sibling package's exports.

What it can do is parse the file you have open and run a subset of TypeScript diagnostics against the in-memory text. That subset is enough for syntax checking, basic flow analysis, and the kind of intra-file type errors that don't cross a module boundary. It is not enough for module resolution, declaration files, JSX runtime detection, or anything else that requires reading the disk.

So the worker has two options for the diagnostics it can't answer. It can stay quiet and let you discover the import error at build time — at which point you have no idea which file the error came from — or it can speculate. Monaco speculates. Aggressively. Every time it can't resolve a module, it emits TS2307. Every time it sees a JSX element it can't type, it emits TS7026. Every time it can't find react/jsx-runtime — which it can never find from a sandboxed worker — it emits TS2875. And every time it sees an import for a file with no .d.ts, it emits TS7016.

Your build is fine. Your types are fine. The squiggles are fake.

Per-Project Code Intelligence: Real Language Servers, On Demand

The right fix is to spawn a real language server — a real typescript-language-server process, with real filesystem access, that can read your tsconfig.json and node_modules and tell you the truth about your code. The reason most editors don't do this in a sandboxed environment is that language servers are heavy: a single TypeScript engine can take 200–500 MB of RAM and 5–30 seconds to do its first index. Spawn one per project automatically and a developer with ten projects open is running five gigabytes of language servers in the background.

1DevTool's answer is per-project, on-demand, opt-in. Code Intelligence engines never spawn automatically. They only run for projects you explicitly enable, so memory cost is bounded by your choice instead of automatic background spawning.

Enable From the Right-Click Menu

Right-click any project in the sidebar and pick Enable Code Intelligence… A dialog scans the project, lists every language it detects, and shows the file count for each (55 TypeScript files, 12 Python files, etc.) along with the installed engine version. Languages whose binaries are present on your machine are pre-checked; languages it detected but couldn't find an engine for show up in a separate Detected but not installed section with a hint for the install command (npm install -g typescript-language-server, pip install pyright, and friends).

A clear inline warning explains the cost — 200–500 MB of RAM per engine, 5–30 seconds for the first index — so nobody opts in by accident. Confirm the dialog and the engines spawn in the background, indexing your project against its real configuration.

The Enable Code Intelligence dialog in 1DevTool with detected languages and file counts
The Enable Code Intelligence dialog scans the project, counts files per language, and tells you which engines are installed before you opt in.

Eight Languages Out of the Box

Code Intelligence ships with adapters for eight language engines, all detected automatically by file extension:

  • TypeScript / JavaScripttypescript-language-server
  • Pythonpyright
  • Gogopls
  • Rustrust-analyzer
  • C / C++clangd
  • Rubysolargraph
  • PHPintelephense
  • Swiftsourcekit-lsp

The Code Intelligence settings page in Settings → IDE → Code Intelligence is purely a status board: it shows which engines are present on your machine, the version of each, and which projects currently have them enabled. There's a Rescan my machine button in the Available Languages header that re-scans your $PATH and common install locations (brew, npm i -g, asdf, nvm) to pick up engines you installed externally without restarting the app. Turning an engine on for a specific project still happens from the right-click menu in the sidebar — there is no "global enable" button, by design.

Status Bar Brain Icon: One-Click Stop

Once at least one project has Code Intelligence active, a green dot, a brain icon, and an active project count appear in the bottom status bar. Click the icon and a popover lists every active project, every engine it's running, the live status (ready / starting / crashed), and a Disable button per project. This is the emergency-stop UI: if your machine is under memory pressure, one click frees the entire 200–500 MB an engine is consuming.

Right-clicking an enabled project in the sidebar adds two more options: Restart Code Intelligence (bounce the child processes if an engine gets stuck or you change a tsconfig.json and want a clean reload) and Disable Code Intelligence (SIGTERM the processes, free their RAM, clear the persistent flag so they don't auto-respawn next launch).

Status bar brain icon and popover showing active Code Intelligence projects in 1DevTool
The status bar brain icon shows every active engine and gives you a one-click stop per project.

Sticky Across App Restarts

Once you enable Code Intelligence on a project, the choice persists. Quit and relaunch and the engines respawn automatically for the projects that were enabled — you never re-enable per session. The persistent flag is cleared the moment you Disable, so the opt-in is durable but not sneaky.

Built-in TypeScript Checks: Three Modes

For projects where you don't want to opt into Code Intelligence — small scripts, scratch files, third-party code you're reading — the editor still has Monaco's bundled TypeScript checker. v1.13.0 ships a new Built-in TypeScript checkssettings page with three modes:

  • Full — semantic and syntax checks with the module-resolution false-positive diagnostics (TS2307, TS7026, TS2875, TS7016, and six others) suppressed. Use this when Code Intelligence is running per-project so the language engine provides authoritative diagnostics
  • Syntax only — parse errors only. No type checking, no module resolution. The default for new installs because it eliminates the entire class of false positives that the sandboxed worker would otherwise invent
  • Off — completely silent. No squiggles. Useful when Code Intelligence is the single source of truth for TypeScript errors and you want to avoid duplicate squiggles
Built-in TypeScript checks settings in 1DevTool with Full, Syntax only, and Off modes
Three honest modes for the bundled TypeScript checker, plus a clear note about the overlap with Code Intelligence.

AI Diff Review Panel: See Every File Your Agent Touched

The other half of v1.13.0 is the AI Diff Review Panel, and it answers a question every claude code user has asked at some point: what actually changed during that twenty-minute run?

AI agents touch dozens of files in a single prompt. You can't safely review all of them in scrollback — by the time the agent finishes, the "edited file: src/components/Foo.tsx" line is buried under 400 lines of subsequent output. Most developers either trust the agent blindly and ship bugs, or burn 20 minutes diff-ing files manually after the fact, or run git status and try to mentally reconstruct which change came from which prompt.

The AI Diff panel solves this by snapshotting affected files at the moment an AI agent starts a new prompt, watching the agent's file modifications, and grouping every change into a reviewable session.

AI Diff panel in 1DevTool showing pending file changes from an AI agent run with Accept and Revert buttons
Every file an AI agent touched, grouped by session, with per-file Accept and Revert buttons.

Per-Prompt Baselines

When an AI agent starts a new prompt, the AI Diff system snapshots the affected files before the agent edits them. This is the baseline. As the agent works, every file it modifies is tracked against its baseline. When the agent finishes — or even if you walk away during the run — the panel shows you exactly which files changed and what changed in each one.

Accept or Revert, Per File or Per Session

Each pending change has its own Accept and Revertbuttons. Accept locks the change in and removes it from the pending queue. Revert restores the file to its pre-agent baseline, undoing whatever the agent did to that one file. For when you trust — or distrust — an entire run, the session header has bulk Accept and bulk Revert buttons: ship every file the agent touched in one click, or undo the entire run and start over.

Inline Diff Overlay in the Editor

Click any changed file in the AI Diff panel and 1DevTool opens it in the IDE strip with the diff visible inline as Monaco overlay highlights — added lines in green, removed lines in red, modified ranges in a side-by-side gutter. You can read the agent's work in the actual file, in the actual editor, with the actual surrounding code as context. No external diff viewer. No tab switching. No git diff in a terminal.

Session History

Every AI agent run creates an AI Diff session with the agent type (Claude Code, Codex, Gemini, Amp, etc.), the prompt that started it, the start time, and the count of changed files. The Sessions tab in the panel rolls up every past session into a browsable list — expand any session to see its file list, and accept or revert old changes any time. The pattern is the same as a code review queue, but at the granularity of an AI prompt instead of a Pull Request.

AI Diff settings page in the IDE settings tab in 1DevTool
AI Diff is opt-in — turn it on from Settings → IDE → AI Diff when you're ready to start tracking.

Off by Default, Opt In When You're Ready

The AI Diff panel is off by default. To turn it on, head to Settings → IDE → AI Diff and flip the toggle. From that moment forward, every AI agent run is tracked — and the panel populates as you work.

Settings Reorganization: Sub-Tabs in the IDE Tab

Both Code Intelligence and AI Diff live in the IDE settings tab, and the IDE tab has been reorganized with sub-tabs to hold them. AI Diff, Code Intelligence, and Built-in TypeScript checks each get their own focused page so the settings dialog stops being a giant scroll. Click the sub-tab at the top of the IDE tab to switch between them.

And for everything that used to be called Language Server in the codebase: the feature is now called Code Intelligence in every place a user can see it — settings, dialogs, right-click menus, status bar tooltip, install errors. Internally it's still LSP. The rename is purely cosmetic so the feature stops sounding like a protocol spec and starts sounding like the thing it actually does.

Before vs After

The old workflow1DevTool v1.13.0
Open a TypeScript file → ten red squiggles → ignore them all → miss the real oneEnable Code Intelligence on the project → real typescript-language-server reads your tsconfig and node_modules → only real errors show up
AI agent runs for 20 minutes → 30 files changed → no idea which → diff manuallyAI Diff panel shows every file the agent touched, grouped by session, with Accept/Revert per file
git status shows 30 changed files mixed in with your own work — can't tell which came from the agentAI Diff baselines snapshot files at prompt start, so agent changes are isolated from your manual edits
Every CSS module import is a fake error → train yourself to ignore squigglesSuppression list silences TS2307, TS7026, TS2875, TS7016 in the bundled checker; Code Intelligence resolves them for real
Spawn a global language server for every open project → 5 GB of RAMPer-project, on-demand, opt-in — only pay for the projects you actually want intelligence on

Who Benefits Most

YouWhy this release matters
Use TypeScript with CSS Modules, Next.js, or any modern bundlerThe fake-error squiggles you used to see on every import are gone in Syntax-only mode and never appear once Code Intelligence is on
Run Claude Code, Codex, or Gemini on multi-file refactorsThe AI Diff panel finally answers "what just changed" without you trawling scrollback
Work in Python, Go, Rust, C/C++, Ruby, PHP, or SwiftEach language gets a real per-project engine — pyright, gopls, rust-analyzer, clangd, solargraph, intelephense, sourcekit-lsp
Switch between many small projects through the dayPer-project opt-in means you never pay 500 MB of RAM for a project you're only opening to read a README
Review AI agent changes before shipping themPer-file Accept and Revert with inline diff overlays make "trust but verify" a one-click action instead of a commit-and-rollback dance

Try It Today

Per-Project Code Intelligence and the AI Diff Review Panel both ship in 1DevTool v1.13.0. Download the latest from 1devtool.com, right-click any project in the sidebar and pick Enable Code Intelligence… to turn on real language servers for that project. Then head to Settings → IDE → AI Diff to flip the AI Diff panel on, and your next Claude Code session will start tracking every file change.

And if you haven't seen the v1.12.0 release yet, both features were designed to pair with Git Worktrees and the Visual Git Graph — which let you run separate AI agents on separate branches in the same repo, each with its own working copy and its own diff history.

Related reading