- 18 Aug, 2025 2 commits
- 17 Aug, 2025 17 commits
-
-
♻ - Rename React components/pages/utilities that contain JSX to `.jsx` across `web/src` - Update import paths and re-exports to match new `.jsx` extensions - Fix Vite entry by switching `web/index.html` from `/src/index.js` to `/src/index.jsx` - Verified remaining `.js` files are plain JS (hooks/helpers/constants) and do not require JSX - No runtime behavior changes; extension and reference alignment only Context: Resolves the Vite pre-transform error caused by the stale `/src/index.js` entry after migrating to `.jsx`.
t0ng7u committed -
✨ Add smooth scale-up animation effect when hovering over the header logo to enhance user interaction experience. Changes: - Add `group` class to Link element to enable Tailwind group hover functionality - Update transition from `transition-opacity` to `transition-all` for smooth scaling - Increase hover scale from `scale-105` to `scale-110` (10% enlargement) - Maintain 200ms transition duration for optimal user experience The logo now smoothly scales to 110% size on hover and returns to original size when mouse leaves, providing better visual feedback for user interactions.
t0ng7u committed -
🤔 t0ng7u committed -
🎛 Summary - Split HeaderBar into maintainable components and hooks - Centralized skeleton loading UI via a reusable SkeletonWrapper - Improved navigation UX with primary-colored hover indication - Preserved API surface and passed linters Why - Improve readability, reusability, and testability of the header - Remove duplicated skeleton logic across files - Provide clearer hover feedback consistent with the theme What’s changed - Components (web/src/components/layout/HeaderBar/) - New container: index.js - New UI components: HeaderLogo.js, Navigation.js, ActionButtons.js, UserArea.js, MobileMenuButton.js, NewYearButton.js, NotificationButton.js, ThemeToggle.js, LanguageSelector.js - New shared skeleton: SkeletonWrapper.js - Updated entry: HeaderBar.js now re-exports ./HeaderBar/index.js - Hooks (web/src/hooks/common/) - New: useHeaderBar.js (state and actions for header) - New: useNotifications.js (announcements state, unread calc, open/close) - New: useNavigation.js (main nav link config) - Skeleton refactor - Navigation.js: replaced inline skeletons with <SkeletonWrapper type="navigation" .../> - UserArea.js: replaced inline skeletons with <SkeletonWrapper type="userArea" .../> - HeaderLogo.js: replaced image/title skeletons with <SkeletonWrapper type="image"/>, <SkeletonWrapper type="title"/> - Navigation hover UX - Added primary-colored hover to nav items for clearer pointer feedback - Final hover style: hover:text-semi-color-primary (kept rounded + transition classes) Non-functional - No breaking API changes; HeaderBar usage stays the same - All modified files pass lint checks Notes for future work - SkeletonWrapper is extensible: add new cases (e.g., card) in one place - Components are small and test-friendly; unit tests can be added per component Affected files (key) - web/src/components/layout/HeaderBar.js - web/src/components/layout/HeaderBar/index.js - web/src/components/layout/HeaderBar/Navigation.js - web/src/components/layout/HeaderBar/UserArea.js - web/src/components/layout/HeaderBar/HeaderLogo.js - web/src/components/layout/HeaderBar/ActionButtons.js - web/src/components/layout/HeaderBar/MobileMenuButton.js - web/src/components/layout/HeaderBar/NewYearButton.js - web/src/components/layout/HeaderBar/NotificationButton.js - web/src/components/layout/HeaderBar/ThemeToggle.js - web/src/components/layout/HeaderBar/LanguageSelector.js - web/src/components/layout/HeaderBar/SkeletonWrapper.js - web/src/hooks/common/useHeaderBar.js - web/src/hooks/common/useNotifications.js - web/src/hooks/common/useNavigation.js
t0ng7u committed -
t0ng7u committed
-
🎨 - Restructure avatar-name-tags layout to left-right alignment - Avatar positioned on the left - Name aligned to avatar top, tags aligned to avatar bottom - Remove margin-top usage in favor of flexbox justify-between - Simplify desktop statistics cards to single-line layout - Format as "icon + label: value" without stacked layout - Remove custom color classes for cleaner styling - Update UI component styling - Increase tag size from small to large - Reduce cover height from responsive to fixed 32 - Add Badge import for future enhancements - Clean up icon and text color classes - Maintain responsive behavior and accessibility
t0ng7u committed -
CaIon committed
-
CaIon committed
-
♻ Summary • Extracted `LogoSection`, `NavLinks`, `UserArea`, and `ActionButtons` from `HeaderBar.js`, reducing complexity and improving readability. • Removed unused state, handlers, and redundant imports from `HeaderBar.js`. • Simplified mobile/desktop logic: – Menu icon now shows only on mobile `/console` routes. – Logo, system name, and mode tags appear on all desktop screens and on mobile non-console pages. • Reworked skeleton loaders: – Narrower width on mobile (`40 px`) and clearer spacing (`p-1`). • Added global `.scrollbar-hide` utility in `index.css` to enable scrollable areas without visible scrollbars. • Ensured nav bar is horizontally scrollable across all breakpoints. • Cleaned up language-switch, New Year, and notice handlers; consolidated side effects. • Updated imports and internal calls after component extraction. • Passed required props to new sub-components and removed obsolete ones. • Confirmed zero linter warnings after refactor. Why Breaking the monolithic header into focused components makes future updates simpler, facilitates isolation testing, and aligns with the existing component architecture under `components/`. The UI tweaks provide a better mobile experience and consistent styling across devices. Notes No backend changes required. All routes and contexts remain untouched.
t0ng7u committed -
✨ • Introduced `useMinimumLoadingTime` to `MjLogsActions.jsx`, guaranteeing a minimum skeleton display duration for smoother UX • Refactored loading state UI to use wrapped `Skeleton` with placeholder, matching the implementation in `UsageLogsActions.jsx` • Kept existing banner, admin checks, and compact-mode toggle intact while streamlining the code • Ensures consistent loading indicators across usage- and MJ-log tables
t0ng7u committed -
t0ng7u committed
-
🎨 Summary of changes 1. SetupWizard.jsx • Center card (`min-h-screen flex items-center justify-center`) and remove top margin. • Merge step indicator/content into single card; added `Divider` separator. • Added sweep-shine animation to current step title via existing `shine-text` class. • Simplified imports (removed Avatar / Typography) and deleted unused modal state. 2. Step components • Stripped outer `Card` and header sections from `DatabaseStep.jsx`, `AdminStep.jsx`, `UsageModeStep.jsx`, `CompleteStep.jsx` to fit single-card layout. • Removed unused imports and props. 3. Components cleanup • Deleted obsolete files: - `components/setup/components/SetupSteps.jsx` - `components/setup/components/modals/UsageModeInfoModal.jsx` • Updated `setup/index.jsx` exports accordingly. 4. Styling • Ensured global sweep-shine effect already present in `index.css` is reused for step titles. 5. i18n • Pruned unused translation keys related to removed components from `i18n/locales/en.json`. 6. Miscellaneous • Removed redundant Avatar/Icon imports from multiple files. • All linter checks pass with no new warnings. This commit consolidates the initialization flow into a cleaner, centered single-card wizard, adds visual polish, and reduces dead code for easier maintenance.t0ng7u committed -
CaIon committed
-
CaIon committed
-
CaIon committed
-
✨ ✨ style(Account UX): resilient binding layout, copyable popovers, pastel header, and custom pay colors - AccountManagement.js - Prevent action button from shifting when account IDs are long by adding gap, min-w-0, and flex-shrink-0; keep buttons in a fixed position. - Add copyable Popover for account identifiers (email/GitHub/OIDC/Telegram/LinuxDO) using Typography.Paragraph with copyable; reveal full text on hover. - Ensure ellipsis works by rendering the popover trigger as `block max-w-full truncate`. - Import Popover and wire up `renderAccountInfo` across all binding rows. - UserInfoHeader.js - Apply unified `with-pastel-balls` background to match PricingVendorIntro. - Remove legacy absolute-positioned circles and top gradient bar to avoid visual overlap. - RechargeCard.jsx - Colorize non-Alipay/WeChat/Stripe payment icons using backend `pay_methods[].color`; fallback to `var(--semi-color-text-2)`. - Add `showClear` to the redemption code input for quicker clearing. Notes: - No linter errors introduced. - i18n strings and behavior remain unchanged except for improved UX and visual consistency.t0ng7u committed
-
- 16 Aug, 2025 21 commits
-
-
💳 💳 feat(TopUp): unify payment cards, add header stats, brand icons, and mobile refinements [[memory:5659506]] - Add RightStatsCard and place it in RechargeCard header - Shows current balance, historical spend, and request count - Mobile: stacks under title; three metrics split equally (flex-1); vertical dividers hidden on small screens - Remove extra margins; small card styling - RechargeCard - Replace redeem code Input icon with Semi UI IconGift - Style “Payable amount” number in red and bold; keep same style in confirm modal - Always render payment methods as Cards (remove Button variant) with adaptive grid - Use brand color icons: SiAlipay (#1677FF), SiWechat (#07C160), SiStripe (#635BFF) - Replace Stripe icon with SiStripe - Integrate RightStatsCard props; adjust header to flex-col on mobile and flex-row on desktop - Hide Banner close button when online top-up is disabled (closeIcon={null}) - InvitationCard - Simplify to match RechargeCard’s minimalist slate style - Use Card title for “Rewards” and place content directly in body - Improve link input and copy button; use Badge dots for bullet points - TopUp index - Remove separate right-column stats card; pass userState and renderQuota to RechargeCard - Cleanup - Lint passes; no functional changes to APIs or business logict0ng7u committed -
⚡ Home started loading `/assets/visactor-*.js` due to static imports of `@visactor/react-vchart` and the Semi theme in dashboard components/hooks. This change moves chart dependencies to lazy/dynamic imports so they load only on dashboard routes. Changes - StatsCards.jsx: replace static `VChart` import with `React.lazy` + `Suspense` (fallback: null) - ChartsPanel.jsx: replace static `VChart` import with `React.lazy` + `Suspense` (fallback: null) - useDashboardCharts.js: remove static `initVChartSemiTheme` import; dynamically import and initialize the theme inside `useEffect` with a cancel guard Behavior - Home page no longer downloads `visactor` chunks on first load - Chart libraries are fetched only when visiting `/console` (dashboard) - No functional changes to chart rendering Files - web/src/components/dashboard/StatsCards.jsx - web/src/components/dashboard/ChartsPanel.jsx - web/src/hooks/dashboard/useDashboardCharts.js Verification - Build the app (`npm run build`) and open `/`: no `/assets/visactor-*.js` requests - Navigate to `/console`: `visactor` chunks load and charts render as expected Breaking Changes - None Follow-ups - If needed, further trim homepage bundle by reducing heavy icon sets on the hero section
t0ng7u committed -
♻ - Split the 1554-line PersonalSetting.js file into smaller, maintainable components - Created organized folder structure under personal/: - components/: UserInfoHeader for shared user info display - tabs/: ModelsList, AccountBinding, SecuritySettings, NotificationSettings - modals/: EmailBindModal, WeChatBindModal, AccountDeleteModal, ChangePasswordModal - Refactored main PersonalSetting component to use composition pattern - Improved code maintainability and separation of concerns - Added collapsible prop to ModelsList tabs for better UX - Fixed import path for TwoFASetting component in SecuritySettings - Preserved all existing functionality and user interactions This refactoring reduces the main file from 1554 to 484 lines and makes the codebase more modular, testable, and easier to maintain.
t0ng7u committed -
t0ng7u committed
-
🌐 - Add comprehensive i18n support to TwoFASetting.js component - Add all required English translations to en.json for 2FA settings - Update component to accept t function as prop and use translation keys - Fix prop passing in PersonalSetting.js to provide t function - Maintain all existing UI improvements and functionality - Support both Chinese and English interfaces for: * Main 2FA settings card with status indicators * Setup modal with guided steps (QR scan, backup codes, verification) * Disable 2FA modal with impact warnings and confirmation * Regenerate backup codes modal with success states * All buttons, placeholders, messages, and notifications - Follow project i18n conventions using t('key') pattern - Ensure seamless language switching for enhanced user experience This enables the 2FA settings to be fully localized while preserving the modern UI design and improved user workflow from previous updates.t0ng7u committed -
CaIon committed
-
t0ng7u committed
-
💄 - Replace lucide-react icons with Semi UI icons for consistency - Implement Steps component for guided 2FA setup modal flow - Redesign disable and regenerate backup codes modals to match setup modal style - Extract duplicate backup codes display logic into reusable BackupCodesDisplay component - Move modal navigation buttons to proper footer parameter following Semi UI standards - Replace custom styled dots with Badge components (warning/danger/success types) - Use Banner and Divider components for better visual hierarchy - Remove redundant modal step titles and download functionality - Apply consistent rounded corners, spacing, and color scheme across all modals - Improve responsive design with maxWidth constraints This unifies the 2FA settings visual design with other settings pages and enhances user experience through better component usage and layout structure.
t0ng7u committed -
Feats: use the types of gjson,the error expection,the invert and the key missing process of the condition
Calcium-Ion committed -
CaIon committed
-
Nekohy committed
-
Nekohy committed
-
Nekohy committed
-
CaIon committed
-
CaIon committed
-
CaIon committed
-
CaIon committed
-
feats: the flexable params override and compatible format
Calcium-Ion committed -
CaIon committed
-
feat: use proxy HTTP client fetch models
Calcium-Ion committed -
feat(relay): add OpenAI gpt-4.1 o3 o4 gpt-image-1 models
Calcium-Ion committed
-