Commit Graph

998 Commits

Author SHA1 Message Date
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
Egor
174fefddef Merge pull request #160 from BEDOLAGA-DEV/fix/theme-colors-save-button
fix: theme custom colors not persisting after navigation
2026-02-07 01:02:26 +03:00
Fringg
7c304545f8 fix: move theme save/cancel buttons outside collapsible section
Save and Cancel buttons were hidden inside the collapsible "Custom Colors"
section, so manual color changes were lost on navigation. Moved them to
the top level so they are always visible when there are unsaved changes.
2026-02-07 01:01:08 +03:00
Egor
dad0c5b756 Merge pull request #159 from BEDOLAGA-DEV/feature/move-user-actions-to-detail
feat: move user actions to detail page, fix full delete
2026-02-07 00:50:02 +03:00
Fringg
2490399f8e feat: move user action buttons to detail page and fix full delete
- Add fullDeleteUser API method calling DELETE /admin/users/{id}/full
- Add Reset trial, Reset subscription, Disable, Delete buttons to AdminUserDetail info tab
- Implement inline confirm pattern (click → "Are you sure?" → execute, 3s timeout)
- Delete now calls /full endpoint removing user from bot DB and Remnawave panel
- Remove UserActionsMenu dropdown, ConfirmationModal and related code from AdminUsers list
- Update delete confirmation text in ru/en locales to reflect full deletion
2026-02-07 00:48:56 +03:00
c0mrade
9e91b67660 Merge pull request #158 from BEDOLAGA-DEV/main
main merge
2026-02-06 23:49:06 +03:00
c0mrade
c07d3a8525 Merge pull request #157 from BEDOLAGA-DEV/release-please--branches--main--components--cabinet-frontend
chore(main): release 1.8.0
2026-02-06 23:37:46 +03:00
github-actions[bot]
96dbfce6c1 chore(main): release 1.8.0 2026-02-06 20:35:09 +00:00
c0mrade
27324dde37 Merge pull request #156 from BEDOLAGA-DEV/dev
Release
2026-02-06 23:34:12 +03:00
c0mrade
c944e9ef0b fix: remove nested scroll constraint from tariff servers and promo groups 2026-02-06 23:26:43 +03:00
c0mrade
7df751ea35 fix: resolve Telegram Mini App auth failures on all platforms
- Skip token refresh/Bearer header for auth endpoints in request interceptor
- Wait for auth store initialization before attempting Telegram login
- Clear stale session tokens when init data changes (WebView persistence)
- Show backend error details instead of generic messages
2026-02-06 23:14:08 +03:00
c0mrade
a1c0ceba19 fix: add retry logic for Telegram Mini App auth failures
Auto-retry once on 401 with 1.5s delay, plus a manual retry button
with a hint to reopen the app if auth keeps failing.
2026-02-06 21:53:56 +03:00
c0mrade
692e45ad18 fix: remove local toast from AdminPaymentMethods, use useNotify
Remove inline Toast component, CheckIcon, and toastMessage state.
Use unified useNotify for order save/error notifications.
2026-02-06 20:23:18 +03:00
c0mrade
66a6697ea1 fix: unify toast notifications and improve visual/behavior
- Solid opaque background with colored left border instead of translucent gradient
- Max 3 visible toasts with oldest eviction
- Telegram safe area support via env(safe-area-inset-*)
- Dismiss by clicking anywhere on toast, removed X button
- Adaptive width: full-width on mobile, fixed on desktop
- AdminEmailTemplates: removed local toast, migrated to useNotify
- AdminUsers: migrated from useToast to useNotify
2026-02-06 20:13:18 +03:00
c0mrade
6e7eb36f76 fix: standardize admin form inputs, validation, and sync with backend constraints
- Unified all inputs to use .input CSS class, consistent label styles, and btn-primary/btn-secondary buttons
- Fixed number inputs to use number | '' pattern allowing field clearing without default replacement
- Added field-level validation with inline error borders and messages
- Synced frontend constraints with backend Pydantic schemas (maxLength, min/max values)
- Fixed toggle switch dimensions across all admin forms
2026-02-06 19:37:07 +03:00
c0mrade
88d9377adb fix: add light theme support to connection page
Add isLight-aware styling to all block renderers (cards, timeline,
accordion, minimal), BlockButtons, and InstallationGuide. Update
colorParser gradient functions to generate light-appropriate backgrounds.
Reduce wave blob opacity on light theme for better content readability.
2026-02-06 18:30:19 +03:00
c0mrade
5171890745 refactor: extract BlockButtons component from InstallationGuide
Move button rendering logic (URL validation, copy handler, icon
components) into a dedicated BlockButtons component. Remove
duplicate getLocalizedText/getBaseTranslation helpers from
Connection page controller.
2026-02-06 18:05:40 +03:00
c0mrade
6f3abf8260 Merge pull request #154 from BEDOLAGA-DEV/feat/tariff-sorting-dnd
feat: drag-and-drop tariff sorting
2026-02-06 17:36:33 +03:00
Fringg
ef365db16b feat: add drag-and-drop tariff sorting in admin panel
Implement DnD reorder for tariffs using @dnd-kit, matching the
pattern from AdminPaymentMethods. Add updateOrder API method
and i18n keys for all locales.
2026-02-06 17:30:11 +03:00
c0mrade
57a97efa4b Merge pull request #155 from BEDOLAGA-DEV/refactor/full-codebase-cleanup
Refactor/full codebase cleanup
2026-02-06 17:09:12 +03:00
c0mrade
50e675b6e9 fix: prevent header nav shift with invisible theme button placeholder 2026-02-06 16:55:55 +03:00
c0mrade
48eee9fac4 fix: match header icon sizes for theme toggle and logout buttons
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 16:55:55 +03:00
c0mrade
30d984c5d4 fix: full-screen page loader and remove bg flash on transitions 2026-02-06 16:55:55 +03:00
c0mrade
d900c6f152 fix: prevent header layout shift and unify action button styles
- Switch desktop header from flex justify-between to CSS grid (auto/1fr/auto)
  so center nav stays fixed regardless of right-side button count
