1. 18 Aug, 2025 2 commits
  2. 17 Aug, 2025 17 commits
    • ️ refactor(web): migrate React modules from .js to .jsx and align entrypoint · ba6ed31a
      - 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
    • feat(ui): add hover scale animation to header logo · 4f22ab64
      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
    • 🎛️ refactor: HeaderBar into modular components, add shared skeletons, and primary-colored nav hover · 24fbd0bf
      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
    • 🎨 refactor: UserInfoHeader layout and styling · 4da43710
      - 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
    • feat: 完善gemini格式转换 · 61601d38
      CaIon committed
    • ️ refactor: HeaderBar into modular, maintainable components & polish responsive UI · 13fcb8fd
      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
    • feat: unify skeleton loading behavior for Midjourney logs actions · 519c26d5
      • 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
    • 🎨 refactor: Setup Wizard UI & Clean Up Redundant Code · ed3b11a3
      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
    • style(Account UX): resilient binding layout, copyable popovers, pastel header,… · 7411c249
       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
  3. 16 Aug, 2025 21 commits