diff --git a/app.md b/app.md index 9f4daf4e..b48d677f 100644 --- a/app.md +++ b/app.md @@ -2,7 +2,7 @@ name: unibus lang: go domain: infra -version: 0.15.1 +version: 0.16.0 description: "Bus de mensajería unificado sobre NATS+JetStream con cifrado E2E por room (megolm/olm reducido): service de membresía/claves, librería cliente y peers demo." tags: [service, messaging, nats, e2e] uses_functions: @@ -225,6 +225,20 @@ agent..{in,out} inbox/outbox de agente LLM (agent.scout.in) ## Capability growth log +- v0.16.0 (2026-06-14) — feat: el server asegura el stream JetStream de las rooms + persist + `GET /rooms/{id}/history` para que clientes sin JetStream (uniweb) lean + el histórico. (1) `handleCreateRoom` crea (idempotente, `CreateOrUpdateStream`) el + stream durable `UNIBUS_` de una room persist ANTES de responder, así su + subject se captura desde el minuto cero venga el mensaje de un cliente Go o de un + cliente browser que solo habla core NATS (antes el stream lo creaba solo el cliente + Go, así que los mensajes de uniweb se perdían). (2) Nuevo endpoint member-only + `GET /rooms/{id}/history?limit=N` (default 200, cap 1000): lee el stream + server-side y devuelve `{messages:[]}` en orden + oldest→newest; el server jamás descifra (relay del ciphertext E2E). Backfill de + rooms persist existentes: lazy-ensure del stream en el endpoint (empiezan a + capturar desde ahora; los mensajes previos al stream no son recuperables). El + control plane abre ahora su propio contexto JetStream también en single-node + embebido. Todo aditivo; build/vet/test verdes. - v0.15.1 (2026-06-14) — fix: la ruta del directorio se registraba con prefijo /api y Caddy lo stripeaba (404 en prod); corregida a /directory. - v0.15.0 (2026-06-14) — nombres legibles + provisioning de bots de un comando. (1) Nuevo `GET /api/directory` en el control-plane: cualquier usuario activo del