fix(frontend): Ursprung der HoneyOS-Leiste kommt aus der .env
Die Adresse im <script>-Tag stand fest im Quelltext, waehrend die CSP aus HONEYBAR_ORIGIN kam. Wer die Leiste woanders betreibt, bekam genau den Widerspruch: die CSP erlaubte den eigenen Ursprung, geladen wurde der alte. Beides speist sich jetzt aus derselben Variablen. Ist sie leer, nimmt vite.config.ts den Tag ganz heraus — sonst bliebe src="/honeybar/honeybar.js" stehen und der Service Worker beantwortete das mit index.html. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
1d933c5c73
commit
6c7eb348b0
5 files changed
+38
-12
No files matched your search
+6
-6
@@ -29,17 +29,17 @@
|
||||
`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.
|
||||
|
||||
data-key kommt aus HONEYBAR_KEY in der .env und wird beim Bauen
|
||||
eingesetzt. HoneyOS liegt auf einer anderen Site als Aether
|
||||
Ursprung und Schlüssel kommen beide aus der .env (HONEYBAR_ORIGIN,
|
||||
HONEYBAR_KEY) und werden beim Bauen eingesetzt. Derselbe Ursprung
|
||||
landet zur Laufzeit in der CSP — so können die beiden nicht
|
||||
auseinanderlaufen. Ist er leer, entfernt vite.config.ts diesen Tag
|
||||
ganz; Aether läuft dann ohne Leiste weiter. HoneyOS liegt auf einer anderen Site als Aether
|
||||
(duckdns.org ist ein public suffix), deshalb schickt der Browser die
|
||||
HoneyOS-Sitzung nicht mit — ohne diesen zweiten Ausweis bekäme die
|
||||
Leiste nie eine App-Liste. Der Schlüssel steht bewusst nicht im
|
||||
Quelltext: er käme sonst ins Repo und liesse sich nur mit einer
|
||||
Code-Änderung wechseln. -->
|
||||
<script defer src="https://honeyos.duckdns.org/honeybar/honeybar.js"
|
||||
<script defer src="%VITE_HONEYBAR_ORIGIN%/honeybar/honeybar.js"
|
||||
data-app="aether" data-key="%VITE_HONEYBAR_KEY%"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -32,9 +32,30 @@ function pdfjsStandardFonts(): Plugin {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Den <script>-Tag der HoneyOS-Leiste entfernen, wenn kein Ursprung gesetzt ist.
|
||||
*
|
||||
* Ohne das bliebe nach der Ersetzung src="/honeybar/honeybar.js" stehen: der
|
||||
* Service Worker beantwortet die Navigation mit index.html, der Browser meldet
|
||||
* einen MIME-Fehler. Kein Ursprung heisst schlicht keine Leiste.
|
||||
*/
|
||||
function honeybar(): Plugin {
|
||||
return {
|
||||
name: 'aether-honeybar',
|
||||
transformIndexHtml: {
|
||||
order: 'pre',
|
||||
handler(html) {
|
||||
if (process.env.VITE_HONEYBAR_ORIGIN?.trim()) return html
|
||||
return html.replace(/\s*<script[^>]*honeybar\.js[^>]*><\/script>/, '')
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
pdfjsStandardFonts(),
|
||||
honeybar(),
|
||||
react(),
|
||||
tailwindcss(),
|
||||
VitePWA({
|
||||
|
||||
Reference in new issue
Block a user