feat(honeybar): HoneyOS-Leiste einbinden, CSP-Ausnahme dafür

Die Leiste kommt als Skript von der HoneyOS-Domain und holt sich von dort
ihre App-Liste. Beides blockte die CSP bisher (script-src / connect-src
fielen auf 'self' zurueck) – ohne Ausnahme erschien sie gar nicht.

- HONEYBAR_ORIGIN nimmt genau diesen einen Ursprung in script-src und
  connect-src auf. Leer heisst: keine Leiste, und die Regel bleibt so eng
  wie bisher. Frame-Freigabe erbt sie ausdruecklich nicht.
- SecurityHeaders nimmt die Ausnahmen jetzt als CSP-Struct statt als
  variadische frameSrc-Liste – mit drei Richtungen wurde das sonst unklar.
- Das <script>-Tag steht in der index.html und nicht serverseitig
  eingespritzt: der Service Worker legt die index.html in seinen Vorrat
  (navigateFallback), was zur Bauzeit fehlt, kaeme im Browser nie an.
- defer, damit ein langsames oder abgeschaltetes HoneyOS den Start von
  Aether nicht ausbremst.

Tests fuer die neue Regel: eng ohne Ausnahme, beide Richtungen mit,
Pfad wird auf den Ursprung gekuerzt, Adresse ohne Schema faellt raus.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
marcandClaude Opus 5 committed 2026-08-24 21:03:01 +02:00
1 parent b5a83e4057
commit 9b8e82cdb2
6 files changed
+164 -17

No files matched your search

+8
View File
@@ -64,6 +64,14 @@ ADMIN_PASSWORD=changeme_strong_admin_password
# Beschriftung des Knopfes auf der Anmeldeseite.
# OIDC_BUTTON_LABEL=Anmelden mit PocketID
# ── HoneyOS-Leiste ────────────────────────────────────────────────────────────
# Ursprung, von dem die Leiste geladen wird. Nimmt ihn in die CSP auf
# (script-src + connect-src) — ohne das blockt der Browser das Skript.
#
# Muss exakt zur Adresse im <script>-Tag der frontend/index.html passen.
# Leer = keine Leiste, und die CSP bleibt so eng wie ohne sie.
HONEYBAR_ORIGIN=https://os.example.com
# ── Volltextsuche (OCR) ───────────────────────────────────────────────────────
# Standardmäßig an; fehlen ocrmypdf/tesseract, schaltet es sich selbst ab.
# OCR_ENABLED=false