docs(palabras): handoff · F-A rework (estructura compartida, Camino A)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
alpha-0.1-sec-dom
dev 3 months ago
parent 461be12d91
commit 0cd3a037ce

@ -20,6 +20,21 @@
> con `t`/mono; gate del emit a `depth>0`, framework; `45543ab95`). FD.4 (firma perceptual) POSPUESTA a
> futuro por el usuario («complicado para un editor»).
> ⚠️ **REHECHO (`461be12d9`).** Los 3 chunks de abajo (mapa `Record<LangCode,
> PalabrasDocument>` + historia por idioma) permitían que la ESTRUCTURA divergiera
> (borrar un bloque en un idioma no lo borraba en otros). El usuario lo señaló:
> **estructura COMPARTIDA, solo el TEXTO por idioma**. Modelo definitivo (Camino A):
> UN solo `PalabrasDocument` con `block.i18n?: Record<LangCode,Inline[]>` (idiomas
> inactivos) + `block.children` (activo) + `doc.activeLang`. Hay UN árbol → ops
> estructurales aplican a todos los idiomas GRATIS (el i18n viaja vía spread; normalize
> lo preserva), undo automático. Switch = swap `children↔i18n` (`switchDocumentLanguage`).
> `value` vuelve a `PalabrasDocument` (uno, no mapa); helpers `foldPalabrasLanguages` /
> `projectPalabrasLanguage`; `engine/i18n.ts` NUEVO. El SWITCHER y la UBICACIÓN (chunks
> 2-3) intactos. 60/60 provider (test clave: borrar 4→3 en es Y en) · 570/570 motor ·
> verificado Playwright. Solo texto INLINE por-idioma; alt/caption/code.language/
> callout.title COMPARTIDOS en v1. ⚠️ `replaceDocument` (importContent) descarta el i18n
> — relevante para F-B (el agente que rellena). Detalle abajo es HISTÓRICO (1er intento).
### F-A — multilenguaje (todo en `alpha-0.1-sec-dom` → `gita`)
- **Chunk 1 · motor — `090b27391`**: contrato detrás de `languages` (retrocompatible). `value:

Loading…
Cancel
Save

Powered by TurnKey Linux.