mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 09:33:46 +00:00
208 KiB
208 KiB
Changelog
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
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)