Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

feat: dedicated dark theme option with system preference support#5007

Merged
timothycarambat merged 5 commits intomasterfrom
4991-feat-dedicated-dark-theme-option
Feb 19, 2026
Merged

feat: dedicated dark theme option with system preference support#5007
timothycarambat merged 5 commits intomasterfrom
4991-feat-dedicated-dark-theme-option

Conversation

@angelplusultra
Copy link
Contributor

@angelplusultra angelplusultra commented Feb 17, 2026

Pull Request Type

  • ✨ feat

Relevant Issues

resolves #4991

What is in this change?

Untitled.2.mov

Refactors the theme system from two options (Default/Light) to three: System, Light, and Dark.

  • System — follows the OS preference and reacts live to changes (e.g. macOS auto dark mode)
  • Light — forces light mode
  • Dark — forces dark mode

Previously, OS preference was only checked once on first load and then locked to localStorage. Now "System" mode continuously listens via matchMedia for OS-level changes.

Also fixes LogoContext to check the resolved data-theme attribute instead of comparing raw localStorage values, which broke logo colors after the rename from "default" to "dark".

Legacy "default" values in localStorage are automatically migrated to "dark".

Additional Information

Only two files changed — useTheme.js and LogoContext.jsx. No CSS, tailwind config, or component changes needed since ThemePreference already renders dynamically from availableThemes and the CSS variable system ([data-theme="light"] override on :root) works with any non-"light" data-theme value.

Developer Validations

  • I ran yarn lint from the root of the repo & committed changes
  • Relevant documentation has been updated
  • I have tested my code functionality
  • Docker build succeeds locally

@angelplusultra angelplusultra linked an issue Feb 17, 2026 that may be closed by this pull request
@angelplusultra angelplusultra added the PR:needs review Needs review by core team label Feb 17, 2026
Copy link
Collaborator

@shatfield4 shatfield4 left a comment

Choose a reason for hiding this comment

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

Bug in logo being shown on multi-user login page.

Copy link
Collaborator

@shatfield4 shatfield4 left a comment

Choose a reason for hiding this comment

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

LGTM

