Commit Graph
115 Commits
Author SHA1 Message Date
inference-admin 2d66ea212d README: document the in-app key-sync scheduling, the creds file, and the fail-closed guards 2026-10-25 22:44:34 +00:00
inference-admin e544dc4a11 key sync: read CREDS_KEY/CREDS_IV from the volume, add a failure diagnostic
The first scheduled run failed closed (good) — Cloudron's scheduler addon runs
each task in its OWN container, so the app's process env is absent there and
/proc/1/environ belongs to the task launcher, not to LibreChat. CREDS_KEY/CREDS_IV
now come from /app/data/.librechat-creds (root:cloudron 0640), written from the
live app env; a stale key makes the decrypt-against-existing-rows guard refuse to
write rather than corrupt member keys. Credential failure now also writes
/app/data/key-sync-diag.txt so a future failure explains itself.

Verified: the 22:40 scheduled fire logged 'creds check: decrypt-ok (25 existing
row(s))' / 'done: 50 seeded, 15 skipped'.
2026-10-25 22:42:13 +00:00
inference-admin 4e28b7a612 Key sync runs inside the app: scheduler addon task every 10 min, plus write guards
The per-member key seed ran from a steward cron on the co-op agent VM, shelling
into this app over the Cloudron API. That made a member-facing function depend on
a separate machine's uptime and paths (it went silently stale once, exiting 127
on schedule while the job looked healthy).

- CloudronManifest.json: addons.scheduler gains librechat_key_sync
  (cd /app/code/librechat/api && node /app/data/sync-keys.js, */10 * * * *).
  Official addon set (postgresql, mongodb, localstorage, oidc, sendmail) and the
  dockerImage pin are untouched.
- sync-keys.js: refuse to write unless CREDS_KEY can first decrypt an existing
  key row, and unless each fresh ciphertext round-trips back to the plaintext.
  Scheduled runs get a different environment than an interactive exec, so a wrong
  or absent CREDS_KEY must fail loudly instead of overwriting working member keys.
2026-10-25 22:25:10 +00:00
Nathan Schneider f7a4fdb48d modelSpecs: webSearch default ON for all 8 specs (new conversations start with web search active; per-conversation toggle still wins) 2026-10-23 11:25:22 -06:00
Nathan Schneider 22f9422259 Pin manifest to 20261023-65a38bb 2026-10-23 11:11:45 -06: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 10b63c9454 Pin manifest to 20261023-515c92c 2026-10-23 11:02:42 -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 a21f496de2 README: PWA deploy lessons (stale COPY layer, icon cache-busting, maskable safe zone, Firefox crossorigin, theme bars) 2026-10-22 13:35:57 -06:00
Nathan Schneider 7e94135bc5 Pin manifest to 20261022-17e7c92 2026-10-22 13:32:33 -06:00
Nathan Schneider 17e7c92ece manifest icons: per-build version query — PWA icon URLs are cached 48h by the phone and remove/re-add does not clear that cache, so launchers kept rendering the previous build's icon bytes 2026-10-22 13:32:05 -06:00
Nathan Schneider 077e6141b3 Pin manifest to 20261022-4a2b9c1 (no-cache rebuild — stale COPY layer shipped the old maskable icon) 2026-10-22 12:31:00 -06:00
Nathan Schneider df55d7fafa PWA fixes: padded maskable icon (launcher crop), edge-to-edge bands, Firefox manifest fetch
- maskable-icon.png regenerated: logo at ~66% on the brand background —
  inside the maskable safe zone, so Android no longer crops it ('zoomed in').
- index.html: viewport-fit=cover + manifest link without
  crossorigin=use-credentials (Firefox Android fails to resolve manifest
  icons on credentialed fetches — missing launcher icon).
- custom.css: standalone-mode safe-area padding so app content clears the
  system bars; the bands show the theme-correct page background.
