Skip to content

v3.63.0

Latest

Choose a tag to compare

@github-actions github-actions released this 12 Jul 21:06
8e5026c

3.63.0 (2026-07-12)

New Features

  • add mobile support websocket v1 (2eb3769)
  • bot: подсказка про права на каталоги в креш-репорте (PermissionError) (01db943)
  • cabinet: add recurrent-payments legal document (8f4ecf2)
  • coupons: cabinet API для купонов — партии, экспорт ссылок, погашение (605c024)
  • coupons: партии одноразовых купонов на подписку для оптовой продажи (8a5cfaf)
  • infra: Valkey 9 вместо Redis 7 для кэша и очередей (b0709ea)
  • remnawave: локальная генерация happ crypt4 ссылок (d9042c2)
  • remnawave: локальная генерация happ crypt4 ссылок (без внешнего API) (2ad0d57)

Bug Fixes

  • audit support websocket mutations (3836a5b)
  • backup: одиночный scheduler-цикл и BACKUP_TIME в локальной таймзоне (#3030) (e2bad81)
  • backup: одиночный scheduler-цикл и BACKUP_TIME в локальной таймзоне (#3030) (b4ad4e6)
  • bot: тексты длиннее лимита Telegram роняли показ правил и политики (197e096)
  • cabinet: close refund-guard gaps — silent refund failure + extend double-benefit (f6395a6)
  • cabinet: stop admin user search crashing on out-of-range numeric input (a95b7bc)
  • cabinet: возврат средств при сбое покупки тарифа после списания баланса (#3031) (12f6e35)
  • cabinet: возврат средств при сбое покупки тарифа после списания баланса (#3031) (c5ac200)
  • coupons: закрыть double-tap на подтверждении партии и двойной answer в экспорте (8947a73)
  • db: add migration for recurrent_payments table (missing on existing installs) (1ce9430)
  • email: не тащить CSS/JS в text/plain версию письма (#2974) (7b9b7f1)
  • email: не тащить CSS/JS в text/plain версию письма (#2974) (e4af7f2)
  • harden mobile support websocket session guards (1dc4e9e)
  • notifications: email-юзерам уведомления в flow "пополнение -> автопокупка" (#2952) (d527ce5)
  • notifications: email-юзерам уведомления в flow «пополнение → автопокупка» (#2952) (083289d)
  • notifications: label trial→paid auto-purchase as activation, not renewal; test real templates (551236e)
  • platega: поддержка v2 API - поле url и настраиваемая версия эндпоинта (#2934) (681a1d2)
  • platega: поддержка v2 API — поле url и настраиваемая версия эндпоинта (#2934) (7ff3b40)
  • refresh admin user-messages list without a hand-built callback (3323b7f)
  • reload daily subscription with user+tariff after commit (MissingGreenlet) (c0bfea7)
  • remnawave: кэш локальных happ crypt4 ссылок (стабильность между вызовами) (0b54d59)
  • restore happ crypto links on Remnawave 2.8.0 via official Happ API (31711d4)
  • subscription: make TARIFF_SWITCH_RESET_FREE_DAYS actually reset the free/trial period (73050c3)
  • support-ws: dedup idempotent retries, canonical reply status, telegram parity, send lock (0c58a49)
  • tickets: писать id реального админа в ticket_messages.user_id (#3029) (eb326db)
  • tickets: писать id реального админа в ticket_messages.user_id (#3029) (fc92019)

Refactoring

  • coupons: единый build_coupon_deeplink вместо трёх копий формата ссылки (bc5dfcf)

Documentation

  • tests: valkey-образ содержит redis-* как compat-симлинки — уточнение докстринга (0a435c7)
  • valkey: точные формулировки лицензий (7.4 = RSALv2/SSPLv1; AGPLv3 только с Redis 8) и симлинков в тестах (23183cb)