Версия 1.6.3 — 2026-06-06

Версия 1.6.3 — 2026-06-06

Управляемая озвучка при входе в систему + иконки для всех справочников.

Добавлено

Страница настроек «Озвучка входа»

Меню «Система» → «Озвучка входа» (доступна super-admin / Admin).

До этого фраза «Код отправлен в Мультифактор» при сабмите формы логина была захардкожена в public/assets/plugins.js. Теперь у админа есть страница с полным контролем:

Два режима воспроизведения:

  1. Синтез речи (TTS) — браузерный SpeechSynthesisUtterance. Настраивается:

    • текст фразы;
    • скорость (0.5–2.0);
    • высота голоса (0–2, по умолчанию 1) — пять кулёров, можно сделать бас или детский писк;
    • громкость (0–1);
    • язык (BCP-47, по умолчанию ru-RU);
    • конкретный голос из системного списка (подтягивается на лету через speechSynthesis.getVoices(), русские сверху).
  2. Готовая запись (MP3-пресет) — список файлов из public/voices/. Поддерживаются .mp3, .m4a, .wav, .ogg. Имя файла без расширения становится идентификатором, человеко-читаемое имя генерируется автоматически (golos-1.mp3 → «Голос 1», female-warm.mp3 → «Женский Warm» и т.п. — для русских названий есть встроенный словарь: voice/golos/female/male/milena/yuri).

Кнопка «Послушать» на странице — играет текущие параметры без сохранения. Удобно подбирать высоту/скорость на слух перед сохранением.

Чекбокс «Озвучивать вход» — глобальный выключатель.

Хранение: JSON-файл storage/app/voice-login-settings.json. Без миграций.

Применение на логине: LoginPage инжектит резолвленные настройки как window.__voiceLoginSettings, public/assets/plugins.js читает оттуда — поддерживает оба режима, валидирует параметры, тихо игнорирует ошибки (браузер может блокировать TTS/audio до взаимодействия пользователя).

Иконки для справочников

В разделе меню «Справочники» подобраны Heroicons для каждого пункта:

  • Подрядные организации — users
  • Дезинфицирующие средства — beaker
  • Типы уборок — sparkles
  • Оборудование — wrench-screwdriver
  • Вакцины — shield-check

Раньше только у «Подрядных организаций» была иконка, остальные отображались без значка.

Технические детали

  • Версия в config/journals.php: 1.6.2 → 1.6.3.
  • Новые файлы:
    • app/Services/VoiceLoginSettings.php — чтение/запись настроек + резолв пресетов
    • app/MoonShine/Pages/VoiceLoginSettingsPage.php — админ-страница с формой
    • app/Http/Controllers/VoiceLoginSettingsController.php — обработчик POST
  • Новый маршрут: POST /voice-login-settingsvoice-login-settings.update.
  • Зарегистрирована страница в MoonShineServiceProvider и в меню «Система».
  • Папка public/voices/ — пресеты MP3, 4 стартовых файла (golos-1.mp3golos-4.mp3).
  • public/assets/plugins.js переписан под чтение настроек из window.__voiceLoginSettings с поддержкой обоих режимов.

Миграции

Не требуются.