diff --git a/examples/Caddyfile.example b/examples/Caddyfile.example
index 85396ae..e74721e 100644
--- a/examples/Caddyfile.example
+++ b/examples/Caddyfile.example
@@ -84,7 +84,7 @@ sync.koalastuff.net {
import security_headers
header {
# CSP hardened with base-uri and form-action limits
- Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data: blob:; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';"
+ Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';"
# Modern Permissions Policy (blocks browser hardware access for enhanced privacy)
Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=()"
diff --git a/extension/popup.html b/extension/popup.html
index 6c73d62..cf435a9 100644
--- a/extension/popup.html
+++ b/extension/popup.html
@@ -813,7 +813,7 @@
-
+
👤 Profile & Theme
@@ -851,7 +851,7 @@
-
+
🔒 Privacy Settings
@@ -872,7 +872,7 @@
-
+
âš¡ Playback & Sync
@@ -910,7 +910,7 @@
-
+
🔧 Troubleshooting
diff --git a/extension/popup.js b/extension/popup.js
index d392e3d..3510895 100644
--- a/extension/popup.js
+++ b/extension/popup.js
@@ -1375,6 +1375,19 @@ if (elements.langSelector) {
});
}
+// Accordion behavior for settings details categories (collapses others when one opens)
+document.querySelectorAll('#tab-settings details.form-group').forEach(det => {
+ det.addEventListener('toggle', () => {
+ if (det.open) {
+ document.querySelectorAll('#tab-settings details.form-group').forEach(other => {
+ if (other !== det && other.open) {
+ other.removeAttribute('open');
+ }
+ });
+ }
+ });
+});
+
elements.serverUrl.addEventListener('change', () => {
let url = elements.serverUrl.value.trim();
if (url && !url.includes('://')) {
diff --git a/website/README.md b/website/README.md
index 94cb740..af7a637 100644
--- a/website/README.md
+++ b/website/README.md
@@ -90,7 +90,7 @@ sync.koalastuff.net {
header @static Cache-Control "public, max-age=31536000, must-revalidate"
header {
- Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data: blob:; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';"
+ Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';"
Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=()"
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
X-Content-Type-Options nosniff
diff --git a/website/template.html b/website/template.html
index 5c6f092..69e2098 100644
--- a/website/template.html
+++ b/website/template.html
@@ -1440,7 +1440,7 @@
import security_headers
header {
- Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data: blob:; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';"
+ Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';"
Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=()"
}
}