Commit Graph
22 Commits
Author SHA1 Message Date
hermes 45c6bca914 smoke: pin actions/checkout@v4
build-and-publish / publish (push) Failing after 34s
smoke / hello (push) Failing after 30s
2026-10-06 10:28:42 +02:00
hermes 4a3e6514bd CI: pin actions/checkout@v4 (act-runner requires @ref)
build-and-publish / publish (push) Failing after 39s
smoke / hello (push) Failing after 0s
2026-10-06 10:28:33 +02:00
hermes a1640322ff CI: build and publish image to Gitea container registry
build-and-publish / publish (push) Failing after 2s
smoke / hello (push) Failing after 0s
2026-10-06 10:26:24 +02:00
frank 0b1477dcef Update .gitea/workflows/smoke.yml
smoke / hello (push) Failing after 0s
2026-10-05 22:08:14 +02:00
frank ccf8f178b4 Update .gitea/workflows/smoke.yml
smoke / hello (push) Failing after 32s
2026-10-05 22:05:55 +02:00
hermes fe9b071328 Smoke test on ubuntu-latest label
smoke / hello (push) Failing after 1s
2026-10-05 21:50:00 +02:00
frank 67643d431a Update .gitea/workflows/smoke.yml
smoke / hello (push) Failing after 1s
2026-10-05 21:46:44 +02:00
hermes 094ab5a35a Add CI smoke-test workflow
smoke / hello (push) Failing after 6s
2026-10-05 21:23:26 +02:00
hermes 5ffc980ccd README: TRMNL feed is BYOS-only, no cloud account 2026-10-05 17:06:42 +02:00
hermes cb69ab879f Remove TRMNL cloud plugin markup - BYOS only, no cloud account 2026-10-05 17:06:42 +02:00
hermes 0254db53e9 Add TRMNL e-ink feed endpoint /trmnl.json 2026-10-05 15:43:49 +02:00
hermes 166e5cf3e5 Add TRMNL e-ink feed endpoint /trmnl.json 2026-10-05 15:43:49 +02:00
hermes 3ab9688fe1 Add TRMNL e-ink feed endpoint /trmnl.json 2026-10-05 15:43:48 +02:00
hermes 1330054aad Add TRMNL plugin markup 2026-10-05 15:43:48 +02:00
hermes c69849ddd1 Add TRMNL e-ink feed endpoint /trmnl.json 2026-10-05 15:43:48 +02:00
hermes c34dcf764c Add TRMNL plugin markup 2026-10-05 15:43:48 +02:00
hermes 7dc32a50e2 Raise LLM read timeout to 300s; prefer LAN endpoint in env example
Midnight failures were read timeouts against the public URL — hairpin NAT
and/or the request queuing behind other traffic on the shared model.
LAN endpoint + longer timeout covers both.
2026-09-30 08:06:18 +00:00
hermes 6bc9fa0e8d Resume retries after cooldown instead of giving up for the day
Previously 3 failed attempts at 06:00 (e.g. llamaswap model cold/starting)
permanently blocked generation until the next day. Now the retry loop
pauses SLOW_RETRY_MINUTES (default 60) after the burst budget is spent,
then resumes — one attempt per hour until jokes exist.
2026-09-30 07:55:40 +00:00
hermes 7e60343ed5 Add security headers, external CSS, HTML escaping
- Middleware sets CSP (default-src 'none'; style-src 'self'), HSTS,
  X-Content-Type-Options, X-Frame-Options, Referrer-Policy,
  Permissions-Policy on every response
- Inline <style> moved to /styles.css so CSP needs no unsafe-inline
- /favicon.ico returns a 1x1 GIF (kills 404 noise)
- Escape LLM jokes, article title, and URL before HTML rendering (XSS fix)
2026-09-29 20:41:16 +00:00
hermes b8571b29cd Fix unreadable joke cards: explicit text color in light and dark mode
Cards set their own background but inherited the page text color, so in
dark mode they rendered pale-on-white. Pin color on .joke in both schemes.
2026-09-29 20:03:56 +00:00
hermes c6fd9a5c77 Repair curly-quote JSON from LLM before parsing
halogen-qwen3.8-flash-next sometimes uses typographic quotes (“ ”) as JSON
string delimiters, which breaks strict json.loads. Add a scanner that
normalizes curly-delimited strings to straight quotes while preserving
curly quotes used as content inside straight-quoted strings.
2026-09-29 19:54:56 +00:00
hermes 075b72ec6c Wiki Jokes: daily LLM jokes from Wikipedia featured article
- FastAPI + APScheduler + SQLite, single container
- Daily generation at 06:00 Europe/Copenhagen + cold-start generation
- Retry with backoff (3 attempts/15 min), stale fallback with banner
- OpenAI-compatible endpoint via env (OPENAI_BASE_URL/MODEL/API_KEY)
- docker-compose with named volume for joke persistence
2026-09-29 19:38:01 +00:00