ADR 0048 — El escritorio persiste en `.codarch/` del repo
This content is not available in your language yet.
Estado: aceptado · Fecha: 2026-10-24
Contexto
Sección titulada «Contexto»El escritorio analiza un repo con analyzeRepository y envía el snapshot al renderer, que lo guarda
en localStorage (codarch.project.v1). Eso significa:
- Un solo proyecto por máquina: analizar el repo B borra el A.
- El escritorio no escribe
.codarch/snapshot.cc.json, así que la web app («Abrir repositorio») y el CLI no pueden reutilizar su análisis. - Las preferencias de vista y los plugins activos también viven en
localStorage, mezclados con el snapshot.
La web app y el CLI, en cambio, leen y escriben en .codarch/ del repo. El escritorio es el
único que no persiste ahí.
Decisión
Sección titulada «Decisión»1. El escritorio escribe en .codarch/
Sección titulada «1. El escritorio escribe en .codarch/»Al analizar una carpeta, el proceso principal escribe snapshot.cc.json en .codarch/ del repo,
igual que codarch analyze. Si el fichero ya tiene ese contenido no se reescribe, y el renderer
solo guarda en localStorage la raíz del último repo: el proyecto se lee siempre de .codarch/.
2. Abrir repositorio carga desde .codarch/
Sección titulada «2. Abrir repositorio carga desde .codarch/»Si la carpeta tiene .codarch/snapshot.cc.json, el escritorio lo carga sin re-analizar, como la
web app. «Re-analizar» regenera el fichero.
3. .codarch/ se ignora por repo
Sección titulada «3. .codarch/ se ignora por repo»Si el repo no ignora .codarch/, el escritorio lo añade a su .gitignore (append, sin tocar
lo demás). Así los artefactos locales no se commitean.
4. localStorage solo para preferencias
Sección titulada «4. localStorage solo para preferencias»El snapshot y el reporte salen de localStorage. Ahí quedan las preferencias globales (tema, zoom,
plugins activos) y la raíz del último repo, lo justo para saber qué .codarch/ leer al arrancar.
5. Permisos
Sección titulada «5. Permisos»El escritorio necesita permiso de escritura en la carpeta del repo. Si no lo tiene, el análisis se
ve igual (vive en memoria) pero no se escribe .codarch/ ni se restaura en el siguiente arranque.
Consecuencias
Sección titulada «Consecuencias»- Cada repo tiene su propio
.codarch/con snapshot y reporte; cambiar de repo no borra el análisis. - La web, el CLI y el escritorio comparten la misma fuente de verdad.
- El escritorio puede saltarse el análisis si el snapshot está actualizado.
localStoragedeja de guardar snapshots; los usuarios con proyecto guardado migran una vez.
Alternativas descartadas
Sección titulada «Alternativas descartadas»- Seguir con
localStorage: un solo proyecto por máquina y sin compartir con el resto de herramientas. - Un directorio global de CodArch (
~/.codarch/): vuelve el problema de mezclar repos y no se comparte con el equipo. - No escribir en el repo: el escritorio seguiría siendo el único que no persiste.
Hoja de ruta
Sección titulada «Hoja de ruta»M32 — El escritorio persiste en .codarch/
Sección titulada «M32 — El escritorio persiste en .codarch/»- ADR 0048 aceptado.
- El proceso principal escribe
.codarch/snapshot.cc.jsonal analizar. -
Abrir repositoriocarga desde.codarch/si existe. -
.gitignorese actualiza con.codarch/si falta. - El renderer lee desde
.codarch/y deja de guardar snapshots enlocalStorage. - Migración de un proyecto guardado en
localStoragea.codarch/.
El renderer conserva en localStorage solo las preferencias y la raíz del último repo. Al
arrancar, restaurarSesion migra una vez el proyecto viejo (si el repo sigue ahí), lee
.codarch/snapshot.cc.json, su report.json si existe y los addons que declara el repo. Si el
.codarch/ desapareció, el arranque queda vacío en vez de inventarse el proyecto.
El registro de lo hecho vive en el feed de la guía.