Files
Aether/frontend/index.html
T
marcandClaude Opus 5 9b8e82cdb2 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>
2026-08-24 21:03:01 +02:00

38 lines
1.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<!-- viewport-fit=cover: Als installierte App soll der Inhalt den ganzen
Schirm nutzen und nicht neben der Kamera-Aussparung eingerahmt stehen.
Der Preis ist, dass er dann *unter* Statusleiste und Wischbalken laufen
kann – dagegen die safe-area-Abstände in index.css. -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<link rel="icon" type="image/svg+xml" href="/icon.svg" />
<link rel="apple-touch-icon" href="/icon-192.png" />
<!-- Das Plugin fuegt keinen Link mehr ein (manifest: false) – der Server
erzeugt das Manifest aus den Einstellungen. -->
<link rel="manifest" href="/manifest.webmanifest" />
<meta name="theme-color" content="#6366f1" />
<title>Aether</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
<!-- HoneyOS-Leiste: der Umschalter zwischen den eigenen Apps. Sie rendert
in einem Shadow DOM, Aethers Stile berührt sie nicht.
Sie steht hier statt serverseitig eingespritzt, weil der Service Worker
die index.html in seinen Vorrat legt (navigateFallback) — was zur
Bauzeit nicht drinsteht, käme beim Browser nie an.
`defer`: ohne wartet der Seitenaufbau auf das Skript. Ist HoneyOS
langsam oder aus, darf das Aether nicht ausbremsen.
Damit der Browser sie überhaupt lädt, muss HONEYBAR_ORIGIN in der .env
auf denselben Ursprung zeigen — sonst blockt die CSP. -->
<script defer src="https://os.honeyy.duckdns.org/honeybar/honeybar.js"
data-app="aether"></script>
</body>
</html>