Files
bedolaga-cabinet/CHANGELOG.md
2026-07-24 22:29:29 +00:00

226 KiB
Raw Blame History

Changelog

1.63.0 (2026-07-24)

Features

  • admin: статус и отмена СБП-автопродления в карточке юзера (3328493)
  • balance: СБП-привязки в сохранённых методах (d938ac2)
  • sbp-recurring: СБП-оформление подписки на форме покупки тарифа (f448c14)
  • subscription: API и утилиты СБП-автопродления Platega (9093aec)
  • subscription: блок СБП-автопродления на странице подписки (29a3683)
  • ws: уведомления о событиях СБП-автопродления (e8409a9)

Bug Fixes

  • auth: различать устаревшего бота и ненастроенного на экране логина (b3b07c3)
  • blocking: локализовать дефолтное сообщение на экране подписки на канал (5e2e321)
  • ci: рабочий Trivy-пин, lowercase-референс образа, CodeQL v4 (0a8b1a4)
  • connection: открывать deep-link приложения на iOS через top-level переход, а не iframe (03aa2e6)
  • dashboard: приветствие без пустого имени для email-пользователей (147b1fb)
  • referral: показывать секцию вывода средств всем реферерам (ce13792)
  • sbp-recurring: toast ошибки отмены + per-sub ключ inline-confirm в админке (42a7190)
  • sbp-recurring: компактный layout СБП-блока на десктопе (faf4c45)
  • sbp-recurring: отступ между тогглом автопродления и СБП-блоком (17e27d3)
  • security: внутренний гард openAppScheme от опасных схем (CodeQL) (aa6bf44)
  • security: инлайновые regex-барьеры для CodeQL в openAppScheme и redirect.html (51d0f04)
  • support: не склеивать t.me со ссылкой на внешний хелпдеск (f04675b)
  • support: ужесточить resolveSupportContact — схема, legacy-username, null (ebde1f6)
  • tariffs: отправлять пустые промогруппы и описание при редактировании тарифа (f1413de)

1.62.0 (2026-07-19)

Features

  • payments: способ оплаты cisPay (4b98217)
  • promocodes: состав промокода чекбоксами — баланс / дни / промогруппа (9ce838b)
  • referral-network: кнопка построения полной реферальной сети (19facf2)
  • users: кнопка «Отправить сообщение» в карточке пользователя (2f743d8)

Bug Fixes

  • admin: дубликат ключа admin.paymentMethods.description (46c1bc7)
  • i18n: добавить недостающие английские переводы resetPassword и expiredDate_trial (dd50d64)
  • i18n: форматировать даты и числа локалью выбранного языка, а не браузера (81fd96c)
  • payment-methods: admin display_name/description override locale on balance (112e09b)

1.61.0 (2026-07-13)

Features

  • admin: бейдж «Команда» для команд бота в таймлайне активности (f9ee16a)
  • admin: вкладка «Активность» в карточке пользователя (7547b49)
  • admin: клики кнопок бота и действия в кабинете во вкладке «Активность» (5fc8e7f)
  • broadcasts: поле icon_custom_emoji_id для кастомных кнопок рассылки (b4b4bca)
  • broadcasts: поле icon_custom_emoji_id у кастомных кнопок рассылки (eeb715c)
  • navigation: startapp=trial → дашборд (оплата платного триала из rich-меню) (c920330)
  • navigation: роутинг startapp-диплинков rich-меню бота (2eaea75)

Bug Fixes

  • docker: слушать IPv6 в nginx — healthcheck на localhost уводил контейнер в unhealthy (a47e9ab)
  • docker: слушать IPv6 в nginx — healthcheck на localhost уводил контейнер в unhealthy (ce4ce04)
  • header: кэшировать список языков — переключатель не мигает при смене страницы (a7ff8a6)
  • subscription: fall back to purchase flow for free-tariff switches (9f909b0)
  • subscription: fall back to purchase flow for free-tariff switches (255777e)
  • ui: не перезапускать анимированный фон при смене страницы (1ea9b99)
  • ui: сдвиг страницы, мигание переключателя языка и перезапуск фона при SPA-навигации (478a693)
  • ui: фиксированная ширина 100vw — страницы не сдвигаются при появлении скроллбара (b40f939)

1.60.0 (2026-07-12)

Features

  • admin: предупреждение о разбивке длинных текстов системных страниц в боте (93cfca4)
  • coupons: раздел оптовых купонов + публичная страница активации (799e986)
  • legal: wire recurrent-payments document + restore footer link (20565b8)

Bug Fixes

  • auth: make login footer legal links open real pages, not the login tab (37a53e4)
  • connection: keep the Happ add-subscription button working on Remnawave 2.8.0 (8f31311)
  • ui: контент, пришедший из API после mount, оставался невидимым (stagger) (adaaa23)
  • ui: нормализовать detail из ответов API перед рендером — краш на 422 (9b97293)

1.59.0 (2026-06-30)

Features

  • cabinet: legal footer on login + admin toggle (984d1b0)

Bug Fixes

  • align SubscriptionRequestRecord type with Remnawave 2.8.0 (fd5500c)

1.58.0 (2026-06-19)

Features

  • add admin legal pages api client and display mode types (e979aa8)
  • add display mode selector to info page editor (04cbbb5)
  • add system pages admin section (0d6a85a)
  • admin-tickets: deep-link to a specific ticket from notifications (ff0b119)
  • admin: overpay certificate upload block (f523604)
  • admin: quick amounts editor in payment method settings (bb8b823)
  • admin: show common placeholders group in email template editor (8b2501d)
  • backgrounds: add constellation background (510e4bd)
  • backgrounds: add fireflies background (1d00ca9)
  • backgrounds: add liquid-gradient background (71160c6)
  • backgrounds: add matrix-rain background (ab91c86)
  • backgrounds: add snowfall background (e3dbc4e)
  • backgrounds: add starfield background with depth projection (3742f2f)
  • balance: per-method quick amounts on top-up page (25784db)
  • hide info tabs by display mode visibility (39758a1)
  • per-method quick amounts, system pages admin, animated backgrounds overhaul (47119c4)

