# TASK-red-dot-recording.md — индикатор записи микрофона на очках ## Контекст Пользователь просит: когда на очках идёт запись микрофона (режим «слушаю», `listening=true`), показывать в углу экрана красный кружок (индикатор записи, как у камер/диктофонов). Только очки (app-glasses), только UI. Через опен-код, как всегда. ## Где это живёт - `app-glasses/src/main/kotlin/pw/binom/viewmate/glasses/ui/AssistantOverlay.kt` - `AssistantOverlay()` собирает `state` (listening/thinking/sttText/assistantText), затем `overlayBox(app, state, chatHistory, scrollState)`. - `overlayBox()` внутри `Binocular(scale=false)` рисует `Box` с чёрным затемнением `Color.Black.copy(alpha = 0.72f)` и в нём `AssistantOverlayContent(...)`. - Binocular рендерит контент дважды (левый/правый глаз) — кружок появится в каждом глазу, это правильно (в каждой половине экрана свой индикатор). ## Правка В `overlayBox()`: внутри внешнего `Box` (тот, что с `.background(Color.Black.copy(alpha = 0.72f))`) добавить поверх контента, когда `state.listening == true`, маленький красный круг в верхнем правом углу (по центру своей половины экрана, т.е. с отступом от края): ```kotlin if (state.listening) { Box( modifier = Modifier .align(Alignment.TopEnd) .padding(top = 12.dp, end = 12.dp) .size(16.dp) .background(Color(0xFFFF3B30), CircleShape), ) } ``` Нужные импорты добавить: `androidx.compose.foundation.shape.CircleShape`, `androidx.compose.foundation.layout.size`, `Modifier.align` (уже есть `Alignment`). Проверить, что `Box`-контейнер позволяет `align` (должен, т.к. это BoxScope). Кружок виден только в режиме «слушаю» (listening=true): при «думаю...» и при показе ответа — не показывается (микрофон уже закрыт). Это соответствует смыслу: индикатор = идёт запись. Никаких изменений протокола, телефона, жестов, логики — только отрисовка индикатора. ## Сборка, тесты, коммит - `./gradlew :lib-core:build :app-glasses:assembleDebug :app-phone:assembleDebug` — BUILD SUCCESSFUL. - `git add -A && git commit -m 'Очки: красный индикатор записи микрофона в режиме «слушаю»'` (БЕЗ push). ## КРИТИЧЕСКИЕ ПРАВИЛА - workspace = /root/WORK/view-mate. Пути ТОЛЬКО относительные от корня (app-glasses/...). НИКОГДА /root/WORK/app-* (без view-mate) — external_directory, permission-guard отклонит. - НЕ трогать: app-phone, lib-core, LocalLlm.kt (GPU), скорость, клавиатуру, автоименование, AssistantGestures.kt, матрицу жестов, HostConnection.kt, MainActivity.kt, GlassesApp.kt. - В конце — краткий отчёт: файлы, изменения, сборка, тесты.