Здесь простым языком собраны новые версии приложения Ведамрита: что добавили, что улучшили и какие баги исправили.
текущая версия
1.52
5 мая 2026 г.
Версия 1.52
Админка: broadcast push, воронка онбординга, топ юзеров, Telegram-связки.
Раздел `/admin/broadcast` — массовая рассылка web-push на сегмент: все активные / только с подключенным Telegram / только без TG. Указываешь заголовок, текст, URL для перехода — отправка с подтверждением. Возвращает аудиторию и количество попыток отправки.
Раздел `/admin/funnel` — воронка онбординга: для каждого типа квеста (`telegram_link`, `profile_name`, `profile_birth`, `profile_city`) показывает счётчики pending/completed/skipped и конверсию в %.
Раздел `/admin/top` — топ-30 юзеров по балансу и топ-30 по тратам за последние 30 дней (с разделением списанное/пополненное).
Раздел `/admin/telegram` — список всех привязок юзеров к боту `@vedamrita_bot` с username, chat_id, статусом, датой verify.
Backend: новые endpoints `/api/admin/push/broadcast`, `/api/admin/telegram-links`, `/api/admin/users/top/balance`, `/api/admin/users/top/spending`. Публичный метод `AppPushService.sendDirect(userId, payload)`.
В NAV админки добавлены пункты «Broadcast», «Воронка», «Топ», «TG».
все версии
Новые версии сверху
1.52
Версия 1.52
Админка: broadcast push, воронка онбординга, топ юзеров, Telegram-связки.
Раздел `/admin/broadcast` — массовая рассылка web-push на сегмент: все активные / только с подключенным Telegram / только без TG. Указываешь заголовок, текст, URL для перехода — отправка с подтверждением. Возвращает аудиторию и количество попыток отправки.
Раздел `/admin/funnel` — воронка онбординга: для каждого типа квеста (`telegram_link`, `profile_name`, `profile_birth`, `profile_city`) показывает счётчики pending/completed/skipped и конверсию в %.
Раздел `/admin/top` — топ-30 юзеров по балансу и топ-30 по тратам за последние 30 дней (с разделением списанное/пополненное).
Раздел `/admin/telegram` — список всех привязок юзеров к боту `@vedamrita_bot` с username, chat_id, статусом, датой verify.
Backend: новые endpoints `/api/admin/push/broadcast`, `/api/admin/telegram-links`, `/api/admin/users/top/balance`, `/api/admin/users/top/spending`. Публичный метод `AppPushService.sendDirect(userId, payload)`.
В NAV админки добавлены пункты «Broadcast», «Воронка», «Топ», «TG».
1.51
Версия 1.51
Cron-tracker реальный, refund в credits, AI-анализ диалога.
`CronTrackerService` стал глобальным (`@Global` модулем), и существующие cron-задачи в `QuestsService` (раз в минуту watch TG verifications, раз в сутки remind sweep) теперь обёрнуты через `cronTracker.wrap()` — `/admin/cron` показывает реальные данные (количество запусков, длительность, статус, ошибки).
`/admin/credits` — у каждой debit-транзакции (delta < 0, кроме самих refund'ов) появилась кнопка «refund», которая через `POST /api/admin/credits/transactions/:id/refund` возвращает кредиты пользователю одним кликом.
`/admin/messages/conversation/:userId` — кнопка «AI-анализ»: backend через `gpt-4o-mini` проходит по последним 200 сообщениям диалога и возвращает JSON с суммаризацией на 3 строки, темами, тоном, тревожными флагами (суицид/насилие/депрессия — выводятся красной плашкой). Endpoint `POST /api/admin/users/:id/analyze`. Один запрос ≈ $0.001-0.005 в зависимости от длины диалога.
1.50
Версия 1.50
Админка: профиль 360°, ручная отправка сообщения от Амриты, заметки админа, refund одной кнопкой, cron-дашборд.
Раздел `/admin/users/<id>` — карточка профиля 360°: основные факты (баланс, score, последние действия), Telegram-связка, push-устройства, активные квесты, сгенерированные программы, последние транзакции — всё на одном экране.
«Отправить сообщение от Амриты вручную» прямо из карточки юзера: создаётся `kind=text, role=assistant, meta.module=admin_manual` + автоматически летит web-push. Полезно для саппорта и расследований.
Заметки админов на юзере (видны только админам, не юзеру). Новая таблица `user_admin_notes`, миграция `sql/20260505_user_admin_notes.sql`. Добавление и удаление прямо в карточке.
Refund одной кнопкой: `POST /api/admin/credits/transactions/:id/refund` использует `CreditsService.refundIfPossible`. UI кнопки появится в следующей итерации, endpoint уже готов.
Раздел `/admin/cron` — список cron-задач с количеством запусков, длительностью последнего выполнения, статусом ok/fail. Используется in-memory `CronTrackerService` (последние 100 запусков). Обновляется каждые 15 секунд.
В NAV админки добавлен пункт «Cron».
1.49
Версия 1.49
Большой апдейт админки: лента сообщений, диалоги, кредиты, push, программы.
Раздел `/admin/messages` — лента всех сообщений из чатов с фильтрами по email, роли (`user`/`assistant`/`system`), kind (`text`/`voice`/`quest`/...), `meta.module`, локали, диапазону дат и поиску по тексту. Пагинация по 50, ссылка «Диалог →» на каждой строке открывает полную беседу с этим пользователем.
Раздел `/admin/messages/conversation/:userId` — chronological просмотр диалога юзер↔Амрита bubble-стилем. Голосовые сообщения проигрываются прямо во встроенном плеере. Вверху ссылка на профиль 360°.
Раздел `/admin/credits` — таблица всех `credit_transactions` с фильтром по `reason`, агрегаты по причинам начислений/списаний (плашки кликабельны как быстрый фильтр), общая сумма балансов.
Раздел `/admin/push` — все web-push подписки всех юзеров: устройство (User-Agent), локаль, статус active/disabled, даты создания и последнего обновления. Сверху три плашки со сводкой.
Раздел `/admin/skill-programs` — список всех персональных программ навыков всех юзеров с фильтром по статусу (`draft`/`generating`/`active`/`completed`/`failed`), цветными бейджами и поиском.
Backend: добавлены 9 admin endpoints под `/api/admin/*` (messages, credits, push, quests, skill-programs, user 360°), вынесенные в отдельный `AdminInsightsService` + `AdminInsightsController` для чистоты.
В NAV админки добавлены пункты «Чаты», «Кредиты», «Push», «Программы».
1.48
Версия 1.48
Готовая программа навыка теперь приходит и в Telegram — с кнопкой возврата прямо к этой карточке в чате.
Когда фоновая генерация программы навыка завершается (`state=ready` в `app-chat.service.ts:finishSkillProgram`), помимо появления карточки в `/app` и web-push уведомления, юзеру с verified Telegram-связкой автоматически уходит сообщение от `@vedamrita_bot`: «Я закончила собирать тебе персональную практику навыка „X“. Открыть?» с inline-кнопкой «Открыть в Ведамрите».
Кнопка ведёт на `https://vedamrita.org/app?skill=<programId>` — фронт читает query-параметр при загрузке `/app`, авто-прокручивает к карточке этой программы и подсвечивает её золотым ring-эффектом на 3.5 секунды.
Текст сообщения переведён на ru/en/hi/id; локаль берётся из `program.locale`. Если у юзера TG не подключён — этап молча пропускается, web-push при этом отрабатывает как обычно.
Новый публичный метод `MessengersService.notifySkillReady(userId, skillTitle, programId, locale)` — точка интеграции для будущих фоновых процессов, которым нужно дёрнуть юзера в TG (например, ежедневные напоминания о практике, реминды о незавершённых днях).
1.47
Версия 1.47
Починили самостоятельное удаление аккаунта и Telegram-бот.
Применена пропущенная миграция `sql/20260505_russian_compliance.sql` — таблица `user_consent_events` теперь есть в проде. До этого `DELETE /api/auth/me` (самостоятельное удаление аккаунта пользователем) падал с 500 при попытке зачистки истории согласий, и операция фактически не работала. Теперь возвращает 200, аккаунт удаляется корректно.
Telegram-бот `@vedamrita_bot` снова принимает обновления. Webhook был зарегистрирован на нерабочий домен `vedamrita.ru/api/webhooks/telegram` (домен 301-редиректит на `.org`, Telegram через redirect не ходит). Перевешен на `https://vedamrita.org/api/webhooks/telegram`, добавлен обязательный `secret_token` (`TELEGRAM_WEBHOOK_SECRET` в .env) — чужие POST'ы на webhook теперь отбиваются 403.
1.46
Версия 1.46
Запустили цепочку онбординг-квестов: первый шаг — подключение Telegram с подарком 200 кредитов.
Новый тип сообщений в чате — `quest`-карточки с особым визуальным стилем (тёплая золотая карточка с подарком, не похожая на обычные сообщения от Амриты). При первом заходе в `/app` создаются недостающие онбординг-квесты в зависимости от состояния профиля юзера.
Первый квест — `telegram_link`: подключение Telegram через `@vedamrita_bot`. После успешной верификации `verifiedAt` в `user_messengers` автоматически кладётся 200 кредитов на счёт через `credit_transactions` (новый `reason=quest_reward`), а в чат прилетает благодарственное сообщение от Амриты.
Дополнительные квесты заполнения профиля — `profile_name` / `profile_birth` / `profile_city` (по 50 кредитов каждый), хук на `PATCH /api/auth/me` автоматически закрывает их когда соответствующее поле становится непустым.
Автоматический реминд: cron `0 11 * * *` (Europe/Moscow) проходит по всем pending-квестам и, если прошло >48 часов с последнего напоминания, создаёт новую quest-карточку в чат + push-уведомление. Лимит — 2 напоминания, после чего квест переводится в `skipped`.
Новые endpoints: `GET /api/app/quests` (список квестов юзера), `POST /api/app/quests/:id/start-telegram` (получить linkCode + ссылку на бота), `POST /api/app/quests/:id/skip` (вручную помечает skipped).
Тексты квестов и наград написаны на ru/en/hi/id в негромком, ведическом стиле — без рекламной патетики.
Новая таблица `user_quests` (миграция `sql/20260505_user_quests.sql`); UNIQUE на `(user_id, type)` исключает дубли. Защита от двойного начисления — поле `reward_claimed_at`.
1.45
Версия 1.45
Сменили голос приветственного голосового от Амриты — стало мягче и ровнее на русском.
Welcome voice (`module=amrita_welcome`) теперь генерируется голосом `coral` (OpenAI `gpt-4o-mini-tts`) вместо `shimmer`. shimmer обучен преимущественно на английском и заметно «спотыкался» на русской просодии и ударениях; coral держит русский тембр ровнее при тех же стилевых инструкциях («тёплая, мягкая старшая сестра»).
Голос управляется ENV-переменной `OPENAI_TTS_VOICE` в `backend/.env` (текущее значение — `coral`) и продублирован дефолтом в `backend/src/app-chat/app-chat.service.ts` — если переменная когда-нибудь потеряется при чистом деплое, регрессии не будет.
Существующие сгенерированные welcome-mp3 (со старым голосом) не перегенерируются — защита от дублей в `maybeQueueOnboardingVoiceMessage` остаётся прежней. Новый голос услышат только новые пользователи.
Появилась индексируемая публичная страница карточки-пожелания: `/wish/<code>` (и `/en|hi|id/wish/<code>`) с текстом, фоновой картинкой, 4-абзацным размышлением, JSON-LD `CreativeWork`, корректным `og:image` и кнопками «Открыть чат» / «Создать персональный портрет». До этого `/wish/<code>` возвращал 404 — это били 2336 ссылок в sitemap.
Skill landing получил блок «Похожие навыки» (6 карточек) на основе нового публичного `GET /api/skills/<slug>/related?locale=&limit=`. Логика: сначала тот же `category`, затем сортировка по пересечению `tags`, fallback на любой не-archived из других категорий.
На skill landing и wish detail добавлены **видимые** breadcrumbs (`<nav aria-label="Breadcrumbs">`) — Google рендерит rich-сниппет хлебных крошек только когда в DOM есть и `BreadcrumbList` JSON-LD, и видимая хлебная крошка.
Файл `app/not-found.tsx` — брендовый 404 с локализованными «Страница не найдена» / «Page not found» / «पृष्ठ नहीं मिला» / «Halaman tidak ditemukan» и CTA на главную и каталог навыков. До этого Next отдавал дефолтный английский 404 на любой неизвестный URL — это считалось thin content и било SEO.
В layout добавлена JSON-LD схема `Person` для Амриты — `knowsAbout` перечисляет источники (Гита, Бхагаватам, Чанакья-нити, ведическая астрология). Поисковики начнут ассоциировать имя «Амрита/Amrita/अमृता» с брендом.
OG-картинки skill landing увеличены до 1200×900 — это формат который Google Discover принимает в карусель.
`manifest.webmanifest` теперь динамический и зависит от локали (BCP-47 `lang`, локализованные `description` и `shortcuts.name`).
`lastmod` в sitemap для главной и `/skills` берётся как максимум `updatedAt` по всему контенту, для статических legal-страниц — фиксированная дата деплоя. Раньше всё было `new Date()` и поисковики могли решить что sitemap «шумит».
1.43
Версия 1.43
Подключили Google Tag Manager (GTM-K53B482G) на все страницы сайта.
GTM-инициализатор живёт в `<head>` каждой публичной и приватной страницы (главная, навыки, кабинет, /app, /admin, /login — все 4 локали), `<noscript>`-iframe — сразу после `<body>`, как и просит официальная Google-инструкция.
ID счётчика читается из `NEXT_PUBLIC_GTM_ID`; если переменная пустая — теги не вставляются. Файл `frontend/.env.production` уже содержит `NEXT_PUBLIC_GTM_ID=GTM-K53B482G`.
CSP в nginx (`/etc/nginx/snippets/security-headers.conf`) расширена под GTM/GA4/Yandex.Metrica: в `script-src` добавлены `googletagmanager.com`, `google-analytics.com`, `analytics.google.com`, `mc.yandex.ru`, `mc.yandex.com`, `yastatic.net`; в `frame-src` — `googletagmanager.com` (для noscript-iframe) и `mc.yandex.ru/com`.
Через GTM теперь можно подключать GA4, Google Ads, Yandex.Metrica, события e-commerce и conversion-теги без выкладки кода — все управляется в интерфейсе GTM.
1.42
Версия 1.42
Включили полноценный мультиязычный SEO под Яндекс и Google.
Добавили `/robots.txt` и `/sitemap.xml` с автогенерацией: ~1300 URL (216 навыков × 4 локали + 584 карточек × 4 локали + статика), у каждой записи `hreflang` на все 4 версии и `x-default`.
Метаданные `<title>`, `description`, `og:locale`, `og:title`, `og:description` и `<html lang>` теперь зависят от текущей локали (ru/en/hi/id) — раньше нерусские страницы отдавали русские мета-теги.
Skill landing-страницы получили `alternates.languages` со всеми 4 локалями, JSON-LD `Article` + `BreadcrumbList` + `FAQPage`, и собственный `opengraph-image` с заголовком навыка и категорией.
В layout добавлен JSON-LD `Organization` + `WebSite` (с `SearchAction`).
Поля верификации Yandex.Webmaster / Google Search Console + Yandex.Metrica / GA4 подключаются через env-переменные `NEXT_PUBLIC_YANDEX_VERIFICATION`, `NEXT_PUBLIC_GOOGLE_VERIFICATION`, `NEXT_PUBLIC_YANDEX_METRICA_ID`, `NEXT_PUBLIC_GA4_ID` (на админке/кабинете/`/app`/`/login` счётчики не подключаются).
Backend пушит обновления навыков и карточек в IndexNow (Yandex + Bing) — для этого ключ хранится в `INDEXNOW_KEY` и публикуется по `/<key>.txt`.
1.41
Версия 1.41
Перенесли инфраструктуру на новый dedicated-сервер DigitalOcean (Amsterdam).
Vedamrita теперь работает на новой машине DigitalOcean (AMS3, Ubuntu 24.04 LTS, 4 vCPU / 8 GB RAM / 154 GB NVMe), что должно слегка снизить задержку для европейских и российских пользователей.
Перенесены все данные: пользователи, навыки, программы, корпус знаний, истории чата, кредиты, согласия, audit-лог, файлы storage (turbo / app-voice / knowledge / generated-videos).
Усилены systemd-правила автозапуска (`Restart=always`, `RestartSec=5`): сервисы lk-frontend, lk-backend, astro поднимаются после краша или ребута без ручного вмешательства.
Включён swap 4 GB и UFW (firewall: открыты только 22/80/443).
Выпущен новый SSL-сертификат Let's Encrypt для vedamrita.org / www.vedamrita.org с автообновлением через certbot.timer.
1.40
Версия 1.40
Добавили РФ-compliance слой для трафика из России.
На сайте появились страницы политики ПДн, cookies/storage и удаления данных, а юридические ссылки и cookie-баннер показываются только для российского трафика.
В публичных wizard регистрации для skill QR и wish QR добавлены обязательные согласия на политику и обработку персональных данных для пользователей из России.
Backend сохраняет историю согласий в `user_consent_events`, пишет audit trail с версией документа, IP и страной и поддерживает self-service удаление аккаунта через `DELETE /api/auth/me`.
Для production добавлен SQL-файл `backend/sql/20260505_russian_compliance.sql` и документирован заголовок `X-Veda-Country`.
Удалён временный admin API модуль `video` и внутренний loopback-сервис `video-engine`.
Публичные demo-файлы reels и служебные артефакты видеогенерации больше не раздаются с сайта.
Из документации и production-конфигов убраны ссылки на video-engine и его env-переменные.
1.38
Версия 1.38
Добавили self-hosted video-engine для автоматической сборки reels.
Появился новый admin API модуль `video`: можно создать задачу на рендер, посмотреть статус и забрать готовый MP4/preview.
Backend теперь сохраняет video_jobs в MySQL и сам превращает prompt + список клипов в детерминированный render_spec.
Добавлен отдельный подпроект `/srv/lk-platform/video-engine` на Node.js + ffmpeg/ffprobe для loopback-рендера вертикальных видео 9:16.
Готовые ролики сохраняются в `/srv/lk-platform/storage/generated-videos`, превью — в `previews/`, временные файлы — в `tmp/`.
1.37
Версия 1.37
Исправили язык голосовых сообщений в чате Амриты.
Распознавание голосовых теперь получает правильный язык пользователя для ru/en/hi/id, а не сваливается в русский для всех неанглийских локалей.
Ответ Амриты после голосового сообщения теперь принудительно формируется на языке текущей локали пользователя, включая случаи неуверенного распознавания.
Служебный текст голосового сообщения в чате тоже локализован для всех четырёх языков.
1.36
Версия 1.36
Перевели страницу инструкции Push на все языки Ведамриты.
Страница `/app/push-guide` теперь использует общий i18n и показывает инструкцию на ru/en/hi/id.
Ссылка «Вернуться в чат» и переходы на push-guide из приложения сохраняют текущую локаль пользователя.
Тексты определения устройства, инструкций iPhone/iPad и Android больше не остаются русскими на локализованных URL.
1.35
Версия 1.35
Долокализовали первое знакомство с Амритой и форму QR-пожеланий.
Welcome voice (`module=amrita_welcome`) теперь генерируется на языке текущего пользователя для ru/en/hi/id.
Первое hero-сообщение в `/app` создаётся на языке пользователя, а не всегда на русском.
В регистрационной форме страницы пожелания переведены шаги, поля, placeholder пароля, повтор пароля, дата/время/место рождения и кнопка автоопределения.
Добавлена команда `npm run wishes:pdf` для сборки карточек 70×120 мм, 300 DPI.
Каждая карточка собирается как двухстраничный PDF: лицевая сторона — закреплённая картинка пожелания, оборот — тёмно-синий фон, золотая рамка, текст пожелания и QR.
QR-код ведёт на короткую страницу `/wish/:publicCode/qr` с учётом языка (`/en`, `/hi`, `/id`) и рисуется белыми круглыми модулями на тёмном фоне.
Скрипт формирует финальный ZIP со структурой `ru/eng/hi/ind`, внутри `bg/support`, внутри отдельные PDF-файлы карточек.
1.33
Версия 1.33
Уточнили сценарий первого сообщения на QR-странице пожелания.
На `/wish/:publicCode/qr` текст пожелания теперь сразу виден как уже отправленное сообщение пользователя.
Пауза и typing-индикатор начинаются после пожелания, перед первым ответом Амриты.
Первое предложение комментария Амриты появляется примерно через 3-4 секунды, следующие сообщения сохраняют паузу 4-5 секунд.
1.32
Версия 1.32
Голосовое знакомство Амриты теперь приходит при первом входе в чат.
Welcome voice (`module=amrita_welcome`) больше не зависит от первой подписки на навык.
При первом открытии `/app` backend ставит голосовое знакомство в очередь, если оно ещё не отправлялось этому пользователю.
Frontend короткое время опрашивает чат после входа, чтобы голосовое появилось без ручной перезагрузки страницы.
Защита от дублей оставлена: повторно `amrita_welcome` одному пользователю не генерируется.
1.31
Версия 1.31
Доработали QR-чат карточек пожеланий по живому сценарию.
Для карточек добавлен короткий публичный код: QR-ссылки теперь выглядят как `/wish/100001/qr`, а не как длинный UUID.
Из QR-чата убрана иллюстрация карточки: первым сообщением показывается только текст пожелания.
Шапка больше не выводит техническую категорию (`support`, `БГ`), а чат показывает комментарий строго по одному предложению с паузами 4-5 секунд.
Перед первым сообщением виден индикатор набора примерно 3-4 секунды.
CTA и регистрационный мастер переписаны под знакомство с Амритой, без упоминаний навыков и персонального плана; авторизованный пользователь сразу уходит в `/app`.
1.30
Версия 1.30
У карточек пожеланий появилась QR-страница с чат-сценарием Амриты.
Добавлен публичный маршрут `/wish/:id/qr` с поддержкой локалей (`/en/wish/:id/qr`, `/hi/...`, `/id/...`).
Страница открывается как чат: сначала сообщение пользователя с пожеланием, затем комментарий показывается частями с паузами и индикатором набора.
Финальное сообщение мягко знакомит человека с Амритой и приглашает продолжить диалог.
Нижний CTA запускает тот же сбор профиля, что и QR-навыки: имя, email, пароль, дата/время/место рождения; для существующих пользователей спрашиваются только недостающие birth-данные.
После регистрации или дозаполнения профиля запускается построение AI-астропортрета (`POST /api/me/astro-profile`) и пользователь переходит в чат `/app` на выбранном языке.
1.29
Версия 1.29
Начали генерацию мистических изображений для карточек пожеланий.
Для wish_cards добавлены поля image_url, image_has_text, image_check_notes и image_checked_at.
Иллюстрации генерируются через OpenAI gpt-image-2 по фиксированному tarot-промпту: тёмный luxury blue, медальон достижений, древние ведические конструкции, без текста.
После генерации отдельный validator на gpt-5.4-mini проверяет, что на картинке нет букв, слов, цифр, водяных знаков и читаемых надписей.
Добавлены CLI-команды `npm run wishes:images` и `npm run wishes:images:validate`; картинки сохраняются в `/wish-card-images/...` и привязываются ко всем локалям карточки.
1.28
Версия 1.28
Комментарии к карточкам пожеланий переведены на все поддерживаемые языки.
Все 146 русских комментариев переведены на английский, хинди и индонезийский через OpenAI gpt-5.4-mini.
Теперь у всех 584 карточек (`ru`, `en`, `hi`, `id`) заполнено поле commentary.
Перевод сохраняет смысл, обращение ко второму лицу, мягкий терапевтичный тон и структуру из 4 абзацев.
Добавлена CLI-команда `npm run wishes:commentary:translate` для повторных и инкрементальных переводов комментариев.
1.27
Версия 1.27
Каждая карточка пожелания теперь сопровождается тёплым комментарием.
Все 146 русских карточек получили личный комментарий из 4 абзацев — мягкий, человеческий, светский тон.
Тексты сгенерированы через OpenAI gpt-5.5 по фиксированному системному промпту (без религиозной лексики, без эзотерики, без клише «всё будет хорошо»).
В админке появилось редактируемое поле «Комментарий» и колонка-индикатор «есть/нет».
Карточки пожеланий теперь доступны на четырёх языках.
Все 146 русских карточек переведены на английский, хинди и индонезийский.
Перевод выполнен через OpenAI gpt-5.4-mini с сохранением тёплого личного тона.
В каталоге wish_cards теперь 584 строки (146 × 4 локали), категория и порядок сортировки сохранены.
Добавлена CLI-команда `npm run wishes:translate` для повторных и инкрементальных переводов.
1.25
Версия 1.25
Добавили карточки пожеланий по мотивам «Бхагавад-гиты» в новой категории «БГ».
Создана новая категория карточек «БГ» (80 уникальных фраз).
Существующие карточки категории «support» (66 шт.) сохранены без изменений.
Всего в каталоге wish_cards теперь 146 карточек.
1.24
Версия 1.24
Загрузили новый набор поддерживающих карточек пожеланий.
В каталоге wish_cards теперь 66 уникальных тёплых пожеланий-поддержек.
Каждая строка из присланного списка добавлена как отдельная карточка (категория «support»).
Старые карточки очищены, новые подняты при перезапуске backend.
1.23
Версия 1.23
Полностью очистили каталог карточек пожеланий перед загрузкой нового списка.
Все карточки пожеланий удалены из таблицы wish_cards.
Стартовый seed карточек пуст: автоматическое восстановление старого набора отключено.
Готовы загрузить новый список, как только он будет передан.
1.22
Версия 1.22
Карточки пожеланий пересобраны: в каталоге остался только духовный набор (300 фраз).
Удалены прежние карточки encouragement, оставлен только spiritual-набор.
В seed теперь 300 уникальных русских фраз духовной направленности.
Добавлен админ-эндпоинт /api/admin/wish-cards/reset-to-seed для контролируемого пересева.
1.21
Версия 1.21
Добавили админ-инструмент для управления карточками пожеланий.
В админке появился раздел «Пожелания» с поиском и фильтрами.
Можно создавать, редактировать, отключать и удалять карточки пожеланий.
Добавлены admin API-эндпоинты /api/admin/wish-cards для CRUD.
1.20
Версия 1.20
Добавили ежедневный push-ремайндер практики на 09:00 МСК для пользователей с незавершённым днём навыка.
Каждое утро в 09:00 (Europe/Moscow) backend отправляет push-напоминание открыть /app и завершить текущий день практики.
Ремайндер уходит независимо от открытия нового дня: если день не завершён, пользователь всё равно получает утренний push.
После выката выполнена ручная разовая отправка ремайндера по текущим активным подпискам для немедленной проверки.
1.19
Версия 1.19
Добавили отписку от навыков в разделе «Навыки» и исправили цикл переадресаций для /en/app, /hi/app и /id/app.
Во вкладке «Навыки» теперь можно отписаться от навыка: программа ставится на паузу, ежедневные сообщения по ней больше не отправляются, карточка исчезает из списка активных.
Добавлена кнопка отписки как в списке навыков, так и в деталке навыка.
Исправлен редирект-луп в PWA-маршрутах локалей: /en/app, /hi/app, /id/app теперь открываются без ошибки «слишком много попыток переадресации».
1.18
Версия 1.18 — карты, картинки навыков и пояснения
Обновили визуальную часть навыков и печатных материалов: единый стиль иллюстраций, готовые колоды для печати и свежие тексты-объяснения к картинкам.
Все 216 иллюстраций навыков обновлены: стиль «сакральных линий» с шагами практики; картинки согласованы с сутью вопроса.
Собраны и выложены печатные колоды (3×72 карты + бонусы) на русском, английском, хинди и индонезийском.
Бонусные карточки переведены и сверстаны на четырёх языках.
Для хинди на обороте печатных карт подключены шрифты с деванагари.
Текст «объяснение картинки» у навыков перезаполняется под новый рисунок.
1.17
Главная страница теперь объясняет сервис
Лендинг полностью переписан и переведён на 4 языка.
Hero объясняет позиционирование Амриты как ИИ-наставницы.
Добавлены секции «Не просто чат-бот», «Как это работает», блок источников и FAQ.
Полные переводы для русского, English, हिन्दी и Bahasa Indonesia.
Контекст i18n определяет локаль по URL → query → cookie.
1.16
Версия 1.16 — запиненные практики стали удобнее
Закреплённый бар незавершённых практик в шапке чата стал адаптивнее и показывает количество.
В круглой иконке появился красный бейдж со счётчиком незавершённых практик.
Дополнительная пилюля 1/N показывает текущую позицию из общего числа.
Добавлена кнопка-стрелка для переключения между несколькими практиками.
Бар стал компактнее на маленьких экранах.
Иконки платёжных методов отображаются в окне пополнения и инвойсе.
1.15
Версия 1.15 — мультиязычность сайта и приложения
Добавили полноценную поддержку 4 языков для App: русский, английский, हिन्दी, Bahasa Indonesia.
Модалка выбора языка при первом визите с автоопределением по браузеру.
Сохранение языка в cookie и localStorage на 2 года.
App полностью переведён на 4 языка.
Локализованные редиректы для /app и /login.
1.14
Версия 1.14 — пополнение кредитов криптой
В профиле появилось полноценное пополнение баланса через USDT TRC-20, BTC и ETH.
Пакеты пополнения: 100, 300, 1000 и 3000 кредитов.
Автопересчёт валюты по языку пользователя.
К сумме автоматически добавляется 4% сетевой комиссии.
Уникальная сумма для матчинга инвойсов и автоначисление через blockchain watcher.
1.13
Версия 1.13 — голосовое приветствие Амриты
При первой подписке на навык приходит голосовое приветствие Амриты на языке пользователя.
Добавлено первое приветственное голосовое сообщение.
Убрано лишнее системное сообщение про подгрузку истории чата.
Исправлено поведение длинной строки birth-данных в профиле.
1.12
Версия 1.12 — каталог навыков и скролл деталей
Каталог навыков стал компактнее, появился фильтр по категориям и исправлен скролл в карточке навыка.
Каталог показывает все 216 навыков.
Добавлен фильтр по категориям с количеством доступных навыков.
Поиск и фильтр работают вместе с корректным empty-state.
Починен скролл до нужного сообщения в деталке навыка.
1.11
Версия 1.11 — новый раздел «Навыки»
Раздел «Навыки» переделан под карточки и отдельный экран деталей с быстрым переходом в чат.
Компактные карточки навыков с круговым прогрессом.
Выделение непрочитанных/незавершённых навыков.
Отдельный экран деталей навыка.
Кнопка быстрого перехода к последнему сообщению в чате.
1.10
Версия 1.10 — стабильнее в чате
Починили внезапные ошибки Too Many Requests в чате Амриты.
Лимиты считаются отдельно по пользователю.
Спокойные chat-endpoints выведены из общего жёсткого лимита.
Фронт добавляет аккуратные ретраи с возрастающей паузой.
1.9
Версия 1.9 — навыки, баланс и тон беседы
Большое обновление: раздел «Навыки», кредитный баланс и более тонкая настройка диалога с Амритой.
Добавлен раздел «Навыки» с каталогом и подпиской.
Ограничение: один навык = одна программа на пользователя.
Добавлен кредитный баланс, история и пополнение.
Амрита адаптирует тон под vaishnav_score.
1.8
Версия 1.8
Полностью отключили дублирование практик в Telegram.
Ежедневные практики приходят только в приложение /app.
Старые программы переведены на доставку в /app.
1.7
Версия 1.7
Усилили безопасность.
Закрыт прямой доступ к внутренним сервисам.
Включены security-заголовки (CSP, HSTS и др.).
Ограничены попытки входа: 5 в минуту с IP.
Закрыта публичная документация API в продакшне.
1.6
Версия 1.6
Добавили закрепление невыполненной практики в чате.
Если день не выполнен, показывается закреплённое напоминание.
По нажатию чат возвращает к нужному сообщению.
1.5
Версия 1.5
Пофиксили ошибку входа в приложение.
При неверном пароле ошибка показывается на месте без лишних редиректов.
1.4
Версия 1.4
Упростили вход в приложение и убрали лишний переход на главную.
Со страницы входа убрана ссылка возврата на главную.
После входа пользователь сразу попадает в приложение.
1.3
Версия 1.3
Немного улучшили кнопку отправки голосового сообщения.
Во время записи голосового кнопка отправки стала зелёной.
1.2
Версия 1.2
Улучшили голосовые сообщения и индикатор ответа в чате приложения.
У голосовых сообщений появилась длительность рядом со временем отправки.
Индикатор «Пишет сообщение» отображается в шапке и ленте.
1.1
Версия 1.1
Добавили публичную страницу истории обновлений приложения.
В подвале главной страницы появилась ссылка Whats News App.
На отдельной странице видны текущая версия и история релизов.
1.0
Версия 1.0
Сбросили версию и завели публичную историю обновлений Ведамриты.