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)