Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: CI

on:
push:
branches: [main]
branches: [main, dev]
pull_request:
branches: [main]
branches: [main, dev]

permissions:
contents: read
Expand Down Expand Up @@ -65,6 +65,7 @@ jobs:
grep -q 'id="custom-replacement-feedback"' static/options/options.html
grep -q 'id="custom-preview-input"' static/options/options.html
grep -q 'id="custom-preview-output"' static/options/options.html
grep -q 'id="process-subtitles"' static/options/options.html
grep -q 'id="export-personal-rules"' static/options/options.html
grep -q 'id="import-personal-rules"' static/options/options.html
grep -q 'id="sync-categories"' static/options/options.html
Expand Down
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,20 @@
Alle wesentlichen Änderungen an Sprachverstand werden in dieser Datei
dokumentiert.

## Unveröffentlicht

### Hinzugefügt

- Untertitel-Overlays werden zentral erkannt und standardmäßig von der
Verarbeitung ausgenommen. Eine neue, standardmäßig deaktivierte Option
erlaubt ihre gezielte Korrektur.

### Leistung

- Schnell wechselnde Untertitel werden pro Bild auf den zuletzt sichtbaren
Textstand reduziert. Identische Zeilen verwenden einen begrenzten Cache;
der normale Webseitenpfad bleibt unverändert.

## 0.6.6 (2026-08-02)

### Hinzugefügt
Expand Down
16 changes: 14 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ mehrdeutige Formen bleiben deshalb unangetastet.
- optionale Browser-Synchronisierung, für jede Datenkategorie einzeln wählbar und standardmäßig vollständig deaktiviert
- Ausschluss einzelner Domains
- optionaler Schutz von Texten in Anführungszeichen
- optionale Untertitelkorrektur; standardmäßig werden erkannte
Untertitel-Overlays vollständig übersprungen
- optionale Verarbeitung zugänglicher Attribute wie `alt`, `aria-label`,
`aria-description` und `title`
- Schutz von Eingabefeldern, Editoren, Quellcode, URLs und technischen Daten
Expand All @@ -135,8 +137,18 @@ lassen sich die Regelgruppen einzeln steuern, beispielsweise:
- optionale Geschlechtszusätze in Stellenanzeigen wie `(m/w/d)`

In den erweiterten Einstellungen stehen persönliche Ausnahmen, eigene
literale Ersetzungen, Domain-Ausschlüsse, der Schutz zitierter Schreibweisen und
die Verarbeitung zugänglicher Attribute zur Verfügung. Eigene Ersetzungen sind case-sensitive, werden genau einmal ausgeführt und standardmäßig ausschließlich lokal gespeichert. Ausnahmen haben Vorrang. In einem eigenen Bereich kann für Aktivierungsstatus, Regelgruppen, Domain-Ausschlüsse, Textoptionen, Ausnahmen und eigene Ersetzungen jeweils getrennt gewählt werden, ob die Kategorie zusätzlich über den Synchronisierungsdienst des Browsers übertragen wird. Die Auswahl ist standardmäßig vollständig deaktiviert. Sobald mindestens eine Kategorie aktiviert wird, synchronisiert der Browser auch diese Auswahl, damit dieselben Kategorien auf weiteren angemeldeten Geräten geladen werden können.
literale Ersetzungen, Domain-Ausschlüsse, der Schutz zitierter Schreibweisen,
die optionale Untertitelkorrektur und die Verarbeitung zugänglicher Attribute
zur Verfügung. Die Untertitelkorrektur ist standardmäßig deaktiviert. Eigene
Ersetzungen sind case-sensitive, werden genau einmal ausgeführt und
standardmäßig ausschließlich lokal gespeichert. Ausnahmen haben Vorrang. In
einem eigenen Bereich kann für Aktivierungsstatus, Regelgruppen,
Domain-Ausschlüsse, Textoptionen, Ausnahmen und eigene Ersetzungen jeweils
getrennt gewählt werden, ob die Kategorie zusätzlich über den
Synchronisierungsdienst des Browsers übertragen wird. Die Auswahl ist
standardmäßig vollständig deaktiviert. Sobald mindestens eine Kategorie
aktiviert wird, synchronisiert der Browser auch diese Auswahl, damit dieselben
Kategorien auf weiteren angemeldeten Geräten geladen werden können.

