diff --git a/Dockerfile b/Dockerfile index cb807bb..54f5d67 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,13 +8,13 @@ # 1. The base tag is PINNED to the exact appstore image the app runs # (manifest.dockerImage). Never a floating tag: a rebuild must never # silently pull a newer LibreChat than the one we validated. -# 2. NEVER edit CloudronManifest.json — the copy in this repo must stay -# byte-identical to the OFFICIAL appstore manifest. `cloudron update` -# reads it from the deploy directory and applies it to the app; a -# hand-edited manifest that omits addons (postgresql, mongodb, oidc, -# sendmail, localstorage) strips them from the app and crash-loops it -# (mkdir: Read-only file system). That is what broke the sandbox on -# 2026-10-18 — the manifest, not the overlay, was the bug. +# 2. CloudronManifest.json keeps the OFFICIAL appstore addons block +# (postgresql, mongodb, oidc, sendmail, localstorage) — never remove or +# hand-edit those, or the app crash-loops (mkdir: Read-only file system). +# The ONLY field we change is `dockerImage`, repointed to the overlay tag +# built from this repo on every deploy (the base FROM stays the appstore +# image we validated). A stale dockerImage pin silently redeploys an old +# build — that is what broke the sandbox on 2026-10-18/19. # 3. This image changes ONLY static brand assets. All behavior lives on the # persistent volume (/app/data/librechat.yaml, /app/data/env, # /app/data/mcp/) and survives image updates unchanged. @@ -48,3 +48,10 @@ RUN sed -i 's|LibreChat|Inference Co‑op|' /app/c sed -i '//a ' /app/code/librechat/client/dist/index.html && \ sed -i 's|assets/logo.svg|assets/logo.svg?v=3|g' /app/code/librechat/client/dist/assets/index.*.js && \ rm -f /app/code/librechat/client/dist/assets/index.*.js.gz /app/code/librechat/client/dist/assets/index.*.js.br + +# PWA chrome colors: LibreChat ships a teal theme_color (#009688) in the web +# manifest (the bright green bar Firefox PWAs draw across the top) and black +# background_color. Point both at the cream page color; the index.html meta +# gets a light + dark pair so browser tabs match the theme too. +RUN sed -i 's|"theme_color": "#009688"|"theme_color": "#faf8f5"|; s|"background_color": "#000000"|"background_color": "#faf8f5"|' /app/code/librechat/client/dist/manifest.webmanifest && \ + sed -i 's||\n |' /app/code/librechat/client/dist/index.html diff --git a/assets/custom.css b/assets/custom.css index ec250a1..b6b85f9 100644 --- a/assets/custom.css +++ b/assets/custom.css @@ -119,3 +119,8 @@ footer a { footer a:hover { text-decoration: underline; } + +/* Bare page background: cream in light, deep pine in dark — so any viewport + area the app UI does not cover (e.g. PWA navigation-bar insets) matches. */ +html:not(.dark), html:not(.dark) body { background-color: rgb(250, 248, 245); } +html.dark, html.dark body { background-color: rgb(34, 39, 31); }