Files
brahman/renaser/FASE8.md
T
sergio 5c462e6d30 feat(renaser): Fases 8b y 8c — el escritorio interactivo
El compositor de la 8a teselaba, pero era inmovil. Las 8b/8c lo hacen
vivo: el teclado reordena el escritorio y mueve el foco en caliente.

- Cache de fotogramas: cada ventana guarda en RAM del kernel su ultimo
  fotograma —reservada una vez, acotada al lienzo natural—. Al re-teselar
  o mover el foco, el kernel recompone desde la cache: las apps que solo
  pintan en init (cronista) conservan su imagen sin enterarse del cambio.
- compositor: el registro ESCRITORIO (ventanas, marcos, caches, modo);
  presentar_fotograma, desalojar, atender_mandos, ciclar_layout,
  mover_foco. Foco en un AtomicUsize, mandos en una cola lock-free.
- teclado: la IRQ1 deja de difundir. Alt es el modificador del sistema —
  Alt+Espacio cicla el teselado, Alt+J/K mueven el foco—; una tecla
  ordinaria va SOLO a la app enfocada (CANALES reindexado por indice_app).
- consola: borde de foco (indigo / gris) en cada marco.

Guardarrail anti-interbloqueo: la IRQ1 jamas bloquea ESCRITORIO; se
comunica por dos atomicos y una cola lock-free. Las caches se reservan
una sola vez, al tamaño natural — sin asignacion en el bucle del reactor.

Verificado en QEMU (screendump + sendkey): arranque teselado con hola
enfocada; Alt+Espacio cicla a CenteredMaster y las apps estaticas
conservan su contenido; Alt+J mueve el foco; las teclas llegan solo a la
app enfocada. Cierra la Fase 8 — el compositor teselante e interactivo.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 19:19:21 +00:00

3.1 KiB

renaser — Fase 8 :: El compositor teselante

Plan de ataque. Para el estado general ver ROADMAP.md; para la arquitectura, ARCHITECTURE.md.

El objetivo

Hasta la Fase 7, cada aplicación llevaba su región escrita a mano en el Manifiesto de Génesis: cuatro coordenadas fijas (region_x, region_y, region_ancho, region_alto). El kernel las leía y componía cada app en su rectángulo, inmóvil — una disposición rígida, decidida en la siembra.

La Fase 8 entrega esa decisión a un COMPOSITOR. El kernel deja de colocar las ventanas a mano: las tesela. El motor del teselado es mirada-layout — el mismo núcleo no_std que ordena las ventanas del compositor Wayland de brahman, enlazado por path cruzando la frontera de workspace. Una sola lógica de teselado sirve a dos mundos: el escritorio sobre Linux y el kernel bare-metal.

Sub-fases

8a — El compositor tesela — HECHA

  • compositor.rs — enlaza mirada-layout y calcula un marco por app con el algoritmo MasterStack, dentro del área de pantalla (todo menos la franja superior reservada a la consola).
  • El kernel centra el fotograma natural de cada app dentro de su marco teselado; las apps conservan su tamaño natural y no cambian una instrucción.
  • EntradaApp.region_ancho/alto pasa a significar el tamaño NATURAL del lienzo de la app; region_x/y quedan vestigiales — el compositor decide la posición.

8b — Teselado interactivo — HECHA

  • Alt+Espacio cicla en caliente los siete modos de teselado de mirada-layout (MasterStack, CenteredMaster, Spiral, …).
  • Re-teselar exige re-componer. La solución: el kernel guarda una CACHÉ del último fotograma de cada app —acotada al lienzo natural, reservada una sola vez— y recompone desde ella. Una app que sólo pintó en su init conserva su imagen a través de cualquier reordenación, sin enterarse del cambio.

8c — Foco y enrutamiento selectivo — HECHA

  • Una ventana ENFOCADA, con borde índigo brillante; las demás, borde gris mate. Alt+J / Alt+K pasean el foco entre las ventanas vivas.
  • El teclado deja de difundir a ciegas: una tecla ordinaria se entrega sólo a la app enfocada; los mandos Alt+… se consumen en la IRQ.
  • El registro ESCRITORIO del compositor cumple el papel del Workspace de mirada-layout —ventanas, marcos, foco— sin adoptar su tipo: el kernel necesita además la caché de respaldo, que el Workspace no contempla.

Pendiente

  • Orden-Z y solapamiento (ventanas flotantes); alta y baja de apps en vivo.
  • Promover la app enfocada al área maestra (Alt+Enter).

Estructura de archivos

archivo estado rol en la Fase 8
kernel/src/compositor.rs nuevo (8a) teselado con mirada-layout
kernel/src/consola.rs a modificar (8a) composición centrada en el marco
kernel/src/wasm/mod.rs a modificar (8a) marco + tamaño natural
kernel/src/wasm/env.rs a modificar (8a) validación contra el natural
kernel/src/main.rs a modificar (8a) el compositor en el arranque