[PR #24359] [CLOSED] Apply Swept rebrand via static overrides #114924

Closed
opened 2026-05-18 15:48:44 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/open-webui/open-webui/pull/24359
Author: @l3aconator
Created: 5/4/2026
Status: ❌ Closed

Base: main ← Head: feat/swept-rebrand


📝 Commits (10+)

  • a818db3 Enable 4GB Node heap for frontend build
  • 82e8b5a Add /approve PR bot workflow
  • 653eb9f Merge pull request #1 from swept-ai/fix/dockerfile-node-heap-size
  • 1af5ad9 Merge pull request #2 from swept-ai/chore/pr-approve-bot
  • ed9d688 Add CLAUDE.md to orient agents in this repo
  • c568e61 Merge branch 'open-webui:main' into main
  • 878fad1 Merge pull request #3 from swept-ai/docs/claude-md
  • 78a83e3 Fix frontend build CI heap and remove unused release workflows
  • cbbd2e5 Apply prettier formatting to CLAUDE.md
  • 0a7ddab Merge pull request #4 from swept-ai/ci/fix-frontend-build-and-prune-workflows

📊 Changes

18 files changed (+223 additions, -1020 deletions)

View changed files

➖ .github/workflows/build-release.yml (+0 -61)
➖ .github/workflows/docker-build.yaml (+0 -917)
📝 .github/workflows/format-build-frontend.yaml (+2 -0)
➕ .github/workflows/pr-approve-bot.yml (+76 -0)
➖ .github/workflows/release-pypi.yml (+0 -36)
📝 .gitignore (+0 -1)
➕ CLAUDE.md (+71 -0)
📝 Dockerfile (+1 -1)
📝 src/app.html (+1 -1)
📝 static/static/apple-touch-icon.png (+0 -0)
📝 static/static/custom.css (+36 -0)
📝 static/static/favicon-96x96.png (+0 -0)
📝 static/static/favicon.ico (+0 -0)
📝 static/static/favicon.png (+0 -0)
📝 static/static/favicon.svg (+36 -3)
📝 static/static/logo.png (+0 -0)
📝 static/static/splash-dark.png (+0 -0)
📝 static/static/splash.png (+0 -0)

📄 Description

Summary

Lightweight rebrand to make Open WebUI look like a Swept product (slate palette, Red Hat Text/Display, Swept brandmark/wordmark) — designed to keep the diff against open-webui/open-webui upstream as small as possible so we can keep pulling in git merge upstream/main cleanly.

Total tracked text diff: 1 line in src/app.html + 1 new CSS file + replaced binary assets. src/tailwind.css, src/lib/components/chat/Settings/General.svelte, backend/open_webui/env.py, and tailwind.config.js are deliberately untouched.

What changed

  • static/static/custom.css — was empty; now the override layer. Loaded by src/app.html:35 (a built-in extension point in upstream). Contains:
    • Google Fonts @import for Red Hat Text (body) + Red Hat Display (headings).
    • :root overrides remapping --color-gray-50…950 to Tailwind slate hex values, with !important to win cascade against the bundled Tailwind v4 @theme block from src/tailwind.css.
    • --font-sans / --font-display overrides + an html, body, pre font-family rule.
    • A CSS rule hiding <option value=\"oled-dark\"> and <option value=\"her\"> so the Settings → General theme picker only shows System / Dark / Light without forking General.svelte.
  • src/app.html:118 — <title>Open WebUI</title> → <title>Swept Workbench</title>. Eliminates the pre-hydration title flash. Only tracked text-source edit.
  • Replaced brand assets in static/static/ — logo.png, splash.png, splash-dark.png, favicon.{svg,png,ico}, favicon-96x96.png, apple-touch-icon.png. Favicons rendered from swept-workbench/app/assets/images/swept-logo.svg via rsvg-convert (ImageMagick's MSVG renderer was dropping the gradient fill).
  • Run product name comes from the WEBUI_NAME env var. Set WEBUI_NAME=\"Swept Workbench\" in your deploy env (Docker compose, etc.).

Why this approach

The upstream is moving and we want to keep tracking it. Most components in Open WebUI use raw bg-gray-* dark:bg-gray-* Tailwind utilities (90%+ of components), so a true semantic-token refactor would touch hundreds of .svelte files and conflict on every upstream merge. By overriding the values that those utilities resolve to in a single CSS file, every existing class inherits the new palette with zero component-level edits.

Trade-offs (acceptable for now):

  • !important on the CSS variables is fragile if upstream changes how @theme emits tokens. Caught immediately on next merge.
  • Dead-code paths for oled-dark and her remain in General.svelte and app.html — unreachable via the picker, harmless, much easier to merge.
  • The SvelteKit app appends "(Open WebUI)" to the dynamic page title on certain routes — that suffix is hardcoded in a Svelte component, separate from app.html's <title>. Not addressed in this PR; would be a follow-up if we want it gone.

Test plan

  • Container test against the published ghcr.io/open-webui/open-webui:main image with this branch's static/static/ and a patched index.html bind-mounted on top, plus WEBUI_NAME=\"Swept Workbench\". Verified in a real browser:
    • Tab title is "Swept Workbench" (with "(Open WebUI)" appended on dynamic routes).
    • Body computed font-family leads with \"Red Hat Text\"; 16 Red Hat font-face variants loaded.
    • --color-gray-50 resolves to #f8fafc, --color-gray-900 to #0f172a, --color-gray-950 to #020617 (slate).
    • Sidebar + model-header brandmark, suggested-prompt typography, and chat surface all pick up the new palette + fonts.
    • Settings → General → Theme dropdown shows only System / Dark / Light; OLED Dark and Her are display: none.
    • Switching to Dark flips the document to slate-900/950; switching back to Light flips to slate-50/100. No FOUC.
    • All replaced static assets serve HTTP 200.
  • Reviewer to verify in their local environment with npm run dev + backend, or via the same prebuilt-image bind-mount approach.
  • Future upstream merge: expect at most a 1-line conflict on src/app.html:118 (title); no other text conflicts.

🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/open-webui/open-webui/pull/24359 **Author:** [@l3aconator](https://github.com/l3aconator) **Created:** 5/4/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feat/swept-rebrand` --- ### 📝 Commits (10+) - [`a818db3`](https://github.com/open-webui/open-webui/commit/a818db3deef5bc6fbb442d662d5c0b8c30c44c0c) Enable 4GB Node heap for frontend build - [`82e8b5a`](https://github.com/open-webui/open-webui/commit/82e8b5adf7a73deffbe1e497432164b988d34888) Add /approve PR bot workflow - [`653eb9f`](https://github.com/open-webui/open-webui/commit/653eb9fdde51429331dd7e5d7cb4d5eca3fa9c3c) Merge pull request #1 from swept-ai/fix/dockerfile-node-heap-size - [`1af5ad9`](https://github.com/open-webui/open-webui/commit/1af5ad9ab1d4f125e31666c4815a0719fc8c36c8) Merge pull request #2 from swept-ai/chore/pr-approve-bot - [`ed9d688`](https://github.com/open-webui/open-webui/commit/ed9d68834e1d657583f0bf028a38244b7b6ad992) Add CLAUDE.md to orient agents in this repo - [`c568e61`](https://github.com/open-webui/open-webui/commit/c568e6197e95bcb9006d320a60a94a2711e86c66) Merge branch 'open-webui:main' into main - [`878fad1`](https://github.com/open-webui/open-webui/commit/878fad132b5f9b94a0c3f52d6a595662cafde53e) Merge pull request #3 from swept-ai/docs/claude-md - [`78a83e3`](https://github.com/open-webui/open-webui/commit/78a83e3cf475e212275b6553685e150dad39dcdf) Fix frontend build CI heap and remove unused release workflows - [`cbbd2e5`](https://github.com/open-webui/open-webui/commit/cbbd2e57ca3b875471edda2dc8605297df377685) Apply prettier formatting to CLAUDE.md - [`0a7ddab`](https://github.com/open-webui/open-webui/commit/0a7ddabab795014e164cbd51221cb993878c12bf) Merge pull request #4 from swept-ai/ci/fix-frontend-build-and-prune-workflows ### 📊 Changes **18 files changed** (+223 additions, -1020 deletions) <details> <summary>View changed files</summary> ➖ `.github/workflows/build-release.yml` (+0 -61) ➖ `.github/workflows/docker-build.yaml` (+0 -917) 📝 `.github/workflows/format-build-frontend.yaml` (+2 -0) ➕ `.github/workflows/pr-approve-bot.yml` (+76 -0) ➖ `.github/workflows/release-pypi.yml` (+0 -36) 📝 `.gitignore` (+0 -1) ➕ `CLAUDE.md` (+71 -0) 📝 `Dockerfile` (+1 -1) 📝 `src/app.html` (+1 -1) 📝 `static/static/apple-touch-icon.png` (+0 -0) 📝 `static/static/custom.css` (+36 -0) 📝 `static/static/favicon-96x96.png` (+0 -0) 📝 `static/static/favicon.ico` (+0 -0) 📝 `static/static/favicon.png` (+0 -0) 📝 `static/static/favicon.svg` (+36 -3) 📝 `static/static/logo.png` (+0 -0) 📝 `static/static/splash-dark.png` (+0 -0) 📝 `static/static/splash.png` (+0 -0) </details> ### 📄 Description ## Summary Lightweight rebrand to make Open WebUI look like a Swept product (slate palette, Red Hat Text/Display, Swept brandmark/wordmark) — designed to keep the diff against `open-webui/open-webui` upstream as small as possible so we can keep pulling in `git merge upstream/main` cleanly. **Total tracked text diff: 1 line in `src/app.html`** + 1 new CSS file + replaced binary assets. `src/tailwind.css`, `src/lib/components/chat/Settings/General.svelte`, `backend/open_webui/env.py`, and `tailwind.config.js` are deliberately untouched. ### What changed - **`static/static/custom.css`** — was empty; now the override layer. Loaded by `src/app.html:35` (a built-in extension point in upstream). Contains: - Google Fonts `@import` for **Red Hat Text** (body) + **Red Hat Display** (headings). - `:root` overrides remapping `--color-gray-50…950` to Tailwind **slate** hex values, with `!important` to win cascade against the bundled Tailwind v4 `@theme` block from `src/tailwind.css`. - `--font-sans` / `--font-display` overrides + an `html, body, pre` font-family rule. - A CSS rule hiding `<option value=\"oled-dark\">` and `<option value=\"her\">` so the Settings → General theme picker only shows **System / Dark / Light** without forking `General.svelte`. - **`src/app.html:118`** — `<title>Open WebUI</title>` → `<title>Swept Workbench</title>`. Eliminates the pre-hydration title flash. Only tracked text-source edit. - **Replaced brand assets in `static/static/`** — `logo.png`, `splash.png`, `splash-dark.png`, `favicon.{svg,png,ico}`, `favicon-96x96.png`, `apple-touch-icon.png`. Favicons rendered from `swept-workbench/app/assets/images/swept-logo.svg` via `rsvg-convert` (ImageMagick's MSVG renderer was dropping the gradient fill). - **Run product name** comes from the `WEBUI_NAME` env var. Set `WEBUI_NAME=\"Swept Workbench\"` in your deploy env (Docker compose, etc.). ### Why this approach The upstream is moving and we want to keep tracking it. Most components in Open WebUI use raw `bg-gray-* dark:bg-gray-*` Tailwind utilities (90%+ of components), so a true semantic-token refactor would touch hundreds of `.svelte` files and conflict on every upstream merge. By overriding the **values** that those utilities resolve to in a single CSS file, every existing class inherits the new palette with zero component-level edits. Trade-offs (acceptable for now): - `!important` on the CSS variables is fragile if upstream changes how `@theme` emits tokens. Caught immediately on next merge. - Dead-code paths for `oled-dark` and `her` remain in `General.svelte` and `app.html` — unreachable via the picker, harmless, much easier to merge. - The SvelteKit app appends \"(Open WebUI)\" to the dynamic page title on certain routes — that suffix is hardcoded in a Svelte component, separate from `app.html`'s `<title>`. Not addressed in this PR; would be a follow-up if we want it gone. ## Test plan - [x] Container test against the published `ghcr.io/open-webui/open-webui:main` image with this branch's `static/static/` and a patched `index.html` bind-mounted on top, plus `WEBUI_NAME=\"Swept Workbench\"`. Verified in a real browser: - Tab title is \"Swept Workbench\" (with \"(Open WebUI)\" appended on dynamic routes). - Body computed `font-family` leads with `\"Red Hat Text\"`; 16 Red Hat font-face variants loaded. - `--color-gray-50` resolves to `#f8fafc`, `--color-gray-900` to `#0f172a`, `--color-gray-950` to `#020617` (slate). - Sidebar + model-header brandmark, suggested-prompt typography, and chat surface all pick up the new palette + fonts. - Settings → General → Theme dropdown shows only **System / Dark / Light**; OLED Dark and Her are `display: none`. - Switching to **Dark** flips the document to slate-900/950; switching back to **Light** flips to slate-50/100. No FOUC. - All replaced static assets serve HTTP 200. - [ ] Reviewer to verify in their local environment with `npm run dev` + backend, or via the same prebuilt-image bind-mount approach. - [ ] Future upstream merge: expect at most a 1-line conflict on `src/app.html:118` (title); no other text conflicts. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-05-18 15:48:44 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#114924