diff --git a/eslint.config.mjs b/eslint.config.mjs index 3fc4c14..a194c59 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -20,6 +20,7 @@ export default [ fetch: "readonly", CustomEvent: "readonly", MutationObserver: "readonly", + IntersectionObserver: "readonly", Uint32Array: "readonly", Set: "readonly", Map: "readonly", diff --git a/website/app.js b/website/app.js index cb55753..ba1b763 100644 --- a/website/app.js +++ b/website/app.js @@ -297,6 +297,18 @@ document.addEventListener('DOMContentLoaded', () => { if (badgeDe) { badgeDe.textContent = `v${version} JETZT VERFÜGBAR • ${relativeTimeDe}`; } + + // Update Schema.org structured data dynamically + const schemaScript = document.getElementById('schema-software'); + if (schemaScript) { + try { + const schema = JSON.parse(schemaScript.textContent); + schema.softwareVersion = version; + schemaScript.textContent = JSON.stringify(schema, null, 2); + } catch (err) { + console.warn('Failed to dynamically update schema version:', err); + } + } } catch (e) { console.warn('Failed to fetch dynamic version info:', e); } @@ -370,8 +382,12 @@ document.addEventListener('DOMContentLoaded', () => { const hamburger = document.querySelector('.hamburger'); const navLinks = document.querySelector('.nav-links'); if (hamburger && navLinks) { + // Initialize accessibility attribute + hamburger.setAttribute('aria-expanded', 'false'); + hamburger.addEventListener('click', () => { - navLinks.classList.toggle('open'); + const isOpen = navLinks.classList.toggle('open'); + hamburger.setAttribute('aria-expanded', isOpen ? 'true' : 'false'); }); } diff --git a/website/datenschutz.html b/website/datenschutz.html index 363ea3b..0895eb3 100644 --- a/website/datenschutz.html +++ b/website/datenschutz.html @@ -4,6 +4,7 @@ Datenschutz / Privacy Policy | KoalaSync + @@ -19,14 +20,23 @@ @@ -102,8 +112,39 @@

- 5. Brute-Force Schutz - 5. Brute-Force Protection + 5. Berechtigungen der Erweiterung + 5. Extension Permissions +

+

+ Um ihren technischen Zweck zu erfüllen, benötigt die Browser-Erweiterung bestimmte Berechtigungen. Jede Berechtigung wird ausschließlich für die Kernfunktionalität genutzt: +

+ +

+ To fulfill its technical purpose, the browser extension requires certain permissions. Each permission is used exclusively for core functionality: +

+ +
+ +
+

+ 6. Brute-Force Schutz + 6. Brute-Force Protection

Zur Sicherheit unserer Nutzer speichern wir fehlgeschlagene Login-Versuche (IP-Adresse und Raum-ID) für maximal 15 Minuten im RAM, um automatisierte Angriffe zu verhindern. Diese Daten werden danach rückstandslos gelöscht. @@ -115,8 +156,8 @@

- 6. Ihre Rechte - 6. Your Rights + 7. Ihre Rechte + 7. Your Rights

Sie haben das Recht auf Auskunft, Berichtigung oder Löschung Ihrer Daten. Da wir jedoch keine personenbezogenen Daten dauerhaft speichern, ist eine Zuordnung zu Ihrer Person in der Regel technisch nicht möglich. diff --git a/website/impressum.html b/website/impressum.html index bf7906d..ad36fb0 100644 --- a/website/impressum.html +++ b/website/impressum.html @@ -4,6 +4,7 @@ Impressum / Legal Notice | KoalaSync + @@ -19,14 +20,23 @@

diff --git a/website/index.html b/website/index.html index 42e5977..43aff80 100644 --- a/website/index.html +++ b/website/index.html @@ -6,6 +6,7 @@ KoalaSync | Sync Netflix, Emby, Jellyfin & Any Video with Friends – Browser Extension + @@ -17,6 +18,26 @@ + + + @@ -29,10 +50,10 @@