fix(editors): свидетель карточек отдельным смоком, два списка в сегменты

Закрывает находки код-ревью r1 по #598.

M1 — неприкосновенный смок восстановлен. `demo/smoke_tap_run.mjs` вернулся
побайтово к версии `origin/dev`: он один из девяти `.srcrow`-смоков, которые
ТЗ объявило неизменяемыми, и правка в нём обесценивала собственное
доказательство AC2/AC3. Проверки карточек переехали в новый
`demo/smoke_settings_dialog_cards.mjs` — отдельного свидетеля ТЗ не запрещало.

M2 — сегментированный переключатель сделан там, где он обещан и уместен:
`space-bg-mode` и `space-zero-wall-style` переведены из `<select>` в
`segmented`. Остальные выборы в трёх диалогах остаются списками осознанно:
привязка маркера, роль света и режим свечения уже `role="radiogroup"`
(`.markerradios`), позиция значения закреплена смоком
`smoke_device_preview_parity`, списки сущностей и тем длинные. Сокращение
объявлено в ТЗ и в обоих changelog.

M3 — мутант `state-callout-hidden-under-help` патчит теперь оба состояния:
`marker.run_target_gone` и `gs.sun_missing`; гард — новый смок.

Заодно: `ensureFormKitStyles(this.host)` не вызывался ни в одном из трёх
диалогов — стили набора приезжали только из диалога комнаты, и без него
сегменты имели высоту 14 px вместо 44. Нашёл новый смок проверкой
`bgSegmentTargetIsBigEnough`.

Гейты: typecheck, test (2788 pass), build, bundle:sync, три смока,
mutation-gate --check, оба мутанта задачи.

Issue: #598
User-Visible: yes
This commit is contained in:
Claude
2026-09-19 19:17:20 +03:00
parent ad294b9992
commit bd6da53f04
50 changed files with 657 additions and 604 deletions
+7 -1
View File
@@ -10257,7 +10257,7 @@ const MUTANT_DEFINITIONS = [
},
{
id: 'state-callout-hidden-under-help',
guard: 'node demo/smoke_tap_run.mjs',
guard: 'node demo/smoke_settings_dialog_cards.mjs',
because: '#598 К5: «Цель {id} не найдена» — сообщение о СОСТОЯНИИ, а не пояснение. '
+ 'Спрятать его под «?» заодно с шестью настоящими подсказками легко, и тогда человек '
+ 'узнает о сломанном действии, только если сам откроет подсказку — а подставить туда '
@@ -10266,6 +10266,12 @@ const MUTANT_DEFINITIONS = [
file: 'src/editors/marker-dialog.ts',
find: " ? html`<div class=\"rhint\">${this.host._t('marker.run_target_gone', { id: d.tapTarget })}</div>`",
replace: " ? html`<span title=${this.host._t('marker.run_target_gone', { id: d.tapTarget })}></span>`",
}, {
// Оба сообщения о состоянии — один контракт (К5), поэтому и мутант один:
// спрятать под «?» можно каждое, и «поймано» обязано означать оба.
file: 'src/editors/general-settings-dialog.ts',
find: " ? html`<div class=\"rhint\">${this.host._t('gs.sun_missing')}</div>`",
replace: " ? html`<span title=${this.host._t('gs.sun_missing')}></span>`",
}],
},
{