diff --git a/website/lang-init.js b/website/lang-init.js
index 3485abc..d1172ce 100644
--- a/website/lang-init.js
+++ b/website/lang-init.js
@@ -1,22 +1,30 @@
(function() {
var html = document.documentElement;
var path = window.location.pathname;
-
+
+ // Mapping of browser language codes to KoalaSync locale directories
+ var langMap = {
+ 'de': 'de',
+ 'fr': 'fr',
+ 'es': 'es',
+ 'pt': 'pt-BR',
+ 'ru': 'ru'
+ };
+
// Check if we are on the root index page (either "/" or "/index.html" at the root)
var isRootIndex = path === '/' || path === '/index.html' || path === '';
-
+
if (isRootIndex) {
var savedLang = localStorage.getItem('koala_lang');
- var browserLang = navigator.language.startsWith('de') ? 'de' : 'en';
- var preferredLang = savedLang || browserLang;
-
- if (preferredLang === 'de') {
- // Redirect to German version
- window.location.replace('de/');
+ var browserLang = navigator.language.split('-')[0];
+ var preferredLang = savedLang || langMap[browserLang] || 'en';
+
+ if (preferredLang !== 'en') {
+ window.location.replace(preferredLang + '/');
return;
}
}
-
+
var htmlClasses = html.className.split(' ');
var activeLang = null;
var hasStaticLang = false;
@@ -28,38 +36,38 @@
break;
}
}
-
+
if (hasStaticLang) {
localStorage.setItem('koala_lang', activeLang);
} else {
var savedLang = localStorage.getItem('koala_lang');
- var browserLang = navigator.language.startsWith('de') ? 'de' : 'en';
- activeLang = savedLang || browserLang;
-
+ var browserLang = navigator.language.split('-')[0];
+ activeLang = savedLang || langMap[browserLang] || 'en';
+
// Dynamic utility pages currently only support English and German markup.
- // Fallback to English for any other language preference (e.g. fr, es) to avoid bilingual text duplication.
+ // Fallback to English for any other language to avoid bilingual text duplication.
if (activeLang !== 'de') {
activeLang = 'en';
}
-
+
html.classList.add('lang-' + activeLang);
html.lang = activeLang;
}
-
+
// Update titles dynamically based on page
var isIndex = path === '/' || path.endsWith('index.html') || path.split('/').pop() === '';
var isJoin = path.includes('join');
-
+
if (isIndex) {
- var titles = {
- en: 'KoalaSync | Real-time Video Synchronization for Friends',
- de: 'KoalaSync | Echtzeit-Video-Synchronisation für Freunde'
+ var titles = {
+ en: 'KoalaSync | Real-time Video Synchronization for Friends',
+ de: 'KoalaSync | Echtzeit-Video-Synchronisation für Freunde'
};
document.title = titles[activeLang] || titles.en;
} else if (isJoin) {
- var titles = {
- en: 'Join Room | KoalaSync',
- de: 'Raum beitreten | KoalaSync'
+ var titles = {
+ en: 'Join Room | KoalaSync',
+ de: 'Raum beitreten | KoalaSync'
};
document.title = titles[activeLang] || titles.en;
}
diff --git a/website/sitemap.xml b/website/sitemap.xml
index 8b2d7b4..e627d02 100644
--- a/website/sitemap.xml
+++ b/website/sitemap.xml
@@ -36,16 +36,4 @@
weekly
0.8
-
- https://sync.koalastuff.net/impressum
- 2026-05-31
- yearly
- 0.3
-
-
- https://sync.koalastuff.net/datenschutz
- 2026-05-31
- yearly
- 0.3
-
diff --git a/website/style.css b/website/style.css
index 41dd2ac..1216e4d 100644
--- a/website/style.css
+++ b/website/style.css
@@ -48,6 +48,12 @@
box-sizing: border-box;
}
+:focus-visible {
+ outline: 2px solid var(--accent);
+ outline-offset: 2px;
+ border-radius: 6px;
+}
+
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
background-color: var(--bg);
@@ -102,6 +108,15 @@ section {
padding: 6rem 0;
}
+/* Content-visibility for offscreen sections to improve INP */
+.use-cases-section,
+#features,
+#self-hosting,
+.comparison-section {
+ content-visibility: auto;
+ contain-intrinsic-size: 700px;
+}
+
/* --- Navigation --- */
nav {
position: fixed;
diff --git a/website/template.html b/website/template.html
index 0c641c8..05534bb 100644
--- a/website/template.html
+++ b/website/template.html
@@ -7,6 +7,7 @@
+
@@ -58,7 +59,40 @@
"description": "Watch Netflix, YouTube, Twitch, Jellyfin, Emby and almost any HTML5 video in perfect sync with friends. Open source, privacy-first, free.",
"softwareVersion": "1.9.3",
"license": "https://opensource.org/licenses/MIT",
- "sameAs": "https://github.com/Shik3i/KoalaSync"
+ "sameAs": "https://github.com/Shik3i/KoalaSync",
+ "image": "https://sync.koalastuff.net/assets/NewLogoIcon.webp",
+ "screenshot": "https://sync.koalastuff.net/assets/PlatformJuggler_New.webp"
+ }
+
+
+
+
+
+
+
+