Skip to content

OrbitFM v0.19.0-rc.2

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Nov 09:36
· 55 commits to main since this release

Локальная статистика прослушивания (ADR-0049): сбор, хранение, раздел
«Статистика» в настройках и команды CLI. Счётчики живут только на устройстве.
Схема status --json остаётся 1.

Добавлено

  • ADR-0049 и интерфейс docs/interfaces/17-stats.md: файл stats.json схемы 1,
    учёт только состояния Playing, лимиты списков, внешние потоки, приватность
    без сервера и без аккаунта; контракт разложен по интерфейсам 05/09/10/13 и
    модулю 11
  • Модуль src/stats/ — StatsStore: $XDG_DATA_HOME/orbitfm/stats.json
    (schema, updated_at, stations[], days), до 500 станций и 730 UTC-суток,
    свёртка дублей и доводка пустых countrycode/tags при загрузке, снимок с
    ранжированием топ-10 и окнами 7/30 суток
  • Накопление в Session: сегмент текущей станции, засчитываются только целые
    секунды эфира; сброс порога каждые 30 с, при уходе из Playing, при смене
    станции, при выключении учёта, при stats clear и при выходе процесса;
    в parked-режиме будильник Parked::Stats продолжает копить с закрытым окном
  • Внешний поток получает ключ external:<fnv1a64(url)> вместо безымянной
    станции; теги обрезаются до 128 байт по границе тега
  • IPC stats (строки stats total <seconds>, stats enabled <bool> и топ-5
    станций/стран/тегов), stats --json (сводка схемой 1 с локализованным
    блоком ui) и stats clear с ответом ok stats cleared; неизвестный
    аргумент — ошибка; native host браузера команды запрещает (ADR-0038)
  • Настройка stats_enabled по умолчанию true: старые settings.json без
    поля читаются как включённый учёт и не перезаписываются, set_stats_enabled
    сохраняет только при изменении
  • Категория «Статистика» в окне настроек: итоги «всего / 7 дней / 30 дней»,
    тумблер учёта, «Очистить» в два клика и топ-10 станций, стран и тегов с
    полосами доли; снимок обновляется не чаще раза в секунду и только пока
    открыт раздел
  • Уведомление stats_damaged: повреждённый файл остаётся нетронутым до первой
    успешной записи, счётчики начинаются с нуля и пользователя предупреждают
    один раз за запуск
  • Строки раздела и уведомление во всех 16 языках каталога

Руководство пользователя — в вики проекта.