WEB-317 · Дефект · — · web
UI: кнопка «нота» налазит на микрофон (нет зазора) и не имеет двух состояний — фича не тестировалась
Закрыт
P2
ведёт: backup-opus
Суть
# Кнопка «нота» (муз-иконка) в панели голоса: перекрытие и отсутствие состояний
## Факты (owner 23.08, скрин Снимок 2026-08-23 в 01.16.20)
- Иконка «нота» визуально НАЛАЗИТ на круглую кнопку микрофона (нижний правый угол панели Асистент) — нет зазора/нормальной компоновки.
- У кнопки нет двух состояний (вкл/выкл) — непонятно, активна ли она.
- Owner: фича делалась недавно и НИ РАЗУ не тестировалась — приёмка с нуля, не регресс.
## Что сделать
1. Развести кнопки: зазор по дизайн-сетке (не перекрытие), проверить на узких ширинах панели.
2. Два состояния (active/inactive) с видимой индикацией + aria-label.
3. Выяснить и записать в тикет, ЧТО кнопка делает (спека/коммит фичи — найти в истории, вписать сюда ссылку).
4. Скрин до/после в тикет.
## Связки
- Поверхность та же, что WEB-316 (панель голоса Асистент) — чинить согласованно, но это отдельный дефект компоновки, не подключения.
- Эпик приёмки посадок: WEB-314 (если фича приехала в 30/31 — добавить в реестр приёмки).
## WEB-317 implementation handoff (2026-08-23)
WEB317_FIX_READY
Коммит: e5f4bcbd в ветке agent/web317-note-button-20260823. Деплой не выполнялся.
Что делает нота: это переключатель Browser Realtime output mode. При включённом speech output ответы могут генерироваться и воспроизводиться голосом; при transcript-only включённом режиме realtime запрашивает только текст, без синтеза и воспроизведения. Настройка browserRealtimeAudioOutputEnabled сохраняется в voiceModeSettings и влияет на OpenAI/Google realtime payload.
История: 31492549e53973abc409b83181bfaba58c86cea8 (WEB-300, transcript-only mode: note-icon, text-only modalities, no TTS spend, persist, l10n); 503abc77626b373730328645fdc693ae3a4c5329 (WEB-330, note moved from shared toolbar into voice canvas).
Фикс: src/components/realtime/RealtimeControls.tsx убрал absolute -bottom-1/-left-3 и поместил note и mic в flex row gap-3 с shrink-0 для mini/full voice canvas. Добавлены data-state active/inactive, data-audio-output transcript/speech, видимая primary-индикация transcript-only, aria-label/title и aria-pressed.
Тесты: src/components/chat/__tests__/realtimeControlsStates.test.tsx проверяет SSR active/inactive states, aria, классы и отсутствие absolute overlay; WEB-330 contract обновлён. Целевой прогон: 8/8 pass. ESLint и git diff --check pass. Полный tsc не green из-за существующих несвязанных baseline ошибок проекта; деплой и live screenshot не выполнялись. Отчёт: /home/ubuntu/waves/WEB317-REPORT.md.
Diff-stat: 3 files, 105 insertions(+), 8 deletions(-).
## 2026-08-23 10:51 UTC — ЗАДЕПЛОЕНО в прод (посадка 32, v4-4482925)
Фикс в составе rel-4482925 (source 44829258a9398ebef6aedfeb9a959b7be4fbd4d3), аттестованный cutover, paidReady=true. Байт-маркеры фикса проверены в standalone до посадки (см. L32V2-REBUILD-REPORT.md на A1). Дальше: живая приёмка глазами в браузере против serving v4-4482925 (правило visual-acceptance) — после неё закрытие.
## 2026-08-23 11:07 UTC — owner подтвердил визуально: «иконку ноты сдвинули»
Живое подтверждение owner на v4-4482925 (скрин). Ждём формального скрин-пруфа из M4 l32accept для закрытия по правилу visual-acceptance.
## 2026-08-23 11:35 UTC — приёмка l32accept: DOM-маркеры не найдены на ДОСЯЖИМОЙ поверхности; у owner визуально ОК
M4: на глобал-чат поверхности data-audio-output/data-realtime-mic-layout = [] (десктоп и узкий), кнопка ноты не отрисована там. НО owner сегодня визуально подтвердил «иконку сдвинули» на СВОЕЙ поверхности (voice-панель, которую волна сознательно не открывала — мик не жали). Вывод: маркеры живут в realtime-панели, недосяжимой для read-only приёмки. Оставляю в review до скрин-пруфа voice-панели (можно без старта платной сессии? проверить) либо принимаю по owner-визуалу + байт-маркерам.
## 2026-08-23 13:35 UTC — живая UI-приёмка (M4 uibatch, маркер UIBATCH_DONE, против v4-4482925)
**NEEDS-FIX (поверхностный статус)** — безопасная voice-поверхность /voice-query (Tools → «Голосовий запит») доступна без сессии: MIC OFF, скрины desktop+narrow. Но обязательных DOM-маркеров [data-audio-output]/[data-realtime-mic-layout] на ней НЕТ — зона «нота+микрофон» живёт только в realtime-сессии, которую без платного старта не открыть. ИТОГ по 317: owner визуально подтвердил сдвиг иконки, байт-маркеры в бандле есть, но формальный DOM-контракт на досяжимых поверхностях не виден. Решение: принять по owner-визуалу+байтам ИЛИ дождаться полного голосового owner-QA после фикса WEB-316. Оставляю в review.
## 2026-08-23 BOARDSWEEP: STALE-NOT-DEPLOYED
- Evidence: buildFixed is empty. Canonical realtime controls/tests exist, but ticket records the required voice-panel DOM surface is not reachable without a paid session and no deployed build pointer is present.
- buildFixed: <empty>; canonical: v4-081ff4fb5 / 081ff4fb5f6110f8001daec7ed910ccef2e395dc.
- Status preserved by sweep: review.
Доказательства
[2026-08-24 STALEREV против 61bc04462; в проде с посадки 45 v4-5a4edbac3] Вердикт SERVED: реализация+тесты доказаны в target tree; принято по приёмке 45-тикетного разбора. Отчёт: A1 /home/ubuntu/waves/STALEREVIEW-REPORT.md (STALEREVIEW_DONE).
Замечен в сборке
26116cff
Починено в
v4-5a4edbac3
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-317","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-24T14:29:01.765Z