
Nick ShirokovandClaude Opus 4.8
684cd17d5f
feat(form-decompile,form-compile): контент расширенной подсказки extendedTooltip + единая ML-text форма с formatted (кластер companion-content tier 1)
Companion <ExtendedTooltip> несёт <Title> (текст расширенной подсказки) — декомпилятор
пропускал companion целиком, текст терялся. Теперь companion = свойство родителя:
ключ extendedTooltip на элементе (синоним extTooltip).
Единая форма ML-текста (для title/tooltip/extendedTooltip):
- строка → ru; {ru,en} → многоязычно; {text, formatted: true} → форматированный.
- formatted: текст несётся RAW (1С inline-разметка <b>/<color>/<link>/</> — часть строки,
round-trip через XML-экранирование, спаны не моделируем).
- Гибрид: флаг formatted авто-детектится по известной разметке/</> (детектор идентичен в
ps1+py+декомпиляторе); явный {text,formatted} — только когда авто-детект неверен (~2%
корпуса: formatted без разметки / литеральные <…>-плейсхолдеры). Авто-детект подтверждён
данными (98% верно, мисматч 1003 из 53612).
Декомпилятор (v0.26): извлекает Title из companion <ExtendedTooltip> на родителя (гибрид).
Компилятор (ps1+py v1.44): Emit-Companion с опциональным контентом; 14 call-site'ов
ExtendedTooltip передают el.extendedTooltip; синоним extTooltip→extendedTooltip; whitelist.
Валидация: content-bearing round-trip CLEAN (Банки/ФормаЭлемента byte-identical, formatted=true
round-trip); регресс 33/33 ps+py; py==ps1 идентичны; harness 8368→8202.
Хвосты (в BACKLOG): пустое присутствие companion (Table/CommandBar/Popup не генерят
ExtendedTooltip — ~437, вскрыто фиксом метрики) и ExtendedTooltip с own-layout (<Width>).
Spec: extendedTooltip + раздел ML-text/formatted/markup-словарь.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 18:16:32 +03:00
..
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-04-25 13:35:44 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-04-25 13:29:20 +03:00
2026-04-25 15:26:54 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-08 12:16:44 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-08 12:16:44 +03:00
2026-05-07 15:30:06 +03:00
2026-05-08 12:16:44 +03:00
2026-06-06 18:16:32 +03:00
2026-06-06 18:16:32 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-03 20:10:10 +03:00
2026-05-08 12:16:44 +03:00
2026-05-15 11:40:27 +03:00
2026-05-08 12:16:44 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-11 13:47:50 +03:00
2026-05-07 15:30:06 +03:00
2026-06-01 15:40:17 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-06-04 12:26:57 +03:00
2026-06-01 16:12:50 +03:00
2026-06-04 12:26:57 +03:00
2026-06-03 22:11:48 +03:00
2026-05-23 21:30:26 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-08 12:16:44 +03:00
2026-05-08 12:16:44 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-05-07 15:30:06 +03:00
2026-06-02 20:07:09 +03:00
2026-05-07 15:30:06 +03:00
2026-03-09 14:58:49 +03:00