Skip to content

Conversation

@ironAiken2
Copy link
Contributor

@ironAiken2 ironAiken2 commented Dec 16, 2025

resolve #4838 FR-1688

Add Logo Customization Feature to User Settings

This PR adds a new logo customization feature to the user settings, allowing users to customize the WebUI logo for different modes:

  • Light mode logo
  • Dark mode logo
  • Collapsed sidebar logo in light mode
  • Collapsed sidebar logo in dark mode

Users can either upload an image file (max 2MB) or specify a path to the logo. The uploaded logos are stored as base64 strings in local storage and can be previewed in real-time using the theme preview feature.

The implementation includes:

  • A new LogoPreviewer component for handling logo uploads and path inputs
  • Integration with the existing theme customization system
  • Real-time preview capability for uploaded logos
  • Support for both light and dark modes in normal and collapsed sidebar states

All translations for the new feature have been added to the i18n files in multiple languages.

Checklist:

  • Documentation
  • Minium required manager version
  • Specific setting for review (User Settings > Logo section)
  • Minimum requirements to check during review
  • Test case(s) to demonstrate the difference of before/after

@github-actions github-actions bot added area:ux UI / UX issue. area:i18n Localization size:XL 500~ LoC labels Dec 16, 2025
Copy link
Contributor Author

ironAiken2 commented Dec 16, 2025


How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • flow:merge-queue - adds this PR to the back of the merge queue
  • flow:hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has required the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions
Copy link
Contributor

github-actions bot commented Dec 16, 2025

Coverage report for ./react

St.
Category Percentage Covered / Total
🔴 Statements 4.23% 496/11718
🔴 Branches 3.66% 298/8149
🔴 Functions 2.55% 92/3604
🔴 Lines 4.21% 482/11460

Test suite run success

144 tests passing in 13 suites.

Report generated by 🧪jest coverage report action from b46ac74

@ironAiken2 ironAiken2 marked this pull request as ready for review December 16, 2025 06:03
@ironAiken2 ironAiken2 changed the title feat(FR-1668): custom logo path setting and preview feature in maintenance page feat(FR-1688): custom logo path setting and preview feature in maintenance page Dec 16, 2025
@ironAiken2 ironAiken2 requested a review from Copilot December 16, 2025 06:28
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a comprehensive logo customization feature to the User Settings page, enabling users to customize WebUI logos for different display modes (light/dark) and sidebar states (expanded/collapsed).

Key Changes

  • New LogoPreviewer component that handles logo uploads (max 2MB) and path inputs with real-time preview
  • Logo preview functionality via a separate window that uses sessionStorage flags and localStorage event listeners
  • Integration with existing theme customization system, storing logos as base64 in localStorage

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 13 comments.