2026-10-21 22:16:29 -06:00
Nathan Schneider 637fcc3472 Pin manifest to 20261022-d86483e 2026-10-21 21:07:23 -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 7eb13856d7 Pin manifest to 20261021-c2c674a 2026-10-20 22:29:25 -06:00
Nathan Schneider c2c674a83e favicon.ico also at dist root (/favicon.ico) 2026-10-20 22:29:17 -06:00
Nathan Schneider 2767536d1f Pin manifest to 20261021-db2dbe3 2026-10-20 22:27:31 -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 28790d2fe7 Pin manifest to 20261021-c47c311 2026-10-20 22:21:10 -06:00
Nathan Schneider c47c311873 manifest icons: explicit any/maskable entries (no dual-purpose value — Firefox Android quirk), launcher sizes first 2026-10-20 22:21:00 -06:00
Nathan Schneider 0560c6e26b Pin manifest to 20261021-7e1de2f 2026-10-20 22:12:17 -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 6a6f8b4103 Pin manifest to 20261021-dcd7486 2026-10-20 21:57:03 -06:00
Nathan Schneider dcd7486415 patch_index: PWA identity — manifest name/short_name 'Inference Co-op'/'Inference', description, 512 icon purpose any+maskable (fixes generic Android icon + LibreChat label) 2026-10-20 21:56:42 -06:00
Nathan Schneider 04b217b306 Pin manifest to 20261020-0468562 2026-10-20 13:45:58 -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 3b706eed74 Pin manifest to 20261020-1594a60 2026-10-20 13:41:03 -06:00
Nathan Schneider 1594a60bac custom2.js: one-time pin migration — clear artifact PIN_MCP_/LAST_WEB_SEARCH_TOGGLE_pinned=false so corrected defaultPinnedTools applies to existing sessions 2026-10-20 13:40:27 -06:00
Nathan Schneider 94a0ee9614 defaultPinnedTools: include 'mcp' — omitting it unpins the Tools button itself (client seed sets PIN_MCP_=false) 2026-10-20 12:10:44 -06:00
Nathan Schneider f16ffe1fc4 interface.defaultPinnedTools: [web_search] — pin the Web Search badge next to Tools in the composer 2026-10-20 11:38:23 -06:00
Nathan Schneider 5864741233 Pin manifest to e9850d7 2026-10-19 21:43:56 -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 289ab2f9ff Pin manifest to 8abdc95 2026-10-19 21:41: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 ecb99a633c README: final palette — cream page, white text areas, green accents 2026-10-19 12:54:57 -06:00
Nathan Schneider 15035fd69e Pin manifest to 05c3681 2026-10-19 12:52:33 -06:00
Nathan Schneider 05c368100a theme: light background -> cream #faf8f5 (the dashboard's true page background); green stays as accents; chat text areas stay white 2026-10-19 12:52:20 -06:00
Nathan Schneider 17129e462b Pin manifest to 429de96 2026-10-19 12:45:20 -06:00
Nathan Schneider 429de96184 theme: dashboard approach — green background, chat text areas (surface-chat/presentation secondary) highlighted white 2026-10-19 12:45:04 -06:00
Nathan Schneider ef692d524c Pin manifest to 0a363b3 2026-10-19 12:38:23 -06:00
Nathan Schneider 0a363b3b81 theme: override --presentation and --surface-chat (chat-form backdrop + messages area were still white in light mode) 2026-10-19 12:37:56 -06:00
Nathan Schneider 92c06e7012 README: Figtree self-hosting + linked footer notes 2026-10-19 10:42:46 -06:00
Nathan Schneider a2c180f848 Pin manifest to a24286c 2026-10-19 10:40:40 -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 264f2700b7 README: dashboard-green light palette + UI string patch notes 2026-10-19 10:35:04 -06:00
Nathan Schneider 3bbdda6371 Pin manifest to 499d4fa 2026-10-19 10:32:36 -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 d91c91f7a3 README: per-member image billing restored (system key safety-net only) 2026-10-19 08:50:29 -06:00