Commit Graph

105 Commits

Author SHA1 Message Date
Fringg
cfe9f642d8 feat: show traffic reset period on tariff cards
Display daily/weekly/monthly reset badge next to traffic and devices.
Hidden for NO_RESET tariffs.
2026-02-18 09:36:39 +03:00
Fringg
19e62fccf1 fix: rename Серверы to Локации in subscription card 2026-02-18 09:29:44 +03:00
Fringg
0fac3689e5 fix: remove server/location count from tariff cards and confirmation
Server info only shown in user's active subscription card.
2026-02-18 09:28:43 +03:00
Fringg
ecc089da64 fix: show locations count instead of servers on tariff cards
servers_count already represents squad count on backend.
Renamed display labels to "locations" on tariff cards and
confirmation view. Server names still shown in subscription card.
2026-02-18 09:25:44 +03:00
Fringg
1d6ec70116 fix: handle unlimited traffic package selection and button text
- Fix falsy check: selectedTrafficPackage !== null instead of truthy
  (gb=0 for unlimited was evaluated as false, hiding the buy button)
- Show "Buy Unlimited" instead of "Buy 0 GB" for unlimited packages
- Add buyUnlimited translation key to all 4 locales
2026-02-11 18:20:21 +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
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
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
c0mrade
445dd0601a feat: convert ConnectionModal to /connection page with crypto deep links
- Add @kastov/cryptohapp + jsencrypt for encrypted Happ deep links
- Add templateEngine utility to resolve {{SUBSCRIPTION_LINK}},
  {{HAPP_CRYPT3_LINK}}, {{HAPP_CRYPT4_LINK}}, {{USERNAME}} templates
- Convert ConnectionModal component into a standalone Connection page
- Add /connection route with ProtectedRoute and lazy loading
- Replace modal invocation in Dashboard and Subscription with
  navigate('/connection')
- Add type and svgIconKey optional fields to RemnawaveButton
- Show button type badge and SVG icon in AdminApps BlockCard
- Refactor ThemeTab to use local draft state with Save/Cancel flow
2026-02-05 07:33:45 +03:00
Fringg
998f9dbaf0 feat(subscription): auto-skip server selection step when only one available
- Add getAvailableServers helper to filter available servers
- Skip servers step in purchase wizard when only 1 server available
- Auto-select the single server on options load and period change
- Works for both new purchases and renewals in classic mode
2026-02-05 07:32:28 +03:00
Fringg
46b93ef098 fix(subscription): display promo group discounts in device/traffic purchase and tariff switch
- Add discount fields to TrafficPackage and TariffSwitchPreview types
- Show strikethrough original price and discount badge for device purchase
- Show discount badge and original price for traffic packages
- Show discount info and free label for tariff switch with 100% discount
2026-02-05 06:26:27 +03:00
c0mrade
c8c9920ade Merge remote-tracking branch 'origin/main' into feat/linear-ui-redesign
# Conflicts:
#	src/components/PromoDiscountBadge.tsx
2026-02-04 03:25:35 +03:00
Egor
6c8d2ad69e Update Subscription.tsx 2026-02-04 01:17:05 +03:00
Egor
026cb47694 Update Subscription.tsx 2026-02-04 01:08:05 +03:00
Egor
9804e3a874 Update Subscription.tsx 2026-02-04 01:00:49 +03:00
Egor
158a47e1e1 Update Subscription.tsx 2026-02-04 00:50:50 +03:00
c0mrade
f147c10a25 Merge remote-tracking branch 'origin/main' into feat/linear-ui-redesign
# Conflicts:
#	src/pages/AdminUsers.tsx
2026-02-03 21:48:38 +03:00
Egor
192ac71a02 Update Subscription.tsx 2026-02-03 03:49:06 +03:00
c0mrade
c815ac29ea fix: scroll to start of tariffs section and wait for data to load 2026-02-02 07:02:50 +03:00
Egor
1af7dee04d Update Subscription.tsx 2026-02-02 05:22:18 +03:00
Egor
196c826aa8 Add files via upload 2026-02-02 05:19:42 +03:00
Egor
de7c911a7e Update Subscription.tsx 2026-02-01 17:19:59 +03:00
Egor
8007c1b4c1 Update Subscription.tsx 2026-01-31 20:48:10 +03:00
Egor
313a6039cc Update Subscription.tsx 2026-01-31 20:31:51 +03:00
c0mrade
0be1ef0340 feat: auto-close modals when success notification appears
- Add closeOthersSignal to success notification store
- Create useCloseOnSuccessNotification hook for modals to subscribe
- Update TopUpModal to auto-close on success events
- Update InsufficientBalancePrompt to auto-close on success events
- Update Subscription page to close all modals/forms on success events

