Inspiration

ChangeTrace grew from my master’s thesis and the research field of Mining Software Repositories. There the inspiration was to make MSR easier accessible. As AI increases code velocity, reviewing every change becomes unrealistic. ChangeTrace helps developers find the changes that deserve human attention without needing to setup another tool.

What it does

ChangeTrace analyzes a local Git repository entirely in the browser with WebAssembly. It turns commits, files, references, and diff hunks into queryable DuckDB tables.

Developers can explore repository insights, filter dashboards, inspect the added and removed code behind a signal, write SQL, and save queries as visualizations. GPT-5.6 can generate SQL or iteratively investigate the data.

How we built it

The interface uses React, TypeScript, and Vite. A Rust and Gitoxide indexer runs through Emscripten using WebAssembly, WasmFS, and threads. DuckDB-Wasm provides local SQL analysis, while browser storage persists projects and dashboards.

I directed Codex mainly from my phone using voice-to-text while it worked remotely on my Mac Mini. Browser control helped Codex test the deployed product and understand visual issues.

Challenges we ran into

Browser memory was the main constraint, particularly for large repositories and mobile devices. Threaded WebAssembly also required careful filesystem, worker, and deployment configuration.

We additionally worked around Cloudflare’s asset-size limit for deployment, browser security policies, and the lack of local folder access on mobile.

Accomplishments that we're proud of

  • Local Git history analysis using Rust and Gitoxide in the browser, that is performant
  • Repository data that remains on the user’s device
  • Insights connected to actual commit and code evidence
  • SQL-backed dashboards and reusable query templates
  • Optional GPT-5.6 SQL and agent workflows

What we learned

Browser-local repository analysis is practical, but memory and filesystem behavior must be product considerations from the beginning and implementing with WASM in the browser is still not easy.

We also learned that metrics alone are insufficient. Developers need a clear path from a chart to the commits and code behind it.

What's next for ChangeTrace

Next, we want to add true line-level history, blame attribution, and line-survival analysis. We also plan to support more development data sources, larger repositories, richer visualizations, and local language models through WebGPU.

Built With

Share this project:

Updates