40 Commits
Author SHA1 Message Date
inference-admin c2aec749b4 overlay: rebase on appstore package 1.4.8 (candidate for 2026-11-08 window)
- Dockerfile FROM: appstore 1.4.5 image (202610230221180000) -> 1.4.8
  (202611030321030000). Same LibreChat upstream 0.8.8 in both - the package
  delta is tooling only: uv 0.13.5->0.13.7 and Node.js 22.23.4 (security fix,
  1.4.7), base image 6.0.1 (eMudhra cert fix, 1.4.4 - already in 1.4.5).
- All overlay anchors verified against the real 1.4.8 image dist (title tag,
  manifest link crossorigin, viewport meta, theme-color #171717, webmanifest
  name/colors, 'MCP Servers' + 'Every AI for Everyone.' strings, index.*.js,
  sw.js): unchanged, no porting needed.
- release.sh BASE_IMAGE default follows the pin.
2026-11-06 04:05:01 +00:00
inference-bot d099d31f6a Cream page background end-to-end: Dockerfile PWA colors, README, verify block
Follow-up to the custom.css/custom2.js change: the Dockerfile seds the web
manifest theme_color/background_color and the index.html light meta to
#eaf3ea, and the README's verify block asserted the green wash as correct
("an earlier version of this block asserted cream ... would have led you to
fix a correct deploy"). Both are the same regression: the wash was rejected
earlier, restored by accident, and then documented as intended.

- Dockerfile: manifest + index meta -> #faf8f5 (cream), with an explicit
  "keep these three in sync" note (this sed, custom.css html:not(.dark),
  custom2.js COOP_BG.light).
- README verify block: asserts cream again, plus a new step for the
  install-time colors no DOM check covers (manifest + light meta).
- README palette section: hover is #f0ede6 not the wash; --presentation is
  cream; source of truth is the DEPLOYED CSS of dashboard/portal/panel, with
  the read command; records the shared 4.32:1 / 3.93:1 accessibility caveat;
  notes that cloudron exec silently swallows multi-line sh -c.
2026-10-27 21:59:25 +00:00
inference-bot 60ee597792 Merge pull request 'Bump the appstore pin to 1.4.5 (uv 0.13.5)' (#3) from feat/appstore-1.4.5 into master 2026-10-26 03:25:23 +00:00
inference-admin 8f9d6a1e20 Stage: bump the appstore pin to 1.4.5 (uv 0.13.5, LibreChat unchanged at 0.8.8)
Not deployed. Diffed against the official 1.4.5 manifest: version, changelog and
the base-image tag were the only differences, so this copy now matches official
field-for-field except dockerImage (+ our scheduler block).

The risk is the overlay, not the bump: every build-time patch runs against a new
base layer, and they are all non-fatal by design, so a silent no-op is the failure
mode. Verify on the rendered DOM. Rollback = repoint dockerImage to
20261023-65a38bb.
2026-10-26 01:36:11 +00:00
inference-admin 0102c1790f Stage: run the per-member key seed from the image, not the volume
Ready to build, not yet deployed — deploying the repointed scheduler command
without the new image would break the seed on schedule, which is why this sits on
a branch with the ordering written down.

- Dockerfile: COPY sync-keys.js /app/code/sync-keys.js; rule 3 in the header now
  states the one exception (operational scripts that must not depend on a volume).
- CloudronManifest.json: scheduler command repointed to /app/code/sync-keys.js.
- README: ordering (build -> deploy -> verify -> delete the volume copy), and the
  table row moved from the volume layer to the image layer.

After deploy: delete /app/data/sync-keys.js, but keep it until you are past the
rollback window — the previous image tag still runs the volume copy.
2026-10-26 01:35:06 +00:00
Nathan Schneider 65a38bbccd logguard: explicit stdout/stderr paths — supervisord's auto-named childlog dir crashes it 2026-10-23 11:11:08 -06:00
Nathan Schneider 515c92c403 log-guard: root supervisord program keeps dated log files cloudron-owned
A host-side daily job creates the next day's dated log files as root:root at
00:00 UTC; LibreChat (cloudron user) then EACCES-crashes on its first log
write of the day (2026-10-22 and 2026-10-23 incidents). The guard pre-creates
today's and tomorrow's files as cloudron and repairs strays every minute.
Defense-in-depth until the host rotation config is fixed.
2026-10-23 10:57:25 -06:00
Nathan Schneider d86483e5a1 restore green-wash theme (lost in the Oct 21 rebuild) + PWA band colors
The Oct 19 theming (light = #eaf3ea dashboard green wash, white cards/surfaces,
per approval) was never committed - the Oct 21 pin-migration rebuild from this
repo silently reverted the deployed theme to the older cream iteration.

- custom.css: light block restored to the approved green-wash palette
  (primary #eaf3ea, white secondary/chat cards, green hover/tertiary/border);
  loading screen + bare page background match.
- Dockerfile: manifest theme_color/background_color and the index.html
  theme-color media pair now follow the live palette (#eaf3ea light /
  #22271f deep pine dark).
- custom2.js: sync ONE meta theme-color to the app's resolved theme
  (html.dark class + prefers-color-scheme listener) so Android status/nav
  bands and iOS safe areas track the theme at runtime; the static media
  pair remains as the no-JS fallback.
2026-10-21 20:46:45 -06:00
Nathan Schneider c2c674a83e favicon.ico also at dist root (/favicon.ico) 2026-10-20 22:29:17 -06:00
Nathan Schneider db2dbe3016 assets: add favicon.ico (48/32/16 from the 192 icon) — some Android icon-resolution flows request it; was 404 2026-10-20 22:27:22 -06:00
Nathan Schneider 7e1de2f99b sw.js: per-build stamp — every deploy changes the service worker bytes so browsers update the worker and re-precache current content (manifest identity, index.html) 2026-10-20 22:11:41 -06:00
Nathan Schneider 0468562aa0 index.html branding via patch_index.py + per-build x-coop-build marker (SW self-heal); replaces fragile sed chain 2026-10-20 13:45:33 -06:00
Nathan Schneider 4b534fcaa2 Dockerfile: stamp a unique x-coop-build meta into index.html every build — forces the service worker precache to update so stale clients self-heal on deploy 2026-10-20 13:44:37 -06:00
Nathan Schneider e9850d7148 PWA manifest sed: minified JSON has no space after colon — make match spacing-agnostic 2026-10-19 21:43:48 -06:00
Nathan Schneider 8abdc95803 PWA chrome: manifest theme_color #009688 teal -> cream #faf8f5, background black -> cream; index.html theme-color light/dark pair; html/body bg matches theme (fixes green top bar + white bottom bar in Firefox PWA) 2026-10-19 21:41:31 -06:00
Nathan Schneider a24286cb74 Footer link + Figtree font (self-hosted from design kit); footer text simplified 2026-10-19 10:40:14 -06:00
Nathan Schneider 499d4faaf2 UI: dashboard-green light background; 'MCP Servers' -> 'Tools'; co-op footer text (build-time string patch) 2026-10-19 10:32:07 -06:00
Nathan Schneider 957293d95b Dockerfile: cache-bust logo URL in the client bundle (defeats stale SW/browser cache of the broken white-plate logo); drop stale precompressed bundle copies 2026-10-18 23:49:07 -06:00
Nathan Schneider 03e6baf3df Rebrand via Tailwind theme vars; hide signup prompt via :has() + observer; sync yaml with volume fix 2026-10-18 22:36:57 -06:00
Nathan Schneider a4855aba2f Switch to custom_v2.css to bust cache 2026-10-18 22:22:04 -06:00
Nathan Schneider e8c9bebd46 Inject custom2.js directly, remove old replace 2026-10-18 22:13:45 -06:00
Nathan Schneider ff4078b08f Replace custom.js with custom2.js in index.html 2026-10-18 22:05:03 -06:00
Nathan Schneider 3206fba5b3 Use custom2.js without prompt 2026-10-18 22:03:38 -06:00
Nathan Schneider 693030d8fe Add rebuild trigger comment to force custom.js copy 2026-10-18 22:02:06 -06:00
Nathan Schneider e56624d943 Enhance custom.js to prompt for API key if missing and inject script tag 2026-10-18 21:38:46 -06:00
Nathan Schneider 632328db88 Add rebuild marker to force CSS injection 2026-10-18 21:29:33 -06:00
Nathan Schneider 4e2aac9358 Edit dist/index.html to inject branding 2026-10-18 21:28:32 -06:00
Nathan Schneider 58b3603880 Rewrite Dockerfile: copy custom.css/js and edit source index.html 2026-10-18 21:26:25 -06:00
Nathan Schneider 2e8002d6c2 Branding fix: inject custom.css via source patch and add auto‑load JS 2026-10-18 21:25:00 -06:00
Nathan Schneider 20be88f6e7 Inject CSS before </head> and simplify title replacement 2026-10-18 21:16:39 -06:00
Nathan Schneider be78979792 Fix CSS injection order 2026-10-18 21:13:05 -06:00
Nathan Schneider d71667346e Fix sed command for CSS injection 2026-10-18 21:08:29 -06:00
Nathan Schneider c967d788de Add custom.css and inject it into index.html 2026-10-18 21:08:06 -06:00
Nathan Schneider 070dec3d29 Sustainable LibreChat setup: official manifest, config layer, brand overlay
- CloudronManifest.json: byte-identical copy of the OFFICIAL appstore manifest
  (the hand-edited one stripped addons and crash-looped the app on 2026-10-18)
- Dockerfile: pinned base (202610150224320000), brand assets only + title sed
- librechat.yaml: schema 1.3.17; chat models only in picker (qwen-image moved
  to the agent image tool); speech via gateway with capped key refs; SearXNG
  web search; inference-docs MCP server; forward-compatible interface.theme
- mcp/server.py: docs MCP server (stdio, stdlib-only, tool search_docs)
- assets/: co-op logo + favicons/PWA icons
2026-10-18 20:26:40 -06:00
Nathan Schneider 3a4ed91359 Also copy logo.png as logo-coop.png for model icons 2026-10-18 18:26:21 -06:00
Nathan Schneider 3c3109a188 Replace default logo.svg with co‑op SVG wrapper 2026-10-18 18:07:49 -06:00
Nathan Schneider 447005e4e7 Add CloudronManifest and copy logo into client assets 2026-10-18 17:51:25 -06:00
Nathan Schneider a86a81ee84 Copy logo into client assets for UI 2026-10-18 17:50:56 -06:00
Nathan Schneider 4ede9a3ef3 Remove unused oauth copy and fix permissions 2026-10-18 16:52:38 -06:00
Nathan Schneider b2badebad6 Add image model (regolo-qwen-image) to modelSpecs, enabling UI image‑generation button 2026-10-18 16:51:36 -06:00