This ensures that when a WebSocket event indicates successful payment
or subscription purchase, all related modals close automatically,
providing clear feedback to users.
2026-01-30 19:54:29 +03:00
Egor
2d0f1b91da Update Subscription.tsx 2026-01-30 18:05:21 +03:00
Egor
dd5cb7789f Update Subscription.tsx 2026-01-30 18:00:41 +03:00
Egor
b18ccf005d Add files via upload 2026-01-29 01:04:26 +03:00
Egor
7b7021a603 Update Subscription.tsx 2026-01-28 20:39:19 +03:00
Egor
475ce7d13f Update Subscription.tsx 2026-01-28 20:33:54 +03:00
c0mrade
4b35d8c392 fix(i18n): rename subscription.servers object to subscription.serverManagement
Resolves conflict where subscription.servers existed as both a nested
object (for server management UI keys) and a pluralization base key.
Renamed the nested object to serverManagement in all 4 locales and
updated all t() references in Subscription.tsx.
2026-01-27 22:47:41 +03:00
c0mrade
9707ad97a4 feat(i18n): migrate all hardcoded Russian text to i18n
- Replace all hardcoded Russian strings with t() calls across 30+ files
- Add ~500 new translation keys to all 4 locales (ru, en, zh, fa)
- Convert module-level config objects to labelKey pattern
- Remove Russian fallbacks from t() calls (fallbackLng handles it)
- Replace DeepLinkRedirect custom i18n with standard t() calls
- Fix subscription.servers key collision (string vs object)
2026-01-27 22:19:41 +03:00
c0mrade
bc90ba3779 refactor: migrate to eslint flat config and format codebase with prettier
- Remove legacy .eslintrc.cjs and .eslintignore
- Add eslint.config.js with flat config, security rules (no-eval, no-implied-eval, no-new-func, no-script-url)
- Add .prettierrc and .prettierignore
- Format entire codebase with prettier
2026-01-27 17:37:31 +03:00
Egor
096cf7e918 Update Subscription.tsx 2026-01-27 16:07:12 +03:00
Egor
4fc7712bef Update Subscription.tsx 2026-01-26 23:24:30 +03:00
Egor
c2c2399af1 Update Subscription.tsx 2026-01-26 23:23:38 +03:00
Egor
767b666962 Update Subscription.tsx 2026-01-23 03:39:08 +03:00
Egor
e51d4d3d71 Update Subscription.tsx 2026-01-23 03:35:27 +03:00
Egor
5709ab4ff1 Add files via upload 2026-01-21 09:08:08 +03:00
Egor
1880cffad9 Update Subscription.tsx 2026-01-21 06:43:44 +03:00
Dev
c92a4e7704 feat: complete Phase 2 - refactor all user pages to Bento UI 2026-01-20 22:26:13 +05:00
Egor
3c5869684f Update Subscription.tsx 2026-01-20 07:21:18 +03:00
Egor
ea47b09bad Update Subscription.tsx 2026-01-20 06:38:51 +03:00
Egor
56e0023372 Update Subscription.tsx 2026-01-20 06:33:20 +03:00
Egor
895cb5ada7 Update Subscription.tsx 2026-01-19 00:41:50 +03:00
Egor
a7f0d705ff Add files via upload 2026-01-19 00:36:19 +03:00
Egor
de4a694efd Update Subscription.tsx 2026-01-18 07:01:51 +03:00
Egor
4e1182449b Add files via upload 2026-01-18 06:22:42 +03:00
Egor
6baa573e4b Update Subscription.tsx 2026-01-18 06:12:53 +03:00
Egor
386acef176 Add files via upload 2026-01-18 06:03:11 +03:00