Files
llimphi/shared/app-bus/README.md
T
sergio c1b11b2c01 feat: completar llimphi.git con el widget menubar + app-bus
menubar (barra de menú in-window que cualquier app monta desde un AppMenu)
estaba excluido por su dep a app-bus. Vendorizo app-bus (hoja) y reincluyo
menubar, así llimphi.git pasa a ser la dependencia UI completa — los apps
git-dependen un solo repo liviano para todo Llimphi, sin clonar el monorepo.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 11:45:02 +00:00

39 lines
1.5 KiB
Markdown

# app-bus — bus de eventos in-proc para apps Llimphi
Bus de **publish/subscribe** tipado, síncrono y en memoria, para coordinar apps
dentro del mismo proceso. Cubre tres familias de eventos transversales: **foco**
(qué app/ventana lo tiene), **navegación** (abrir/cerrar/enfocar una app o ruta)
y **notificaciones** efímeras.
## Qué expone
- `AppBus` — handle compartible (`Clone`, internamente `Arc<RwLock<…>>`).
- `Event` — enum transversal: `FocusChanged` / `Navigate` / `CloseApp` / `Notify`.
- `NotifyLevel``Info` / `Warn` / `Error`.
- `Subscription` — guard RAII: al soltarlo se cancela la suscripción.
- `publish(Event)` entrega de forma síncrona a todos los suscriptores; entrega
anidada si un callback publica desde su propio handler.
## No-objetivos
- No es un bus interproceso ni de red (eso es Akasha / app-channel).
- No persiste eventos ni garantiza entrega tras reinicio.
- No ordena por prioridad.
## Estado (2026-05-31)
### Hecho
- Bus pub/sub completo: `publish`, `subscribe`, cancelación por guard RAII.
- Enum `Event` con foco/navegación/cierre/notificaciones.
- Consumido por `launcher-llimphi` (dispara navegación/lanzamiento).
### Pendiente
- Adaptador multiproceso (hoy estrictamente in-proc).
- Entrega diferida / cola (hoy reentrancia anidada síncrona).
- Filtrado por tipo de evento en `subscribe` (hoy el callback filtra).
## Lugar en el repo
`shared/app-bus` — canal in-proc de grano fino. El plano de control a más alto
nivel es `shared/sandokan` (ver su SDD.md).