Bug Fixes

  • address review feedback on admin pages and backgrounds (9e6372a)
  • admin: gate overpay certificate block by settings permission (ecc2d45)
  • admin: harden legal pages editor state handling (515c3d7)
  • admin: rework email template editor (#667043) (ac75a80)
  • auth: send Bearer token for account merge endpoints (6721e25)
  • backgrounds: configurable wave colors and boxes grid color with explicit multicolor mode (725bf8d)
  • backgrounds: expose remaining hardcoded colors in shooting-stars, meteors, gradient-animation (f1f4281)
  • backgrounds: keep constellation particles in bounds on resize (acd0d7c)
  • backgrounds: legacy config compatibility and locale sync (caf499a)
  • backgrounds: live speed and size updates for fireflies (3df2ef0)
  • backgrounds: make beams and beams-collision colors configurable (acbccc8)
  • backgrounds: read aurora gradient colors and speed from settings (66c08b5)
  • balance: align quick amounts edge cases with bot behavior (9219885)
  • cabinet: equal-height StatCards so dashboard balance/referral align (1a3236f)
  • cabinet: harden global encoders against lone UTF-16 surrogates (d37872f)
  • cabinet: Lava top-up return route + Telegram-unavailable card overflow (d7f7bc7)
  • cabinet: recover "Сервис недоступен" false-positive + top-up fixes (16fad9f)
  • connection: stop ERR_UNKNOWN_URL_SCHEME when opening app deep links on mobile (325e221)
  • guard decodeURI(Component) against lone-surrogate crash (#667225) (81581f5)
  • payments: open_url_direct payment URL opens externally in Telegram (#654272) (ce5737f)
  • promocode: correct activation UX, error mapping and validity dates (35428cc)
  • theme: readable text on any operator palette + admin consistency pass (7f68e2c)
  • ui: finish design-audit follow-ups (9456c7f)

1.57.0 (2026-06-05)

Features

  • cabinet: bulletproof Close button + kill the /login flash on the service-unavailable screen (7413837)
  • cabinet: premium redesign of all 5 full-screen blocking states (782568e)
  • cabinet: recoverable "service unavailable" screen when the backend is unreachable (ac8a0fc)
  • connected-accounts: email-merge confirmation via emailed one-time code (3224320)
  • desktop-header: group nav into a centered segmented capsule (7de9b3b)
  • gift: transferable gift claim — buyer share link + recipient claim page (db31d39)
  • landing-stats: rebuild charts on shared components + add funnel & breakdowns (78c633f)
  • landing: фолбэк на глобальную тему кабинета, когда у лендинга своя не задана (0859583)

Bug Fixes

  • admin-wheel: unify prize-order banner buttons + drop hardcoded i18n fallbacks (e4b3c86)
  • admin-wheel: unify statistics rendering + fill config UI gaps (5de43c1)
  • cabinet: blocking screens exit via the native Telegram back button, drop the in-page Close (f9cc70c)
  • cabinet: stop long user data overflowing flex rows on mobile (63863a0)
  • cabinet: sweep mobile flex-overflow across all pages + components (800daf7)
  • connected-accounts: guide the user to enter the existing account's password when merging by email (7d31dc3)
  • connected-accounts: keep status/unlink inside the card on long IDs (c39c164)
  • connected-accounts: stack status + unlink so the full ID shows on mobile (7383505)
  • connection: Happ TV connect renders through the active block style (all 4) (c91c9e0)
  • connection: Happ TV connect works on Apple TV too (one API for both) (ce7a3ea)
  • connection: Happ TV quick-connect is Happ-only + matches config-block styles (5855a88)
  • connection: keep selected app when switching platform (f8ac489)
  • connection: restrict Happ TV quick-connect to Android TV only (ca54cb4)
  • dashboard: убрать дубль кнопки покупки при пустом списке подписок (cecfe7e)
  • desktop-header: full-width row so all nav items fit (no overflow/overlap) (864aeaf)
  • desktop-header: stop layout jumping via 3-column grid (9fc681b)
  • favicon: скругляем углы кастомного лого как у плитки в хедере (7104778)
  • gift: cabinet GiftResult shows claim link for directed gifts + review fixes (b9521f1)
  • landing-stats: guard gift claim-rate against stale cache (avoid NaN%) (b210a04)
  • landing: заголовок «Loading...» и пустая иконка вкладки на лендингах (5a6e458)
  • security: use signed media tokens for ticket attachments (c6fc167)
  • security: validate the deep-link url in miniapp/redirect.html (open redirect + DOM-XSS) (b4f0669)
  • subscriptions: «+ Купить ещё» только при платной подписке, явный CTA покупки (39bfef5)
  • switch-tariff: route trial & expired subs to the purchase flow (#629889) (5b123f5)
  • traffic: correct misleading add-traffic note — 30-day validity (f7bd36a)
  • wheel: stop showing fake wins in the browser (73ee42a)

1.56.0 (2026-06-02)

Features

  • sales-stats: вкладка «Оплаты» — success-rate и неудачные покупки (436d9f8)
  • sales-stats: дельты период-к-периоду на карточках сводки (a685e54)
  • sales-stats: душевные карточки с иконками + фикс скачка при смене периода (dfc7768)
  • sales-stats: иконки на карточках во всех вкладках (80ac631)
  • sales-stats: карточки возвратов в сводке (bd12113)
  • sales-stats: конкретика в сводке (3adda6f)
  • sales-stats: пресет «Этот месяц» (с 1-го числа) и он же по умолчанию (9a05f23)
  • sales-stats: разбивка допов по пакетам тоже на BreakdownList (bb97ee8)
  • sales-stats: читаемые разбивки и stacked-бары, иконки платёжек, выручка (a75f42d)
  • ui: заменить все нативные date-инпуты на DateField (016da9f)
  • ui: тёмный DateField на react-day-picker вместо нативного input (edd2d25)

Bug Fixes

  • admin-remnawave: причесать иконки в карточках статистики (7efe069)
  • datepicker: убрать скачки и поправить адаптив (c880517)
  • datepicker: читаемость календаря в любой теме (a8213ce)
  • deeplink: поддержать схему incy:// в редиректе добавления подписки (488503b)
  • navigation: single-tariff subscription detail всегда Close, не Back (ec346d3)
  • payment-labels: добавить лейбл OverPay (показывался сырым ключом) (33f8dda)
  • sales-stats: «Выручка» → «Оборот по подпискам» во вкладке Продажи (40c684c)
  • sales-stats: адаптив сетки Допов и сводки (56d8e1f)
  • sales-stats: крупные суммы сводки без копеек (короче, не режет) (a687cc3)
  • sales-stats: не резать значения в карточках сводки (адаптив) (631e922)
  • sales-stats: ровные иконки в карточках + не дублировать иконку (622ec31)
  • sales-stats: убрать пустые ячейки в сетках карточек (54998c8)
  • stats-charts: убрать focus-outline артефакт при клике по графику (5e83762)

Reverts

  • sales-stats: убрать карточки возвратов из сводки (ec23618)

1.55.0 (2026-06-01)

Features

  • admin-remnawave: add node/xray version icons like the panel (1b1046b)
  • admin-remnawave: auto-refresh overview, responsive mobile grids, wide sub-requests (ff3dbfa)
  • admin-remnawave: enrich panel stats UI and fix nodes-online display (b8be989)
  • admin-remnawave: meaningful icons for users-by-status cards (7ca9c04)
  • admin-remnawave: merge Traffic into Nodes as a per-node accordion (6c9a77d)
  • admin-remnawave: panel-style node rows with live metrics (08f12da)
  • admin-remnawave: provider favicon, mobile node card, meaningful icons (9309643)
  • cabinet: migrate all icons to the panel's Phosphor set (d0e0b6b)
  • icons: add node/gift glyphs to the central barrel (872f731)

Bug Fixes

  • admin-remnawave: add RAM/CPU icons to node metrics like the panel (297d75a)
  • admin-remnawave: lay node metrics in 3 fixed rows (processor/traffic/versions) (43acb70)
  • admin-remnawave: node metrics 3-rows on mobile, original single row on desktop (97d4367)
  • admin-remnawave: resolve provider favicon from site URL (bd5e39f)
  • admin-remnawave: scope the mobile orphan-fill to small screens only (493de23)
  • admin-remnawave: truncate long tags in node traffic accordion (1ef4b21)
  • broadcasts: показывать «Партнёрка» вместо сырого ключа referrals в превью (c24ae00)
  • cabinet-icons: correct two mismatched glyphs from the svg migration (9aae399)
  • flags: render flag emoji on Windows globally via a scoped flag font (b877d7f)
  • gift: stretch my-gifts cards full-width instead of cramped 2-col grid (50d7d21)
  • gift: working bot deep-link + desktop layout + barrel icons (6ea7672)
  • i18n: spell the brand "Remnawave" instead of camelCase "RemnaWave" (0d024ae)
  • navigation: break BackButton loop on single-tariff /subscriptions/:id deep-link (3c2f650)
  • navigation: single-tariff /subscriptions/:id deep-link shows Close, not Back (0ed8bb1)
  • navigation: надёжная кнопка «Назад» через тип навигации, без петли (#436) (a62d689)
  • news: fill the orphan card so the grid has no empty cell (7b7ff53)
  • subscriptions: fill the orphan card so a lone subscription has no empty cell (484c3ad)
  • subscriptions: дать новым юзерам путь в витрину без активации триала (2d5982d)
  • subscription: use the nav sparkle icon on the renew CTA button (8613cb2)
  • subscription: use the nav SubscriptionIcon on the quick-renew button (5340f81)
  • subscription: use the sparkle icon on the quick-renew button (e18db02)
  • wheel: keep spin sparkles in the outer ring, never near the centre (6c5d1ee)
  • wheel: kill the center-line LED artifact during spin (drop CSS blur filter) (8a41aa7)
  • wheel: remove CSS filters from the spinning SVG (kill GPU-composite streak) (2ce966c)
  • wheel: remove the spin-only sparkle lights entirely (bc85034)
  • wheel: scatter spin sparkles so they don't streak through the centre (7716e32)

1.54.1 (2026-05-28)

Bug Fixes

  • i18n: backfill 120 missing keys + close 2 typo regressions from purchase refactor (e1f401c)

1.54.0 (2026-05-28)

Features

  • a11y,i18n: more modal focus-traps + Telegram theme/language sync (0caba3d)
  • a11y: cross-platform hardening + modal focus-trap from impeccable audit (8e0b63b)
  • a11y: dialog semantics + focus trap for the onboarding tour (5c7d4b4)
  • auth,a11y: Telegram CloudStorage token recovery + blocking-screen a11y (f311602)
  • yandex-conv: forward CID through remaining paid API methods (574da67)
  • yandex-conv: forward CID through subscription purchase requests (1b82280)

Bug Fixes

  • a11y: announce form-level errors via role=alert in Login + ResetPassword (92ec9c3)
  • a11y: announce Login form-level error via role=alert (7e9e51b)
  • a11y: aria-label on icon-only buttons (Subscription copy + InstallationGuide back/QR) (9f06526)
  • a11y: associate referral form labels with their inputs (1b40c38)
  • a11y: associate Support ticket form labels with their inputs (90888db)
  • a11y: label associations for AdminCampaignCreate fields (4d18be8)
  • a11y: label associations for AdminCampaignEdit fields (6f66cb6)
  • a11y: label associations for AdminInfoPageEditor fields (a489724)
  • a11y: label associations for AdminNewsCreate fields (fefc52f)
  • a11y: label associations for AdminPromocodeCreate fields (a635ca2)
  • a11y: label associations for AdminPromoGroupCreate + AdminPinnedMessageCreate (5a8195f)
  • a11y: label associations for AdminPromoOfferTemplateEdit fields (1ec6d7e)
  • a11y: label associations for AdminServerEdit fields (d42fcfa)
  • a11y: label associations for AdminTariffCreate fields (e1b48c1)
  • a11y: radiogroup semantics for AdminInfoPageEditor button groups (30c4c2e)
  • a11y: radiogroup semantics for AdminPromoOfferSend button groups (581a2ff)
  • a11y: radiogroup semantics for Campaign bonus-type selector (27ba507)
  • a11y: switch semantics for admin form toggles (7b0a72d)
  • a11y: switch semantics for user-flow toggles (491f48a)
  • admin-bulk-actions: plug stale-closure bug in columns useMemo (7817243)
  • admin-bulk-actions: trap focus + label modal dialog (a11y) (bc34e65)
  • admin: surface clipboard copy failures instead of swallowing (576b4d5)
  • bulk-actions: drop unused ChevronDownIcon import (a8df415)
  • chrome: replace 2 platform emoji + 1 en-dash with on-brand tokens (5784efd)
  • decoration: strip 4 accent / status-hue leaks across hero surfaces (75f7750)
  • i18n,a11y: sync <html lang> + dir with i18n language (28c6825)
  • navigation: make Telegram back button work on deep-link entry (2bcba3b)
  • nav: keep Support pinned in mobile bottom-nav (68a97b8)
  • permission-route: guard against /admin → /admin redirect loop (62eaef2)
  • profile,connected-accounts: drop dead ['user'] invalidate calls (23e4e9b)
  • prose: keep TipTap list markers inline with their content (ed0b46e)
  • reset-password: cancel post-success redirect timer on unmount (3f7320f)
  • routing: give every lazy page its own ErrorBoundary (87e2e82)
  • scope-selector: drop role=dialog from non-modal popover (a11y) (bef984d)
  • security: extract & reuse getSafeRedirectPath, plug TopUpAmount returnTo (424a193)
  • subscription: clear critique P0 + P1 + part of P2 (312a34f)
  • subscription: forward subscription_id to purchaseTariff to fix renew race (e44a093)
  • telegram-redirect: cancel pending timers on effect re-run/unmount (748b051)
  • theming: replace off-token TelegramCallback/VerifyEmail with design tokens (feee9f9)
  • toast: drop side-stripe ban + a11y polish (eaaf5cf)

Performance Improvements

  • admin-bulk-actions: migrate users + 4 lookup loaders to React Query (bc5e95a)
  • admin-panel: migrate system info + stats poll to React Query (7426e1e)
  • admin-traffic: migrate data flow to React Query (2214d7f)
  • admin-user-detail: migrate remaining 9 leaf loaders to React Query (6f7bd10)
  • admin: migrate AdminBanSystem tab fetching to React Query (1e4d6da)
  • admin: migrate AdminDashboard to React Query (refetchInterval, no setInterval) (0b07af8)
  • admin: migrate AdminUserDetail loadUser to React Query (caching + cache key) (5ee97e0)
  • admin: migrate AdminUsers fetch to React Query (dadf08d)
  • build: split recharts + tiptap into dedicated vendor chunks (7f14c49)
  • images: add loading=lazy to in-list previews and attachments (b6613ae)
  • motion: convert layout-property transitions to transforms (eb13689)

1.53.0 (2026-05-16)

Features

  • antilopay: inject apay-tag meta on cabinet boot (6fa4afd)
  • blocking: account-deleted recovery screen with bot deep-link (16b4711)
  • devices: inline rename UI for connected HWID devices (321c65b)

Bug Fixes

  • admin: show flag for every country code, not just hardcoded 25-36 (f301d44)
  • blocking: open bot deep-link via platform adapter, not window.open (8c336d1)
  • devices: unicode escape bug + onSuccess race + en locale + apiErr surface (d1e5ce8)
  • onboarding: prevent invisible overlay blocking clicks and stuck tour (abbbc6a)
  • subscription: invalidate devices query after revoke (47f0359)

1.52.0 (2026-05-13)

Features

  • topup: direct-open payment page when method.open_url_direct is set (aa8bfc9)

Bug Fixes

  • build: drop redundant dynamic import of branding api (7ae2787)
  • cabinet: show trial offer in multi-tariff mode (7c10843)
  • dashboard: show full name on welcome, fix gender mismatch on trial-expired card (4de01cc)
  • format: convert price by exchange rate on landings and gift page (6ffd0ae)
  • profile: use displayName helper for name field (172850e)
  • subscription: hide strikethrough free label on device addon price (1fdafbd)
  • topup: preserve canonical RUB amount to avoid FX round-trip shortfall (2a342f6)

1.51.0 (2026-05-04)

Features

  • add Antilopay payment provider support (7d94009)
  • add Apple IAP (apple_iap) payment method support (5888713)
  • add Etoplatezhi payment provider support (85a34b1)
  • add Jupiter and Donut payment provider support (7def847)
  • add Lava payment provider support (b4eb0fa)
  • add subscription reissue button with cooldown timer (f7cc445)
  • add TV Quick Connect to connection page for Android TV / Apple TV (65f9493)
  • admin/broadcasts: add preview buttons for Telegram + Email broadcasts (d21c663)

Bug Fixes

  • i18n: add missing broadcast preview locale keys (7d29285)
  • move reissue button to standalone block outside device_limit guard (60c8353)

1.50.0 (2026-04-29)

Features

  • bulk delete subscription protection for active paid subs (afffab1)
  • dedicated RBAC permissions for bulk actions, info pages, news (ae55a18)
  • landing analytics goals, daily bar chart, referrer tracking, contact persistence (020f4c9)
  • multi-media attachments, linkify URLs, shared MessageMediaGrid (6d3010b)
  • show VPN connection info and subscription request history on admin user detail (e1d2f8c)
  • subscription selector in VPN connection block for multi-tariff (bc37f31)
  • Yandex Metrika CID tracking, offline conversions UI, sticky pay button (8005968)

Bug Fixes

  • remove stale cabinet_last_login field from user detail (8fcdbbe)
  • restore cabinet_last_login in user detail (now shows real data) (8044b66)
  • switch component — replace motion with CSS transition-transform (9b1e26d)
  • user detail — separate request history sub selector, split mount effects (853e1c9)
  • validate counterId/conversionId before script injection (XSS prevention) (a50bd39)

1.49.0 (2026-04-24)

Features

  • add campaign/partner filters, delete_user action, and fix modal positioning in AdminBulkActions (b01ffe3)
  • admin bulk actions page with TanStack Table (1772d96)
  • bulk actions — live progress, grant subscription, error details (312e0b4)
  • bulk delete subscription + fix sub-rows showing for filtered single subs (c726d3d)
  • devices in subscription rows, set_devices action, table columns (5969c74)
  • FAQ answer editor — replace textarea with TipTap rich editor (0adbfa5)
  • FAQ pages — Q&A builder in admin, accordion view for users (1ee0f18)
  • info pages — tab replacement, custom pages on /info, responsive fixes (6569469)
  • information pages — admin editor with TipTap, public viewer (7d6d0ba)
  • multi-select tariff filter, select-all subscriptions, auto-expand (f13b723)
  • multi-tariff bulk actions UI — subscription-level selection (78b41dc)
  • second header checkbox for bulk subscription selection (eeda567)

Bug Fixes

  • align frontend bulk action types with backend API contract (fc8170f)
  • bulk actions — add tariff info to user list, fix tariff column display (161fde4)
  • bulk actions — modal touch targets, deleteFromPanel reset, remove dupe spacer (161f630)
  • bulk actions frontend — selectedUserIds mapping, debounce cleanup (ebe9d9b)
  • bulk progress log shows generic error instead of backend message (8dd5e49)
  • campaigns/partners filter 422 — limit=200 exceeds backend max (100) (5b1892d)
  • expand chevron invisible on accent background (3801c36)
  • FAQ answer editor — stable keys, safe setContent, drop handler (a6850c8)
  • floating action bar covering pagination — add bottom spacer when selection active (d43638b)
  • floating action bar hidden behind mobile bottom nav — raise z-index + bottom padding (c32bcfe)
  • info page — slug collision guard, error resilience, overflow, loyalty responsive (d6918ee)
  • info page editor — locale switch no longer resets user edits (3ef54ad)
  • load filters independently — one API failure no longer blocks others (8e76744)
  • make checkboxes visible on dark theme in bulk actions (0844144)
  • make subscription checkboxes same size as user checkboxes (h-5 w-5) (9673f26)
  • mobile/responsive issues in FAQ and info pages (c16593a)
  • multi-tariff filter now works server-side + trial-only checkbox (98871af)
  • multi-tariff filter shows all users when >1 tariffs selected (efca40d)
  • persist checkbox selection across page changes and filter switches (cb148d1)
  • prose content overflow on mobile — add overflow-x-auto (596f638)
  • regenerate FAQ editor keys on locale switch (5cfbce0)
  • select-all subscriptions + per-page selector (e2706c7)
  • show sub-rows for single-subscription users + fix floating bar position (3cb1517)

1.48.0 (2026-04-23)

Features

  • improve squad management UX — rename, swap icons, color gift button (33f3264)

Bug Fixes

  • complete is_limited status handling across all views (1d5ce2d)
  • gift page shows only 1 tariff when tariffs have different periods (e6403eb)
  • landing page currency symbol not changing with locale (2d6815a)
  • limited (traffic exhausted) subscription shows as expired (f68b466)

1.47.1 (2026-04-22)

Bug Fixes

  • wrap server display names with Twemoji for cross-platform emoji rendering (d75440b)

1.47.0 (2026-04-18)

Features

  • add AuraPay payment provider to cabinet frontend (48827e4)

Bug Fixes

  • change aurapay icon to pink gradient to avoid kassa_ai color collision (996840f)

1.46.0 (2026-04-16)

Features

  • add PayPear payment provider to cabinet frontend (31ac511)
  • add RollyPay payment provider to cabinet frontend (770a580)

Bug Fixes

  • add paypear payment method description to ru/en locales (5cbf29a)
  • differentiate rollypay icon from riopay (teal gradient, RY text) (4eed0f3)

1.45.1 (2026-04-15)

Bug Fixes

  • period discounts clearing, SBP default, happ cryptolink flow (e6cf3af)

1.45.0 (2026-04-13)

Features

  • add broadcast category selector (system/news/promo) in admin UI (362a698)
  • send campaign_slug during standalone email registration (a46c89e)

Bug Fixes

  • add back button to AdminBanSystem page (f787cc2)
  • add Object.hasOwn polyfill for old iOS/Android WebViews (7b0e6d8)
  • show API error details in menu editor save + allow tg:// URLs (30d8d28)
  • subscription status badge overflow + inline password validation (3d0fc76)

1.44.2 (2026-04-08)

Bug Fixes

  • batch bug fixes matching backend changes (e6f6713)
  • batch frontend fixes matching backend changes (608a752)

1.44.1 (2026-04-03)

Bug Fixes

  • 100% discount display + Telegram widget fix + sparkles icon (300cb07)
  • complete sparkles icon in trial offer card (was showing only 1 of 3 sparkle paths) (1cf9526)
  • support 100% discount display + fix Telegram link widget race condition (207af81)

1.44.0 (2026-04-02)

Features

  • move email linking form into Connected Accounts page (6fd0668)

Bug Fixes

  • add key prop to AnimatePresence, accessibility labels, remove hardcoded fallback (7892630)
  • subscription tab not highlighted on detail pages (e2f81ad)

1.43.1 (2026-03-31)

Bug Fixes

  • admin users search not working on pages beyond first (fe609a5)
  • unblock page rendering when Telegram CDN is unavailable (826a82a)

1.43.0 (2026-03-29)

Features

  • add "Add Referral" button to referrals tab (222a123)
  • add Referrals tab to admin user detail page (e32663f)
  • add Remnawave panel 2.7.0 support (a50c06c)
  • add server selection for test_access promo offer templates (5246ad2)
  • add subscription selector to admin sync tab for multi-tariff (aa989a6)
  • add Traffic tab with per-inbound breakdown in admin remnawave (4ebc21b)
  • add WebBackButton to all sub-pages, widen renew page layout (31d0953)
  • delete expired subscriptions with confirmation dialog (fe75fa4)
  • dynamic language list from API instead of hardcoded array (07500ed)
  • enhance subscription list UX with progress bars, status badges, and glass theme (376e1bb)
  • multi-subscription frontend support (96ff258)
  • multi-subscription frontend support (820ba46)
  • multi-tariff purchase UX - disable switch, show Buy for new tariffs, correct page title (bcbfa41)
  • redesign admin panel with glass morphism UI, animated background, and stats bar (0bb064e)
  • redesign admin settings with tree navigation and compact layout (21813ef)
  • send language in payment requests for localized descriptions (2b03e7e)
  • separate renewal and purchase flows in multi-tariff mode (82eb03d)
  • show autopay/auto-charge status on subscription cards, invalidate list on toggle (871b476)
  • show country emoji and provider name in traffic tab (88c93e2)
  • show MULTI_TARIFF_ENABLED setting only in tariffs sales mode (60f11e9)
  • show per-subscription mini-cards on Dashboard with tariff name, traffic, devices, date (09f467b)
  • tariff selector for trial subscription promo codes (94b9b9e)
  • wheel subscription picker for multi-tariff mode (2921d8c)

Bug Fixes

  • add i18n keys for Traffic tab, prevent sort mutation (5d7b94f)
  • add missing balance cache invalidation after mutations (9546e0f)
  • admin per-subscription panel data + hide purchased tariffs in create (c7c2167)
  • allow zero price for device and traffic topup in tariff settings (8ba5cea)
  • auto-reload on stale chunk errors after deploy (c697ddb)
  • back button goes to dashboard in single-tariff to prevent redirect loop (45b7c85)
  • bottom nav disappears after visiting payment page in Telegram (3b659b7)
  • constrain delete Sheet width on desktop — centered max-w-md with rounded corners (93fa435)
  • correct glass theme and haptic API usage in Subscriptions page (44d6069)
  • desktop vertical alignment regression and touch target sizing (3e6c021)
  • filter existing referrals from search and clear stale results (48fe923)
  • four bugs in referrals tab from review (63f7fa0)
  • gift code activation URL encoding and prefix handling (859bd24)
  • handle merge flow from email register endpoint (0d4ddb2)
  • handle undefined inbounds/outbounds in traffic tab (06f6cbe)
  • hide legacy subscription card on Dashboard in multi-tariff mode (865a78b)
  • hide panel info/traffic/devices from subscription list level, show only in detail (23edd6a)
  • hide renewal button for daily tariffs in multi-tariff mode, fix hint text (6a53221)
  • make buy-another-tariff button more prominent on dashboard (29003a6)
  • mobile layout and touch target improvements for admin settings (e004d81)
  • multi-subscription frontend improvements (4de47cf)
  • multi-subscription UI audit fixes and cache invalidation improvements (f4de6d8)
  • navigation links point to /subscriptions (list page) instead of legacy /subscription (a0c21a1)
  • platform-aware delete confirmation + trial CTA to purchase (debee77)
  • preserve subscription context in navigation and cache keys (fd01c0f)
  • promocode multi-tariff support in cabinet (6de864a)
  • remove duplicate 'Create subscription' block in multi-subscription admin view (20f0e44)
  • remove duplicate back buttons, improve multi-subscription UX (9d3fb37)
  • remove duplicate floating orbs background from admin panel (59e6528)
  • remove unused multiSubCount variable (258bfd7)
  • resolve eslint warnings in NewsSection and AdminTickets (e86b214)
  • send subscription_id as query param in ALL POST/PATCH endpoints (348d654)
  • send subscription_id as query param in autopay PATCH, not in body (b0421b9)
  • show missing balance amount on renew page, no tariff switch in multi-tariff (10824b7)
  • show subscriptions link on dashboard even with single subscription in multi-tariff mode (f0d520d)
  • show warning hint when subscription must be selected before wheel spin (16ccf78)
  • stabilize useMemo deps and add category search to sidebar (ea1c735)
  • three bugs found in second review round (28ef6c9)
  • transliterate Cyrillic to Latin in news slug generation (84bded7)
  • use declarative Navigate instead of navigate() in render + fix useEffect deps (98e9cfa)
  • whitespace search guard and unknown section fallback (67055d5)

1.42.0 (2026-03-23)

Features

  • add category/tag management UI with ColoredItemCombobox (2ae01c9)
  • add delete buttons for categories and tags in combobox dropdown (be7219e)
  • add media upload to news editor with drag-drop, paste, and file picker (723591e)
  • add news section with admin editor and public article view (99fc336)

Bug Fixes

  • add multipart/form-data header to news media upload request (4bcae6c)
  • add news link to admin panel, prevent empty news section flash (38b0f4b)
  • disable duplicate link/underline extensions from StarterKit (59d8b66)
  • isolated DOMPurify instance and correct video controls attribute (f788f10)
  • media upload security hardening from 6-agent review (7408000)
  • news feature security, accessibility, performance improvements (74e6d52)
  • news section — remove duplicate title, add newspaper icon, hide views from users, fix cache invalidation (b7ab2cf)
  • register DOMPurify hooks once, abort featured upload, fix double drop (5c0eb12)
  • remove animated background from news section, fix mobile borders (8d994f7)
  • remove duplicate news title and replace N icon with newspaper SVG (de5414f)
  • tag color bug, FormData interceptor, falsy id check (13d27a5)
  • video not rendering — add TipTap Video extension, allow HTTP src (25f3602)

1.41.0 (2026-03-22)

Features

  • add fill+border dual-color nodes, radial layout, and dark labels (b18f3fb)
  • color-code referral network nodes by subscription status (b289ea9)
  • show subscription revenue and referral earnings in network stats (5b12784)

Bug Fixes

  • add fill border to node-border program config (5a92484)
  • fallback to referral role fill color when subscription_status is null (61ca5cc)
  • make trial, campaign, and no-subscription node colors distinct (2a57442)
  • remove campaignUser fill color — campaign membership shown via edges (2229eee)
  • rename "Regular user" to "No subscription" in legend (cc64f7b)
  • superadmin assignments show ENV badge, block UI revoke (8e59af9)
  • use dark label color on hover (white bg), light on normal (dark bg) (ebe2c3a)
  • use light label color for graph nodes on dark background (0cc1cd5)
  • use white campaign edges to avoid blending with trial expired nodes (2436060)

1.40.0 (2026-03-22)

Features

  • add QR code and command to deeplink auth fallback, fix polling on tab return (76c9d64)
  • custom broadcast buttons UI and fix stale mediaType bug (86d997d)
  • show short device identifier (HWID) in device list (58b1f96)

Bug Fixes

  • clear all cached auth state on Telegram MiniApp retry (3e27472)
  • clear expire timer on 410/error and reset pollInFlight on retry (1538879)
  • prevent polling race condition and add missing zh/fa translations (e571667)
  • referral system — stop cabinet redirect to Telegram, fix deep link code handling (3c034d2)
  • show error state instead of blank page on purchase-options failure (9d519fb)
  • use live panel traffic data in admin subscription card (ac1550c)

1.39.1 (2026-03-21)

Bug Fixes

  • infinite reload loop on login when Telegram widget unavailable (c34375e)

1.39.0 (2026-03-20)

Features

  • add media attachment support for admin ticket replies (84f0e4e)
  • add partner → campaign edges with distinct color to referral network (2adb004)
  • add referral network graph visualization page (235eaec)
  • multi-select scope for referral network graph (db76cd0)
  • redesign referral network with scope selector (a6faf70)

Bug Fixes

  • adapt referral network for Telegram MiniApp safe areas (33486a0)
  • bottom nav overlap and safe area handling in referral network (94c8e73)
  • defer Sigma init with requestAnimationFrame to prevent no-height crash (6f58a0c)
  • fullscreen layout and filter dropdown positioning (4ebd85b)
  • graph layout, node visibility and FA2 settings (7c0b8e5)
  • hide trial banner when subscription expired banner is active (d34f5e8)
  • improve graph spacing, mobile layout, and Telegram viewport (818557f)
  • position page below AppShell header, wait for container size (fd9a47e)
  • redesign top bar and filter panel for mobile (ea143fd)
  • referral network graph rendering and layout (b787726)
  • referral network rendering — portal fix and visual tuning (2b43a30)
  • remove dead store code and add search input maxLength (0f756d6)
  • resolve Sigma container height error on page load (3434073)
  • scope selector UX, ARIA, and code quality improvements (2780898)

1.38.0 (2026-03-18)

Features

  • clickable user link to user card in admin payments (aa8fbd1)
  • display manual admin top-ups in sales statistics (a3a6fad)
  • display user promo group badge on dashboard (c579abe)

Bug Fixes

  • handle long promo group names with truncation and flex-wrap (4a33a61)

1.37.1 (2026-03-18)

Bug Fixes

  • add tooltip text color for dark theme in all charts (d640cc1)
  • add tooltip text color for dark theme in landing stats charts (18b8605)
  • load telegram-web-app.js asynchronously to prevent page blocking (c5f621b)

1.37.0 (2026-03-18)

Features

  • блокировка кнопки устройств при лимите + убраны дубли трафика (8636bd7)
  • добавлена поддержка SeverPay в кабинете (246fafd)
  • редизайн страницы платежей в админке — поиск, фильтры, статистика (df73b3f)

Bug Fixes

  • блокировка кнопки устройств на странице подписки (2d89b5e)
  • добавлена подпись «Стоимость вращения» к блоку оплаты спина (914a802)

1.36.0 (2026-03-17)

Features

  • account linking and merge UI for cabinet (93f97d4)
  • account merge flow — merge redirect, error handling, server-complete linking (2fc0759)
  • adapt dashboard and subscription page for light theme (f474067)
  • add 'no color' option for button style customization (e586129)
  • add 1d and 3d period filters for node usage (f36ee60)
  • add 1d and 3d period filters for node usage (944b2ec)
  • add admin pinned messages section (88cc0d9)
  • add admin pinned messages section (aa5113b)
  • add admin sales statistics dashboard with 5 analytics tabs (a47c222)
  • add admin traffic packages and device limit management UI (2dfa520)
  • add admin traffic usage page (8c8fa40)
  • add admin traffic usage page with TanStack Table (a034a60)
  • add admin updates page with release history (a15b3d4)
  • add animated gradient border to Connect Device buttons (70e1ed6)
  • add button reordering within rows and replace modal with inline add panel (082471b)
  • add ButtonsTab for per-section button style customization (b289873)
  • add channel edit in admin, hide subscribed channels in blocking screen (5a55892)
  • add configurable animated background for landing pages (a404690)
  • add country filter and risk columns to traffic CSV export (471e2c8)
  • add daily deposits by payment method chart (f012710)
  • add daily traffic & device purchase chart to addons stats (2235b3c)
  • add dashboard sub-components for subscription cards and stats grid (909374d)
  • add dedicated TopUpResult page for payment return flow (b591228)
  • add device management UI in admin user card (6f31fbe)
  • add discount UI for landing pages (f7afa00)
  • add empty state for connection page when no apps configured (fb25df6)
  • add enrichment columns to admin traffic usage table (893c69a)
  • add external squad selection to tariff admin form (bc45294)
  • add fonts, animations, and shared utilities for dashboard redesign (7e345fc)
  • add Freekassa SBP and card payment method icons and labels (a725265)
  • add fullscreen QR code for subscription connection (4d14e3e)
  • add gift navigation, routes, and i18n translations (7890d48)
  • add gift purchase UI states for telegram recipients (eed077b)
  • add gift subscription API client and feature flag (a495205)
  • add gift subscription toggle to admin branding settings (9542607)
  • add gifts tab to admin user detail page (695ab42)
  • add GiftSubscription and GiftResult pages (814b1f5)
  • add gradient fade indicators to scrollable desktop nav (622172f)
  • add granular user permissions (balance, subscription, promo_group, referral, send_offer) (3d6987f)
  • add HoverBorderGradient effect to key action buttons (3fb9606)
  • add i18n translations and admin category for Telegram OIDC (c221c6e)
  • add Info page link to desktop top navigation (fa48cc4)
  • add Info page link to desktop top navigation (18a14d6)
  • add inline referral commission editing in admin user card (92d206f)
  • add landing page statistics page with recharts (3019019)
  • add landings permission section translations for role editor (5228b2d)
  • add LIMITED subscription status support with traffic-exhausted UX (b4f9f33)
  • add menu editor tab with drag-and-drop rows, custom URL buttons, and button configuration (23aa86f)
  • add multi-channel subscription blocking UI and admin management (a767fe9)
  • add node/status filters and custom date range to traffic page (90b38e3)
  • add node/status filters, custom date range, connected devices to traffic page (0301fd8)
  • add node/status filters, date range, devices to traffic page (e824945)
  • add OAuth 2.0 login UI (Google, Yandex, Discord, VK) (83aeae8)
  • add open_in setting for custom buttons (external browser / Telegram miniapp) (638844e)
  • add partner management and withdrawal admin pages (779fbf0)
  • add payment sub-option selection on quick purchase page (58e93cd)
  • add per-button enable/disable toggle and custom labels per locale (1a0a5ff)
  • add per-channel disable settings and global settings to channel admin (48be067)
  • add promo group and promo offer management to AdminUserDetail (8bd3c00)
  • add purchases list with pagination to landing stats page (887b13d)
  • add RBAC permission system to admin cabinet frontend (874ee26)
  • add recharts analytics to admin campaign stats page (c7d05c4)
  • add referral code persistence across all auth methods (2b2ead8)
  • add reset traffic toggle on tariff switch (49fff8e)
  • add sales_stats RBAC permission section to frontend (262303d)
  • add show_in_gift toggle UI for tariffs in admin panel (5a5a987)
  • add sub-options UI for landing payment methods + extract components (d0be127)
  • add SVG brand icons for payment methods (c4f228f)
  • add system info card to admin dashboard (ab0270a)
  • add tariff checkbox filter, column resizing to traffic page (cfb7ce7)
  • add Telegram account linking UI with CSRF protection (a6fabb1)
  • add ticket status buttons to inline chat (5664b28)
  • add ticket status change buttons to inline chat (dafa69f)
  • add tickets tab to admin user detail page (995c034)
  • add traffic abuse risk assessment with color gradation (a6507b2)
  • add TrafficProgressBar and Sparkline components (eb1f788)
  • add translations for permission sections and actions (80bfaca)
  • add Twemoji for cross-platform emoji rendering (031396d)
  • add Twemoji for cross-platform emoji rendering (72b1089)
  • add user filter chips and resource types to audit log (4072274)
  • add user profile link button in ticket detail (d483d84)
  • add web campaign links — capture, auth integration, bonus UI (e0dd21f)
  • add weekdays condition to ABAC policies (a1a8dc2)
  • admin panel enhancements & release history (3bd9abb)
  • admin partner settings page, partner section visibility toggle, custom requisites text (76d20fd)
  • admin traffic usage, session persistence, and UI improvements (2193df7)
  • allow editing system roles (a050125)
  • brand-accurate payment method icons from favicons (e24afc4)
  • compact login page with collapsible email, icon OAuth row, safe areas (45cbfb5)
  • deep link авторизация при блокировке oauth.telegram.org (6a1a9f5)
  • desktop nav expand-on-hover with larger icons (8dab6dc)
  • display per-campaign stats on partner detail page (75a6149)
  • display promo group and active discount banners on gift page (03c9e73)
  • dual referral links UI (bot + cabinet) with independent copy states (e023373)
  • dual-channel broadcast form (Telegram + Email simultaneously) (772dcf7)
  • dual-channel broadcasts (Telegram + Email) (74f6c61)
  • enable sorting on enrichment columns (5678dfd)
  • enhance admin user detail with campaign, panel data, node usage (0083b47)
  • enhance admin user detail with campaign, panel data, node usage (7b19f14)
  • enhance sales stats with device stats, per-tariff charts, and dual-series trials (4622b4b)
  • gift subscription redesign — code-only purchase + 3-tab UI (af3e535)
  • guest purchase activation UI & landing editor improvements (b852e1e)
  • guest purchase cabinet credentials UI (d228d99)
  • improve audit log - translate actions, fix resource filter, show request body (5d0e353)
  • inline ticket chat in admin user detail (0b10cfe)
  • inline ticket chat in admin user detail (145d94a)
  • local period calculation and refresh button for node usage (64ea757)
  • local period calculation and refresh button for node usage (bc6985f)
  • migrate Telegram Login Widget to v23 with admin-configurable settings (2c65ca8)
  • move user action buttons to detail page and fix full delete (2490399)
  • move user actions to detail page, fix full delete (dad0c5b)
  • node/status filters + custom date range for traffic page (8b113a5)
  • OAuth 2.0 login UI (Google, Yandex, Discord, VK) (b7aca0c)
  • open OAuth linking in external browser from Telegram Mini App (7c30a1e)
  • partner-campaign integration in admin UI (959f892)
  • promo group & offer management in AdminUserDetail (280f4ae)
  • read gift warning from status response, soften poll error state (4322d58)
  • render GitHub markdown in release changelogs (0c34668)
  • replace animated backgrounds with Aceternity UI system (1a702a6)
  • responsive desktop nav — icon-only on lg, icon+text on xl (e7cd370)
  • show affected subscriptions count on tariff deletion (f10a02c)
  • show blocked_count in broadcast admin UI (9cf8e09)
  • show localized error for self-activation attempt (7549ae7)
  • show partner campaign links with bonuses on referral page (8b33d82)
  • show query params in audit log details (66f7fcb)
  • show traffic reset info in subscription card (271a005)
  • show traffic reset period on tariff cards (cfe9f64)
  • split my gifts into Active/Activated/Received sections (51ec799)
  • support disabled daily subscription status in cabinet UI (7940410)
  • support Telegram HTML formatting in privacy/offer content (fb055c0)
  • support Telegram HTML formatting in privacy/offer content (3e70008)
  • SVG иконки платёжных методов, фикс колеса удачи (2003052)
  • tariff checkbox filter + column resizing for traffic (c383c78)
  • TelegramLoginButton with OIDC popup + legacy widget fallback (91f0e9e)
  • tickets tab in admin user detail (1426e46)
  • traffic abuse risk assessment with color gradation (88f8e8b)
  • traffic page filters, risk assessment, country filter & CSV export (84cce93)
  • unified device manager with dot-based selector (edb7ef0)
  • update payment method icons with brand-accurate favicon designs (33e878d)
  • user profile link in ticket detail (e0c9a89)
  • кликабельные имена пользователей в последних платежах (e278fec)
  • мультиязычные лендинги + переключатель языка + исправления по ревью (ab13616)
  • публичные лендинг-страницы для быстрой покупки VPN-подписок (8b5d777)

Bug Fixes

  • accessibility, query cache clear, post-merge navigation (e447e99)
  • activation broken — token uppercased + wrong env var for bot username (d852bfe)
  • adapt admin landings list for mobile layout (b7c7dec)
  • add client-side caching and smooth loading for traffic page (471c37b)
  • add country flags to node usage display (14b73f6)
  • add country flags to node usage display (80bad9d)
  • add max attribute to expected referrals input (d1043e8)
  • add missing cancelled filter key to withdrawal i18n in all locales (9b2742f)
  • add missing nameRequired i18n key for promo group form validation (78fda22)
  • add missing onError handlers on RBAC mutations (c4e3211)
  • add null guard for purchase_token before rendering CodeOnlySuccessState (51cc122)
  • add pagination to campaigns list (46f640a)
  • add purchase-options cache invalidation on balance changes (f1102d2)
  • add Referrer-Policy to prevent merge token leakage via Referer header (584f002)
  • add resend email cooldown and allow email change for all auth types (91d567f)
  • add subscription tab to desktop nav, fix device dots overflow, show available referral balance (27f85a1)
  • add unmount safety guard to OIDC callback handler (dfa7a09)
  • address code review findings for TelegramLoginButton (5c11f12)
  • admin landing editor — tariff period mapping and cleanup (6a92814)
  • admin promo groups - add default toggle, fix threshold reset to 0 (9c7ab4b)
  • align RecentPaymentItem types with backend schema (3f05039)
  • align TypeScript types with backend referral schemas (11343f4)
  • allow animated background to show through on landing pages (66bb86a)
  • allow email change for unverified emails without code verification (a0b10e6)
  • allow user column to shrink smaller on mobile (6aa8951)
  • allow user column to shrink smaller on mobile (12663a5)
  • animation config not updating for users after admin change (94ddf31)
  • auto-select single sub-option and remove unused return_url field (83fbd0e)
  • bar chart white hover cursor on dark theme (14e5f43)
  • block wheel spin without active subscription (821e991)
  • boxes background not covering full screen (f16f96e)
  • boxes background not covering viewport (65afb29)
  • check apps before subscription on connection page (a4e6e35)
  • clean up expired trial card - remove redundant badge and subtitle (d2f02d6)
  • client-side caching and smooth loading for traffic page (81fcf54)
  • column shrinking on mobile + country dropdown overflow (1aa0e7f)
  • CopiedToast not visible due to CSS transform context (39bdf8b)
  • correct locale loader type to support nested translation objects (ab03947)
  • correct locale loader type to support nested translation objects (682b6b7)
  • correct memory display to use actual usage instead of cache-inclusive (67bacd3)
  • cover all payment provider statuses in TopUpResult (8897561)
  • daily tariff renewal uses purchaseTariff instead of renewSubscription (8629cfe)
  • deep link auth timer cleanup and reliability (3d95025)
  • desktop nav always icon-only with tooltips (f0777f0)
  • detect Telegram account switch across tab closes (ee6ec59)
  • device purchase guard condition and cache invalidation (115c684)
  • display zero-amount transactions with neutral styling (6fd76c8)
  • double-click guard on link, wall-clock timer, blur cleanup (8ad0500)
  • eliminate hover flickering across all pages (bdc201b)
  • enforce column maxWidth for proper shrinking on mobile + country dropdown positioning (060c9be)
  • force fresh balance data on purchase-options query (69a8fe8)
  • gift code display + share modal backdrop (a627eb0)
  • gift UI improvements — declension, GB display, share modal, deep links (1bafcca)
  • guard oauthProviders with Array.isArray to prevent TypeError on Login page (f74e316)
  • guard user detail API calls with RBAC permission checks (bc5d832)
  • handle Pydantic validation errors in notify + nullify empty optional fields (9bd58cb)
  • handle Telegram Stars payment for gift subscriptions via openInvoice (01e811b)
  • handle unlimited traffic package selection and button text (1d6ec70)
  • harden gift subscription frontend after multi-agent review (6ea1de2)
  • harden merge UI and improve error handling (58cf1e3)
  • harden OAuth login flow — open redirect, path traversal, info leak (a744b41)
  • hide backend URL from logo by fetching as blob (de09ea0)
  • hide empty blocks in connection installation guide (96f9a71)
  • hide onboarding when blocking screen is active (af25e6a)
  • hide onboarding when blocking screen is active (4791a9f)
  • hide Quick Renew for expired trial subscriptions (8b056e0)
  • hide Telegram back button on bottom nav pages (03a7db5)
  • hide Telegram back button on bottom nav pages (e5ed6d0)
  • improve campaign stats, shared chart components, and i18n coverage (673de08)
  • improve HoverBorderGradient visibility with accent colors and darker bg (4332c2b)
  • improve light theme visibility for dashboard and subscription cards (4cdff97)
  • improve light theme visibility for inner panels on subscription page (430b703)
  • improve risk assessment display with GB/d values (4fe96bc)
  • improve risk calculation display with actual GB/d values (e60b846)
  • isolate content layer from animated background to eliminate flickering (04eacf6)
  • landing list crash — title is now LocaleDict, not string (6755c1d)
  • make desktop nav horizontally scrollable on narrow screens (ab7d1b7)
  • merge: accessibility, token guard, state cleanup (579f47e)
  • mobile layout and period label translations for quick purchase landing (6d5c6fb)
  • mobile layout overflow on landing page (9aae9cc)
  • move cabinet_branding to sessionStorage and add WebGL availabili… (8200014)
  • move cabinet_branding to sessionStorage and add WebGL availability check (fc7ee6a)
  • move CTA button above additional options section (0bc817f)
  • move theme save/cancel buttons outside collapsible section (7c30454)
  • move useState before useMutation for consistent hook ordering (fba4481)
  • normalize all API responses, add error handling and reset confirmation (150a1b2)
  • OIDC login UX improvements from review (b335d66)
  • ordered list numbering in Info page shows correct sequence (8157ca5)
  • parse raw query string for deep link params to avoid double-decode (ed65c29)
  • partner system bugs - commission field, withdrawal UX, admin amount (e94d81f)
  • persist refresh token across Telegram Mini App reopens (a449dd6)
  • persist refresh token across Telegram Mini App reopens (20ea200)
  • plug memory leaks in blob URLs and traffic cache (7cf7273)
  • preserve + chars in deep link URL params for crypto links (65add9a)
  • prevent button settings cards from overflowing in admin panel (54f1483)
  • prevent buyer from activating gift pending subscription (97959b0)
  • prevent countdown timer overflow on narrow mobile screens (96bcc76)
  • prevent onBlur race cancelling unlink confirmation (3418ba9)
  • prevent useCloseOnSuccessNotification from firing on mount (0389acd)
  • RBAC frontend type mismatches and translations (4c9c399)
  • RBAC policies page role handling and permission gates (56188b1)
  • recursive setTimeout, Strict Mode guard, isAxiosError (b350003)
  • redesign role revoke confirmation dialog (f829076)
  • reduce campaigns fetch limit to 100 (backend max) (be168a7)
  • remove @floating-ui from radix chunk to resolve circular dependency (772d83d)
  • remove bg-dark-950 from gift pages to preserve animated background (c8ec221)
  • remove colored background from logo on login page (6bf0af4)
  • remove dark backdrop overlay from share modal (b213535)
  • remove devices stat block, stretch countdown to full width (396f814)
  • remove double URL-decode in extractTelegramUserId (e8acfee)
  • remove duplicate min withdrawal amount on referral page (98ab109)
  • remove duplicate tariff info line, make tariff card clickable (bef5102)
  • remove gemini-effect and noise backgrounds, fix aurora animation (79ff741)
  • remove incorrect ruble top-up prompt from fortune wheel (2c0d265)
  • remove noreferrer from payment links to preserve Referer header (45203da)
  • remove payment method icons from admin pages (77e0edf)
  • remove payment method icons from admin pages (dd9ed83)
  • remove redundant subtitle and register hint from login page (d596b05)
  • remove server/location count from tariff cards and confirmation (0fac368)
  • remove unused linkTelegramWidget i18n key from all locales (9b4a851)
  • rename duplicate 'purchases' i18n key to 'purchaseCount' (0ce74ea)
  • rename Серверы to Локации in subscription card (19e62fc)
  • render animated background via portal at z-index:-1 to stop implicit compositing (12c97a2)
  • render newlines in tariff description (0b4e825)
  • replace broken modal with inline confirmation for role revoke (78e7099)
  • replace deprecated Telegram Login Widget redirect with callback (32091d3)
  • replace framer-motion with CSS keyframes in boxes background (7f17d95)
  • replace hardcoded green with theme-aware accent color (a3ddddf)
  • replace orphaned shareModal i18n keys in GiftResult (0322974)
  • replace window.confirm with inline confirmation for unlink (d0c01a0)
  • resolve all 14 ESLint warnings across the codebase (885524a)
  • resolve all 14 ESLint warnings across the codebase (62188b8)
  • resolve hover flickering caused by GPU layer destruction (d8cf430)
  • resolve telegram auth token expiration and clean up codebase (c0b834a)
  • resolve telegram auth token expiration and clean up codebase (2dab25c)
  • restore package-lock.json for CI (npm ci requires it) (069090a)
  • restore session from refresh token when access token is missing (dc740ae)
  • review findings — polling fallback, sessionStorage cleanup, UX (da1926f)
  • review fixes - Math.round kopecks, fa locale, admin list commission (82987fd)
  • rewrite 5 broken background components from Aceternity sources (de97a03)
  • rewrite BackgroundBoxes from 225 DOM divs to single canvas element (d89c534)
  • rewrite gradient border with @property CSS angle animation (d8b83cc)
  • rewrite HoverBorderGradient with CSS rotate instead of framer-motion (e95db23)
  • route PendingGiftCard to gift activation tab instead of landing endpoint (8ab740f)
  • safe error handling and numeric client_id in OIDC login (45e68ff)
  • second round review fixes for merge UI (aa26059)
  • send Bearer token on email register (link to Telegram account) (68e6ce1)
  • show actual connected devices count instead of device limit (a819f30)
  • show all campaigns in assign list, add dual links and bonus details (a72042d)
  • show email for OAuth/email users in traffic table (a8ea5c9)
  • show fallback when tariff has no available periods for renewal (ea06ad1)
  • show infinity symbol for unlimited traffic on landing page (bda95ed)
  • show locations count instead of servers on tariff cards (ecc089d)
  • show nav labels from 2xl (1536px) instead of xl (1280px) (3bae6cf)
  • show progress bar instead of dots when device_limit > 10 (d567817)
  • show total purchase count instead of paid on admin landings (b9f1f59)
  • stack promo offer discounts with promo group discounts (321bedc)
  • stop beams background from causing UI flickering in browser (7e89cce)
  • stop WS reconnect loop on auth rejection (code 1008) (2efce0e)
  • stretch low-res Aurora canvas to fill viewport (23f56af)
  • subscription UI improvements - expired card, duplicate badges, live countdown (f4d7a2c)
  • support method query param fallback for external browser redirects (7ce5341)
  • support OIDC mode in TelegramLinkWidget for account linking (880b2d4)
  • support VK ID OAuth 2.1 device_id in frontend (60f16e6)
  • theme custom colors not persisting after navigation (174fefd)
  • theme custom colors save button not appearing (ab80e31)
  • tile noise texture instead of stretching on large screens (f652936)
  • unify device manager into additional options card with unbounded dot selector (6dc8ca0)
  • use correct translation key for inactive campaign badge (8207368)
  • use openTelegramLink for CryptoBot payment to open invoice in Telegram (fc0dd39)
  • use platform-conditional replace for QR navigation to preserve Telegram back behavior (7bb75aa)
  • use short 12-char code in bot and cabinet share links (73d67bc)
  • wheel lands on correct prize sector for Stars payment spins (22bda66)
  • widen column resize touch target for mobile (c54cc9e)
  • widen column resize touch target for mobile devices (da273d6)
  • админ-редактор — системные методы оплаты, реальные периоды тарифов, фильтрация на публичной странице (e01c9f5)
  • безопасность и UX лендингов — 16 исправлений (3cea482)
  • заменить Tailwind green/emerald классы на success из темы (86f75f2)
  • заменить хардкодный зелёный (#3EDBB0) на акцентный цвет из темы (d526d09)
  • кнопка сохранения ручной темы не появлялась (017a6fa)
  • поддержка режима «both» — показ кнопки контакта вместе с тикетами (f960d5f)
  • скрыть плашку верификации email при выключенной верификации (11e8191)

Performance Improvements

  • add Zustand selectors to prevent cascading re-renders (03ad255)
  • eagerly load Dashboard to improve LCP on main route (5c1be14)
  • extract locales into separate chunk (2c126f5)
  • extract Twemoji options to module-level const (17b2f2e)
  • fix critical WebGL GPU resource leaks in Aurora (9a84e13)
  • fix GPU-heavy CSS patterns (8604930)
  • fix render cycle in useBranding and conditional polling (30ece69)
  • improve LCP — move font loading to HTML, defer logo preload (962dd43)
  • lazy-load locale files per language instead of bundling all (9ae9ccc)
  • optimize animated backgrounds for mobile — reduce GPU load and memory pressure (a933f66)
  • prefetch background chunk on page load from localStorage cache (44d88f7)
  • reduce Aurora animated background GPU load by ~95% (56788b1)
  • remove permanent GPU layer promotion from cards to fix flickering (fe32322)
  • throttle theme color picker, rewrite beams with CSS animation (d019953)

Reverts

  • remove device manager redesign, restore original device UI (71a0111)
  • remove user-facing reset traffic toggle (4a68347)

1.35.0 (2026-03-17)

Features

  • deep link авторизация при блокировке oauth.telegram.org (6a1a9f5)

Bug Fixes

  • deep link auth timer cleanup and reliability (3d95025)
  • recursive setTimeout, Strict Mode guard, isAxiosError (b350003)
  • скрыть плашку верификации email при выключенной верификации (11e8191)

1.34.1 (2026-03-16)

Bug Fixes

  • поддержка режима «both» — показ кнопки контакта вместе с тикетами (f960d5f)

1.34.0 (2026-03-14)

Features

  • dual referral links UI (bot + cabinet) with independent copy states (e023373)

Bug Fixes

  • resolve all 14 ESLint warnings across the codebase (885524a)
  • resolve all 14 ESLint warnings across the codebase (62188b8)

1.33.2 (2026-03-13)

Bug Fixes

  • resolve telegram auth token expiration and clean up codebase (c0b834a)
  • resolve telegram auth token expiration and clean up codebase (2dab25c)

1.33.1 (2026-03-13)

Bug Fixes

  • correct locale loader type to support nested translation objects (ab03947)
  • correct locale loader type to support nested translation objects (682b6b7)

1.33.0 (2026-03-13)

Features

  • add LIMITED subscription status support with traffic-exhausted UX (b4f9f33)

Performance Improvements

  • lazy-load locale files per language instead of bundling all (9ae9ccc)

1.32.0 (2026-03-12)

Features

  • add show_in_gift toggle UI for tariffs in admin panel (5a5a987)

Bug Fixes

  • handle Telegram Stars payment for gift subscriptions via openInvoice (01e811b)

1.31.0 (2026-03-11)

Features

  • add gifts tab to admin user detail page (695ab42)
  • desktop nav expand-on-hover with larger icons (8dab6dc)
  • display promo group and active discount banners on gift page (03c9e73)
  • responsive desktop nav — icon-only on lg, icon+text on xl (e7cd370)

Bug Fixes

  • desktop nav always icon-only with tooltips (f0777f0)
  • display zero-amount transactions with neutral styling (6fd76c8)
  • show nav labels from 2xl (1536px) instead of xl (1280px) (3bae6cf)

1.30.0 (2026-03-10)

Features

  • gift subscription redesign — code-only purchase + 3-tab UI (af3e535)
  • show localized error for self-activation attempt (7549ae7)
  • split my gifts into Active/Activated/Received sections (51ec799)

Bug Fixes

  • activation broken — token uppercased + wrong env var for bot username (d852bfe)
  • add null guard for purchase_token before rendering CodeOnlySuccessState (51cc122)
  • CopiedToast not visible due to CSS transform context (39bdf8b)
  • gift code display + share modal backdrop (a627eb0)
  • gift UI improvements — declension, GB display, share modal, deep links (1bafcca)
  • hide Quick Renew for expired trial subscriptions (8b056e0)
  • remove dark backdrop overlay from share modal (b213535)
  • replace orphaned shareModal i18n keys in GiftResult (0322974)
  • route PendingGiftCard to gift activation tab instead of landing endpoint (8ab740f)
  • use short 12-char code in bot and cabinet share links (73d67bc)

1.29.1 (2026-03-10)

Bug Fixes

  • daily tariff renewal uses purchaseTariff instead of renewSubscription (8629cfe)
  • show fallback when tariff has no available periods for renewal (ea06ad1)

1.29.0 (2026-03-09)

Features

  • add button reordering within rows and replace modal with inline add panel (082471b)
  • add gift navigation, routes, and i18n translations (7890d48)
  • add gift subscription API client and feature flag (a495205)
  • add gift subscription toggle to admin branding settings (9542607)
  • add GiftSubscription and GiftResult pages (814b1f5)
  • add gradient fade indicators to scrollable desktop nav (622172f)
  • add menu editor tab with drag-and-drop rows, custom URL buttons, and button configuration (23aa86f)
  • add open_in setting for custom buttons (external browser / Telegram miniapp) (638844e)
  • read gift warning from status response, soften poll error state (4322d58)

Bug Fixes

  • add missing nameRequired i18n key for promo group form validation (78fda22)
  • admin promo groups - add default toggle, fix threshold reset to 0 (9c7ab4b)
  • harden gift subscription frontend after multi-agent review (6ea1de2)
  • make desktop nav horizontally scrollable on narrow screens (ab7d1b7)
  • remove bg-dark-950 from gift pages to preserve animated background (c8ec221)
  • remove noreferrer from payment links to preserve Referer header (45203da)
  • restore session from refresh token when access token is missing (dc740ae)
  • support OIDC mode in TelegramLinkWidget for account linking (880b2d4)

1.28.0 (2026-03-09)

Features

  • add dedicated TopUpResult page for payment return flow (b591228)
  • support disabled daily subscription status in cabinet UI (7940410)

Bug Fixes

  • cover all payment provider statuses in TopUpResult (8897561)
  • device purchase guard condition and cache invalidation (115c684)
  • force fresh balance data on purchase-options query (69a8fe8)
  • support method query param fallback for external browser redirects (7ce5341)

1.27.0 (2026-03-08)

Features

  • add gift purchase UI states for telegram recipients (eed077b)
  • unified device manager with dot-based selector (edb7ef0)

Bug Fixes

  • add purchase-options cache invalidation on balance changes (f1102d2)
  • mobile layout overflow on landing page (9aae9cc)
  • show infinity symbol for unlimited traffic on landing page (bda95ed)
  • unify device manager into additional options card with unbounded dot selector (6dc8ca0)
  • use platform-conditional replace for QR navigation to preserve Telegram back behavior (7bb75aa)

Reverts

  • remove device manager redesign, restore original device UI (71a0111)

1.26.0 (2026-03-07)

Features

  • add configurable animated background for landing pages (a404690)
  • add landing page statistics page with recharts (3019019)
  • add purchases list with pagination to landing stats page (887b13d)

Bug Fixes

  • allow animated background to show through on landing pages (66bb86a)
  • rename duplicate 'purchases' i18n key to 'purchaseCount' (0ce74ea)
  • replace deprecated Telegram Login Widget redirect with callback (32091d3)
  • send Bearer token on email register (link to Telegram account) (68e6ce1)

1.25.0 (2026-03-07)

Features

  • add discount UI for landing pages (f7afa00)
  • add external squad selection to tariff admin form (bc45294)
  • add i18n translations and admin category for Telegram OIDC (c221c6e)
  • add landings permission section translations for role editor (5228b2d)
  • add payment sub-option selection on quick purchase page (58e93cd)
  • add sub-options UI for landing payment methods + extract components (d0be127)
  • add user filter chips and resource types to audit log (4072274)
  • guest purchase activation UI & landing editor improvements (b852e1e)
  • guest purchase cabinet credentials UI (d228d99)
  • migrate Telegram Login Widget to v23 with admin-configurable settings (2c65ca8)
  • TelegramLoginButton with OIDC popup + legacy widget fallback (91f0e9e)
  • мультиязычные лендинги + переключатель языка + исправления по ревью (ab13616)
  • публичные лендинг-страницы для быстрой покупки VPN-подписок (8b5d777)

Bug Fixes

  • adapt admin landings list for mobile layout (b7c7dec)
  • add pagination to campaigns list (46f640a)
  • add unmount safety guard to OIDC callback handler (dfa7a09)
  • address code review findings for TelegramLoginButton (5c11f12)
  • admin landing editor — tariff period mapping and cleanup (6a92814)
  • auto-select single sub-option and remove unused return_url field (83fbd0e)
  • handle Pydantic validation errors in notify + nullify empty optional fields (9bd58cb)
  • landing list crash — title is now LocaleDict, not string (6755c1d)
  • mobile layout and period label translations for quick purchase landing (6d5c6fb)
  • OIDC login UX improvements from review (b335d66)
  • prevent buyer from activating gift pending subscription (97959b0)
  • safe error handling and numeric client_id in OIDC login (45e68ff)
  • show total purchase count instead of paid on admin landings (b9f1f59)
  • админ-редактор — системные методы оплаты, реальные периоды тарифов, фильтрация на публичной странице (e01c9f5)
  • безопасность и UX лендингов — 16 исправлений (3cea482)

1.24.0 (2026-03-05)

Features

  • account linking and merge UI for cabinet (93f97d4)
  • account merge flow — merge redirect, error handling, server-complete linking (2fc0759)
  • add sales_stats RBAC permission section to frontend (262303d)
  • add Telegram account linking UI with CSRF protection (a6fabb1)
  • open OAuth linking in external browser from Telegram Mini App (7c30a1e)
  • кликабельные имена пользователей в последних платежах (e278fec)

Bug Fixes

  • accessibility, query cache clear, post-merge navigation (e447e99)
  • add Referrer-Policy to prevent merge token leakage via Referer header (584f002)
  • double-click guard on link, wall-clock timer, blur cleanup (8ad0500)
  • harden merge UI and improve error handling (58cf1e3)
  • merge: accessibility, token guard, state cleanup (579f47e)
  • move useState before useMutation for consistent hook ordering (fba4481)
  • prevent onBlur race cancelling unlink confirmation (3418ba9)
  • remove unused linkTelegramWidget i18n key from all locales (9b4a851)
  • replace window.confirm with inline confirmation for unlink (d0c01a0)
  • review findings — polling fallback, sessionStorage cleanup, UX (da1926f)
  • second round review fixes for merge UI (aa26059)
  • заменить Tailwind green/emerald классы на success из темы (86f75f2)
  • заменить хардкодный зелёный (#3EDBB0) на акцентный цвет из темы (d526d09)

1.23.1 (2026-03-04)

Bug Fixes

  • ordered list numbering in Info page shows correct sequence (8157ca5)
  • replace hardcoded green with theme-aware accent color (a3ddddf)

1.23.0 (2026-03-02)

Features

  • add admin sales statistics dashboard with 5 analytics tabs (a47c222)
  • add daily deposits by payment method chart (f012710)
  • add daily traffic & device purchase chart to addons stats (2235b3c)
  • add fullscreen QR code for subscription connection (4d14e3e)
  • add recharts analytics to admin campaign stats page (c7d05c4)
  • add reset traffic toggle on tariff switch (49fff8e)
  • display per-campaign stats on partner detail page (75a6149)
  • enhance sales stats with device stats, per-tariff charts, and dual-series trials (4622b4b)

Bug Fixes

  • add subscription tab to desktop nav, fix device dots overflow, show available referral balance (27f85a1)
  • align RecentPaymentItem types with backend schema (3f05039)
  • align TypeScript types with backend referral schemas (11343f4)
  • bar chart white hover cursor on dark theme (14e5f43)
  • block wheel spin without active subscription (821e991)
  • clean up expired trial card - remove redundant badge and subtitle (d2f02d6)
  • eliminate hover flickering across all pages (bdc201b)
  • improve campaign stats, shared chart components, and i18n coverage (673de08)
  • improve light theme visibility for dashboard and subscription cards (4cdff97)
  • improve light theme visibility for inner panels on subscription page (430b703)
  • isolate content layer from animated background to eliminate flickering (04eacf6)
  • move CTA button above additional options section (0bc817f)
  • partner system bugs - commission field, withdrawal UX, admin amount (e94d81f)
  • prevent countdown timer overflow on narrow mobile screens (96bcc76)
  • remove devices stat block, stretch countdown to full width (396f814)
  • render animated background via portal at z-index:-1 to stop implicit compositing (12c97a2)
  • replace framer-motion with CSS keyframes in boxes background (7f17d95)
  • resolve hover flickering caused by GPU layer destruction (d8cf430)
  • review fixes - Math.round kopecks, fa locale, admin list commission (82987fd)
  • rewrite BackgroundBoxes from 225 DOM divs to single canvas element (d89c534)
  • show progress bar instead of dots when device_limit > 10 (d567817)
  • stop beams background from causing UI flickering in browser (7e89cce)
  • subscription UI improvements - expired card, duplicate badges, live countdown (f4d7a2c)
  • support VK ID OAuth 2.1 device_id in frontend (60f16e6)
  • tile noise texture instead of stretching on large screens (f652936)

Performance Improvements

  • optimize animated backgrounds for mobile — reduce GPU load and memory pressure (a933f66)
  • remove permanent GPU layer promotion from cards to fix flickering (fe32322)
  • throttle theme color picker, rewrite beams with CSS animation (d019953)

Reverts

  • remove user-facing reset traffic toggle (4a68347)

1.22.0 (2026-02-25)

Features

  • adapt dashboard and subscription page for light theme (f474067)
  • add animated gradient border to Connect Device buttons (70e1ed6)
  • add dashboard sub-components for subscription cards and stats grid (909374d)
  • add fonts, animations, and shared utilities for dashboard redesign (7e345fc)
  • add Freekassa SBP and card payment method icons and labels (a725265)
  • add HoverBorderGradient effect to key action buttons (3fb9606)
  • add TrafficProgressBar and Sparkline components (eb1f788)
  • replace animated backgrounds with Aceternity UI system (1a702a6)

Bug Fixes

  • animation config not updating for users after admin change (94ddf31)
  • boxes background not covering full screen (f16f96e)
  • boxes background not covering viewport (65afb29)
  • improve HoverBorderGradient visibility with accent colors and darker bg (4332c2b)
  • remove duplicate tariff info line, make tariff card clickable (bef5102)
  • remove gemini-effect and noise backgrounds, fix aurora animation (79ff741)
  • rewrite 5 broken background components from Aceternity sources (de97a03)
  • rewrite gradient border with @property CSS angle animation (d8b83cc)
  • rewrite HoverBorderGradient with CSS rotate instead of framer-motion (e95db23)
  • show actual connected devices count instead of device limit (a819f30)

Performance Improvements

  • eagerly load Dashboard to improve LCP on main route (5c1be14)
  • improve LCP — move font loading to HTML, defer logo preload (962dd43)
  • prefetch background chunk on page load from localStorage cache (44d88f7)

1.21.0 (2026-02-25)

Features

  • add granular user permissions (balance, subscription, promo_group, referral, send_offer) (3d6987f)
  • add per-channel disable settings and global settings to channel admin (48be067)
  • add RBAC permission system to admin cabinet frontend (874ee26)
  • add translations for permission sections and actions (80bfaca)
  • add weekdays condition to ABAC policies (a1a8dc2)
  • allow editing system roles (a050125)
  • improve audit log - translate actions, fix resource filter, show request body (5d0e353)
  • show query params in audit log details (66f7fcb)

Bug Fixes

  • add missing onError handlers on RBAC mutations (c4e3211)
  • guard user detail API calls with RBAC permission checks (bc5d832)
  • RBAC frontend type mismatches and translations (4c9c399)
  • RBAC policies page role handling and permission gates (56188b1)
  • redesign role revoke confirmation dialog (f829076)
  • replace broken modal with inline confirmation for role revoke (78e7099)

1.20.0 (2026-02-24)

Features

  • add channel edit in admin, hide subscribed channels in blocking screen (5a55892)
  • add multi-channel subscription blocking UI and admin management (a767fe9)

1.19.1 (2026-02-23)

Bug Fixes

  • add max attribute to expected referrals input (d1043e8)
  • add resend email cooldown and allow email change for all auth types (91d567f)
  • correct memory display to use actual usage instead of cache-inclusive (67bacd3)
  • detect Telegram account switch across tab closes (ee6ec59)
  • parse raw query string for deep link params to avoid double-decode (ed65c29)
  • plug memory leaks in blob URLs and traffic cache (7cf7273)
  • preserve + chars in deep link URL params for crypto links (65add9a)
  • remove double URL-decode in extractTelegramUserId (e8acfee)
  • render newlines in tariff description (0b4e825)
  • stack promo offer discounts with promo group discounts (321bedc)

Performance Improvements

  • add Zustand selectors to prevent cascading re-renders (03ad255)
  • extract Twemoji options to module-level const (17b2f2e)
  • fix critical WebGL GPU resource leaks in Aurora (9a84e13)
  • fix GPU-heavy CSS patterns (8604930)
  • fix render cycle in useBranding and conditional polling (30ece69)

1.19.0 (2026-02-18)

Features

  • add referral code persistence across all auth methods (2b2ead8)

1.18.0 (2026-02-18)

Features

  • add partner management and withdrawal admin pages (779fbf0)
  • admin partner settings page, partner section visibility toggle, custom requisites text (76d20fd)
  • partner-campaign integration in admin UI (959f892)
  • show blocked_count in broadcast admin UI (9cf8e09)
  • show partner campaign links with bonuses on referral page (8b33d82)
  • show traffic reset info in subscription card (271a005)
  • show traffic reset period on tariff cards (cfe9f64)

Bug Fixes

  • add missing cancelled filter key to withdrawal i18n in all locales (9b2742f)
  • hide empty blocks in connection installation guide (96f9a71)
  • reduce campaigns fetch limit to 100 (backend max) (be168a7)
  • remove duplicate min withdrawal amount on referral page (98ab109)
  • remove server/location count from tariff cards and confirmation (0fac368)
  • rename Серверы to Локации in subscription card (19e62fc)
  • show all campaigns in assign list, add dual links and bonus details (a72042d)
  • show locations count instead of servers on tariff cards (ecc089d)
  • stop WS reconnect loop on auth rejection (code 1008) (2efce0e)
  • use correct translation key for inactive campaign badge (8207368)

1.17.0 (2026-02-17)

Features

  • add web campaign links — capture, auth integration, bonus UI (e0dd21f)

1.16.1 (2026-02-16)

Bug Fixes

  • move cabinet_branding to sessionStorage and add WebGL availabili… (8200014)
  • move cabinet_branding to sessionStorage and add WebGL availability check (fc7ee6a)

1.16.0 (2026-02-15)

Features

  • add 'no color' option for button style customization (e586129)
  • add ButtonsTab for per-section button style customization (b289873)
  • add per-button enable/disable toggle and custom labels per locale (1a0a5ff)

Bug Fixes

  • normalize all API responses, add error handling and reset confirmation (150a1b2)
  • prevent button settings cards from overflowing in admin panel (54f1483)
  • wheel lands on correct prize sector for Stars payment spins (22bda66)

1.15.0 (2026-02-12)

Features

  • add admin pinned messages section (88cc0d9)
  • add admin pinned messages section (aa5113b)

1.14.1 (2026-02-12)

Bug Fixes

  • allow email change for unverified emails without code verification (a0b10e6)
  • handle unlimited traffic package selection and button text (1d6ec70)

1.14.0 (2026-02-11)

Features

  • compact login page with collapsible email, icon OAuth row, safe areas (45cbfb5)

Bug Fixes

  • guard oauthProviders with Array.isArray to prevent TypeError on Login page (f74e316)
  • harden OAuth login flow — open redirect, path traversal, info leak (a744b41)
  • remove colored background from logo on login page (6bf0af4)
  • remove redundant subtitle and register hint from login page (d596b05)
  • restore package-lock.json for CI (npm ci requires it) (069090a)
  • use openTelegramLink for CryptoBot payment to open invoice in Telegram (fc0dd39)

1.13.0 (2026-02-09)

Features

  • add empty state for connection page when no apps configured (fb25df6)
  • show affected subscriptions count on tariff deletion (f10a02c)

Bug Fixes

  • check apps before subscription on connection page (a4e6e35)
  • hide Telegram back button on bottom nav pages (03a7db5)
  • hide Telegram back button on bottom nav pages (e5ed6d0)
  • prevent useCloseOnSuccessNotification from firing on mount (0389acd)
  • remove @floating-ui from radix chunk to resolve circular dependency (772d83d)

Performance Improvements

  • extract locales into separate chunk (2c126f5)

1.12.0 (2026-02-08)

Features

  • add admin traffic packages and device limit management UI (2dfa520)
  • add admin updates page with release history (a15b3d4)
  • add device management UI in admin user card (6f31fbe)
  • add enrichment columns to admin traffic usage table (893c69a)
  • add inline referral commission editing in admin user card (92d206f)
  • add system info card to admin dashboard (ab0270a)
  • admin panel enhancements & release history (3bd9abb)
  • enable sorting on enrichment columns (5678dfd)
  • render GitHub markdown in release changelogs (0c34668)

Bug Fixes

  • show email for OAuth/email users in traffic table (a8ea5c9)

1.11.1 (2026-02-08)

Bug Fixes

  • hide backend URL from logo by fetching as blob (de09ea0)
  • stretch low-res Aurora canvas to fill viewport (23f56af)

Performance Improvements

  • reduce Aurora animated background GPU load by ~95% (56788b1)

1.11.0 (2026-02-08)

Features

  • admin traffic usage, session persistence, and UI improvements (2193df7)

Bug Fixes

  • persist refresh token across Telegram Mini App reopens (a449dd6)
  • persist refresh token across Telegram Mini App reopens (20ea200)

1.10.0 (2026-02-07)

Features

  • add admin traffic usage page (8c8fa40)
  • add admin traffic usage page with TanStack Table (a034a60)
  • add country filter and risk columns to traffic CSV export (471e2c8)
  • add node/status filters and custom date range to traffic page (90b38e3)
  • add node/status filters, custom date range, connected devices to traffic page (0301fd8)
  • add node/status filters, date range, devices to traffic page (e824945)
  • add promo group and promo offer management to AdminUserDetail (8bd3c00)
  • add tariff checkbox filter, column resizing to traffic page (cfb7ce7)
  • add traffic abuse risk assessment with color gradation (a6507b2)
  • node/status filters + custom date range for traffic page (8b113a5)
  • promo group & offer management in AdminUserDetail (280f4ae)
  • tariff checkbox filter + column resizing for traffic (c383c78)
  • traffic abuse risk assessment with color gradation (88f8e8b)
  • traffic page filters, risk assessment, country filter & CSV export (84cce93)

Bug Fixes

  • add client-side caching and smooth loading for traffic page (471c37b)
  • allow user column to shrink smaller on mobile (6aa8951)
  • allow user column to shrink smaller on mobile (12663a5)
  • client-side caching and smooth loading for traffic page (81fcf54)
  • column shrinking on mobile + country dropdown overflow (1aa0e7f)
  • enforce column maxWidth for proper shrinking on mobile + country dropdown positioning (060c9be)
  • improve risk assessment display with GB/d values (4fe96bc)
  • improve risk calculation display with actual GB/d values (e60b846)
  • widen column resize touch target for mobile (c54cc9e)
  • widen column resize touch target for mobile devices (da273d6)

1.9.0 (2026-02-07)

Features

  • add 1d and 3d period filters for node usage (f36ee60)
  • add 1d and 3d period filters for node usage (944b2ec)
  • add Info page link to desktop top navigation (fa48cc4)
  • add Info page link to desktop top navigation (18a14d6)
  • add OAuth 2.0 login UI (Google, Yandex, Discord, VK) (83aeae8)
  • add SVG brand icons for payment methods (c4f228f)
  • add ticket status buttons to inline chat (5664b28)
  • add ticket status change buttons to inline chat (dafa69f)
  • add tickets tab to admin user detail page (995c034)
  • add Twemoji for cross-platform emoji rendering (031396d)
  • add Twemoji for cross-platform emoji rendering (72b1089)
  • add user profile link button in ticket detail (d483d84)
  • brand-accurate payment method icons from favicons (e24afc4)
  • dual-channel broadcast form (Telegram + Email simultaneously) (772dcf7)
  • dual-channel broadcasts (Telegram + Email) (74f6c61)
  • enhance admin user detail with campaign, panel data, node usage (0083b47)
  • enhance admin user detail with campaign, panel data, node usage (7b19f14)
  • inline ticket chat in admin user detail (0b10cfe)
  • inline ticket chat in admin user detail (145d94a)
  • local period calculation and refresh button for node usage (64ea757)
  • local period calculation and refresh button for node usage (bc6985f)
  • move user action buttons to detail page and fix full delete (2490399)
  • move user actions to detail page, fix full delete (dad0c5b)
  • OAuth 2.0 login UI (Google, Yandex, Discord, VK) (b7aca0c)
  • support Telegram HTML formatting in privacy/offer content (fb055c0)
  • support Telegram HTML formatting in privacy/offer content (3e70008)
  • SVG иконки платёжных методов, фикс колеса удачи (2003052)
  • tickets tab in admin user detail (1426e46)
  • update payment method icons with brand-accurate favicon designs (33e878d)
  • user profile link in ticket detail (e0c9a89)

Bug Fixes

  • add country flags to node usage display (14b73f6)
  • add country flags to node usage display (80bad9d)
  • hide onboarding when blocking screen is active (af25e6a)
  • hide onboarding when blocking screen is active (4791a9f)
  • move theme save/cancel buttons outside collapsible section (7c30454)
  • remove incorrect ruble top-up prompt from fortune wheel (2c0d265)
  • remove payment method icons from admin pages (77e0edf)
  • remove payment method icons from admin pages (dd9ed83)
  • theme custom colors not persisting after navigation (174fefd)
  • theme custom colors save button not appearing (ab80e31)
  • кнопка сохранения ручной темы не появлялась (017a6fa)

1.8.0 (2026-02-06)

Features

  • add blacklisted user blocking screen (c5cad20)
  • add blacklisted user blocking screen (5a8c1e7)
  • add drag-and-drop tariff sorting in admin panel (ef365db)
  • connect RemnaWave baseTranslations and fix SVG icons (a50dea9)
  • convert ConnectionModal to /connection page with crypto deep links (445dd06)
  • drag-and-drop tariff sorting (6f3abf8)
  • render original RemnaWave blocks on connection page (79afe3a)
  • subscription: auto-skip server selection step when only one available (998f9db)
  • subscription: auto-skip server selection when only one available (e5a1c04)
  • use app-level svgIconKey for app logos and improve tile contrast (65a6714)
  • use platform displayName from RemnaWave config in connection page (53940a0)

Bug Fixes

  • add bottom padding to last block in minimal layout (5a69496)
  • add light theme support to connection page (88d9377)
  • add retry logic for Telegram Mini App auth failures (a1c0ceb)
  • full-screen page loader and remove bg flash on transitions (30d984c)
  • increase bottom spacing for installation guide blocks (c669d2e)
  • match header icon sizes for theme toggle and logout buttons (48eee9f)
  • prevent header layout shift and unify action button styles (d900c6f)
  • prevent header nav shift with invisible theme button placeholder (50e675b)
  • remove local toast from AdminPaymentMethods, use useNotify (692e45a)
  • remove nested scroll constraint from tariff servers and promo groups (c944e9e)
  • remove space-y-0 that overrides block margins in minimal layout (c4f1070)
  • resolve RemnaWave SVG icons and icon colors on connection page (91afbbf)
  • resolve Telegram Mini App auth failures on all platforms (7df751e)
  • restore platform dropdown with SVG icon and widen app chips to match original (966343a)
  • restyle app cards to match original RemnaWave UI and debug icons (42e70f7)
  • standardize admin form inputs, validation, and sync with backend constraints (6e7eb36)
  • subscription: display promo discounts for devices, traffic and tariff switch (6c22a52)
  • subscription: display promo group discounts in device/traffic purchase and tariff switch (46b93ef)
  • theme preset persistence, page transition flash, and wheel LED jank (f54ad4e)
  • unify connection page design with global styles and add platform SVG icons (4866003)
  • unify toast notifications and improve visual/behavior (66a6697)
  • use redirect page for all platforms and fallback to regular subscription URL (5111b63)

1.7.0 (2026-02-04)

Features

  • add Stars payment confirmation and admin validation (e6f8ae6)
  • replace payment modals with page-based navigation (576893f)

Bug Fixes

  • dim accent color for background blobs (bb32cd8)
  • inline Stars confirmation and unified payment type display (8068f84)
  • prevent payment type reset after wheel spin (4499c9a)
  • unify wheel Stars payment across desktop and mobile (02640d1)
  • update Aurora colors reactively without recreating WebGL context (59a251c)

1.6.2 (2026-02-04)

Bug Fixes

  • add theme toggle to desktop header and sync theme across components (bf00d37)
  • Aurora animation ignoring light theme background color (c1dc019)
  • replace individual light theme overrides with CSS variable swap (9ac00c9)
  • use dynamic champagne variables for light theme palette swap (ecd912b)
  • use theme surface and background colors for Aurora animation (a91e055)

1.6.1 (2026-02-04)

Bug Fixes

  • add fallback recovery for Telegram popup callback not firing (7ac7db4)
  • add HMR guard to prevent ConcurrentCallError on SDK double-init (bcbda17)
  • get fresh Telegram WebApp reference on each popup call (792fb1e)
  • prevent duplicate Telegram popup opening (71647eb)
  • prevent popup cascade when Telegram callback doesn't fire (2d00a5c)
  • resolve SDK v3 mount errors, back button and fullscreen not working (61e3910)
  • use direct dialog.popup call instead of useDestructiveConfirm (ef77276)

1.6.0 (2026-02-04)

Features

  • add animated MovingGradient background (24781f3)
  • add autocomplete to settings search (e5096d5)
  • add locales for user search in promo offer sending (0c9d092)
  • add Telegram/Email channel selection to broadcast create page (0773afd)
  • add useNotify hook for unified notifications (6f4d1ef)
  • add user search autocomplete for promo offer sending (fc92267)
  • extract promocodes and promo groups into separate pages (a96ddde)
  • improve tariff builder UI (e19767a)
  • Linear-style UI redesign with improved mobile experience (b953ee0)
  • migrate to @tma.js/sdk-react for Telegram Mini App (edb5be0)
  • move campaign statistics to dedicated page (1027deb)
  • move ticket settings to dedicated page (ead4606)
  • redesign fortune wheel UI and add to mobile nav (7e2802c)
  • redesign fortune wheel with improved UX (494285b)
  • replace broadcast creation modal with dedicated page (175516e)
  • replace campaign creation modal with dedicated page (bce4d94)
  • replace MovingGradient with Aurora WebGL background (cffef41)
  • replace tariff creation modal with dedicated page (dc17695)
  • scroll to tariffs section when clicking discount badge (3613294)

Bug Fixes

  • add full i18n support for RemnaWave section and improve sync UI (ed86dfa)
  • add missing i18n keys for broadcast detail page (c60a242)
  • add placeholders to all tariff form number inputs (8cd95b8)
  • add Russian translation for device limit reduction reason (e884860)
  • add Telegram header padding for Android fullscreen mode (093c9f2)
  • AdminTariffCreate back button and daily tariff colors (d623cd4)
  • allow clearing number inputs and add validation (47e28ee)
  • Aurora uses theme colors from API with blur overlay (55ae55f)
  • disable Telegram swipe-to-close globally to prevent accidental app closures (9b0be28)
  • disable Telegram vertical swipes during drag operations (8deca2f)
  • handle unmounted SDK components gracefully (baa57b9)
  • improve admin user detail tabs scroll and sync buttons design (45dac03)
  • improve header layout for mobile - stack button below title (643d4fd)
  • improve mobile layout for bandwidth and add pluralization support (e9af285)
  • improve tariff delete button visibility (5b30f24)
  • improve Toast visibility and allow tariff deletion with subscriptions (36cc01c)
  • make Aurora colors vibrant and increase speed (851e6a3)
  • promo offer button mobile layout (1d4a99c)
  • remove dark backgrounds causing black rectangles (2926a5a)
  • remove page transition animations to prevent flashing (dda8323)
  • remove quick actions section and optimize build chunks (de613d9)
  • remove small discount badge and improve large badge UX (822b9a6)
  • restore page animations, improve checkbox visibility (5ad5e8d)
  • revert to native Telegram WebApp API, remove SDK usage (6f8bc4f)
  • scroll to start of tariffs section and wait for data to load (c815ac2)
  • UI improvements - reduce Android header, hide mobile scrollbar, disable animations in Telegram, consistent menu overlay (768b340)
  • unify card styles across the project (4a25d8d)
  • use native Telegram popup for email preview restriction (7aeb47f)
  • use pill-style tabs in admin user detail page (09584fc)
  • use RemnaWave icon in admin panel menu (4034b4d)
  • use single shared WebSocket connection and optimize build chunks (f6854c6)
  • wrap all SDK isSupported() calls in try-catch (e5ea09d)