Show a summary per file
File Description
resources/i18n/*.json Added translations for logo customization UI in 18 languages including section titles, descriptions, and field labels
react/src/hooks/useBAISetting.tsx Extended UserSettings interface with preview_logo_path field of type PreviewLogoConfig
react/src/components/MainLayout/WebUISider.tsx Added preview mode detection, localStorage event listener for cross-window updates, and conditional logo rendering based on theme and preview mode
react/src/components/BrandingSettingList.tsx Added logo customization section with 4 logo variants, moved preview button to extraButton prop, and implemented logo-specific reset logic
react/src/components/BrandingSettingItems/LogoPreviewer.tsx New component implementing file upload with size validation, path input with debouncing, and integration with theme config system

@ironAiken2 ironAiken2 force-pushed the feat/FR-1688-custom-logo-setting branch 2 times, most recently from 8ef4a66 to 2a6d699 Compare December 16, 2025 07:17
Copy link
Contributor

@nowgnuesLee nowgnuesLee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the PR title should be changed from maintenance page to configuration page.

@ironAiken2 ironAiken2 force-pushed the feat/FR-1688-custom-logo-setting branch from 2a6d699 to 552ca29 Compare December 17, 2025 04:42
@ironAiken2 ironAiken2 changed the base branch from feat/FR-1720-theme-color-reset to graphite-base/4837 December 18, 2025 01:48
@ironAiken2 ironAiken2 force-pushed the feat/FR-1688-custom-logo-setting branch from 552ca29 to 7b7f2e2 Compare December 18, 2025 01:48
@ironAiken2 ironAiken2 changed the base branch from graphite-base/4837 to refactor/remove-setvalue-of-setting-item December 18, 2025 01:48
@yomybaby yomybaby changed the base branch from refactor/remove-setvalue-of-setting-item to graphite-base/4837 December 18, 2025 02:51
@ironAiken2 ironAiken2 force-pushed the feat/FR-1688-custom-logo-setting branch from 7b7f2e2 to 08433d3 Compare December 18, 2025 05:57
@ironAiken2 ironAiken2 changed the base branch from graphite-base/4837 to main December 18, 2025 05:57
@ironAiken2 ironAiken2 force-pushed the feat/FR-1688-custom-logo-setting branch from 08433d3 to 44e7f6d Compare December 19, 2025 03:50
@ironAiken2 ironAiken2 changed the title feat(FR-1688): custom logo path setting and preview feature in maintenance page feat(FR-1688): custom logo path setting and preview feature Dec 19, 2025
@ironAiken2 ironAiken2 force-pushed the feat/FR-1688-custom-logo-setting branch from 44e7f6d to 8756a39 Compare December 19, 2025 03:53
Copy link
Contributor

@nowgnuesLee nowgnuesLee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please resolve the merge conflicts

@ironAiken2 ironAiken2 force-pushed the feat/FR-1688-custom-logo-setting branch from 8756a39 to 8304832 Compare December 22, 2025 07:29
Copy link
Member

@yomybaby yomybaby left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Contributor

@nowgnuesLee nowgnuesLee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ironAiken2 ironAiken2 force-pushed the feat/FR-1688-custom-logo-setting branch from 8304832 to cf04c72 Compare December 22, 2025 09:04
@graphite-app
Copy link

graphite-app bot commented Dec 22, 2025

Merge activity

### resolve #4838 [FR-1688](https://lablup.atlassian.net/browse/FR-1688?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ)

Add Logo Customization Feature to User Settings

This PR adds a new logo customization feature to the user settings, allowing users to customize the WebUI logo for different modes:

- Light mode logo
- Dark mode logo
- Collapsed sidebar logo in light mode
- Collapsed sidebar logo in dark mode

Users can either upload an image file (max 2MB) or specify a path to the logo. The uploaded logos are stored as base64 strings in local storage and can be previewed in real-time using the theme preview feature.

The implementation includes:

- A new `LogoPreviewer` component for handling logo uploads and path inputs
- Integration with the existing theme customization system
- Real-time preview capability for uploaded logos
- Support for both light and dark modes in normal and collapsed sidebar states

All translations for the new feature have been added to the i18n files in multiple languages.

**Checklist:**

- [x] Documentation
- [ ] Minium required manager version
- [x] Specific setting for review (User Settings > Logo section)
- [x] Minimum requirements to check during review
- [ ] Test case(s) to demonstrate the difference of before/after

[FR-1688]: https://lablup.atlassian.net/browse/FR-1688?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
@graphite-app graphite-app bot force-pushed the feat/FR-1688-custom-logo-setting branch from cf04c72 to b46ac74 Compare December 22, 2025 09:05
@graphite-app graphite-app bot merged commit b46ac74 into main Dec 22, 2025
11 checks passed
@graphite-app graphite-app bot deleted the feat/FR-1688-custom-logo-setting branch December 22, 2025 09:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:i18n Localization area:ux UI / UX issue. size:XL 500~ LoC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add feature for setting WebUI logo image path in theme.json in maintenance page

4 participants