Release v2.4.0 — Erzwungene Einstellungen: about:config-Prefs bei jedem Start setzen

Neuer forcedPrefs-WebExtension-Experiment (Services.prefs) setzt beim Start
globale Prefs (Startseite aus, Kartenansicht, nicht gruppiert, absteigend,
3-Spalten-Layout, nicht auto-gelesen) sowie pro Identität die Signatur-/
Antwort-Einstellungen. Pro Setting im Options-Dialog (⚙-Tab) abschaltbar.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015PZHd9vRsBiH8cKYdQo1Yv
This commit is contained in:
Kendrick Bollens
2026-07-22 14:24:43 +02:00
parent 83d0d52a05
commit d244273e44
8 changed files with 260 additions and 1 deletions

View File

@@ -98,6 +98,55 @@ browser.storage.onChanged.addListener((changes, area) => {
});
updateErledigtPopup();
// ── about:config-Prefs bei jedem Start erzwingen ──
//
// Manche Thunderbird-Einstellungen (Startseite, Ansicht, Layout, pro Konto das
// Signatur-/Antwort-Verhalten) „springen zurück" und müssen sonst von Hand
// nachgezogen werden. Wir setzen sie bei JEDEM Start neu über den privilegierten
// forcedPrefs-Experiment (Services.prefs). Die Liste liegt in
// lib/forced-prefs-list.js (globale FORCED_PREFS / FORCED_IDENTITY_PREFS).
// Pro Eintrag kann der Client im Options-Dialog opt-outen (forced_prefs_optout).
const FORCED_PREFS_OPTOUT_KEY = 'forced_prefs_optout';
async function enforceForcedPrefs() {
const stored = await browser.storage.local.get(FORCED_PREFS_OPTOUT_KEY);
const disabled = new Set(stored[FORCED_PREFS_OPTOUT_KEY] || []);
// Globale Prefs
for (const p of FORCED_PREFS) {
if (disabled.has(p.id)) continue;
try {
await browser.forcedPrefs.setPref(p.name, p.type, p.value);
} catch (e) {
console.error('[forcedPrefs] konnte', p.name, 'nicht setzen:', e);
}
}
// Pro-Identität-Prefs — über alle Konten/Identitäten iterieren
const accounts = await browser.accounts.list();
for (const acc of accounts) {
for (const ident of (acc.identities || [])) {
for (const p of FORCED_IDENTITY_PREFS) {
if (disabled.has(p.id)) continue;
const name = `mail.identity.${ident.id}.${p.suffix}`;
try {
await browser.forcedPrefs.setPref(name, p.type, p.value);
} catch (e) {
console.error('[forcedPrefs] konnte', name, 'nicht setzen:', e);
}
}
}
}
}
enforceForcedPrefs(); // Top-Level = läuft einmal pro TB-Start
// Wird eine Pref im Options-Dialog wieder AKTIVIERT, sofort anwenden
// (statt bis zum nächsten Neustart zu warten).
browser.storage.onChanged.addListener((changes, area) => {
if (area === 'local' && changes[FORCED_PREFS_OPTOUT_KEY]) enforceForcedPrefs();
});
// ── Signatur in neuen Compose-Fenstern automatisch aktualisieren ──
//
// Thunderbird merkt sich die Signatur einer Identität pro Sitzung. Öffnet der