This release includes 2 security fixes for security teams reviewing exposed deployments.
Topics
+13 more
Affected surfaces
Summary
AI summaryUpdates π§ Fixes & admin, β‘ Performance, and π‘οΈ Security across a mixed release.
Full changelog
Wave 3 of the full-codebase audit β three boundaries the earlier waves did not touch (the async/event-loop boundary, the network-exposure boundary, the XSS trust boundary) plus four localized performance/correctness fixes. Every item was measured before/after (latency or call count) and driven red-first. Architecture decision: ADR-096.
β‘ Performance
- Event loop no longer frozen by synchronous work.
firebase_admin.messaging.send, the Pillow resize pipeline and two sync embedding calls ran inline on the loop, freezing every concurrent coroutine (SSE included) for 251β496 ms; moved off viaasyncio.to_thread/ native async embeddings β 11β12 ms, guarded by an event-loop stall test. - Two hot-path scans parallelized:
list_active_domains631 β 63 ms; Gmailsearch_emailsN+1 metadata fetch 331 β 62 ms (boundedasyncio.gather). - Caching: user display preferences move from one DB query per tool call to a per-worker TTL cache; admin broadcast translations are persisted (0 LLM calls on re-read instead of a re-translation on every view).
π‘οΈ Security
- The dashboard greeting can no longer execute injected content β LLM output now renders as auto-escaped React children (a booby-trapped event title is inert) behind a new strict Content-Security-Policy.
- Internal services isolated from the LAN (production): the 13 internal service ports (Postgres, Grafana, Prometheus, Loki, Tempo, exporters) are loopback-bound so only the web app is exposed; the Docker/ufw interaction is documented.
π§ Fixes & admin
- Valid display locales for every language β
en-EN/zh-ZH(the latter broke Chinese dates) replaced by aLANGUAGE_TO_LOCALEmap. - The personality translator is now a configurable LLM slot β visible in the admin LLM Configuration and honoring DB overrides.
- Gmail reply body built before MIME construction (hardening; parity with the Apple mail client).
Notes
- One DB migration (
admin_broadcasts.message_translationsJSONB) + two.envcache keys (USER_PREFERENCES_CACHE_TTL_SECONDS,EMAILS_SEARCH_FETCH_CONCURRENCY), both opt-outable. - Ruff / Black / MyPy strict clean; backend 8687 unit tests green + agents green; frontend 123 tests green (+3 XSS); i18n key parity across all 6 locales; Docker startup verified healthy (migration applied, CSP active).
Full changelog: CHANGELOG.md
Security Fixes
- Dashboard greeting content is autoβescaped and rendered as React children; strict ContentβSecurity-Policy enforces XSS protection
- Internal services (Postgres, Grafana, Prometheus, Loki, Tempo, exporters) bound to loopback only, isolating them from the LAN
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About LIA
All releases βRelated context
Related tools
Beta — feedback welcome: [email protected]