2026-08-11 · 12 min de lectura · GitGraph
Construí un grafo de git nativo para dejar de abrir VS Code por una extensión
GitGraph con Claude Code — Tauri, carriles en Rust, git seguro y lo que casi me muerde.
Seguía en este bucle tonto: abrir VS Code, abrir Git Graph, mirar una rama, cerrar VS Code. El editor era un impuesto cada vez que solo quería una foto del historial.
Así que construí GitGraph — una app nativa pequeña. Tauri 2, Rust abajo, React arriba. macOS primero, Windows y Linux en el mismo árbol. MIT, solo, open source.
Así lo construí de verdad con Claude Code. No es un cuento de “la IA me escribió la app”. Yo dirigía. El modelo tecleaba mucho. Yo todavía tenía que saber cuándo se equivocaba.
Lo que quería
- Un grafo de commits real, no una lista filtrada que miente sobre padres
- Varios repos en la barra lateral, estado restaurado al saltar entre ellos
- Stage / unstage / commit / stash sin salir de la ventana
- Clic derecho en refs y commits para lo de cada día
- Seguridad: abrir una carpeta al azar no debe ejecutar hooks del repo
Lo último no se negocia. Si tu “git GUI” dispara pre-commit de código no confiable, estás enviando un pie de cañón.
Elección de stack (y por qué no Electron)
Quería algo que se sienta app de sistema, no Chrome con maquillaje de git. Tauri 2 era el punto dulce: Rust para procesos y matemática del grafo, UI web para lista y canvas, binario razonable.
Claude Code sirvió para el andamiaje de comandos Tauri y el shell React. Menos para la corrección del grafo — eso necesitaba tests contra repos reales y muchos “no, esa arista no debería estar”.
Cómo trabajé con Claude Code
1. Amenaza y arquitectura en el repo (AGENTS.md, SECURITY.md) antes de tirar features. 2. Una sola superficie IPC. Todas las llamadas Tauri por ipc.ts. 3. Wrapper git endurecido primero. Luego cada comando lo usa. 4. Grafo como datos, no como pintura. Carriles en Rust; el canvas dibuja lo decidido. 5. Modo fixture para UI. Fixture desde un repo real, UI en el navegador sin Rust.
Las partes duras
Filtrar debe quitar commits, no dejar aristas fantasma
Si filtras ramas y sigues dibujando aristas a padres ausentes, el grafo miente. La semilla del revwalk es el filtro.
La búsqueda resalta y salta, no filtra
Filtrar búsqueda otra vez implica padres faltantes. Así que n / N saltan y el grafo completo se queda.
Restaurar sesión es producto, no pulido
Scroll, selección, commit expandido, filtro de rama — entre reinicios. Sin eso vuelvo a VS Code.
Open source
Repo: github.com/mubashirjamali101/gitgraph
Una sola idea: trata el repositorio como no confiable y al usuario como confiable. Enamora eso en la capa de subprocess el día uno.
