Изменения:
1. Поле для ввода WebSocket адреса (вместо prompt)
- wsUrlInput с значением по умолчанию
- Сохраняется между перезагрузками
2. Кнопка CONNECT/DISCONNECT
- Меняет текст и цвет при подключении
- DISCONNECT красная кнопка
- Работают обе кнопки (в шапке и в карточке)
3. Auto-connect
- Чекбокс 'Auto-connect on load'
- Автоматическое подключение при загрузке
- Можно отключить
4. updateConnectButton()
- Обновляет обе кнопки синхронно
- 🔌 CONNECT / 🔌 DISCONNECT
Реализована точно такая же анимация как была:
- avg = currentRms * 100 (вместо микрофона)
- Сглаживание rmsSmoothed * 0.7 + avg * 0.3
- Симуляция если RMS < 1 (12 + random * 25)
- Усиление при LISTEN/SPEAK (45 + random * 55)
- 42 столбика с синусом
- Случайные колебания 0.5 + random * 0.3
- Увеличение при SPEAK
Теперь 1-в-1 как оригинал, но с данными satellite!
Изменения:
- 42 столбика как в оригинале
- Синусоидальная анимация
- Градиент cyan → blue
- Сглаживание RMS (0.7 old + 0.3 new)
- Случайные колебания для живости
Теперь красиво как было, но с данными satellite RMS!
Изменения:
- Удалён локальный микрофон (initMicVisualizer)
- Canvas рисует RMS историю от satellite
- 64 столбика с градиентом (зелёный → красный)
- Меньше логов (только если RMS > 0.05)
Преимущества:
- ✅ Показывает реальную громкость satellite
- ✅ Нет зависимости от микрофона браузера
- ✅ Меньше спама в логах
Проблема: rmsFill/rmsValue null до загрузки DOM
Решение:
- Проверка if (!rmsFill || !rmsValue) return
- Инициализация после window.load
- Логирование для отладки
Проблема: updateRmsMeter is not defined
Решение:
- Добавлена функция updateRmsMeter(level)
- Добавлены DOM элементы rmsFill, rmsValue
- Добавлена переменная rmsTimeout
Теперь audio-level события обрабатываются корректно
Исправления:
- fix: баг volume/level — поддерживаются оба названия параметра
- docs: добавлен раздел Web Client в websocket-server-plan.md
- docs: создан web-client/README.md с полной документацией
Функции Web клиента:
- ✅ set_volume (громкость) — работает
- ✅ mute/unmute — работает
- ⏳ audio-level RMS — требует тестирования
- ⏳ LED управление — требует тестирования
- ⏳ Transcript — требует тестирования
Этапы разработки:
- WC-1: Базовая интеграция ✅
- WC-2: Визуализация (в процессе)
- WC-3: Дополнительные функции
- WC-4: UI/UX