Repository navigation
Conversation
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ns4ZYciirL61M66WFtLXRp
LLVM's WebAssembly backend checks each loop for irreducible control flow by working out which blocks reach which, in memory square in the function's blocks. A generated lexer is one loop around a branch per state, so tree-sitter-fortran's took over 11 GB at -O0 and the Diffr Web job's runner was killed. The lexer now takes one step and returns where to go next; a driver advances and calls it again. The engine build peaks under 3 GB, and parse trees match the original lexers'. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ns4ZYciirL61M66WFtLXRp
The plugin links natively into diffr-web and reaches its model through a synchronous request the worker makes. It runs in a second pass, so a file shows first and its summaries follow. The page's settings merge over config.toml as JSON overrides. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ns4ZYciirL61M66WFtLXRp
Cmd+P goes to a file and Cmd+F finds text in every diffed file. A first visit asks for a GitHub token and a summarizer key, both skippable, and the settings explain diffr's configuration with a reference to every key. WebMCP tools let an agent read the comparison, save lenses, and install plugins that fold regions. The file tree follows the scroll, a hidden file opens to its text, line numbers keep clear of the splitter, and idle workers stop. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ns4ZYciirL61M66WFtLXRp
…terTool Chrome moved WebMCP to document.modelContext, and the current draft dropped provideContext for registerTool, which returns a promise. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ns4ZYciirL61M66WFtLXRp
Opening a comparison again shows each file's diff and summaries without fetching, diffing or calling the model again. Entries are named by the commits, the file, the engine build and its configuration; past 512 MB the ones read longest ago go. Settings and the engine panel show the cache's size, and Settings can clear it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ns4ZYciirL61M66WFtLXRp
The model's answer loses the code fence models wrap it in, a docstring opened on a line of its own is led by its first words instead of a bare /**, and the page draws summaries upright in the editor's colour rather than as faint italic comments. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ns4ZYciirL61M66WFtLXRp
A browser that once held a different diffr-cache database kept the cache off. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ns4ZYciirL61M66WFtLXRp
The file tree and the diff leave out every file outside the lens, and the summary counts only its files, as "7 of 32 files". All files lists everything again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: 0e3ef086-d04d-46f7-a982-868add70ee04
milanb17
force-pushed
the
claude/project-thread-hwb7l0
branch
from
October 8, 2026 18:43
f2f27f9 to
e37ee65
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Milan · project thread
Before: the Diffr Web job's runner was killed while it built the engine. The page had no file or text search, and summaries were not available. Hidden files took two clicks to read. Workers stayed around after the diff finished, the config box had no explanation, and three-digit line numbers ran into the splitter.
After: the engine builds in under 3 GB. ⌘P opens a file and ⌘F finds text in every diffed file. A first visit asks for a GitHub token and a summarizer key, and either one can be skipped. Summaries fold long new bodies behind pseudocode. Agents can read the comparison, save lenses, and install fold plugins through WebMCP.
This stacks on #1018.
How
-O0.compat.his already included in every C file of a wasm build, so it now replaces tree-sitter's lexer macros: the generated lexer takes one step and returns, and a small driver loops. Wrapped and original lexers produced byte-identical parse trees on 9 grammars (Fortran, Julia, JS, TS, Rust, Python, C, Bash, Haskell). A full engine build peaked at 2.9 GB, against 14 GB+ before.HttpHostin the plugin SDK). It reaches the model through a synchronous XHR from the worker, in a second pass after the file renders. Settings merge overconfig.tomlas JSON overrides. When summaries fail, a dismissible notice links to settings.diffr_*tools, with inputs decoded by zod/mini. That module loads only whennavigator.modelContextexists. Lenses are kept per comparison: showing one folds every other file and, inside its ranges' files, every fold that holds none of those ranges. Agent plugins are JS functions that run in the workers and may change only regionvisibility. Settings list each plugin's code, with on/off and remove controls.Tested by running the page in Chromium against PRs #1017 and #1018, covering:
Also ran:
cargo test -p diffr-web(7 pass),cargo xtask build-plugins,cargo fmt --check, oxfmt, oxlint, and tsc.Note that agent plugins run like any script on the page, and that includes the worker that holds the summarizer key. The settings say to keep only plugins you trust.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Ns4ZYciirL61M66WFtLXRp
Generated by Claude Code