**Speichern** und **Zurücksetzen** befinden sich oben in derselben Werkzeugleiste
wie **Alle öffnen** und **Alle schließen**. Alle Einstellungsbereiche lassen sich
Expand Down
12 changes: 11 additions & 1 deletion docs/ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
8. **Lokal als Standard:** Der vollständige Einstellungsstand liegt immer in `storage.local`.
9. **Synchronisierung nur nach Auswahl:** Jede synchronisierbare Datenkategorie wird einzeln gewählt; standardmäßig ist keine ausgewählt.
10. **Importdateien sind Daten, kein Code:** Regex, Skripte, unbekannte Felder und zukünftige Schema- oder Einstellungsrevisionen werden abgewiesen.
11. **Untertitel sind opt-in:** Erkannte Untertitel-Overlays werden
standardmäßig bereits vor der Texttransformation verworfen.

## Datenfluss

Expand All @@ -36,6 +38,13 @@ verarbeitet. Danach beobachtet der `MutationObserver` neue Unterbäume,
geänderte Textknoten und ausschließlich freigegebene Attribute. Eingaben,
Editoren, Quellcode, URLs, IDs und technische Daten bleiben ausgeschlossen.

Untertitel-Overlays werden zentral anhand konservativer Player-Merkmale erkannt.
Ist ihre Verarbeitung deaktiviert, gelangen ihre Knoten nicht in die reguläre
Warteschlange. Bei Aktivierung sammelt ein eigener Pfad schnelle Textänderungen
bis zum nächsten Bild, verwirft überholte oder entfernte Knoten und verwendet
einen begrenzten Ergebnis-Cache. Normale Webseitenknoten behalten den bisherigen
Microtask-Pfad.

## Einstellungen und Speicherorte

`src/settings/storage.ts` speichert den vollständigen normalisierten Stand unter
Expand Down Expand Up @@ -68,7 +77,8 @@ Stand bewusst keine Migration aus dem früheren experimentellen Speicherschema.

Die Vorschau verwendet dieselbe Funktion `transformText` wie Webseiten und
berücksichtigt die im Formular gewählten Regelgruppen, Ausnahmen, Ersetzungen und
die Zitatoption.
die Zitatoption. Die Untertiteloption betrifft ausschließlich die
DOM-Verarbeitung auf Webseiten.

`src/settings/personal-rules.ts` enthält Parser, Konflikthinweise und die
deterministische Zusammenführung persönlicher Listen.
Expand Down
12 changes: 10 additions & 2 deletions docs/BETA-TEST.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ Prüfen:
- Alle anderen Bereiche sind zunächst eingeklappt.
- **Alle öffnen** öffnet sämtliche Bereiche.
- **Alle schließen** schließt sämtliche Bereiche.
- **Untertitel korrigieren** ist standardmäßig deaktiviert.
- Die Reihenfolge lautet:
1. Allgemein
2. Was soll korrigiert werden?
Expand Down Expand Up @@ -197,13 +198,19 @@ DriveIn
Paarungen unterschiedlicher Begriffe müssen unverändert bleiben, etwa
`Nutzerinnen und Kunden` oder `Mütter und Väter`.

## Wiederherstellung, Zitate und Attribute
## Wiederherstellung, Zitate, Untertitel und Attribute

- Jede Regelgruppe einzeln ausschalten. Nur ihre eigenen Änderungen dürfen zurückgesetzt werden.
- Beim erneuten Einschalten müssen Texte ohne Neuladen wieder verarbeitet werden.
- Beim globalen Ausschalten müssen alle Änderungen ohne Neuladen verschwinden.
- Nach Deaktivierung der Zitatoption bleibt `„Mitarbeiter/-innen“` geschützt, während derselbe Ausdruck außerhalb des Zitats korrigiert wird.
- Bei deaktivierter Attributoption dürfen `alt`, `aria-label`, `aria-description` und `title` nicht verändert werden; sichtbarer Text muss weiter funktionieren.
- Auf YouTube ein Video mit Untertiteln abspielen. Bei deaktivierter
Untertiteloption müssen Untertitel unverändert bleiben und das Video flüssig
laufen, während Beschreibung und Kommentare weiter verarbeitet werden.
- Die Untertiteloption aktivieren und eine Zeile mit `Nutzer:innen` testen. Die
Korrektur muss ohne sichtbares Stocken erfolgen. Schnelle wortweise Updates
dürfen nur den zuletzt sichtbaren Stand verarbeiten.
- Eingabefelder, Editoren, Quellcode, URLs, IDs und technische Daten bleiben unberührt.

