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