feat(web): customizable placeholder, footer text, and color theme via BOR_* env vars
BOR_INPUT_PLACEHOLDER / BOR_FOOTER_TEXT / BOR_THEME (+ the indigo.css example theme); authoring guide: frontend/assets/themes/README.md, docs: README 'Customizing the look'.
This commit is contained in:
@@ -732,6 +732,9 @@ served locally (no CDN), `BOR_ENVIRONMENT=production`.
|
||||
| Env | Default | Meaning |
|
||||
|-----|---------|---------|
|
||||
| `BOR_APP_NAME` | `Brain of Reese` | the display name everywhere (phase 39): every page `<title>`, the header brand, the chat status labels ("… is thinking"), the empty-state greeting, and the aria/placeholder text. Served to the frontend by `GET /api/config` and applied by `assets/brand.js`; a name starting `Brain of ` keeps the bold split (`Brain of <strong>rest</strong>`), any other name renders in normal weight. Unset ⇒ byte-identical to the default |
|
||||
| `BOR_INPUT_PLACEHOLDER` | `Ask me anything…` | the chat composer placeholder (`#message-input`, chat page only); applied by `assets/brand.js` from `GET /api/config`; unset ⇒ the template default |
|
||||
| `BOR_FOOTER_TEXT` | `Powered by self-hosted models` | the footer line on all 9 pages (the `.footer-text` spans); same mechanism; unset ⇒ the template default |
|
||||
| `BOR_THEME` | *(empty)* | a filename under `frontend/assets/themes/` (e.g. `indigo.css`) — a `:root` palette override injected after `styles.css` (later wins the cascade); the server refuses a malformed name at startup (bare `^[a-z0-9_-]+\.css$` filename); a missing file degrades to the built-in theme; unset ⇒ the built-in dark-tech palette |
|
||||
| `BOR_DATABASE_URL` | local compose URL | SQLAlchemy URL (psycopg) |
|
||||
| `BOR_LLM_BASE_URL` | `https://aipi.reeseapps.com/v1` | OpenAI-compatible endpoint |
|
||||
| `BOR_LLM_API_KEY` | — (falls back to `$AIPI_KEY`) | aipi API key |
|
||||
@@ -761,6 +764,21 @@ served locally (no CDN), `BOR_ENVIRONMENT=production`.
|
||||
| `DEBUGPY` | `0` | `1` ⇒ attach-on-demand debugpy on `DEBUGPY_PORT` (default 5678) |
|
||||
| `BOR_LOG_LEVEL` | `INFO` | app log level |
|
||||
|
||||
### Customizing the look
|
||||
|
||||
The app ships as “Brain of Reese”, but every identity string is an env
|
||||
var: `BOR_APP_NAME` (display name), `BOR_INPUT_PLACEHOLDER` (chat composer
|
||||
placeholder), and `BOR_FOOTER_TEXT` (the footer line on every page) — all
|
||||
served by `GET /api/config` and applied by `assets/brand.js` at boot.
|
||||
Color themes are plain CSS variable overrides: write a `:root` block in
|
||||
`frontend/assets/themes/` and point `BOR_THEME` at the filename
|
||||
([the themes `README.md`](frontend/assets/themes/README.md) is the
|
||||
authoring guide, `indigo.css` the working example). The server refuses a
|
||||
malformed `BOR_THEME` at startup, and a missing theme file degrades to the
|
||||
built-in palette — the page never breaks. Leave everything unset and the
|
||||
app renders the defaults byte-identically: the dark-tech palette shown
|
||||
throughout this README is the no-config default.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
- **`401` from aipi** — set `BOR_LLM_API_KEY` (or `$AIPI_KEY`).
|
||||
|
||||
Reference in New Issue
Block a user