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

@@ -1978,3 +1978,51 @@ window.addEventListener('load', async () => {
}
});
});
// ── Opt-out-Schalter für erzwungene Prefs ──
// FORCED_PREFS / FORCED_IDENTITY_PREFS stammen aus ../lib/forced-prefs-list.js
// (im HTML vor diesem Script geladen). Gespeichert werden die ids der
// DEAKTIVIERTEN Prefs unter 'forced_prefs_optout'; Haken = wird erzwungen.
const FORCED_PREFS_OPTOUT_KEY = 'forced_prefs_optout';
async function renderForcedPrefsToggles() {
const container = document.getElementById('forced-prefs-list');
if (!container || typeof FORCED_PREFS === 'undefined') return;
const stored = await browser.storage.local.get(FORCED_PREFS_OPTOUT_KEY);
const disabled = new Set(stored[FORCED_PREFS_OPTOUT_KEY] || []);
container.textContent = '';
const entries = [...FORCED_PREFS, ...(typeof FORCED_IDENTITY_PREFS !== 'undefined' ? FORCED_IDENTITY_PREFS : [])];
for (const p of entries) {
const row = document.createElement('label');
row.className = 'forced-pref-row';
row.style.display = 'flex';
row.style.alignItems = 'center';
row.style.gap = '8px';
row.style.padding = '4px 0';
row.style.cursor = 'pointer';
const cb = document.createElement('input');
cb.type = 'checkbox';
cb.checked = !disabled.has(p.id); // Haken = wird erzwungen
cb.addEventListener('change', () => setForcedPrefEnabled(p.id, cb.checked));
const span = document.createElement('span');
span.textContent = p.label;
row.append(cb, span);
container.appendChild(row);
}
}
async function setForcedPrefEnabled(id, enabled) {
const stored = await browser.storage.local.get(FORCED_PREFS_OPTOUT_KEY);
const disabled = new Set(stored[FORCED_PREFS_OPTOUT_KEY] || []);
if (enabled) disabled.delete(id);
else disabled.add(id);
await browser.storage.local.set({ [FORCED_PREFS_OPTOUT_KEY]: [...disabled] });
// background.js lauscht auf storage.onChanged und wendet Aktivierungen sofort an.
}
document.addEventListener('DOMContentLoaded', renderForcedPrefsToggles);