master
Initial commit
feat: AI-генерация — метка снаряда, промпт против дублей, честная ошибка вместо тихого фолбэка
feat(exercises): алиасы упражнений + мультиязычный поиск
feat(ai): контекст спортсмена во всех AI-запросах + заметка для ИИ в профиле
feat(coach): тренерский функционал в вебе + упрощение ролей
feat(workouts): длительность сессии и имя спортсмена в API
fix: naive-datetime баг в agent_dialogs, время в логах web, UI-мелочи
feat(voice): веб-голос через агента, удалён intent-роутер и мёртвый AI-код
fix(ai): Gemini через прокси — прокидываем http_client и щедрый таймаут
fix(web): устранение раздражающих багов UI
feat(ai): пресеты и объединение регионов мышц для AI-генерации тренировки
feat(exercises): мышцы упражнений — модель, каталог, API (бэкенд)
feat(notifications): уведомлять тренера о тренировках из голоса/бота
fix(auth): использовать claim "id", а не "sub", для Telegram OIDC
feat(exercises): поиск и ранжирование в выборе упражнений
feat(voice): rate limiting голосовых эндпоинтов (per-user)
Запрос на слияние 'feat/workout-calendar' (#1) из feat/workout-calendar в master
fix(streak): не учитывать запланированные и будущие тренировки
refactor(stt): единственная точка обрезки промпта, без флага и лишних логов
feat(profile): типографика, range-пикер отпуска, always-on тумблеры
feat(api): оценка тренировки (rating/tags/comment) и время+длительность в облачном черновике