## README-Direkttest
Expand All @@ -225,7 +232,8 @@ npx web-ext run \
```

Auf dem Gerät Touch-Bedienung, Scrollbarkeit, Safe Areas, Bildschirmtastatur,
Popup, Optionsseite, eigene Ersetzungen, Synchronisierung und die lokale
Popup, Optionsseite, Untertitel bei ein- und ausgeschalteter Option, eigene
Ersetzungen, Synchronisierung und die lokale
Rechtshinweisseite prüfen.

## Lokale Testseite
Expand Down
8 changes: 6 additions & 2 deletions docs/SETTINGS-BACKUP-FORMAT.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ versionierte JSON-Datei und kann ihn lokal wieder einlesen.
- Aktivierungsstatus
- aktive Regelgruppen
- Domain-Ausschlüsse
- Verarbeitung von Zitaten und zugänglichen Attributen
- Verarbeitung von Zitaten, Untertiteln und zugänglichen Attributen
- persönliche Ausnahmen
- eigene Ersetzungen
- Auswahl der optionalen Browser-Synchronisierung
Expand All @@ -32,7 +32,7 @@ Erst nach **Speichern** werden ausdrücklich ausgewählte Kategorien zusätzlich
"version": 2,
"exportedAt": "2026-07-28T18:30:00.000Z",
"settings": {
"settingsRevision": 6,
"settingsRevision": 7,
"enabled": true,
"excludedDomains": [
"example.org"
Expand All @@ -52,6 +52,7 @@ Erst nach **Speichern** werden ausdrücklich ausgewählte Kategorien zusätzlich
],
"processAccessibleAttributes": true,
"processQuotedText": true,
"processSubtitles": false,
"syncCategoryIds": [
"rule-groups"
]
Expand All @@ -71,6 +72,9 @@ Zulässig sind ausschließlich:
- `custom-replacements`

Eine leere Liste bedeutet, dass alle Daten ausschließlich lokal bleiben.
Die Kategorie `text-options` umfasst Zitate, Untertitel und zugängliche
Attribute. Sicherungen aus Schema 2 ohne `processSubtitles` bleiben kompatibel;
beim Import gilt dafür der sichere Standard `false`.

## Strikte Prüfung

Expand Down
2 changes: 2 additions & 0 deletions docs/STORE-LISTING-DE.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ Funktionen:
- drei wählbare Strategien für persönliche Listen beim Import
- Ausschluss einzelner Domains
- optionaler Schutz von Texten in Anführungszeichen
- optionale Korrektur erkannter Untertitel-Overlays; standardmäßig deaktiviert
- optionale Verarbeitung von `alt`, `aria-label`, `aria-description` und `title`
- Schutz von Eingabefeldern, Editoren, Quellcode, URLs und technischen Daten

Expand Down Expand Up @@ -147,6 +148,7 @@ Wichtige Funktionen:
- ausdrücklich wählbare Strategie für persönliche Listen beim Import
- Ausschluss bestimmter Domains
- optionaler Schutz zitierter Schreibweisen
- optionale Korrektur erkannter Untertitel-Overlays
- optionale Verarbeitung zugänglicher Textattribute
- Schutz von Eingabefeldern, Editoren, URLs und Quellcode

Expand Down
1 change: 1 addition & 0 deletions src/content.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ function applySettings(settings: Settings): void {
customReplacements: settings.customReplacements,
processAccessibleAttributes: settings.processAccessibleAttributes,
processQuotedText: settings.processQuotedText,
processSubtitles: settings.processSubtitles,
onReplacementCountChange: reportReplacementCount
};

Expand Down
Loading
Loading