From 3049265230e40c5d29f3fa3f592319a7d1ff8cd7 Mon Sep 17 00:00:00 2001 From: Egutierrez Date: Sun, 14 Jun 2026 15:34:02 +0200 Subject: [PATCH] docs(uniweb): dedup growth log + bump to v0.5.0 A merge left the v0.2.0 and v0.1.0 growth-log entries duplicated. Keep one entry per version in descending order and add the v0.5.0 line covering this release: readable handles in messages, sidebar with real last message/time, and the documented `pnpm dev` setup. Frontmatter version 0.4.0 -> 0.5.0. Co-Authored-By: Claude Opus 4.8 (1M context) --- app.md | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/app.md b/app.md index 647b68a..ff86143 100644 --- a/app.md +++ b/app.md @@ -2,7 +2,7 @@ name: uniweb lang: ts domain: infra -version: 0.4.0 +version: 0.5.0 description: "Cliente web browser-nativo del bus unibus: SPA de chat (React+Mantine) con wallet por usuario (BIP39) que habla DIRECTO al bus (nats.ws + control-plane HTTPS firmado), sin gateway. La clave privada nunca sale del navegador." tags: [messaging, web, frontend, e2e] uses_functions: [] @@ -102,6 +102,20 @@ programáticos) ve a `unibus`; `uniweb` es el cliente web encima. ## Capability growth log +- v0.5.0 (2026-06-14) — nombres legibles en mensajes + sidebar con último mensaje/hora + reales + `pnpm dev` documentado. (1) Los mensajes muestran el **handle** del remitente en + vez del endpoint id: `ControlPlane.fetchDirectory()` pega al control-plane + `GET /api/directory` (firmado) y `busService` mantiene un mapa `endpoint -> handle` + (cargado al abrir sesión, refrescado tras `createRoom`); el resolver + `bus.displayName(endpoint)` devuelve el handle o un id corto de fallback (nunca el + endpoint largo), usado en la cabecera y el avatar de `ChatPanel` (el endpoint queda en un + `title` para depurar). Resiliente: si el endpoint aún no existe en el cluster (404) el + mapa queda vacío y el chat funciona igual que antes. (2) El sidebar muestra el **último + mensaje y la hora reales**: `busService` posee un store de rooms con una suscripción de + metadatos por room (último mensaje/hora + unread de rooms no activas); `Sidebar` ya no + pinta el "01:00" de epoch-0. (3) `pnpm dev` queda usable tras el cambio a same-origin: + apunta a un nodo con `VITE_BUS_HTTP`/`VITE_BUS_WS` y el dev server corre en el puerto 5174 + (documentado en `app.md` + `vite.config.ts`). `tsc` + 19/19 unit + `pnpm build` verdes. - v0.3.0 (2026-06-14) — `uniweb` se vuelve **cliente browser-nativo puro** (issue 0001, Fase 2): la SPA se cablea al SDK del bus (`busService.ts` reemplaza el módulo `api`) y se **elimina el gateway Go** (`cmd/webgw`, `go.mod`, `go.sum`). `uniweb` queda como solo `web/`, @@ -129,21 +143,3 @@ programáticos) ve a `unibus`; `uniweb` es el cliente web encima. respecto a lo que ya vivía en unibus 0.12.0 (wallet BIP39 + sesiones por usuario); solo cambia la ubicación y el módulo Go. go build/vet/test + pnpm build verdes en la nueva ubicación con los `replace` cross-repo. - -- v0.2.0 (2026-06-13) — SDK del bus en TypeScript (`web/src/bus/`), issue 0001 Fase 1: - el protocolo y el cifrado E2E del bus portados al navegador para que `uniweb` deje - de depender del gateway Go. Módulos: `crypto.ts` (Ed25519, ChaCha20-Poly1305, - sealed box con nonce BLAKE2b igual que Go), `frame.ts` (wire format = `encoding/json` - de Go byte a byte), `room.ts` (Policy), `busauth.ts` (nkey NATS + firma de requests - del control-plane), `client.ts` (envelope de room puro + `BusClient` sobre una - interfaz de transporte + cliente HTTP firmado) y `wstransport.ts` (adaptador - `nats.ws`). Paridad cross-language verificada contra vectores Go (`cmd/busvectors`): - **19/19 tests verdes** — endpoint id, firma Ed25519, AEAD, sealed box, frame - marshal/sign, nkey y canonical request. La clave privada del usuario nunca se - serializa hacia la red. La conexión `nats.ws` + control-plane reales se validan en - la Fase 3 (E2E) por requerir un unibus vivo con WebSocket. -- v0.1.0 (2026-06-13) — scaffold inicial: extracción de la SPA (`web/`) y el gateway - (`cmd/webgw`) desde `unibus` v0.13.0 a su propia app/sub-repo. Sin cambios de capacidad - respecto a lo que ya vivía en unibus 0.12.0 (wallet BIP39 + sesiones por usuario); solo - cambia la ubicación y el módulo Go. go build/vet/test + pnpm build verdes en la nueva - ubicación con los `replace` cross-repo.