From 7702784cdcf8c8770fdce3f915d819aadd4250da Mon Sep 17 00:00:00 2001 From: dev Date: Tue, 21 Jul 2026 02:34:23 +0200 Subject: [PATCH] =?UTF-8?q?docs(palabras):=20handoff=20=C2=B7=20F-A=20mult?= =?UTF-8?q?ilenguaje=20HECHA;=20F-B=20siguiente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- .../components/palabras/continuar-palabras.md | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/uix/eidos/components/palabras/continuar-palabras.md b/src/uix/eidos/components/palabras/continuar-palabras.md index 0ce2367a5..6a081cded 100644 --- a/src/uix/eidos/components/palabras/continuar-palabras.md +++ b/src/uix/eidos/components/palabras/continuar-palabras.md @@ -9,6 +9,46 @@ --- +## ESTADO 2026-07-21 — F-A multilenguaje ✅ (à la field-langs) + warnings resueltos + +> Dos features nuevas pedidas por el usuario: **F-A** (multilenguaje del CONTENIDO à la +> field-langs) y **F-B** (soporte agentivo — un agente rellena el contenido). F-A HECHA en 3 chunks; +> F-B es lo siguiente (forma sin firmar: ¿qué emite el agente · one-shot vs streaming · dónde entra · +> doc entero vs caret/rango?). Antes de esto: los dos **warnings** que reportó el usuario resueltos — +> `state_proxy_equality_mismatch` (mi fast-path comparaba proxy↔raw en `syncExternalState`; ahora +> cachea `publishedExternal`, proxy↔proxy; `81dca0f14`) y el ruido de langs (`ts` de engine desalineado +> 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»). + +### F-A — multilenguaje (todo en `alpha-0.1-sec-dom` → `gita`) + +- **Chunk 1 · motor — `090b27391`**: contrato detrás de `languages` (retrocompatible). `value: + PalabrasDocument | Record`; `languages: LangSpec[]` (1º=activo); + `requiredLangs` (⚠️ NO `required`, colisión con el field bool); `activeLang` bindable + `onLangChange`. + Provider: **historia POR IDIOMA** (`langHistories` Map; el activo es `this.history`, los inactivos en + el mapa; seed en construcción desde `$state.snapshot` del value map; switch nunca cruza pilas de undo). + `writeExternalValue` escribe el mapa ENTERO (raw) en multi. `syncExternalState` resuelve el doc activo + del value (doc|map). Api: `multilingual`/`activeLang`/`setActiveLang`/`languageSpecs`/`missingRequiredLangs`/ + `langFilled`; requiredLangs→isInvalid. **58/58** provider (5 nuevos: modo, switch+writeback, historia + por idioma, validez, mono retrocompatible). +- **Chunk 2 · switcher — `fb90bd140`**: `palabras-lang-switcher.svelte` (segmentado ≤3 / Popover-select + >3, punto de completitud por idioma vía `langFilled`, teclado de radiogroup). Lee la `api`. `languageSpecs` + expuesto para honrar etiquetas de LangSpec; `LangCode`/`LangSpec`/`PalabrasLangValues` re-exportados. +- **Chunk 3 · ubicación+CSS+demo — `b2ca761e1`**: switcher por modo (spec del usuario): menubar→fin de + barra (antes de la papelera); flotante/drawer→migas tras «Documento». Prop `langSwitcher` en el + breadcrumb (lo suprime en menubar). **FIX UX**: `setActiveLang` limpia el bloque activo (el id viejo no + vive en el nuevo doc) → el breadcrumb se ocultaba y el switcher desaparecía tras el 1er cambio; ahora, + si es multilenguaje, el breadcrumb muestra siempre al menos «Documento» + switcher (crumbs sintéticos). + CSS sobrio (tokens del chrome, 0 hex). Demo = es/en. **Verificado Playwright**: flotante=1 switcher + (miga, persiste, es↔en cambia el contenido y lo preserva), menubar=1 (barra, sin duplicado), 0 errores. + +### Próximo (F-B agentivo) — decisión de forma pendiente +Base existente: `api.importContent(content, format)` + `insertBlockOfType`. Sin firmar: (1) qué emite el +agente (JSON PalabrasDocument nativo · markdown · schema agent-friendly), (2) one-shot vs streaming (bloque +a bloque en vivo), (3) dónde entra (API del host · `/ai` en el slash · botón), (4) doc entero vs caret/rango. + +--- + ## ESTADO 2026-07-19 — UI de F4 CERRADA (listas · merge/split · count/TOC · resize) > El usuario eligió «las tres en orden» de la **UI de F4** (el MOTOR ya estaba desde 2026-07-14).