feat(minga-explorer): nueva app dashboard del repo Minga sobre stack yahweh

Iter 11. Cierra integración del módulo Minga (VCS semántico P2P)
al ecosistema GUI. Antes Minga sólo tenía CLI; ahora hay un
dashboard GPUI con counts del repo en vivo.

crates/apps/minga-explorer/:
- Deps: minga-store + yahweh-theme + 3 widgets compartidos.
  Sin minga-cli (sin passphrase prompts) ni minga-core.
- PersistentRepo abierto directo (counts son lectura pública,
  sin passphrase). El DID sigue requiriendo `minga status` CLI.
- Refresh polling 2s (mismo pattern que nakui/nouser explorer).
- 3 stat cards: Nodos AST, Atestaciones, Claves MST. Cada una
  con border-l accent + label + número grande + descripción.
- Helper stat_card() factoriza la card.
- Header con título dinámico + theme switcher.
- error_banner themed.
- 2 tests sanity (missing dir errors, RepoSnapshot default).

Smoke run verificado: bootstrap completo OK, panic esperado en
open_window sin display.

Apps GUI themed: 4 (nakui-ui, nakui-explorer, nouser-explorer,
minga-explorer).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sergio
2026-05-10 11:27:59 +00:00
parent 2f426b0171
commit 2790b6dc8a
5 changed files with 384 additions and 0 deletions
+50
View File
@@ -6,6 +6,56 @@ ratio/diff ver `git show <sha>`.
## 2026-05-10
### feat(minga-explorer): nueva app dashboard del repo Minga sobre stack yahweh
Iter 11. Cierra el último frente identificado: integración del
módulo Minga (VCS semántico P2P) al ecosistema GUI. Antes Minga
sólo tenía CLI (`minga init/status/ingest/listen/sync/watch`).
Ahora hay un **dashboard GPUI** que muestra los counts del repo
en vivo, sobre el mismo stack themed que las otras dos apps
explorer.
Crate nuevo `crates/apps/minga-explorer/`:
- **Deps**: `minga-store` (para `PersistentRepo::open`) +
`yahweh-theme` + `yahweh-widget-{banner,card,theme-switcher}`.
Sin `minga-cli` (no necesita prompts de passphrase) ni
`minga-core` (counts no requieren parsear AST).
- **Lectura sin passphrase**: el `PersistentRepo` se abre directo
desde `<repo>/repo` sled. Los counts (`nodes.len()`,
`attestations.len()`, `mst.len()`) son lectura pública. Para el
DID se sigue necesitando `minga status` (CLI con passphrase).
- **Refresh por polling cada 2s**: mismo pattern que
`nakui-explorer`/`nouser-explorer`.
- **3 stat cards** una por dimensión:
- Nodos AST (cyan) — fragments parseados del código.
- Atestaciones (verde) — firmas Ed25519 sobre los nodos.
- Claves MST (purple) — entradas del Merkle Search Tree.
- **Helper `stat_card(cx, label, value, description, accent, ...)`**:
fabrica una card con border-l colored + label tenue + número
grande (`px(28)`) + descripción. Reutilizable.
- **Header**: título dinámico (`Repo: <path> · reload <ms> ms`)
+ theme switcher derecha.
- **Error banner**: themed Banner::Error si el repo no abre.
- 2 tests: `load_snapshot_errors_on_missing_dir` (msg claro
cuando el dir no existe) + sanity del `RepoSnapshot::default`.
Workspace: nueva entry en `members[]`.
Smoke run del binario verificado: bootstrap completo OK, panic
esperado en open_window por falta de display.
Beneficio operativo:
- Un usuario corre `minga init` + `minga ingest archivo.rs` desde
CLI, después abre `minga-explorer` y ve los counts crecer en
vivo cuando ingiere más archivos.
- Comparte theme switcher con `nakui-explorer` y
`nouser-explorer` — cualquier preset elegido se aplica
visualmente igual cross-app.
- `minga` deja de ser sólo CLI; gana presencia GUI sin tocar
el resto del módulo.
Apps GUI integradas al stack themed: **4** (nakui-ui, nakui-explorer,
nouser-explorer, minga-explorer).
### feat(nouser-explorer): integración al stack yahweh themed
Iter 10. `nouser-explorer` (la app paralela a `nakui-explorer`
para ver Mónadas via daemon nouser) tenía colors hardcoded