- Update theme toggle and logout buttons to match bell/language style
  (rounded-xl border bg-dark-800/50)
2026-02-06 16:55:55 +03:00
c0mrade
f54ad4eb1f fix: theme preset persistence, page transition flash, and wheel LED jank
- ThemeTab: auto-save presets to server on apply so they persist across navigation
- PageLoader: add bg-dark-950 to prevent transparent flash during lazy-load transitions
- FortuneWheel: replace React state-based LED animation (10 re-renders/sec) with pure CSS @keyframes
2026-02-06 16:55:55 +03:00
c0mrade
562ab7abf7 refactor: full codebase cleanup, dependency updates, and lint fixes
Phase 0: Remove ~920 lines of dead code (ThemeBentoPicker, PromoDiscountBadge,
AdminLayout, SettingsSidebar, MovingGradient, EmptyState, miniapp API, unused
types/functions/transitions/skeleton helpers). Fix API barrel file (add 20 missing exports).

Phase 1: Add ErrorBoundary (app/page/widget levels), centralize constants,
add axios timeout, fix staleTime:0 in React Query.

Phase 2: Consolidate hexToHsl, extract email validation, fix duplicate code.

Phase 3: Fix auth race condition (await checkAdminStatus), memoize useCurrency,
add WebSocket message validation.

Phase 4: Extract useBranding, useFeatureFlags, useScrollRestoration from AppShell.

Phase 5: Remove all eslint-disable react-hooks/exhaustive-deps (14 total),
simplify logger, remove deprecated hooks (useBackButton, useTelegramDnd,
useTelegramWebApp).

Dependencies: React 19, react-router 7, zustand 5, i18next 25, react-i18next 16,
eslint-plugin-react-refresh 0.5. Remove unused @lottiefiles/dotlottie-react.
Convert vite manualChunks to function-based approach for react-router v7 compat.

Lint: Fix logger.ts no-unused-expressions, fix react-refresh/only-export-components
in 6 Radix primitive files (const re-exports → direct re-exports), fix
WebSocketProvider exhaustive-deps. Result: 0 errors, 0 warnings.

Add CLAUDE.md to .gitignore.
2026-02-06 16:55:55 +03:00
Egor
c5cad20a6f Merge pull request #153 from BEDOLAGA-DEV/feat/blacklist-blocking-screen
feat: add blacklisted user blocking screen
2026-02-06 15:54:06 +03:00
Fringg
5a8c1e7e33 feat: add blacklisted user blocking screen
Add BlacklistedScreen component, blocking store type, API error interceptor,
and i18n translations (ru, en, zh, fa) for blacklisted users.
2026-02-06 15:48:24 +03:00
c0mrade
2df86cd903 Merge pull request #152 from BEDOLAGA-DEV/feat/crypto-links-connection-page
Feat/crypto links connection page
2026-02-05 22:23:50 +03:00
c0mrade
c4f1070f23 fix: remove space-y-0 that overrides block margins in minimal layout 2026-02-05 22:16:15 +03:00
c0mrade
c669d2e9b5 fix: increase bottom spacing for installation guide blocks 2026-02-05 21:48:53 +03:00
c0mrade
5a69496dde fix: add bottom padding to last block in minimal layout 2026-02-05 21:34:35 +03:00
c0mrade
a142e23241 refactor: simplify AdminApps to direct config selection on click
Remove Disconnect button, Save button, and manual UUID input.
Config cards now apply immediately on click.
2026-02-05 20:48:40 +03:00
c0mrade
813f6e4449 refactor: extract Installation Guides into block renderer components
Replace monolithic Connection.tsx (1076 lines) with modular architecture:
- 4 block renderers (cards, timeline, accordion, minimal) selectable
  via uiConfig.installationGuidesBlockType from RemnaWave config
