diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 107bd28..99cd4b1 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -8,7 +8,7 @@ All notable changes to the KoalaSync browser extension and relay server. ### Added - **Extension: Same-origin frame video detection** — Finds and controls players that live inside a first-party iframe instead of the top document, so sites that wrap their player in their own frame sync without site-specific workarounds. Frame documents are watched for late-loading players and re-scanned after a frame reload; cross-origin frames stay out of reach by design. -- **Extension: Editable Hide-Clutter list** — Adds a validated, deduplicated domain editor in Settings, prefilled with the shipped blacklist, with a defaults reset and per-device persistence in `chrome.storage.local`. +- **Extension: Editable Hide-Clutter list** — Adds a validated, deduplicated domain editor in Settings, prefilled with the shipped blacklist, with a defaults reset and per-device persistence in `chrome.storage.local`. The editor groups entries into your own and the shipped defaults, and only your changes are stored, so domains added to the shipped list in later versions still reach you without overriding what you removed or added. Lists saved by an earlier version are migrated automatically. - **Extension: Independent default audio boost** — Adds a configurable `0–20 dB` output gain in half-decibel steps. The boost works with or without the compressor and applies live to the selected video tab. ### Fixed diff --git a/extension/background.js b/extension/background.js index 3d3d99d..e1d887d 100644 --- a/extension/background.js +++ b/extension/background.js @@ -465,7 +465,7 @@ function emitEpisodeLobbyForCurrentPrivacy() { const LEGACY_SYNC_KEYS = [ 'serverUrl', 'useCustomServer', 'roomId', 'password', 'chatKey', 'chatEnabled', 'chatNotifications', 'chatPosition', 'chatSize', 'chatStartMode', 'chatReactionDisplay', 'username', - 'filterNoise', 'customBlacklistDomains', 'autoSyncNextEpisode', 'forceSyncMode', + 'filterNoise', 'customBlacklistDomains', 'blacklistOverrides', 'autoSyncNextEpisode', 'forceSyncMode', 'browserNotifications', 'autoCopyInvite', 'locale', 'audioSettings', 'titlePrivacyMode', 'sendTabTitle', 'mediaTitlePrivacyMode' ]; diff --git a/extension/locales/de.json b/extension/locales/de.json index 26cf419..d9e218a 100644 --- a/extension/locales/de.json +++ b/extension/locales/de.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "Filtert Nicht-Video-Tabs und irrelevante Domains heraus, um die Liste sauber zu halten", "BLACKLIST_EDIT": "Liste bearbeiten", "BLACKLIST_EDITOR_LABEL": "Ausgeblendete Domains", - "BLACKLIST_EDITOR_HELP": "Eine Domain pro Zeile. URLs werden auf ihren Hostnamen reduziert. Speicherung nur auf diesem Gerät.", + "BLACKLIST_EDITOR_HELP": "Eine Domain pro Zeile. Zeilen mit # sind Notizen. URLs werden auf ihren Hostnamen reduziert. Gespeichert werden nur deine Änderungen auf diesem Gerät, damit neue Standard-Domains weiterhin ankommen.", "BLACKLIST_RESET": "Standards wiederherstellen", + "BLACKLIST_SECTION_USER": "Deine Einträge", + "BLACKLIST_SECTION_DEFAULT": "Mitgelieferte Standards, werden automatisch aktuell gehalten", "BLACKLIST_SAVE": "Liste speichern", "BLACKLIST_STATUS_INVALID": "Nicht gespeichert. Bitte diese Einträge prüfen: {domains}", "BLACKLIST_STATUS_LIMIT": "Nicht gespeichert. Die Liste unterstützt höchstens {max} Domains.", diff --git a/extension/locales/en.json b/extension/locales/en.json index 38ea622..d9bc1ec 100644 --- a/extension/locales/en.json +++ b/extension/locales/en.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "Filters out non-video tabs and unrelated domains to keep the list clean", "BLACKLIST_EDIT": "Edit list", "BLACKLIST_EDITOR_LABEL": "Hidden domains", - "BLACKLIST_EDITOR_HELP": "One domain per line. URLs are reduced to their hostname. Stored only on this device.", + "BLACKLIST_EDITOR_HELP": "One domain per line. Lines starting with # are notes. URLs are reduced to their hostname. Only your changes are stored on this device, so new default domains keep arriving.", "BLACKLIST_RESET": "Restore defaults", + "BLACKLIST_SECTION_USER": "Your entries", + "BLACKLIST_SECTION_DEFAULT": "Shipped defaults, kept up to date automatically", "BLACKLIST_SAVE": "Save list", "BLACKLIST_STATUS_INVALID": "Not saved. Check these entries: {domains}", "BLACKLIST_STATUS_LIMIT": "Not saved. The list supports at most {max} domains.", diff --git a/extension/locales/es.json b/extension/locales/es.json index d92ec2e..f512f00 100644 --- a/extension/locales/es.json +++ b/extension/locales/es.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "Filtra pestañas que no son de video y dominios no relacionados para mantener limpia la lista", "BLACKLIST_EDIT": "Editar lista", "BLACKLIST_EDITOR_LABEL": "Dominios ocultos", - "BLACKLIST_EDITOR_HELP": "Un dominio por línea. Las URL se reducen a su nombre de host. Se guarda solo en este dispositivo.", + "BLACKLIST_EDITOR_HELP": "Un dominio por línea. Las líneas que empiezan por # son notas. Las URL se reducen a su nombre de host. Solo se guardan tus cambios en este dispositivo, por lo que los nuevos dominios predeterminados siguen llegando.", "BLACKLIST_RESET": "Restaurar valores predeterminados", + "BLACKLIST_SECTION_USER": "Tus entradas", + "BLACKLIST_SECTION_DEFAULT": "Valores predeterminados incluidos, actualizados automáticamente", "BLACKLIST_SAVE": "Guardar lista", "BLACKLIST_STATUS_INVALID": "No se guardó. Revisa estas entradas: {domains}", "BLACKLIST_STATUS_LIMIT": "No se guardó. La lista admite como máximo {max} dominios.", diff --git a/extension/locales/fr.json b/extension/locales/fr.json index b6477c5..da60a9c 100644 --- a/extension/locales/fr.json +++ b/extension/locales/fr.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "Filtre les onglets non-vidéo et les domaines non pertinents pour garder la liste propre", "BLACKLIST_EDIT": "Modifier la liste", "BLACKLIST_EDITOR_LABEL": "Domaines masqués", - "BLACKLIST_EDITOR_HELP": "Un domaine par ligne. Les URL sont réduites à leur nom d’hôte. Stockage uniquement sur cet appareil.", + "BLACKLIST_EDITOR_HELP": "Un domaine par ligne. Les lignes commençant par # sont des notes. Les URL sont réduites à leur nom d’hôte. Seules vos modifications sont stockées sur cet appareil, les nouveaux domaines par défaut continuent donc d’arriver.", "BLACKLIST_RESET": "Restaurer les valeurs par défaut", + "BLACKLIST_SECTION_USER": "Vos entrées", + "BLACKLIST_SECTION_DEFAULT": "Valeurs par défaut fournies, mises à jour automatiquement", "BLACKLIST_SAVE": "Enregistrer la liste", "BLACKLIST_STATUS_INVALID": "Non enregistré. Vérifiez ces entrées : {domains}", "BLACKLIST_STATUS_LIMIT": "Non enregistré. La liste accepte au maximum {max} domaines.", diff --git a/extension/locales/it.json b/extension/locales/it.json index d4efd0a..ca5cb8d 100644 --- a/extension/locales/it.json +++ b/extension/locales/it.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "Mantiene pulito l'elenco filtrando le schede non pertinenti", "BLACKLIST_EDIT": "Modifica elenco", "BLACKLIST_EDITOR_LABEL": "Domini nascosti", - "BLACKLIST_EDITOR_HELP": "Un dominio per riga. Gli URL vengono ridotti al nome host. Salvato solo su questo dispositivo.", + "BLACKLIST_EDITOR_HELP": "Un dominio per riga. Le righe che iniziano con # sono note. Gli URL vengono ridotti al nome host. Su questo dispositivo vengono salvate solo le tue modifiche, così i nuovi domini predefiniti continuano ad arrivare.", "BLACKLIST_RESET": "Ripristina predefiniti", + "BLACKLIST_SECTION_USER": "Le tue voci", + "BLACKLIST_SECTION_DEFAULT": "Predefiniti inclusi, aggiornati automaticamente", "BLACKLIST_SAVE": "Salva elenco", "BLACKLIST_STATUS_INVALID": "Non salvato. Controlla queste voci: {domains}", "BLACKLIST_STATUS_LIMIT": "Non salvato. L'elenco supporta al massimo {max} domini.", diff --git a/extension/locales/ja.json b/extension/locales/ja.json index a3e41b2..68ad760 100644 --- a/extension/locales/ja.json +++ b/extension/locales/ja.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "リストをすっきりさせるため、ビデオのないタブや無関係なドメインをフィルタリングします", "BLACKLIST_EDIT": "リストを編集", "BLACKLIST_EDITOR_LABEL": "非表示ドメイン", - "BLACKLIST_EDITOR_HELP": "1行に1つのドメインを入力します。URLはホスト名に変換され、この端末にのみ保存されます。", + "BLACKLIST_EDITOR_HELP": "1行に1つのドメインを入力します。# で始まる行はメモです。URLはホスト名に変換されます。この端末に保存されるのは変更点だけなので、新しい既定ドメインも引き続き追加されます。", "BLACKLIST_RESET": "既定値に戻す", + "BLACKLIST_SECTION_USER": "あなたの追加分", + "BLACKLIST_SECTION_DEFAULT": "同梱の既定値(自動的に最新へ更新)", "BLACKLIST_SAVE": "リストを保存", "BLACKLIST_STATUS_INVALID": "保存されませんでした。次の項目を確認してください: {domains}", "BLACKLIST_STATUS_LIMIT": "保存されませんでした。リストは最大{max}ドメインまでです。", diff --git a/extension/locales/ko.json b/extension/locales/ko.json index 2bc7c27..2354f2f 100644 --- a/extension/locales/ko.json +++ b/extension/locales/ko.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "목록을 깔끔하게 유지하기 위해 비디오가 없는 탭과 관련 없는 도메인을 필터링합니다", "BLACKLIST_EDIT": "목록 편집", "BLACKLIST_EDITOR_LABEL": "숨긴 도메인", - "BLACKLIST_EDITOR_HELP": "한 줄에 도메인 하나를 입력하세요. URL은 호스트 이름으로 변환되며 이 기기에만 저장됩니다.", + "BLACKLIST_EDITOR_HELP": "한 줄에 도메인 하나를 입력하세요. #으로 시작하는 줄은 메모입니다. URL은 호스트 이름으로 변환됩니다. 이 기기에는 변경 사항만 저장되므로 새 기본 도메인도 계속 반영됩니다.", "BLACKLIST_RESET": "기본값 복원", + "BLACKLIST_SECTION_USER": "직접 추가한 항목", + "BLACKLIST_SECTION_DEFAULT": "기본 제공 목록 (자동으로 최신 상태 유지)", "BLACKLIST_SAVE": "목록 저장", "BLACKLIST_STATUS_INVALID": "저장되지 않았습니다. 다음 항목을 확인하세요: {domains}", "BLACKLIST_STATUS_LIMIT": "저장되지 않았습니다. 목록은 최대 {max}개 도메인을 지원합니다.", diff --git a/extension/locales/nl.json b/extension/locales/nl.json index 9f8d9ad..4cac4c9 100644 --- a/extension/locales/nl.json +++ b/extension/locales/nl.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "Filtert tabbladen zonder video's en niet-gerelateerde domeinen om de lijst schoon te houden", "BLACKLIST_EDIT": "Lijst bewerken", "BLACKLIST_EDITOR_LABEL": "Verborgen domeinen", - "BLACKLIST_EDITOR_HELP": "Eén domein per regel. URL's worden teruggebracht tot hun hostnaam. Alleen opgeslagen op dit apparaat.", + "BLACKLIST_EDITOR_HELP": "Eén domein per regel. Regels die met # beginnen zijn notities. URL's worden teruggebracht tot hun hostnaam. Alleen jouw wijzigingen worden op dit apparaat opgeslagen, zodat nieuwe standaarddomeinen blijven binnenkomen.", "BLACKLIST_RESET": "Standaardwaarden herstellen", + "BLACKLIST_SECTION_USER": "Jouw items", + "BLACKLIST_SECTION_DEFAULT": "Meegeleverde standaarden, automatisch bijgewerkt", "BLACKLIST_SAVE": "Lijst opslaan", "BLACKLIST_STATUS_INVALID": "Niet opgeslagen. Controleer deze items: {domains}", "BLACKLIST_STATUS_LIMIT": "Niet opgeslagen. De lijst ondersteunt maximaal {max} domeinen.", diff --git a/extension/locales/pl.json b/extension/locales/pl.json index a0c8d03..abf7622 100644 --- a/extension/locales/pl.json +++ b/extension/locales/pl.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "Filtruje karty bez wideo i niepowiązane domeny, aby zachować porządek", "BLACKLIST_EDIT": "Edytuj listę", "BLACKLIST_EDITOR_LABEL": "Ukryte domeny", - "BLACKLIST_EDITOR_HELP": "Jedna domena w wierszu. Adresy URL są skracane do nazwy hosta. Zapis tylko na tym urządzeniu.", + "BLACKLIST_EDITOR_HELP": "Jedna domena w wierszu. Wiersze zaczynające się od # to notatki. Adresy URL są skracane do nazwy hosta. Na tym urządzeniu zapisywane są tylko Twoje zmiany, dzięki czemu nowe domyślne domeny nadal się pojawiają.", "BLACKLIST_RESET": "Przywróć domyślne", + "BLACKLIST_SECTION_USER": "Twoje wpisy", + "BLACKLIST_SECTION_DEFAULT": "Dołączone domyślne, aktualizowane automatycznie", "BLACKLIST_SAVE": "Zapisz listę", "BLACKLIST_STATUS_INVALID": "Nie zapisano. Sprawdź te wpisy: {domains}", "BLACKLIST_STATUS_LIMIT": "Nie zapisano. Lista obsługuje maksymalnie {max} domen.", diff --git a/extension/locales/pt-BR.json b/extension/locales/pt-BR.json index 20c492c..31645e1 100644 --- a/extension/locales/pt-BR.json +++ b/extension/locales/pt-BR.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "Filtra abas não relacionadas para manter a lista limpa", "BLACKLIST_EDIT": "Editar lista", "BLACKLIST_EDITOR_LABEL": "Domínios ocultos", - "BLACKLIST_EDITOR_HELP": "Um domínio por linha. URLs são reduzidas ao nome do host. Salvo somente neste dispositivo.", + "BLACKLIST_EDITOR_HELP": "Um domínio por linha. Linhas começando com # são anotações. URLs são reduzidas ao nome do host. Somente suas alterações são salvas neste dispositivo, então novos domínios padrão continuam chegando.", "BLACKLIST_RESET": "Restaurar padrões", + "BLACKLIST_SECTION_USER": "Suas entradas", + "BLACKLIST_SECTION_DEFAULT": "Padrões inclusos, mantidos atualizados automaticamente", "BLACKLIST_SAVE": "Salvar lista", "BLACKLIST_STATUS_INVALID": "Não foi salvo. Verifique estas entradas: {domains}", "BLACKLIST_STATUS_LIMIT": "Não foi salvo. A lista aceita no máximo {max} domínios.", diff --git a/extension/locales/pt.json b/extension/locales/pt.json index 0791ceb..e5b5eff 100644 --- a/extension/locales/pt.json +++ b/extension/locales/pt.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "Filtra separadores não relacionados para manter a lista limpa", "BLACKLIST_EDIT": "Editar lista", "BLACKLIST_EDITOR_LABEL": "Domínios ocultos", - "BLACKLIST_EDITOR_HELP": "Um domínio por linha. Os URL são reduzidos ao nome do anfitrião. Guardado apenas neste dispositivo.", + "BLACKLIST_EDITOR_HELP": "Um domínio por linha. As linhas iniciadas por # são notas. Os URL são reduzidos ao nome do anfitrião. Apenas as suas alterações são guardadas neste dispositivo, pelo que os novos domínios predefinidos continuam a chegar.", "BLACKLIST_RESET": "Repor predefinições", + "BLACKLIST_SECTION_USER": "As suas entradas", + "BLACKLIST_SECTION_DEFAULT": "Predefinições incluídas, mantidas atualizadas automaticamente", "BLACKLIST_SAVE": "Guardar lista", "BLACKLIST_STATUS_INVALID": "Não foi guardado. Verifique estas entradas: {domains}", "BLACKLIST_STATUS_LIMIT": "Não foi guardado. A lista suporta no máximo {max} domínios.", diff --git a/extension/locales/ru.json b/extension/locales/ru.json index 0ac0afa..80db8cb 100644 --- a/extension/locales/ru.json +++ b/extension/locales/ru.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "Скрывает вкладки без видео и несвязанные домены для порядка", "BLACKLIST_EDIT": "Изменить список", "BLACKLIST_EDITOR_LABEL": "Скрытые домены", - "BLACKLIST_EDITOR_HELP": "Один домен в строке. URL сокращаются до имени хоста. Хранится только на этом устройстве.", + "BLACKLIST_EDITOR_HELP": "Один домен в строке. Строки, начинающиеся с #, — это заметки. URL сокращаются до имени хоста. На устройстве хранятся только ваши изменения, поэтому новые домены из списка по умолчанию продолжают появляться.", "BLACKLIST_RESET": "Восстановить значения по умолчанию", + "BLACKLIST_SECTION_USER": "Ваши записи", + "BLACKLIST_SECTION_DEFAULT": "Встроенный список, обновляется автоматически", "BLACKLIST_SAVE": "Сохранить список", "BLACKLIST_STATUS_INVALID": "Не сохранено. Проверьте записи: {domains}", "BLACKLIST_STATUS_LIMIT": "Не сохранено. Список поддерживает не более {max} доменов.", diff --git a/extension/locales/tr.json b/extension/locales/tr.json index 5e6dca1..d9bc14b 100644 --- a/extension/locales/tr.json +++ b/extension/locales/tr.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "Listeyi temiz tutmak için video olmayan sekmeleri ve alakasız alan adlarını filtreler", "BLACKLIST_EDIT": "Listeyi düzenle", "BLACKLIST_EDITOR_LABEL": "Gizli alan adları", - "BLACKLIST_EDITOR_HELP": "Her satıra bir alan adı. URL'ler ana makine adına indirgenir. Yalnızca bu cihazda saklanır.", + "BLACKLIST_EDITOR_HELP": "Her satıra bir alan adı. # ile başlayan satırlar nottur. URL'ler ana makine adına indirgenir. Bu cihazda yalnızca değişiklikleriniz saklanır, böylece yeni varsayılan alan adları gelmeye devam eder.", "BLACKLIST_RESET": "Varsayılanları geri yükle", + "BLACKLIST_SECTION_USER": "Kendi girdileriniz", + "BLACKLIST_SECTION_DEFAULT": "Birlikte gelen varsayılanlar, otomatik olarak güncel tutulur", "BLACKLIST_SAVE": "Listeyi kaydet", "BLACKLIST_STATUS_INVALID": "Kaydedilmedi. Şu girdileri kontrol edin: {domains}", "BLACKLIST_STATUS_LIMIT": "Kaydedilmedi. Liste en fazla {max} alan adını destekler.", diff --git a/extension/locales/uk.json b/extension/locales/uk.json index af6b633..12b14d7 100644 --- a/extension/locales/uk.json +++ b/extension/locales/uk.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "Відфільтровує вкладки, не пов’язані з відео, і непов’язані домени, щоб зберегти список чистим", "BLACKLIST_EDIT": "Редагувати список", "BLACKLIST_EDITOR_LABEL": "Приховані домени", - "BLACKLIST_EDITOR_HELP": "Один домен у рядку. URL скорочуються до імені хоста. Зберігається лише на цьому пристрої.", + "BLACKLIST_EDITOR_HELP": "Один домен у рядку. Рядки, що починаються з #, є примітками. URL скорочуються до імені хоста. На цьому пристрої зберігаються лише ваші зміни, тому нові типові домени продовжують надходити.", "BLACKLIST_RESET": "Відновити типові значення", + "BLACKLIST_SECTION_USER": "Ваші записи", + "BLACKLIST_SECTION_DEFAULT": "Вбудований список, оновлюється автоматично", "BLACKLIST_SAVE": "Зберегти список", "BLACKLIST_STATUS_INVALID": "Не збережено. Перевірте записи: {domains}", "BLACKLIST_STATUS_LIMIT": "Не збережено. Список підтримує щонайбільше {max} доменів.", diff --git a/extension/locales/zh.json b/extension/locales/zh.json index 4508a91..b735cae 100644 --- a/extension/locales/zh.json +++ b/extension/locales/zh.json @@ -98,8 +98,10 @@ "LABEL_HIDE_CLUTTER_TOOLTIP": "过滤掉非视频选项卡和不相关的域以保持列表干净", "BLACKLIST_EDIT": "编辑列表", "BLACKLIST_EDITOR_LABEL": "隐藏的域名", - "BLACKLIST_EDITOR_HELP": "每行一个域名。URL 会转换为主机名,并且仅保存在此设备上。", + "BLACKLIST_EDITOR_HELP": "每行一个域名。以 # 开头的行是备注。URL 会转换为主机名。此设备仅保存你的改动,因此新的默认域名会持续加入。", "BLACKLIST_RESET": "恢复默认值", + "BLACKLIST_SECTION_USER": "你添加的条目", + "BLACKLIST_SECTION_DEFAULT": "内置默认列表(自动保持最新)", "BLACKLIST_SAVE": "保存列表", "BLACKLIST_STATUS_INVALID": "未保存。请检查这些条目:{domains}", "BLACKLIST_STATUS_LIMIT": "未保存。列表最多支持 {max} 个域名。", diff --git a/extension/popup.html b/extension/popup.html index 9ade1ea..f6522d9 100644 --- a/extension/popup.html +++ b/extension/popup.html @@ -1765,7 +1765,7 @@