Commit Graph
22 Commits
Author SHA1 Message Date
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-bot 13f2b3a857 Merge pull request 'Run the per-member key seed from the image, not the volume' (#2) from feat/keysync-script-in-image into master 2026-10-26 03:20:59 +00:00
inference-admin b657030d24 release.sh: correct the build prerequisites (builds are remote, not docker-local)
I had it wrong: `cloudron builder build` uploads the build context and the
registry app's BuildKit builds it — the caller needs no docker, only a registry
login. The guard now checks for that login and prints both bootstrap routes
(narrow app password scoped to the registry app, or the CLI device flow) instead
of blaming a missing docker binary.
2026-10-26 01:39:38 +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
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