Commit Graph

1040 Commits

Author SHA1 Message Date
Fringg
471c37b7b3 fix: add client-side caching and smooth loading for traffic page
- Add 5-min in-memory cache in API layer keyed by request params
- Replace blocking spinner with animated progress bar during refresh
- Keep stale data visible while fetching (opacity dim)
- Prefetch all periods in background for instant switching
2026-02-07 09:47:02 +03:00
Egor
c383c78213 Merge pull request #183 from BEDOLAGA-DEV/feat/traffic-tariff-filter
feat: tariff checkbox filter + column resizing for traffic
2026-02-07 09:32:18 +03:00
Fringg
cfb7ce72f2 feat: add tariff checkbox filter, column resizing to traffic page
- TariffFilter dropdown with checkboxes for filtering by tariff
- Column resizing via TanStack Table resize handles
- Add allTariffs locale key to all 4 languages
- Pass tariffs param to API
2026-02-07 09:30:23 +03:00
Egor
8c8fa407f5 Merge pull request #182 from BEDOLAGA-DEV/feat/admin-traffic-usage
feat: add admin traffic usage page
2026-02-07 09:05:54 +03:00
Fringg
a034a6068c feat: add admin traffic usage page with TanStack Table
Add AdminTrafficUsage page showing per-user traffic statistics by node
with period filtering (1/3/7/14/30d), server-side sorting, search,
pagination, and CSV export. Uses @tanstack/react-table with manual
sorting and dynamic node columns.
2026-02-07 09:04:55 +03:00
Egor
280f4aef0d Merge pull request #181 from BEDOLAGA-DEV/feat/admin-user-promo-management
feat: promo group & offer management in AdminUserDetail
2026-02-07 08:15:55 +03:00
Fringg
8bd3c007bc feat: add promo group and promo offer management to AdminUserDetail
- Info tab: promo group card with inline dropdown to change/remove group
- Balance tab: active promo offer display with deactivate button
- Balance tab: send promo offer form (discount %, valid hours)
- Add deactivateDiscount API method to promocodesApi
- Add locale keys for ru/en/zh/fa
- Fix race condition in subscription create (stale state read)
- Fix unhandled promise in handleInlineConfirm
- Remove unused legacy adminUsers block from ru.json
2026-02-07 08:10:44 +03:00
Egor
0dd6c7ea1c Merge pull request #180 from BEDOLAGA-DEV/release-please--branches--main--components--cabinet-frontend
chore(main): release 1.9.0
2026-02-07 07:24:19 +03:00
github-actions[bot]
62272626b0 chore(main): release 1.9.0 2026-02-07 04:23:33 +00:00
Egor
afdf09b13e Merge pull request #179 from BEDOLAGA-DEV/dev
chore: sync dev → main (v1.9.0)
2026-02-07 07:22:56 +03:00
Fringg
de28463b79 chore: bump version to 1.9.0 2026-02-07 07:17:46 +03:00
Egor
fa48cc438b Merge pull request #178 from BEDOLAGA-DEV/feat/desktop-info-nav
feat: add Info page link to desktop top navigation
2026-02-07 07:11:32 +03:00
Fringg
18a14d64ea feat: add Info page link to desktop top navigation
The Info button was only accessible via mobile hamburger menu.
Added it to the desktop header nav bar between Support and Profile.
2026-02-07 07:11:09 +03:00
Egor
fb055c04e8 Merge pull request #177 from BEDOLAGA-DEV/feat/info-telegram-formatting
feat: support Telegram HTML formatting in privacy/offer content
2026-02-07 07:02:30 +03:00
Fringg
3e70008b81 feat: support Telegram HTML formatting in privacy/offer content
- Fix formatContent to handle mixed content (inline HTML + newlines)
- Only skip paragraph conversion for content with block-level HTML
- Add sanitizer support for <s>, <del>, <ins>, <tg-spoiler>
- Add prose styles for underline, strikethrough, and spoiler tags
- Light theme variants included
2026-02-07 07:02:24 +03:00
Egor
f36ee60c0b Merge pull request #176 from BEDOLAGA-DEV/feat/node-usage-more-periods
feat: add 1d and 3d period filters for node usage
2026-02-07 06:55:48 +03:00
Fringg
944b2eca02 feat: add 1d and 3d period filters for node usage 2026-02-07 06:55:42 +03:00
Egor
64ea75738f Merge pull request #175 from BEDOLAGA-DEV/feat/node-usage-local-period
feat: local period calculation and refresh button for node usage
2026-02-07 06:51:25 +03:00
Fringg
bc6985f522 feat: local period calculation and refresh button for node usage
- Load panel + node data once on tab open (not per period change)
- Compute 7/14/30 day totals locally from cached daily data
- Add refresh button to subscription section
- No API calls when switching periods
2026-02-07 06:50:50 +03:00
Egor
14b73f6db5 Merge pull request #174 from BEDOLAGA-DEV/fix/node-usage-accessible-nodes
fix: add country flags to node usage display
2026-02-07 06:22:58 +03:00
Fringg
80bad9d623 fix: add country flags to node usage display
- Add country_code to UserNodeUsageItem type
- Add getCountryFlag helper for country code to emoji mapping
- Show country flag next to node name in usage bars
2026-02-07 06:22:08 +03:00
Egor
0083b47d04 Merge pull request #173 from BEDOLAGA-DEV/feature/admin-user-detail-enhanced
feat: enhance admin user detail with campaign, panel data, node usage
2026-02-07 06:09:55 +03:00
Fringg
7b19f14dc3 feat: enhance admin user detail with campaign, panel data, node usage
- Add campaign card and referrals list to info tab
- Add panel config/links, live traffic, connection info to subscription tab
- Add node usage bars with 7/14/30 day period selector
- Add getPanelInfo/getNodeUsage API methods and types
- Add 18 new i18n keys across 4 languages
2026-02-07 06:07:13 +03:00
Egor
e0c9a89d34 Merge pull request #172 from BEDOLAGA-DEV/feat/ticket-user-profile-link
feat: user profile link in ticket detail
2026-02-07 05:39:51 +03:00
Fringg
d483d84f1c feat: add user profile link button in ticket detail
Add a button next to the ticket sender info that navigates to the
user's admin detail page. Localized in all 4 languages.
2026-02-07 05:39:30 +03:00
Egor
5664b283d6 Merge pull request #171 from BEDOLAGA-DEV/fix/ticket-status-buttons
feat: add ticket status buttons to inline chat
2026-02-07 05:36:32 +03:00
Fringg
dafa69f736 feat: add ticket status change buttons to inline chat
Add status buttons (open/pending/answered/closed) to the ticket
chat view in admin user detail page.
2026-02-07 05:36:04 +03:00
Egor
0b10cfecf3 Merge pull request #170 from BEDOLAGA-DEV/feat/user-tickets-inline-chat
feat: inline ticket chat in admin user detail
2026-02-07 05:30:53 +03:00
Fringg
145d94adcd feat: inline ticket chat in admin user detail
Replace ticket navigation with inline chat view. Clicking a ticket
opens the conversation directly within the user detail page with
message history, media support, and reply form.
2026-02-07 05:30:31 +03:00
Egor
1426e46c84 Merge pull request #169 from BEDOLAGA-DEV/feat/user-tickets-tab
feat: tickets tab in admin user detail
2026-02-07 05:22:02 +03:00
Fringg
995c0348dc feat: add tickets tab to admin user detail page
Add ability to view user's tickets directly from the user detail page.
Backend gets user_id filter on tickets endpoint, frontend shows ticket
list with status badges, message preview and navigation to ticket.
2026-02-07 05:21:16 +03:00
Egor
77e0edf12d Merge pull request #168 from BEDOLAGA-DEV/fix/remove-admin-payment-icons
fix: remove payment method icons from admin pages
2026-02-07 05:09:18 +03:00
Fringg
dd9ed83b08 fix: remove payment method icons from admin pages 2026-02-07 05:08:57 +03:00
Egor
74f6c61eb3 Merge pull request #167 from BEDOLAGA-DEV/feat/dual-channel-broadcasts
feat: dual-channel broadcasts (Telegram + Email)
2026-02-07 05:03:57 +03:00
Fringg
772dcf7236 feat: dual-channel broadcast form (Telegram + Email simultaneously)
Replace single channel radio with independent toggles allowing both
channels to be enabled at once with separate audiences and content.
When both enabled, sends two sequential API requests.
2026-02-07 04:59:02 +03:00
Fringg
f8b74f3cfb Revert "Merge pull request #166 from BEDOLAGA-DEV/feat/payment-icons-from-favicons"
This reverts commit e24afc4b6f, reversing
changes made to 017a6fae35.
2026-02-07 04:41:07 +03:00
Egor
e24afc4b6f Merge pull request #166 from BEDOLAGA-DEV/feat/payment-icons-from-favicons
feat: brand-accurate payment method icons from favicons
2026-02-07 04:15:31 +03:00
Fringg
33e878da84 feat: update payment method icons with brand-accurate favicon designs
Replace generic placeholder icons with designs based on actual favicon
assets from payment provider websites. Updated icons for Platega,
Tribute, WATA, CloudPayments, Kassa AI, YooKassa, CryptoBot, Heleket,
MulenPay, PAL24, and Freekassa with correct brand colors and marks.
2026-02-07 04:14:35 +03:00
Fringg
cefc92dcf2 Merge remote-tracking branch 'origin/feature/oauth-authorization' into feat/payment-icons-from-favicons 2026-02-07 04:11:21 +03:00
Egor
017a6fae35 Merge pull request #165 from BEDOLAGA-DEV/fix/theme-save-button
fix: кнопка сохранения ручной темы не появлялась
2026-02-07 03:46:19 +03:00
Egor
20030527f0 Merge pull request #164 from BEDOLAGA-DEV/feature/oauth-authorization
feat: SVG иконки платёжных методов, фикс колеса удачи
2026-02-07 03:45:50 +03:00
Fringg
ab80e311b5 fix: theme custom colors save button not appearing
savedColorsRef was unconditionally updated in the serverColors sync
effect, including when queryClient.setQueryData was called from
updateDraftColor for live preview. This made hasUnsavedChanges always
false, hiding the save/cancel buttons. Move savedColorsRef update
inside the sync condition so it only updates when no local edits exist.
2026-02-07 03:45:17 +03:00
Fringg
2c0d265ff5 fix: remove incorrect ruble top-up prompt from fortune wheel
Trial users saw an "insufficient balance" prompt suggesting to top up
rubles, but the wheel only accepts Telegram Stars (via invoice) or
subscription days. Stars payment via invoice doesn't require ruble
balance, so the spin button should not be disabled for it.
2026-02-07 03:36:31 +03:00
Fringg
c4f228fba6 feat: add SVG brand icons for payment methods
Replace emoji icons with proper SVG brand-colored icons for all 12
payment providers (YooKassa, CloudPayments, CryptoBot, Telegram Stars,
Heleket, MulenPay, PAL24, Platega, WATA, Freekassa, Tribute, Kassa AI).
2026-02-07 03:36:25 +03:00
Egor
b7aca0cc1c Merge pull request #163 from BEDOLAGA-DEV/feature/oauth-authorization
feat: OAuth 2.0 login UI (Google, Yandex, Discord, VK)
2026-02-07 02:38:01 +03:00
Fringg
83aeae81b8 feat: add OAuth 2.0 login UI (Google, Yandex, Discord, VK)
- Add OAuthProvider type and extend User.auth_type union
- Add OAuth API methods (providers, authorize, callback)
- Add loginWithOAuth to auth store
- Create OAuthCallback page with state validation
- Create OAuthProviderIcon component with brand SVGs
- Add OAuth buttons to Login page between Telegram and Email
- Add OAuth callback route to App.tsx
- Add translations for ru, en, zh, fa
2026-02-07 01:59:05 +03:00
Egor
af25e6a1b8 Merge pull request #162 from BEDOLAGA-DEV/fix/onboarding-over-blocking-screen
fix: hide onboarding when blocking screen is active
2026-02-07 01:21:26 +03:00
Fringg
4791a9f196 fix: hide onboarding when blocking screen is active
Onboarding tutorial was appearing on top of the channel subscription
screen because Dashboard still mounts behind BlockingOverlay.
Added blockingType check to prevent onboarding from triggering.
2026-02-07 01:19:22 +03:00
Egor
031396dd45 Merge pull request #161 from BEDOLAGA-DEV/feat/twemoji-cross-platform-emoji
feat: add Twemoji for cross-platform emoji rendering
2026-02-07 01:10:53 +03:00
Fringg
72b1089af7 feat: add Twemoji for cross-platform emoji rendering
Wrap the app in react-twemoji to replace native Unicode emoji with
Twemoji SVGs from CDN. Fixes ugly/broken emoji on Windows.
2026-02-07 01:09:35 +03:00