diff --git a/README.md b/README.md index aac04f8..6c1b38f 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ License Firefox Add-on Chrome Extension - Microsoft Edge Add-on + Microsoft Edge Add-on

KoalaSync is a lightweight Browser Extension and Relay Server for synchronized video playback on almost any website with a video element—YouTube, Twitch, Netflix, Emby, Jellyfin, and beyond. Built with a focus on Data Sovereignty and Performance.

@@ -47,7 +47,7 @@ The easiest and safest way to install KoalaSync is directly through the official

Chrome Extension Firefox Add-on - Microsoft Edge Add-on + Microsoft Edge Add-on

*(For manual offline installation: Download the latest `.zip` from the [Releases](https://github.com/Shik3i/KoalaSync/releases) page and load it as an "Unpacked Extension" in Developer Mode).* diff --git a/scripts/test-website-theme.mjs b/scripts/test-website-theme.mjs index 592b69c..89d3e4f 100644 --- a/scripts/test-website-theme.mjs +++ b/scripts/test-website-theme.mjs @@ -12,6 +12,7 @@ const demoCss = fs.readFileSync(path.join(repoRoot, 'website', 'styles', 'demo.c const landingPrimaryCss = fs.readFileSync(path.join(repoRoot, 'website', 'styles', 'landing-primary.css'), 'utf8'); const legalCss = fs.readFileSync(path.join(repoRoot, 'website', 'styles', 'legal.css'), 'utf8'); const joinPage = fs.readFileSync(path.join(repoRoot, 'website', 'join.html'), 'utf8'); +const helpPage = fs.readFileSync(path.join(repoRoot, 'website', 'help.html'), 'utf8'); const siteAccessHelpPage = fs.readFileSync(path.join(repoRoot, 'website', 'site-access-help.html'), 'utf8'); const websiteBuild = fs.readFileSync(path.join(repoRoot, 'website', 'build.cjs'), 'utf8'); const imprintPage = fs.readFileSync(path.join(repoRoot, 'website', 'imprint.html'), 'utf8'); @@ -114,7 +115,28 @@ for (const metadata of requiredSupportSocialMetadata) { throw new Error(`site-access-help.html is missing SEO metadata: ${metadata}`); } } +const requiredHelpMetadata = [ + '', + 'type="text/markdown" href="https://sync.koalastuff.net/llms.txt"', + 'name="twitter:card" content="summary_large_image"', + 'property="og:image:alt"', + 'name="twitter:image:alt"', + '"@type": ["CollectionPage", "FAQPage"]', + '"@type": "BreadcrumbList"', + '"datePublished"', + '"dateModified"' +]; +for (const metadata of requiredHelpMetadata) { + if (!helpPage.includes(metadata)) { + throw new Error(`help.html is missing SEO/AEO metadata: ${metadata}`); + } +} +if (!llmsText.includes('[Help Center](https://sync.koalastuff.net/help)') + || !llmsText.includes('[Website access guide](https://sync.koalastuff.net/site-access-help.html)')) { + throw new Error('llms.txt must expose the Help Center and website-access guide'); +} if (!websiteBuild.includes("['log', '-1', '--format=%cs', '--', ...sourceFiles]") + || !websiteBuild.includes("lastmod(['website/help.html', 'website/styles/support.css'])") || !websiteBuild.includes("lastmod(['website/site-access-help.html'])") || !websiteBuild.includes("['rev-parse', '--is-shallow-repository']") || !websiteBuild.includes("['diff', '--name-only', '--']") diff --git a/website/build.cjs b/website/build.cjs index 692317c..1f4ee77 100644 --- a/website/build.cjs +++ b/website/build.cjs @@ -524,6 +524,7 @@ async function compile() { { src: 'join.html', dest: 'join.html' }, { src: 'imprint.html', dest: 'imprint.html' }, { src: 'privacy.html', dest: 'privacy.html' }, + { src: 'help.html', dest: 'help.html' }, { src: 'site-access-help.html', dest: 'site-access-help.html' }, { src: 'impressum-de.html', dest: 'de/impressum.html' }, { src: 'datenschutz-de.html', dest: 'de/datenschutz.html' }, @@ -798,6 +799,11 @@ function generateSitemap(websiteDir, wwwDir) { monthly 0.3 + + https://sync.koalastuff.net/help${lastmod(['website/help.html', 'website/styles/support.css'])} + weekly + 0.8 + https://sync.koalastuff.net/site-access-help.html${lastmod(['website/site-access-help.html'])} weekly diff --git a/website/help.html b/website/help.html new file mode 100644 index 0000000..4dec076 --- /dev/null +++ b/website/help.html @@ -0,0 +1,285 @@ + + + + + + KoalaSync Help | Setup, Video Detection & Troubleshooting + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+
+ Help center +

How can we help?

+

Start with the symptom you see. These checks cover browser access, missing tabs, video detection, playback synchronization, and the information needed for a useful bug report.

+
+ +
+

Choose your problem

+ +
+ +
+ Privacy & permissions +

Why does the browser show such a broad warning?

+

Browsers may say that KoalaSync can “read and change all your data on all websites.” The wording is broad because KoalaSync is designed to work with video players across many different websites instead of a short fixed list.

+

KoalaSync injects its synchronization script into the video tab you actively select. On that tab it needs to find and control the video element, synchronize play, pause, and seeking, and display the optional room chat overlay. Open tab titles are read to populate the tab selector. KoalaSync does not create a general browsing or watch history.

+

Read the complete permission and data-handling explanation

+
+ +
+ Tab list +

The video tab does not appear

+
    +
  1. Keep the video page open and reload it once.
  2. +
  3. Close and reopen the KoalaSync popup, then check Select Video again.
  4. +
  5. Open KoalaSync Settings and turn off Hide Clutter Tabs.
  6. +
  7. Return to the tab selector. If the tab now appears, the site was filtered as clutter by mistake.
  8. +
  9. If the tab is still missing, verify website access using the site-access guide.
  10. +
+
+ +
+ Tell us which domain was classified incorrectly. +

For a false clutter match, report the domain, whether the tab appears with the filter disabled, and whether the page contains a visible HTML5 video. A domain such as video.example.com is usually enough; do not publish a private URL containing account or session details.

+
+
+
+ +
+ Video detection +

The tab appears, but KoalaSync finds no usable video

+
    +
  • Select the exact tab containing the visible player, not a login, search, or media-library tab.
  • +
  • Start the video once. Some websites create their video element only after playback begins.
  • +
  • Open the KoalaSync Status tab and inspect Video Debug Info.
  • +
  • If the report says NO VIDEO ELEMENT, note the video count and whether Shadow DOM was detected.
  • +
  • Temporarily disable other extensions that modify the player, then reload and test again.
  • +
  • Protected, heavily customized, or non-HTML5 players may require site-specific support.
  • +
+
+ +
+ Synchronization +

Everyone is connected, but playback does not sync

+
    +
  1. Update KoalaSync in every browser and confirm everyone uses the same extension version.
  2. +
  3. Make sure each participant selected the correct local video tab.
  4. +
  5. Reload the video page after changing website access, then select the tab again.
  6. +
  7. Test play, pause, and seeking separately and note which action fails.
  8. +
  9. Before anyone leaves the room, collect a debug report from every affected participant.
  10. +
+
+ +
+ Still not working? +

Create a useful GitHub issue

+
    +
  1. Open KoalaSync, switch to Status, and click Copy Logs while the problem is still visible.
  2. +
  3. Open the KoalaSync GitHub bug-report form and sign in to GitHub if requested.
  4. +
  5. Describe the exact steps that reproduce the problem, what you expected, and what happened instead.
  6. +
  7. Add your browser, operating system, KoalaSync version, and the affected website or domain.
  8. +
  9. Paste the debug report, add a screenshot if useful, and review everything before publishing.
  10. +
+
+ +
+ GitHub issues are public. +

The copied report can include page titles and URLs, peer and room identifiers, participant names, and a custom server URL. Remove anything private. Never publish an invite link, room password, chat secret, account token, or a URL containing private session parameters.

+
+
+ +
+ + +
+ + + + + + diff --git a/website/llms.txt b/website/llms.txt index 66f90cb..c79b799 100644 --- a/website/llms.txt +++ b/website/llms.txt @@ -76,6 +76,15 @@ Compatibility depends on each website's player implementation and can change whe - [Firefox Add-ons](https://addons.mozilla.org/firefox/addon/koalasync/): Firefox - [GitHub Releases](https://github.com/Shik3i/KoalaSync/releases): Release notes and manual packages +## Help and troubleshooting + +- [Help Center](https://sync.koalastuff.net/help): Browser permissions, missing tabs, video detection, synchronization checks and safe bug reports +- [Website access guide](https://sync.koalastuff.net/site-access-help.html): Restore access when Chrome, Edge, Brave, Opera or Vivaldi blocks KoalaSync on a video site +- If a video tab is missing, disable `Hide Clutter Tabs` temporarily. If the tab then appears, report the affected domain so the filter can be corrected. +- If a listed tab has no detected video, start playback once and inspect `Status` → `Video Debug Info`. +- GitHub issues are public. Remove private page URLs, titles, room or peer identifiers, participant names, custom server URLs, credentials and session parameters before publishing logs. +- [GitHub bug report](https://github.com/Shik3i/KoalaSync/issues/new?template=bug_report.md): Include reproducible steps, browser, operating system, KoalaSync version and sanitized debug output + ## Technical information - Current website release: 3.0.1 diff --git a/website/locales/de.json b/website/locales/de.json index 2fbe94c..9b1d3a8 100644 --- a/website/locales/de.json +++ b/website/locales/de.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "Starte eine Watch Party auf Netflix, Emby, Jellyfin, YouTube, Twitch und fast jedem HTML5-Video. Open Source, datenschutzfreundlich und ohne Konto.", "NAV_FEATURES": "Funktionen", "NAV_HOW_IT_WORKS": "So funktioniert's", - "SUPPORT_BANNER_TEXT": "KoalaSync kann nicht auf deine Videoseite zugreifen?", - "SUPPORT_BANNER_CTA": "Websitezugriff reparieren", + "SUPPORT_BANNER_TEXT": "Brauchst du Hilfe mit KoalaSync?", + "SUPPORT_BANNER_CTA": "Help Center öffnen", "SUPPORT_BANNER_DISMISS": "Hinweis schließen", "HERO_TITLE": "Mach jedes Video zur Watch Party.", "HERO_SUBTITLE": "Schaut Videos gemeinsam aus der Ferne. Kein Konto, kein Tracking, keine Werbung. Link teilen und zusammen starten.", diff --git a/website/locales/en.json b/website/locales/en.json index 6f96451..e31c5cc 100644 --- a/website/locales/en.json +++ b/website/locales/en.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "Host a watch party on Netflix, Emby, Jellyfin, YouTube, Twitch and almost any HTML5 video. Open source, privacy-first, and account-free.", "NAV_FEATURES": "Features", "NAV_HOW_IT_WORKS": "How it works", - "SUPPORT_BANNER_TEXT": "KoalaSync cannot access your video site?", - "SUPPORT_BANNER_CTA": "Fix website access", + "SUPPORT_BANNER_TEXT": "Need help with KoalaSync?", + "SUPPORT_BANNER_CTA": "Open Help Center", "SUPPORT_BANNER_DISMISS": "Dismiss notification", "HERO_TITLE": "Turn any video into a watch party.", "HERO_SUBTITLE": "Watch videos together remotely. No account, tracking, or ads. Share a link and start together.", diff --git a/website/locales/es.json b/website/locales/es.json index 7b17ebe..a95be58 100644 --- a/website/locales/es.json +++ b/website/locales/es.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "Organiza una watch party en Netflix, Emby, Jellyfin, YouTube, Twitch y casi cualquier vídeo HTML5. Open source, privada y sin cuenta.", "NAV_FEATURES": "Características", "NAV_HOW_IT_WORKS": "Cómo funciona", - "SUPPORT_BANNER_TEXT": "¿KoalaSync no puede acceder al sitio del vídeo?", - "SUPPORT_BANNER_CTA": "Reparar acceso al sitio", + "SUPPORT_BANNER_TEXT": "¿Necesitas ayuda con KoalaSync?", + "SUPPORT_BANNER_CTA": "Abrir el centro de ayuda", "SUPPORT_BANNER_DISMISS": "Cerrar aviso", "HERO_TITLE": "Convierte cualquier vídeo en una watch party.", "HERO_SUBTITLE": "Ved vídeos juntos a distancia. Sin cuenta, seguimiento ni anuncios. Comparte un enlace y empezad juntos.", diff --git a/website/locales/fr.json b/website/locales/fr.json index cb0e8ef..928645d 100644 --- a/website/locales/fr.json +++ b/website/locales/fr.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "Organisez une watch party sur Netflix, Emby, Jellyfin, YouTube, Twitch et presque toute vidéo HTML5. Open source, privé et sans compte.", "NAV_FEATURES": "Fonctionnalités", "NAV_HOW_IT_WORKS": "Comment ça marche", - "SUPPORT_BANNER_TEXT": "KoalaSync n’accède pas à votre site vidéo ?", - "SUPPORT_BANNER_CTA": "Réparer l’accès au site", + "SUPPORT_BANNER_TEXT": "Besoin d’aide avec KoalaSync ?", + "SUPPORT_BANNER_CTA": "Ouvrir le centre d’aide", "SUPPORT_BANNER_DISMISS": "Fermer l’avertissement", "HERO_TITLE": "Transformez n'importe quelle vidéo en watch party.", "HERO_SUBTITLE": "Regardez des vidéos ensemble à distance. Sans compte, suivi ni publicité. Partagez un lien et démarrez ensemble.", diff --git a/website/locales/it.json b/website/locales/it.json index ca6d0c4..3002372 100644 --- a/website/locales/it.json +++ b/website/locales/it.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "Avvia una watch party su Netflix, Emby, Jellyfin, YouTube, Twitch e quasi ogni video HTML5. Open source, privata e senza account.", "NAV_FEATURES": "Funzionalità", "NAV_HOW_IT_WORKS": "Come Funziona", - "SUPPORT_BANNER_TEXT": "KoalaSync non riesce ad accedere al sito video?", - "SUPPORT_BANNER_CTA": "Ripristina l’accesso al sito", + "SUPPORT_BANNER_TEXT": "Hai bisogno di aiuto con KoalaSync?", + "SUPPORT_BANNER_CTA": "Apri il centro assistenza", "SUPPORT_BANNER_DISMISS": "Chiudi avviso", "HERO_TITLE": "Trasforma qualsiasi video in una watch party.", "HERO_SUBTITLE": "Guarda video insieme a distanza. Nessun account, tracciamento o pubblicità. Condividi un link e iniziate insieme.", diff --git a/website/locales/ja.json b/website/locales/ja.json index 0ad20f8..d6445df 100644 --- a/website/locales/ja.json +++ b/website/locales/ja.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "Netflix、Emby、Jellyfin、YouTube、Twitch、ほぼすべてのHTML5動画でウォッチパーティーを開催。オープンソース、プライバシー重視、アカウント不要。", "NAV_FEATURES": "機能", "NAV_HOW_IT_WORKS": "仕組み", - "SUPPORT_BANNER_TEXT": "KoalaSync が動画サイトにアクセスできませんか?", - "SUPPORT_BANNER_CTA": "サイトアクセスを修復", + "SUPPORT_BANNER_TEXT": "KoalaSync についてお困りですか?", + "SUPPORT_BANNER_CTA": "ヘルプセンターを開く", "SUPPORT_BANNER_DISMISS": "通知を閉じる", "HERO_TITLE": "どんな動画もウォッチパーティーに。", "HERO_SUBTITLE": "離れた場所から一緒に動画を視聴。アカウント、追跡、広告はありません。リンクを共有して一緒に再生できます。", diff --git a/website/locales/ko.json b/website/locales/ko.json index 49de012..cc3924e 100644 --- a/website/locales/ko.json +++ b/website/locales/ko.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "Netflix, Emby, Jellyfin, YouTube, Twitch 및 거의 모든 HTML5 영상에서 워치 파티를 열어보세요. 오픈소스, 개인정보 보호 중심, 계정 불필요.", "NAV_FEATURES": "특징", "NAV_HOW_IT_WORKS": "작동 방식", - "SUPPORT_BANNER_TEXT": "KoalaSync가 동영상 사이트에 액세스할 수 없나요?", - "SUPPORT_BANNER_CTA": "사이트 액세스 복구", + "SUPPORT_BANNER_TEXT": "KoalaSync에 도움이 필요하신가요?", + "SUPPORT_BANNER_CTA": "도움말 센터 열기", "SUPPORT_BANNER_DISMISS": "알림 닫기", "HERO_TITLE": "어떤 영상이든 워치 파티로.", "HERO_SUBTITLE": "멀리서도 함께 비디오를 시청하세요. 계정, 추적, 광고가 없습니다. 링크를 공유하고 함께 시작하세요.", diff --git a/website/locales/nl.json b/website/locales/nl.json index b9c393c..6db1cba 100644 --- a/website/locales/nl.json +++ b/website/locales/nl.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "Start een watch party op Netflix, Emby, Jellyfin, YouTube, Twitch en bijna elke HTML5-video. Open source, privacyvriendelijk en zonder account.", "NAV_FEATURES": "Functies", "NAV_HOW_IT_WORKS": "Hoe het werkt", - "SUPPORT_BANNER_TEXT": "Heeft KoalaSync geen toegang tot je videosite?", - "SUPPORT_BANNER_CTA": "Websitetoegang herstellen", + "SUPPORT_BANNER_TEXT": "Hulp nodig met KoalaSync?", + "SUPPORT_BANNER_CTA": "Helpcentrum openen", "SUPPORT_BANNER_DISMISS": "Melding sluiten", "HERO_TITLE": "Maak van elke video een watch party.", "HERO_SUBTITLE": "Bekijk op afstand samen video’s. Geen account, tracking of advertenties. Deel een link en start samen.", diff --git a/website/locales/pl.json b/website/locales/pl.json index 7a00b6b..3fdd37b 100644 --- a/website/locales/pl.json +++ b/website/locales/pl.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "Zorganizuj watch party na Netflix, Emby, Jellyfin, YouTube, Twitch i prawie każdym wideo HTML5. Open source, prywatnie i bez konta.", "NAV_FEATURES": "Funkcje", "NAV_HOW_IT_WORKS": "Jak to działa", - "SUPPORT_BANNER_TEXT": "KoalaSync nie ma dostępu do strony z filmem?", - "SUPPORT_BANNER_CTA": "Napraw dostęp do strony", + "SUPPORT_BANNER_TEXT": "Potrzebujesz pomocy z KoalaSync?", + "SUPPORT_BANNER_CTA": "Otwórz centrum pomocy", "SUPPORT_BANNER_DISMISS": "Zamknij powiadomienie", "HERO_TITLE": "Zamień dowolne wideo w watch party.", "HERO_SUBTITLE": "Oglądajcie wspólnie filmy na odległość. Bez konta, śledzenia i reklam. Udostępnij link i zacznijcie razem.", diff --git a/website/locales/pt-BR.json b/website/locales/pt-BR.json index d59233e..73b5dfa 100644 --- a/website/locales/pt-BR.json +++ b/website/locales/pt-BR.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "Crie uma watch party na Netflix, Emby, Jellyfin, YouTube, Twitch e quase qualquer vídeo HTML5. Open source, privado e sem conta.", "NAV_FEATURES": "Recursos", "NAV_HOW_IT_WORKS": "Como Funciona", - "SUPPORT_BANNER_TEXT": "O KoalaSync não consegue acessar o site do vídeo?", - "SUPPORT_BANNER_CTA": "Corrigir acesso ao site", + "SUPPORT_BANNER_TEXT": "Precisa de ajuda com o KoalaSync?", + "SUPPORT_BANNER_CTA": "Abrir a Central de Ajuda", "SUPPORT_BANNER_DISMISS": "Fechar aviso", "HERO_TITLE": "Transforme qualquer vídeo em uma watch party.", "HERO_SUBTITLE": "Assista a vídeos com outras pessoas à distância. Sem conta, rastreamento ou anúncios. Compartilhe um link e comecem juntos.", diff --git a/website/locales/pt.json b/website/locales/pt.json index f934829..a550f2d 100644 --- a/website/locales/pt.json +++ b/website/locales/pt.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "Cria uma watch party na Netflix, Emby, Jellyfin, YouTube, Twitch e quase qualquer vídeo HTML5. Open source, privado e sem conta.", "NAV_FEATURES": "Funcionalidades", "NAV_HOW_IT_WORKS": "Como Funciona", - "SUPPORT_BANNER_TEXT": "O KoalaSync não consegue aceder ao site do vídeo?", - "SUPPORT_BANNER_CTA": "Corrigir acesso ao site", + "SUPPORT_BANNER_TEXT": "Precisa de ajuda com o KoalaSync?", + "SUPPORT_BANNER_CTA": "Abrir o centro de ajuda", "SUPPORT_BANNER_DISMISS": "Fechar aviso", "HERO_TITLE": "Transforma qualquer vídeo numa watch party.", "HERO_SUBTITLE": "Vê vídeos com outras pessoas à distância. Sem conta, rastreio ou publicidade. Partilha um link e comecem juntos.", diff --git a/website/locales/ru.json b/website/locales/ru.json index 7cedf5e..3f60e16 100644 --- a/website/locales/ru.json +++ b/website/locales/ru.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "Запускайте watch party в Netflix, Emby, Jellyfin, YouTube, Twitch и почти любом HTML5-видео. Open source, приватно и без аккаунта.", "NAV_FEATURES": "Функции", "NAV_HOW_IT_WORKS": "Как это работает", - "SUPPORT_BANNER_TEXT": "KoalaSync не может получить доступ к сайту с видео?", - "SUPPORT_BANNER_CTA": "Исправить доступ к сайту", + "SUPPORT_BANNER_TEXT": "Нужна помощь с KoalaSync?", + "SUPPORT_BANNER_CTA": "Открыть справочный центр", "SUPPORT_BANNER_DISMISS": "Закрыть уведомление", "HERO_TITLE": "Преврати любое видео в watch party.", "HERO_SUBTITLE": "Смотрите видео вместе на расстоянии. Без аккаунта, отслеживания и рекламы. Поделитесь ссылкой и начните вместе.", diff --git a/website/locales/tr.json b/website/locales/tr.json index f7949df..3e02cee 100644 --- a/website/locales/tr.json +++ b/website/locales/tr.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "Netflix, Emby, Jellyfin, YouTube, Twitch ve neredeyse tüm HTML5 videolarında watch party başlatın. Açık kaynak, gizlilik odaklı ve hesapsız.", "NAV_FEATURES": "Özellikler", "NAV_HOW_IT_WORKS": "Nasıl Çalışır", - "SUPPORT_BANNER_TEXT": "KoalaSync video sitesine erişemiyor mu?", - "SUPPORT_BANNER_CTA": "Site erişimini düzelt", + "SUPPORT_BANNER_TEXT": "KoalaSync ile ilgili yardıma mı ihtiyacınız var?", + "SUPPORT_BANNER_CTA": "Yardım Merkezini aç", "SUPPORT_BANNER_DISMISS": "Bildirimi kapat", "HERO_TITLE": "Herhangi bir videoyu watch party'ye dönüştür.", "HERO_SUBTITLE": "Uzaktan birlikte video izleyin. Hesap, takip veya reklam yok. Bağlantıyı paylaşın ve birlikte başlatın.", diff --git a/website/locales/uk.json b/website/locales/uk.json index d138802..4be13d6 100644 --- a/website/locales/uk.json +++ b/website/locales/uk.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "Запускайте watch party у Netflix, Emby, Jellyfin, YouTube, Twitch і майже будь-якому HTML5-відео. Open source, приватно й без акаунта.", "NAV_FEATURES": "особливості", "NAV_HOW_IT_WORKS": "Як це працює", - "SUPPORT_BANNER_TEXT": "KoalaSync не має доступу до сайту з відео?", - "SUPPORT_BANNER_CTA": "Виправити доступ до сайту", + "SUPPORT_BANNER_TEXT": "Потрібна допомога з KoalaSync?", + "SUPPORT_BANNER_CTA": "Відкрити довідковий центр", "SUPPORT_BANNER_DISMISS": "Закрити сповіщення", "HERO_TITLE": "Перетвори будь-яке відео на watch party.", "HERO_SUBTITLE": "Дивіться відео разом на відстані. Без облікового запису, відстеження та реклами. Поділіться посиланням і почніть разом.", diff --git a/website/locales/zh.json b/website/locales/zh.json index 4063a91..0c1e21a 100644 --- a/website/locales/zh.json +++ b/website/locales/zh.json @@ -14,8 +14,8 @@ "TWITTER_DESCRIPTION": "在 Netflix、Emby、Jellyfin、YouTube、Twitch 和几乎任意 HTML5 视频上发起一起看派对。开源、重视隐私、无需账号。", "NAV_FEATURES": "特征", "NAV_HOW_IT_WORKS": "它是如何运作的", - "SUPPORT_BANNER_TEXT": "KoalaSync 无法访问视频网站?", - "SUPPORT_BANNER_CTA": "修复网站访问权限", + "SUPPORT_BANNER_TEXT": "需要 KoalaSync 帮助?", + "SUPPORT_BANNER_CTA": "打开帮助中心", "SUPPORT_BANNER_DISMISS": "关闭提示", "HERO_TITLE": "把任意视频变成一起看派对。", "HERO_SUBTITLE": "远程一起看视频。无需账户、无跟踪、无广告。分享链接并一起开始。", diff --git a/website/privacy.html b/website/privacy.html index 7eb71f5..a3e5053 100644 --- a/website/privacy.html +++ b/website/privacy.html @@ -243,7 +243,7 @@

-
+

6. Extension Permissions

To fulfill its technical purpose, the browser extension requires certain permissions. Each permission is used exclusively for core functionality: diff --git a/website/site-access-help.html b/website/site-access-help.html index f051460..5409d57 100644 --- a/website/site-access-help.html +++ b/website/site-access-help.html @@ -71,6 +71,7 @@

@@ -159,6 +160,7 @@ diff --git a/website/styles/support.css b/website/styles/support.css index e9ff701..a396bfb 100644 --- a/website/styles/support.css +++ b/website/styles/support.css @@ -1,4 +1,4 @@ -/* --- Site-access troubleshooting page --- */ +/* --- Help and site-access support pages --- */ .support-page { min-height: 100vh; } @@ -137,6 +137,75 @@ margin-top: 1.25rem; } +.support-section-title { + margin: 0 0 0.25rem; + color: var(--text); + text-align: center; + font-size: clamp(1.45rem, 3vw, 1.9rem); +} + +.support-card-link { + position: relative; + display: block; + color: inherit; + text-decoration: none; + transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease; +} + +.support-card-link:hover, +.support-card-link:focus-visible { + transform: translateY(-3px); + border-color: color-mix(in oklch, var(--accent) 55%, transparent); + box-shadow: 0 24px 65px rgba(0, 0, 0, 0.2); +} + +.support-card-link:focus-visible { + outline: 3px solid color-mix(in oklch, var(--accent) 45%, transparent); + outline-offset: 3px; +} + +.support-card-link .support-eyebrow { + margin-bottom: 1rem; +} + +.support-card-icon { + float: right; + display: grid; + place-items: center; + width: 2.8rem; + height: 2.8rem; + margin-left: 0.75rem; + border: 1px solid color-mix(in oklch, var(--accent) 25%, transparent); + border-radius: 14px; + background: color-mix(in oklch, var(--accent) 9%, var(--card)); + font-size: 1.3rem; +} + +.support-card-cta { + display: inline-block; + margin-top: 1rem; + color: var(--accent); + font-weight: 800; +} + +.support-anchor-section { + scroll-margin-top: 7rem; +} + +.support-anchor-section code { + overflow-wrap: anywhere; + color: var(--text); +} + +.support-callout-warning { + border-color: color-mix(in oklch, var(--accent-terracotta) 50%, transparent); + background: color-mix(in oklch, var(--accent-terracotta) 9%, var(--card-surface)); +} + +.support-callout-warning .support-callout-icon { + background: var(--accent-terracotta); +} + .support-steps { list-style: none; padding: 0 !important; diff --git a/website/template.html b/website/template.html index e6a3234..dd6541b 100644 --- a/website/template.html +++ b/website/template.html @@ -364,7 +364,7 @@
{{SUPPORT_BANNER_TEXT}} - + {{SUPPORT_BANNER_CTA}}
+
@@ -1576,6 +1581,7 @@