master
Initial commit
feat(voice): rate limiting голосовых эндпоинтов (per-user)
Рефакторинг апи
feat(coach): облачный черновик и для тренера, развязка по «кто записал»
feat(auth): перевести вход через Telegram на OIDC, убрать Login Widget
feat(ai): пресеты и объединение регионов мышц для AI-генерации тренировки
feat(progress): аналитика по упражнению — 1ПМ, недельный тоннаж, бейдж рекорда
Запрос на слияние 'feat/workout-calendar' (#1) из feat/workout-calendar в master
feat(ai): контекст спортсмена во всех AI-запросах + заметка для ИИ в профиле
feat(profile): типографика, range-пикер отпуска, always-on тумблеры
feat(api): оценка тренировки (rating/tags/comment) и время+длительность в облачном черновике
feat: AI-генерация — метка снаряда, промпт против дублей, честная ошибка вместо тихого фолбэка
feat(workouts): длительность сессии и имя спортсмена в API
feat(voice): веб-голос через агента, удалён intent-роутер и мёртвый AI-код