feat(renaser): Fase 8a — el compositor teselante
El kernel deja de colocar las ventanas a mano: las tesela. El motor es mirada-layout — el mismo nucleo no_std que ordena el compositor Wayland de brahman, enlazado por path cruzando la frontera de workspace. Es el primer consumo REAL del nucleo compartido brahman <-> renaser. - kernel/compositor.rs: enlaza mirada-layout y calcula un marco por app con el algoritmo MasterStack, dentro del area de pantalla. - consola::volcar_marco centra el fotograma natural de la app dentro de su marco teselado (antes lo depositaba en region.x/y fijos). - ContextoCapacidades lleva marco + natural_ancho/alto; sys_render_frame valida el fotograma contra el tamaño natural. - cargar_userspace tesela con el compositor y pinta el escenario antes de encender las apps. Las apps NO cambian: el compositor reordena la pantalla sin que ninguna toque una instruccion. Verificado en QEMU (screendump): las cinco apps de genesis teseladas en MasterStack — hola como ventana maestra, el resto apiladas a la derecha, cada lienzo centrado en su panel. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# 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
|
||||
|
||||
- El teclado cicla en caliente los siete modos de `mirada-layout`
|
||||
(`MasterStack`, `CenteredMaster`, `Spiral`, `Grid`, `Columns`, `Rows`,
|
||||
`Monocle`).
|
||||
- Re-teselar exige re-componer: las apps que sólo pintan en `init` necesitan
|
||||
una señal de redibujado, o el kernel debe conservar su último fotograma para
|
||||
recomponerlo en el marco nuevo.
|
||||
|
||||
### 8c — Foco y `Workspace`
|
||||
|
||||
- Adoptar el `Workspace` de `mirada-layout`: foco, orden-Z, alta y baja de
|
||||
ventanas en vivo.
|
||||
- Una ventana enfocada, resaltada; el teclado mueve el foco y promueve apps al
|
||||
área maestra.
|
||||
|
||||
## 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 |
|
||||
Reference in New Issue
Block a user