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
- duckdb
- echarts
- gitoxide
- react
- rust
- sql
- typescript
- webassembly
Log in or sign up for Devpost to join the conversation.