Commit Graph
17 Commits
Author SHA1 Message Date
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
inference-admin bb2503bb47 Add release.sh; make the verify block honest; print the seed script's own revision
Three drifts between this repo and reality, found while moving the per-member key
seed into the app:

- The 'verify after every image deploy' block asserted the CREAM palette
  (rgb(250,248,245)). The deployed palette has been the green wash
  (rgb(234,243,234) with white text areas) for some time, so a correct deploy
  would have read as a failure — and invited someone to 'fix' the CSS back.
- The block still verified against librechat-test.inference.coop; the swap to
  chat.inference.coop happened 2026-10-21 and that alias is not provisioned.
- Nothing checked that the scheduler task's script exists in the running image,
  which is exactly the failure mode a manifest repoint can introduce.

release.sh encodes the documented release flow (dirty-tree guard, always
--no-cache, pin-before-deploy) and its verify subcommand runs checks 1-5 plus the
seed task's log lines. sync-keys.js now prints its own md5 prefix on every run,
so a stale volume copy can never hide again — the repo copy's md5 is the
authority.

Verified: ./release.sh verify passes all six checks against the live app;
./release.sh volume sync-keys.js confirms md5 parity.
2026-10-26 01:34:22 +00:00
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
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 ecb99a633c README: final palette — cream page, white text areas, green accents 2026-10-19 12:54:57 -06:00
Nathan Schneider 92c06e7012 README: Figtree self-hosting + linked footer notes 2026-10-19 10:42:46 -06:00
Nathan Schneider 264f2700b7 README: dashboard-green light palette + UI string patch notes 2026-10-19 10:35:04 -06:00
Nathan Schneider d91c91f7a3 README: per-member image billing restored (system key safety-net only) 2026-10-19 08:50:29 -06:00
Nathan Schneider f15307d2f7 README: images bill to system key (no customUserVars gate); pluginauths inert 2026-10-19 08:30:29 -06:00
Nathan Schneider 3811105847 README: homepage palette source of truth + logo/icon notes 2026-10-18 23:50:34 -06:00
Nathan Schneider 94b401e837 README: per-member key auto-load section + redaction gotcha 2026-10-18 23:28:49 -06:00
Nathan Schneider 126972beeb README: fix verification snippet (single-app API returns top-level object) 2026-10-18 22:54:14 -06:00
Nathan Schneider 91e97b00ea README: document manifest-pinned deploy flow, builder-cache trap, branding overlay, keyless image path; mirror live volume files 2026-10-18 22:52:23 -06:00
Nathan Schneider 5e214e4d7e Add inference-image MCP server (accessible image generation) + proper favicon sizes
- mcp/image_server.py: generate_image tool via the co-op gateway; per-member
  key injected through customUserVars (IC_API_KEY) -> env; verified standalone
  (handshake, tools/list, real 1024x1024 + 1536x1024 images, error paths)
- librechat.yaml: register inference-image with startup:false (per-user
  credentials), 120s timeout
- assets/: real favicon sizes (16/32/192), opaque apple-touch 180, padded
  maskable 512
2026-10-18 20:52:48 -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 6d85622efa Document image generation button addition 2026-10-18 16:56:31 -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