- Color parser utility with 14 named colors + hex support
- InstallationGuide component handles platform/app selection and
  button rendering (subscriptionLink, copyButton, external)
- Remove classic step-based format (AppButton, AppStep, AppInfo)
- Add appConfig query invalidation on admin UUID change
2026-02-05 20:07:07 +03:00
c0mrade
5111b63f2e fix: use redirect page for all platforms and fallback to regular subscription URL
- Always route deep links through redirect.html instead of splitting
  mobile/desktop paths, fixing Telegram Mini App WebView limitation
  with custom URL schemes (happ://, clash://, etc.)
- Fallback to regular subscriptionUrl instead of crypto resolvedUrl
  for subscriptionLink buttons
2026-02-05 16:42:52 +03:00
c0mrade
053b904c24 style: format config and markdown files with prettier 2026-02-05 14:56:58 +03:00
c0mrade
1d7b984880 refactor: simplify AdminApps page to config selector and compact app chips
- Rewrite AdminApps.tsx from ~560 to ~165 lines: status card, config list, UUID input, save/disconnect
- Remove legacy types and conversion functions from adminApps.ts (~370 lines)
- Connection.tsx: flex-wrap app chips, reduce padding and icon size for compact layout
2026-02-05 14:56:41 +03:00
c0mrade
53940a0169 feat: use platform displayName from RemnaWave config in connection page
Add displayName to RemnawavePlatformData type and prioritize it
in getPlatformDisplayName over hardcoded fallback names.
2026-02-05 14:27:53 +03:00
c0mrade
966343a4d8 fix: restore platform dropdown with SVG icon and widen app chips to match original 2026-02-05 13:36:51 +03:00
c0mrade
4866003c23 fix: unify connection page design with global styles and add platform SVG icons
- Add svgIconKey to RemnawavePlatform and RemnawavePlatformData types
- Render platform OS icons from svgLibrary in AdminApps tabs and Connection page
- Replace platform dropdown with icon pill buttons on connection page
- Use .card class with colored left border for block cards
- Unify all back buttons with AdminBackButton pattern (border + bg)
- Fix app chips and platform tabs to not blend with background (btn-secondary style)
- Use accent outlined style for block action buttons matching original RemnaWave UI
- Use btn-secondary for tutorial button
2026-02-05 13:21:32 +03:00
c0mrade
91afbbf3c6 fix: resolve RemnaWave SVG icons and icon colors on connection page
SVG library entries from RemnaWave API are plain strings, not objects
with svgString property. Also map named colors (violet, cyan, teal, etc.)
to hex values for correct icon background rendering.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 12:02:32 +03:00
c0mrade
42e70f72ff fix: restyle app cards to match original RemnaWave UI and debug icons
- Redesign app selector from small pills to card buttons with name left
  and large SVG icon right matching original RemnaWave subscription page
- Remove broken getAppIcon fallback (📦) for unknown apps
- Add svgIconKey field to app types for app-level logo from svgLibrary
- Use app.svgIconKey for admin apps page icons
- Increase subscription page tile opacity to 50% for readability
- Add temporary debug log to diagnose missing svgIconKey on apps
2026-02-05 11:42:54 +03:00
c0mrade
65a671470d feat: use app-level svgIconKey for app logos and improve tile contrast
- Add svgIconKey field to RemnawaveAppClient and RemnawaveApp types
- Render app logos from svgLibrary via app.svgIconKey on connection page
  chips with fallback to getAppIcon() by name
- Use app.svgIconKey for app icons on admin apps settings page
- Show featured indicator as amber dot matching original RemnaWave UI
- Increase inner tile background opacity from 30% to 50% on subscription
  page for better text readability
2026-02-05 11:27:03 +03:00