diff --git a/nginx/default.conf b/nginx/default.conf
index c650692..12103e7 100644
--- a/nginx/default.conf
+++ b/nginx/default.conf
@@ -15,6 +15,9 @@ server {
application/javascript js;
}
add_header Cache-Control "public, max-age=31536000, immutable" always;
+ add_header Cross-Origin-Opener-Policy "same-origin" always;
+ add_header Cross-Origin-Embedder-Policy "require-corp" always;
+ add_header Cross-Origin-Resource-Policy "same-origin" always;
try_files $uri =404;
}
diff --git a/piper-runtime.js b/piper-runtime.js
index f4ba381..82e606d 100644
--- a/piper-runtime.js
+++ b/piper-runtime.js
@@ -20,7 +20,19 @@ function getWorker() {
}
};
worker.onerror = event => {
- const error = new Error(event.message || 'Piper-arbetaren kunde inte startas.');
+ const details = [event.message, event.filename && `${event.filename}:${event.lineno || 0}:${event.colno || 0}`]
+ .filter(Boolean)
+ .join(' — ');
+ const error = new Error(details
+ ? `Piper-arbetaren kunde inte startas: ${details}`
+ : 'Piper-arbetaren kunde inte startas.');
+ for (const request of pending.values()) request.reject(error);
+ pending.clear();
+ worker?.terminate();
+ worker = null;
+ };
+ worker.onmessageerror = () => {
+ const error = new Error('Piper-arbetaren skickade ett oläsbart svar.');
for (const request of pending.values()) request.reject(error);
pending.clear();
worker?.terminate();
diff --git a/scripts/check-frontend.sh b/scripts/check-frontend.sh
index 4f6badd..6a704dc 100755
--- a/scripts/check-frontend.sh
+++ b/scripts/check-frontend.sh
@@ -8,6 +8,8 @@ grep -q '' index.html
grep -q '' index.html
grep -q 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0' nginx/default.conf
grep -q 'Cross-Origin-Embedder-Policy "require-corp"' nginx/default.conf
+grep -q 'add_header Cross-Origin-Embedder-Policy "require-corp" always;' nginx/default.conf
+grep -q 'add_header Cross-Origin-Resource-Policy "same-origin" always;' nginx/default.conf
grep -q 'application/javascript js;' nginx/default.conf
grep -q "request('/version')" index.html
grep -Fq "credentials: 'same-origin'" index.html
@@ -43,6 +45,7 @@ grep -q 'Piper' piper-runtime.js
grep -q 'sv_SE-nst-medium' piper-worker.js
grep -q 'new Worker(workerUrl)' piper-runtime.js
grep -q 'worker.js?v=' piper-runtime.js
+grep -q 'worker.onmessageerror' piper-runtime.js
grep -q "SpeechRecognition || win.webkitSpeechRecognition" voice.js
grep -q "submitMessage(text, 'voice')" index.html
grep -q 'Spelets repliker läses alltid upp' index.html