feat(editors): три диалога настроек собраны в карточки-группы

«Общие настройки», «Пространство» и «Устройство на плане» были плоскими
столбцами. В «Общих» девять подписей-заголовков шли вперемешку с рядами и
абзацами; в «Устройстве» на 760 строк формы не было ни одного деления, и
«Название» лежало в одном списке с «Дополнительными действиями».

Теперь это карточки общего набора: семь в «Общих», четыре в «Пространстве»,
пять в «Устройстве». Набор взят как есть — он поднят в #594 и доказан на диалоге
комнаты и редакторе панели (#597).

Шесть пояснений переехали под «?» к своему заголовку, подзаголовку или строке;
текст не переписан. Два сообщения о СОСТОЯНИИ остались на виду — решение
владельца: `gs.sun_missing` и `marker.run_target_gone` говорят, что настройка
сломана прямо сейчас, а второе ещё и называет пропавшую цель подстановкой,
которой в статической подсказке взяться неоткуда.

`gs.hint` при этом переехал из ленивого support-словаря в основной: «?» читает
текст через `_t`, а не `supportT`. Тест мёртвых ключей сливает оба словаря, так
что копия в support удалена во всех четырёх локалях.

Классы-опоры сохранены намеренно: `.srcrow`, `.dispsection`, `.gsrow`,
`.colorrow`, `.namein`, `.areasel`, `.tempin` остались на своих элементах, а
карточки добавились вокруг. За эти имена держатся одиннадцать смоков, и потеря
любого превратила бы ревью в чтение переписанных свидетелей.

Изменён ровно один смок — `smoke_general_settings`, и изменён в сторону
строгости: вместо одного списка подписей он снимает теперь два (заголовки
карточек и подзаголовки внутри), требует непустоты каждой карточки, проверяет
что радиус свечения лежит ВНУТРИ карточки свечения (подпись такой границей не
была), что четыре переехавших пояснения доступны кнопкой и что их абзацев в
форме не осталось.

`src/houseplan-onboarding-runtime.ts` затронут двумя строками: он второй
потребитель переименованных ключей `space.hide_*_tip` → `space.hide_*.help`.
Один текст — один ключ; дублировать его ради неприкосновенности файла хуже.

Потолок стартового графа поднят 291 400 → 292 500. Выросли СТРОКИ, а не код:
12 новых ключей в четырёх локалях плюс переехавший `gs.hint`. Разметка диалогов
как была в ленивом редакторском графе, так там и осталась.

Свидетели: `state-callout-hidden-under-help` прячет сообщение о состоянии под
«?» и краснит новый блок `smoke_tap_run`; `dialog-card-loses-its-heading`
обнуляет заголовок карточки и краснит `smoke_general_settings` — карточка без
заголовка это снова плоский список, только с рамкой.

Issue: #598
User-Visible: yes
This commit is contained in:
Claude
2026-09-19 17:52:49 +03:00
parent 2eaeb6f885
commit c22a1f43db
68 changed files with 1361 additions and 1094 deletions
+9 -1
View File
@@ -130,7 +130,10 @@ test('i18n: lazy editor dictionaries carry matching keys and placeholders', () =
const supportEn = supportDictionaries.get('en');
const keys = Object.keys(supportEn).sort();
const placeholders = (value) => (String(value).match(/\{\w+\}/gu) || []).sort();
assert.equal(keys.length, 78);
// #598: `gs.hint` переехал из support в основной каталог как
// `gs.card_fills.help` — «?» карточки читает его через `_t`, а не `supportT`.
// 78 → 77.
assert.equal(keys.length, 77);
assert.equal(Object.keys(en).filter((key) => key.startsWith('support.')).join(','), 'support.title');
for (const { code } of LANGUAGE_REGISTRY) {
const dictionary = supportDictionaries.get(code);
@@ -479,6 +482,9 @@ test('i18n: German values equal to English are explicitly reviewed', () => {
'gs.optimize_live_names',
'gs.optimize_details',
'furn.symbol',
// #598: 'Plan' и 'Details' — одни и те же слова в EN и DE
'gs.card_plan',
'marker.card_details',
// #593: 'Computer' одинаков в EN и DE — это немецкое слово, не пропуск перевода
'furn.cat_computer',
'furn.sym_computer',
@@ -514,6 +520,8 @@ test('i18n: French values equal to English are explicitly reviewed (#371)', () =
'color_picker.confirm',
'color_picker.saturation',
'confirm.delete_partition_openings_item',
// #598: 'Plan' — одно и то же слово в EN, DE и FR
'gs.card_plan',
// #593: 'Cactus' пишется одинаково по-английски и по-французски
'furn.sym_cactus',
'decor.rect',