feat(mirada): mirada-greeter — greeter de login del escritorio carmen
App GPUI con app_id carmen.greeter: formulario usuario+contraseña que autentica con brahman-auth en un hilo de fondo y, en éxito, emite un SessionTicket por stdout para que el compositor haga el traspaso a modo sesión. Backend mock (MIRADA_GREETER_MOCK) o PAM. Incluye brahman-auth::SessionTicket (contrato de tiquet greeter→compositor, serializado a una línea con prefijo versionado) y el modo enmascarado de nahual-widget-text-input (TextInput::with_mask para contraseñas). 18 tests nuevos; greeter verificado por compilación + clippy. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,25 @@ Cerebro (GPUI) ↔ Cuerpo (smithay) en dos procesos. El historial previo
|
||||
vive en `git log` (`feat(mirada): …`); este archivo arranca con el
|
||||
trabajo de escritorio (tema, DM).
|
||||
|
||||
### feat(mirada-greeter): greeter de carmen — login GPUI
|
||||
|
||||
App nueva `crates/apps/mirada-greeter`: la pantalla de login del
|
||||
escritorio. Ventana GPUI con `app_id = "carmen.greeter"` para que el
|
||||
compositor la reconozca y la componga a pantalla completa.
|
||||
|
||||
- Formulario usuario + contraseña (campo enmascarado). `Enter` encadena
|
||||
los campos y dispara la autenticación.
|
||||
- Autentica con `brahman-auth` en un hilo de fondo (PAM demora ~2 s ante
|
||||
un fallo — la UI no se congela). Backend por entorno:
|
||||
`MIRADA_GREETER_MOCK=usuario:secreto` (dev) o PAM (`MIRADA_GREETER_PAM`,
|
||||
por defecto `carmen`).
|
||||
- En éxito imprime un `SessionTicket` a stdout y termina; el compositor
|
||||
lo leerá para el traspaso a modo sesión (siguiente slice).
|
||||
|
||||
Para el contrato del tiquet (`brahman-auth::SessionTicket`) y el modo
|
||||
enmascarado de `nahual-widget-text-input`, ver los changelogs de
|
||||
`protocol/` y `nahual`.
|
||||
|
||||
### feat(mirada): inyección de entorno de tema a los hijos del compositor
|
||||
|
||||
`spawn_command` del compositor inyecta `THEME_ENV` a cada proceso hijo:
|
||||
|
||||
@@ -2,6 +2,13 @@
|
||||
|
||||
Motor GPUI: libs + widgets. Renombrado de `yahweh` el 2026-05-19.
|
||||
|
||||
### feat(nahual-widget-text-input): modo enmascarado para contraseñas
|
||||
|
||||
`TextInput::with_mask()` dibuja el contenido como puntos (`•`, uno por
|
||||
carácter Unicode) en vez del texto real; `text()` sigue devolviendo el
|
||||
contenido crudo. Lo usa el campo de contraseña de `mirada-greeter`.
|
||||
Lógica de enmascarado en la función pura `display_text`, con tests.
|
||||
|
||||
### feat(nahual-theme): exportación del tema a GTK (módulo toolkit)
|
||||
|
||||
Módulo nuevo `nahual-theme/src/toolkit.rs`: traduce el `Theme` activo a
|
||||
|
||||
@@ -2,6 +2,15 @@
|
||||
|
||||
Contratos canónicos + routing entre módulos. Antes: `core/brahman-*` + `shared/brahman-*`.
|
||||
|
||||
### feat(brahman-auth): SessionTicket — el tiquet greeter→compositor
|
||||
|
||||
`brahman_auth::SessionTicket { user: UserInfo, session: String }`: lo
|
||||
que el greeter le entrega al compositor tras un login exitoso.
|
||||
`to_line`/`from_line` lo serializan a una **línea única** (campos por
|
||||
tabulador, prefijo versionado `MIRADA-SESSION-TICKET-v1`) — el greeter
|
||||
la imprime a stdout y el compositor escanea sus líneas buscando el
|
||||
prefijo. 5 tests de round-trip y rechazo de líneas malformadas.
|
||||
|
||||
### feat(brahman-auth): autenticación del escritorio — contrato + PAM + mock
|
||||
|
||||
Crate nuevo `crates/protocol/brahman-auth`: la base del DM/greeter de
|
||||
|
||||
Reference in New Issue
Block a user