@angelplusultra angelplusultra added the PR: Ready for QA Indicates that a PR is ready for QA and the GH image may build the image label Feb 19, 2026
@timothycarambat timothycarambat merged commit e025df9 into master Feb 19, 2026
2 of 4 checks passed
@timothycarambat timothycarambat deleted the 4991-feat-dedicated-dark-theme-option branch February 19, 2026 20:37
timothycarambat added a commit that referenced this pull request Mar 2, 2026
* fix: typo in contribution guidelines, update project metadata  and pull_request_temp...md (#5010)

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* bump copyright year
resolves #5017

* feat: update light mode UI sidebar (#4996)

* implement light mode sidebar redesign

* Abstract hardcoded hex values into reusable css variables

* reorder ternary and apply bold font on hovered workspaces

* Remove double icon hack and use a state tracking whether workspace item is being hovered over for fill styles

* lint

* convert css variables and custom classes to default tailwind classes

* remove grab icon filling on hover logic

* revert css vars to original values

* remove light mode css vars | change bg of sidebar in light mode to right color | make icons correct color in light mode

* revert dark mode change

---------

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* fix(frontend): fix event listener memory leak in useIsDisabled hook (#5027)

fix: optimize event listener management in useIsDisabled hook

* feat: dedicated dark theme option with system preference support (#5007)

* implement OS level theme switching and dark mode option

* simplify

* fix logo bug in login | place back useTheme comment

---------

Co-authored-by: shatfield4 <seanhatfield5@gmail.com>
Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* fix cleanup pr workflow

* Implement new home page redesign (#4931)

* remove legacy home page components, update home page to new layout

* update PromptInput component styles to match new designs, make quick action buttons functional

* home page chat creates new thread in last used workspace

* fix slash commands and agent popup on home page

* disable llm workspace selector action in home page

* add drag and drop file support to home page

* fix behavior of drag and drop on home page

* handle pasting attachments in home page

* update empty state of workspace chat to use new ui

* update empty workspace ui to match home page design, fix flickering loading states

* convert quick action buttons to component, add to empty state ws chat

* fix hover state light mode in quick actions

* add suggested messages subcomponent to empty ws/thread

* adjust width, rounded edges of prompt input

* only show quick actions for admin/manager role

* fix hover states for quick actions and suggested messages component

* make upload document quick action trigger parsed document upload

* fix mic behavior in homepage, ws chat, ws thread chat

* fix margin between prompt input and quick actions

* Simplify message presets by removing heading input (#4915)

* Remove heading input from message presets, merge legacy headings on edit

* filter out empty messages from state after saving

* mark form as dirty on input change

* styling

---------

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* convert SuggestedMessages to component, render SuggestedMessages in home page to target ws

* fix broken handleMessageChange reference

* add translations for QuickActions

* lint

* fix home page chat submission broken by PromptInput onChange removal

* fix prompt input remount race condition, home page suggested message flicker

* remove unused handleSendSuggestedMessage from ChatHistory

* add greeting text to main-page translations, remove defaults

* fix file deletion in parsed files menu on home page

* add virtual thread sidebar state and workspace indicator on home page

* show workspace llm selector on home page when workspace exists

* show home page for all user roles with rbac quick actions

* fix positioning of agent and slash command popups

* remove workspace indicator from home page, match empty state spacing

* Normalize translations for home page redesign (#4986)

* normalize translations

* update translations with DMR

* accidentally changed es translation

* normalize translations for main-page.greeting

* update translations with DMR

---------

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* update translations

* create new workspace in native language
Cleanup workspace page from empty state handling

* update quick action show logic

* fix send button

---------

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* fix: GitLab connector infinite loop and rate limit crash for large repos (#5021)

* Fix infinite loop and rate limit crashes

* simplify logic | add max-retries to fetchNextPage and fetchSingleFileContents

---------

Co-authored-by: shatfield4 <seanhatfield5@gmail.com>
Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* fix: add password character validation to onboarding single-user setup (#5037)

* fix single user mode password bug

* share const

---------

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* Native Tool calling (#5071)

* checkpoint

* test MCP and flows

* add native tool call detection back to LMStudio

* add native tool call loops for Ollama

* Add ablity detection to DMR (regex parse)

* bedrock and generic openai with ENV flag

* deepseek native tool calling

* localAI native function

* groq support

* linting, add litellm and OR native tool calling via flag

* fix: resolve Gemini agent 400 error on tool call responses (#5054)

* add gtc__ prefix to tool call names in Gemini agent message formatting

* resolve Gemini agent 400 error on tool call responses

* add comments explaining geminis thought signatures

---------

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* fix: prevent CMD/CTRL+Arrow scroll from overriding textarea cursor movement (#5053)

prevent CMD/CTRL+Arrow scroll from overriding textarea cursor movement

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* lint

* Normalize scraper runtimeargs for bulk-scraper (#5083)

resolves #5078
closes #5079

* resolve Ollama string strict num_ctx
resolves #5081

* Lemonade integration (#5077)

* lemonade integration

* lemonade embedder

* log

* load model

* readme updates

* update embedder privacy entry

* fix max tool call stack abort flow

* bump tag

* v1.11.1 PG

---------

Co-authored-by: Dipanshu Rawat <dv451197@gmail.com>
Co-authored-by: Marcello Fitton <106866560+angelplusultra@users.noreply.github.com>
Co-authored-by: shatfield4 <seanhatfield5@gmail.com>
timothycarambat added a commit that referenced this pull request Mar 2, 2026
* fix: typo in contribution guidelines, update project metadata  and pull_request_temp...md (#5010)

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* bump copyright year
resolves #5017

* feat: update light mode UI sidebar (#4996)

* implement light mode sidebar redesign

* Abstract hardcoded hex values into reusable css variables

* reorder ternary and apply bold font on hovered workspaces

* Remove double icon hack and use a state tracking whether workspace item is being hovered over for fill styles

* lint

* convert css variables and custom classes to default tailwind classes

* remove grab icon filling on hover logic

* revert css vars to original values

* remove light mode css vars | change bg of sidebar in light mode to right color | make icons correct color in light mode

* revert dark mode change

---------

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* fix(frontend): fix event listener memory leak in useIsDisabled hook (#5027)

fix: optimize event listener management in useIsDisabled hook

* feat: dedicated dark theme option with system preference support (#5007)

* implement OS level theme switching and dark mode option

* simplify

* fix logo bug in login | place back useTheme comment

---------

Co-authored-by: shatfield4 <seanhatfield5@gmail.com>
Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* fix cleanup pr workflow

* Implement new home page redesign (#4931)

* remove legacy home page components, update home page to new layout

* update PromptInput component styles to match new designs, make quick action buttons functional

* home page chat creates new thread in last used workspace

* fix slash commands and agent popup on home page

* disable llm workspace selector action in home page

* add drag and drop file support to home page

* fix behavior of drag and drop on home page

* handle pasting attachments in home page

* update empty state of workspace chat to use new ui

* update empty workspace ui to match home page design, fix flickering loading states

* convert quick action buttons to component, add to empty state ws chat

* fix hover state light mode in quick actions

* add suggested messages subcomponent to empty ws/thread

* adjust width, rounded edges of prompt input

* only show quick actions for admin/manager role

* fix hover states for quick actions and suggested messages component

* make upload document quick action trigger parsed document upload

* fix mic behavior in homepage, ws chat, ws thread chat

* fix margin between prompt input and quick actions

* Simplify message presets by removing heading input (#4915)

* Remove heading input from message presets, merge legacy headings on edit

* filter out empty messages from state after saving

* mark form as dirty on input change

* styling

---------

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* convert SuggestedMessages to component, render SuggestedMessages in home page to target ws

* fix broken handleMessageChange reference

* add translations for QuickActions

* lint

* fix home page chat submission broken by PromptInput onChange removal

* fix prompt input remount race condition, home page suggested message flicker

* remove unused handleSendSuggestedMessage from ChatHistory

* add greeting text to main-page translations, remove defaults

* fix file deletion in parsed files menu on home page

* add virtual thread sidebar state and workspace indicator on home page

* show workspace llm selector on home page when workspace exists

* show home page for all user roles with rbac quick actions

* fix positioning of agent and slash command popups

* remove workspace indicator from home page, match empty state spacing

* Normalize translations for home page redesign (#4986)

* normalize translations

* update translations with DMR

* accidentally changed es translation

* normalize translations for main-page.greeting

* update translations with DMR

---------

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* update translations

* create new workspace in native language
Cleanup workspace page from empty state handling

* update quick action show logic

* fix send button

---------

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* fix: GitLab connector infinite loop and rate limit crash for large repos (#5021)

* Fix infinite loop and rate limit crashes

* simplify logic | add max-retries to fetchNextPage and fetchSingleFileContents

---------

Co-authored-by: shatfield4 <seanhatfield5@gmail.com>
Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* fix: add password character validation to onboarding single-user setup (#5037)

* fix single user mode password bug

* share const

---------

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* Native Tool calling (#5071)

* checkpoint

* test MCP and flows

* add native tool call detection back to LMStudio

* add native tool call loops for Ollama

* Add ablity detection to DMR (regex parse)

* bedrock and generic openai with ENV flag

* deepseek native tool calling

* localAI native function

* groq support

* linting, add litellm and OR native tool calling via flag

* fix: resolve Gemini agent 400 error on tool call responses (#5054)

* add gtc__ prefix to tool call names in Gemini agent message formatting

* resolve Gemini agent 400 error on tool call responses

* add comments explaining geminis thought signatures

---------

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* fix: prevent CMD/CTRL+Arrow scroll from overriding textarea cursor movement (#5053)

prevent CMD/CTRL+Arrow scroll from overriding textarea cursor movement

Co-authored-by: Timothy Carambat <rambat1010@gmail.com>

* lint

* Normalize scraper runtimeargs for bulk-scraper (#5083)

resolves #5078
closes #5079

* resolve Ollama string strict num_ctx
resolves #5081

* Lemonade integration (#5077)

* lemonade integration

* lemonade embedder

* log

* load model

* readme updates

* update embedder privacy entry

* fix max tool call stack abort flow

* bump tag

* v1.11.1

---------

Co-authored-by: Dipanshu Rawat <dv451197@gmail.com>
Co-authored-by: Marcello Fitton <106866560+angelplusultra@users.noreply.github.com>
Co-authored-by: shatfield4 <seanhatfield5@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PR:needs review Needs review by core team PR: Ready for QA Indicates that a PR is ready for QA and the GH image may build the image PR: Zulu

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT]: Dedicated "Dark" Theme option

3 participants