feat(fana): backend GPUI + app — editor de escritura DAG

fana-editor-gpui: EdgesElement pinta los conectores de dependencia
como paths; editor_view compone bloques de átomo (divs absolutos
coloreados por coherencia) + osciloscopio del sidepane. RenderPlan
ahora lleva su LayoutConfig para que el backend sea autosuficiente.

app fana: ventana con un relato de ejemplo (rama principal + alterna),
botón «Mutar raíz» que dispara la onda de choque lógica
(propagate_mutation), «Re-validar todo», leyenda y estadísticas.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-20 16:31:12 +00:00
parent 494fb7c0bc
commit ced5853154
7 changed files with 558 additions and 0 deletions
@@ -124,6 +124,9 @@ pub struct RenderPlan {
pub sidepane: Vec<SidepaneMark>,
/// Alto total del contenido — el backend lo usa para el scroll.
pub content_height: f32,
/// Config con la que se construyó — el backend lee de aquí los
/// márgenes y el ancho del sidepane sin recibirlos por separado.
pub config: LayoutConfig,
}
/// Profundidad topológica de cada átomo: 0 para las raíces, `1 + máx`
@@ -254,6 +257,7 @@ pub fn build_plan(graph: &NarrativeGraph, cfg: &LayoutConfig) -> RenderPlan {
edges,
sidepane,
content_height: cfg.margin * 2.0 + order.len() as f32 * row_stride,
config: *cfg,
}
}