- 22 Aug, 2025 9 commits
-
-
🎨 - useHeaderBar.js - Wrap handlers with useCallback (logout, language/theme toggle, mobile menu) - Add null checks and try/catch around iframe postMessage (theme & language) - Keep minimal effect deps; remove unused StatusContext dispatch - Logo preload effect safe and scoped to `logo` - index.jsx - No functional changes; locale memoization remains stable Chore: - Lint clean; no runtime warnings - Verified no render loops or performance regressions
t0ng7u committed -
🌓 - Feature: Introduce 'auto' theme mode - Detect system preference via matchMedia('(prefers-color-scheme: dark)') - Add useActualTheme context to expose the effective theme ('light'|'dark') - Persist selected mode in localStorage ('theme-mode') with 'auto' as default - Apply/remove `dark` class on <html> and sync `theme-mode` on <body> - Broadcast effective theme to iframes - UI: Redesign ThemeToggle with Dropdown items and custom highlight - Replace non-existent IconMonitor with IconRefresh - Use Dropdown.Menu + Dropdown.Item with built-in icon prop - Selected state uses custom background highlight; hover state preserved - Remove checkmark; selection relies on background styling - Current button icon reflects selected mode - Performance: reduce re-renders and unnecessary effects - Memoize theme options and current button icon (useMemo) - Simplify handleThemeToggle to accept only explicit modes ('light'|'dark'|'auto') - Minimize useEffect dependencies; remove unrelated deps - Header: streamline useHeaderBar - Use useActualTheme for iframe theme messaging - Remove unused statusDispatch - Remove isNewYear from theme effect dependencies - Home: send effective theme (useActualTheme) to external content iframes - i18n: add/enhance theme-related copy in locales (en/zh) - Chore: minor code cleanup and consistency - Improve readability and maintainability - Lint clean; no functional regressionst0ng7u committed -
💄 - Make Y-axis scrollbar visible for .table-scroll-card .semi-card-body - Reduce scrollbar width from 6px to 4px for a more subtle appearance - Decrease scrollbar opacity from 0.3 to 0.2 for lighter color - Adjust hover opacity from 0.5 to 0.35 for consistent lighter theme - Remove previous scrollbar hiding styles to improve user experience This change improves the usability of table scroll cards by providing visual feedback for scrollable content while maintaining a clean, unobtrusive design aesthetic.
t0ng7u committed -
🚀 Home was unexpectedly loading the `visactor-*.js` bundle on first paint. This happened because the Vite manualChunks entry created a standalone vendor chunk for VisActor, which Vite then preloaded on the initial route. What’s changed - Removed `visactor` from `build.rollupOptions.output.manualChunks` in `web/vite.config.js`. Why - Prevents VisActor from being preloaded on the Home page. - Restores the intended behavior: VisActor loads only when the Dashboard (data analytics) is visited. Impact - Smaller initial payload and fewer network requests on Home. - No functional changes to charts; loading behavior is now route-driven. Test plan - Build the app: `cd web && npm run build`. - Open the preview and visit `/`: ensure no `visactor-*.js` is requested. - Navigate to `/console` (Dashboard): ensure `visactor-*.js` loads as expected.
t0ng7u committed -
♻ Replace the fallback assignment of serverAddress in `web/src/pages/Home/index.jsx` to use a template literal for `window.location.origin`. - Aligns with the preferred style for constructing base URLs - Keeps formatting consistent across the app - No functional changes; behavior remains the same - Lint passes with no new warnings or errors Files affected: - web/src/pages/Home/index.jsx
t0ng7u committed -
✨ - Unify TopUp into a single-page layout and remove tabs - Replace custom inputs with Semi UI Form components (Form.Input, Form.InputNumber, Form.Slot) - Move online recharge form into the stats Card content for tighter, consistent layout - Add account stats Card with blue theme (consistent with InvitationCard style) - Remove RightStatsCard and inline the stats UI directly in RechargeCard - Change preset amount UI to horizontal quick-action Buttons; swap order with payment methods - Replace payment method Cards with Semi UI Buttons - Use Button icon prop for Alipay/WeChat/Stripe with brand colors - Use built-in Button loading; remove custom “processing...” text - Replace custom spinners with Semi UI Spin and keep Skeleton for amount loading - Wrap Redeem Code in a Card; use Typography for “Looking for a code? Buy Redeem Code” link - Show info Banner when online recharge is disabled (instead of warning) TopUp data flow and logic - Generate preset amounts from min_topup using multipliers [1,5,10,30,50,100,300,500] - Deduplicate /api/user/aff using a ref guard; fetch only once on mount - Simplify user self fetch: update context only; remove unused local states and helpers - Normalize payment method keys to alipay/wxpay/stripe and assign default colors Cleanup - Delete web/src/components/topup/RightStatsCard.jsx - Remove unused helpers and local states in index.jsx (userQuota, userDataLoading, getUsername) Dev notes - No API changes; UI/UX refactor only - Lint clean (no new linter errors) Files - web/src/components/topup/RechargeCard.jsx - web/src/components/topup/index.jsx - web/src/components/topup/InvitationCard.jsx (visual parity reference) - web/src/components/topup/RightStatsCard.jsx (removed)
t0ng7u committed -
Personal Settings no longer needs to fetch `/api/user/models` since models are now displayed directly. This change removes the unused data flow to simplify the component and avoid unnecessary requests. Changes: - Removed `models` and `modelsLoading` state from `web/src/components/settings/PersonalSetting.jsx` - Removed `loadModels` function and its invocation in the initial effect - Kept UI behavior unchanged; no functional differences on the Personal Settings page Notes: - Lint passes with no new issues - Other parts of the app still using `/api/user/models` (e.g., Tokens pages) are intentionally left intact Rationale: - Models are already displayed; the API call in Personal Settings became redundant
t0ng7u committed -
CaIon committed
-
fix: prompt calculation
Calcium-Ion committed
-
- 21 Aug, 2025 1 commit
-
-
🤝 t0ng7u committed
-
- 18 Aug, 2025 14 commits
-
-
🍭 t0ng7u committed -
🍭 t0ng7u committed -
🔧 - Fix io-net.svg viewBox from "0 0 1000 1000" to "100 440 800 120" - Resolve issue where IO.NET logo appeared too small on GitHub - Crop viewBox to actual logo content area for better visibility - Ensure consistent display size with other partner logos - Change aspect ratio from 1:1 to 6.67:1 to match horizontal layout
t0ng7u committed -
🍭 t0ng7u committed -
🤝 - Add IO.NET to trusted partners section in README.md - Add IO.NET to trusted partners section in README.en.md - Use io-net.png logo and https://io.net/ as website link - Adjust layout to display 3 partners in the second row for better balance - IO.NET provides decentralized GPU computing services for AI workloads
t0ng7u committed -
🍭 t0ng7u committed -
🤝 - Add Alibaba Cloud to trusted partners section in README.md - Add Alibaba Cloud to trusted partners section in README.en.md - Use aliyun.svg logo and https://www.aliyun.com/ as website link - Maintain consistent formatting with existing partners
t0ng7u committed -
t0ng7u committed
-
♻ - Move card titles (earnings, total revenue, invitations) to Card title prop for consistency - Remove custom color classes in favor of Semi-UI's built-in type system - Standardize Text component usage with strong and tertiary types - Improve code maintainability and visual consistency across all cards - Align structure with existing reward description card pattern
t0ng7u committed -
creamlike1024 committed
-
creamlike1024 committed
-
🍎 t0ng7u committed -
Sh1n3zZ committed
-
CaIon committed
-
- 17 Aug, 2025 16 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
-