# Ночной просмотрщик — READY, v18

Локальный URL: http://127.0.0.1:8772/output/tasks/three-led-matrices/two-part/?v=18
Ничего не опубликовано, домен не создавался. Для съёмки использовать этот же просмотрщик. Готовность означает готовность интерфейса к просмотру и съёмке, не готовность большого изделия к печати.

## Изменения

- Подложка: нейтральный почти чёрный материал #080808, roughness 1, metalness 0, без эмиссии. Лицевая часть сохраняет свой светлый материал.
- На основной панели ровно два слайдера: прозрачность верха и яркость выбранного LED-контура. Количество — числовое поле. Размер, округлость и все прежние конструктивные параметры находятся в «Дополнительно» и продолжают работать.
- A/B/C управляют светом независимо. Выключенные или имеющие нулевую яркость пиксели — тускло-серые MeshBasic-маркеры #363636, без эмиссии и ореола. Цвет не зависит от подсветки соседних поверхностей. В сечениях выключенные LED также серые.
- Слой «Диоды» скрывает маркеры; свет на верхе продолжает зависеть от A/B/C. «Верх» и «Подложка» сохраняют независимую видимость.
- Для иллюстрации независимого включения каждая вершина крышки получает свет только ближайшего маршрута. Это визуальное разделение, не модель оптического переноса в общем прозрачном материале. Реальная засветка соседних ветвей требует физической пробы.
- Пересчёт затемняет только canvas до 25% яркости и показывает крупное «Обновляется» в центре. Панель не затемняется. aria-busy и live status отражают ожидание. При новом изменении старый Worker немедленно отменяется, включая интервал debounce; запоздавшие сообщения и ошибки проверяются по номеру запроса.
- Ошибка снимает затемнение, возвращает последнюю рассчитанную конфигурацию и показывает причину через role=alert. Цвета, LED-настройки и параметры отображения сохраняются. После удачного расчёта сообщение исчезает. Быстрый неподтверждённый предпросмотр изменения крышки удалён: до завершения видна затемнённая последняя модель.

## Данные и экспорт

Проверены REPORT/READY пакета two-more-matrices и REPORT/INTEGRATION/construction.patch пакета print-fit-validation. Общий каталог уже содержит пять композиций, включая Квадрат / Сердце / Капля и Круг / Ромб / Треугольник. Глаз исключён из новых добавлений; старая третья композиция сохранена как в готовом каталоге. Данные, маршруты, задние вводы, state v6 и дефолт трёх знаков не перезаписаны.

Полный конструктивный патч print-fit-validation не применялся: независимый аудит его десяти больших вариантов обнаружил дефекты, а старые внутренние geometryOK не дают разрешения на печать. В интерфейсе написано «Базовые проверки пройдены», отдельно указан запрет больших STL и дана ссылка на строгий аудит. Старый экспорт оптической пробы, который проверял только geometryOK, также закрыт. JSON явно содержит printReady:false; производственный статус не выводится из базовых проверок.

В «Проверках» доступны прямые ссылки на шесть готовых STL трёх малых образцов uniform/thick/thin из print-fit-validation. Их геометрический аудит пройден в том пакете; это не физически испытанные изделия. Новые файлы STL здесь не создавались и готовые пакеты не изменялись.

## Проверки

- node --check app.mjs и worker.mjs: PASS.
- node check-display.mjs: PASS — восемь комбинаций слоёв, независимость света от видимости маркеров, отсутствие вклада выключенного маршрута, устранение перекрёстного вклада, миграция/сохранение настроек, три знака по умолчанию, все пять композиций, нейтральные UI-токены.
- node check-build-lifecycle.mjs: PASS — действительные обработчики жизненного цикла исполняются с тестовым Worker: отмена до debounce, игнорирование старого успешного ответа и старой ошибки, откат после актуальной ошибки, успешное принятие нового результата, заблокированный STL. WebGL и геометрия в этом небольшом тесте не имитируются как проверенные.
- Живой браузер: A-only, B-only, all-off; серые пиксели отдельно от корпуса; свет при скрытых маркерах. Яркость изменена с 1,1 до 2; прозрачность с 58 до 85, изменения вида подтверждены кадрами, затем значения восстановлены.
- Пересчёт: последовательные изменения размера 410→420 отменены следующим изменением; старые результаты не приняты. Бортик 4 мм при переходе 6 мм вызвал настоящий отказ генератора. Восстановлены исходные бортик 2,5 мм и размер 400 мм, canvas без затемнения, показана причина. Повторный корректный расчёт завершён: aria-busy=false, ошибка скрыта, JSON доступен. При закрытом «Дополнительно» DOM показывает только «Прозрачность» и «Яркость» как видимые слайдеры.
- Итоговая композиция Круг / Ромб / Треугольник: 400 мм, три контура и все слои, A137, яркость A1,1, прозрачность58, исходные цвета и фон сохранены. Ошибок/предупреждений приложения в консоли нет.
- HTTP 200 для основного URL, отчёта строгого аудита и ссылок на образцы.

## Кадры

В outputs текущей задачи: night-final.png; night-a-only.png; night-b-only.png; night-all-off.png; night-off-pixels.png; night-light-without-markers.png; night-brightness-2.png; night-transparency-85.png; night-updating.png; night-error-recovery.png. Первые A/B/off кадры сняты до косметического исправления цвета индикаторов строк; свет и пиксели уже соответствовали финальной логике. Итоговый night-final.png снят с v18. Исходники интерфейса до этой итерации сохранены в before-night-2026-10-14.

## Пределы

Полный npm test основного редактора и тяжёлый геометрический набор повторно не запускались: генератор, каталог и основной редактор не менялись. Оптика, печать, прочность, посадка и мобильный сценарий не проверялись. Большие STL остаются заблокированы.
