Files
mesh-catalog/modules/betterbird/install/defaults-pref/mesh-defaults.js
T
jochen 854c85393c
mesh/merge-gate out of date: judged against trunk 2fe5601397ae, the trunk is now 0863ec2a059d; judged again on a recheck or when it is merged
mesh/repo-check out of date: judged against trunk 2fe5601397ae, the trunk is now 0863ec2a059d; judged again on a recheck or when it is merged
mesh/delivery superseded: a newer head of the same pull request
betterbird: ship the operator's approved configuration, and show and fix drift from it (hq issue 345)
A module that installs Betterbird but leaves every node to its own settings does not set Betterbird up.
The operator approved the configuration on 2026-10-12, and it now ships in three layers. The policy
locks what must never differ: telemetry, add-on updates, the vendor's notices and the start page. A
defaults file carries the laptop's setup, so a fresh node gets it untouched. The setting prefs stays a
node's exceptions.

A default loses to a value the profile saved. betterbird_config shows that drift, betterbird_check
reports it, and betterbird_config_apply clears it while Betterbird is quit. keep proposes a node layer
instead of writing user.js. betterbird_prefs now reads Betterbird's real defaults from omni.ja, and
withholds of mailnews.* only what names an account. The default-client ask is decided from its own
policy entry, not from the first thing the policy lacks.
2026-10-12 20:58:39 +02:00

84 lines
4.2 KiB
JavaScript

// Written by the mesh (module betterbird, novox/hq issue 345): the operator's setup of Betterbird, taken from
// the laptop's profile and approved by the operator on 2026-10-12. Betterbird reads this file at its start as
// a default: a value the profile saved in its prefs.js (a choice made in Betterbird's settings window) wins
// over it, a node's layer of the setting prefs (user.js) wins over both, and the policy's locks
// (distribution/policies.json) win over everything. betterbird_config shows the layers and the drift;
// betterbird_config_apply brings a profile back to these values. Change it in the catalogue, never here.
//
// A line "keeps Betterbird's default" names a preference the module manages without writing a value: the
// operator's setup is Betterbird's own default there, and a value the profile saved is drift.
// --- Theme and display ---
// keeps Betterbird's default: extensions.activeThemeID
// The default theme follows the desktop's dark mode; compactness comes from mail.uidensity, not a theme.
// keeps Betterbird's default: browser.display.use_system_colors
// Betterbird's own colours, which the default theme is drawn for.
// keeps Betterbird's default: layout.css.always_underline_links
// Links are underlined only where the message's own style says so.
// Compact density: more of the message list fits on a laptop screen (Betterbird's default is 1, normal).
pref("mail.uidensity", 0);
// 14-point interface text, the operator's choice; a larger desk screen sets its own size in a node layer.
pref("mail.uifontsize", 14);
// Message bodies are shown as their sender wrote them, not darkened.
pref("mail.dark-reader.enabled", false);
// --- Layout ---
// Vertical view: folders, the message list and the message side by side (Betterbird's default is 0, classic).
pref("mail.pane_config.dynamic", 2);
// Each row of the message list on several lines, so sender, subject and date all show in the narrow column.
pref("mail.pane_config.multiline_all", true);
// The message list as cards (Betterbird's default is 1, the table).
pref("mail.threadpane.listview", 0);
// Threads grouped in every folder by default (Betterbird's default is 0, unthreaded).
pref("mailnews.default_view_flags", 1);
// --- Mail handling and compose ---
// No confirmation before Shift+Delete removes a message for good.
pref("mail.warn_on_shift_delete", false);
// keeps Betterbird's default: mail.spam.manualMark
// Marking a message as junk by hand does nothing more than mark it.
// keeps Betterbird's default: mail.compose.show_attachment_pane
// The composer shows its attachment pane only when a message has attachments.
// --- Notifications ---
// No pop-up for new mail: the operator reads mail when they choose to.
pref("mail.biff.show_alert", false);
// No sound for new mail.
pref("mail.biff.play_sound", false);
// No tray icon for new mail.
pref("mail.biff.show_tray_icon", false);
// If a node's layer turns alerts back on, they go through the desktop's notification daemon.
pref("mail.biff.use_system_alert", true);
// --- Calendar ---
// The calendar's working day starts at 09:00 (Betterbird's default is 08:00).
pref("calendar.view.daystarthour", 9);
// and ends at 20:00 (Betterbird's default is 17:00).
pref("calendar.view.dayendhour", 20);
// A calendar item is deleted without asking.
pref("calendar.item.promptDelete", false);
// The calendar follows the node's time zone, because the laptop travels.
pref("calendar.timezone.useSystemTimezone", true);
// Reminders show in their window (Betterbird's default, made explicit: the reminder is why this module exists).
pref("calendar.alarms.show", true);
// Reminders missed while the laptop slept show at the next start (Betterbird's default is false).
pref("calendar.alarms.showmissed", true);
// --- Chat ---
// No chat button: the operator uses no chat account in Betterbird (Betterbird's default is true).
pref("mail.chat.enabled", false);
// --- Privacy ---
// No remote content in a message unless its sender is allowed (Betterbird's default, made explicit).
pref("mailnews.message_display.disable_remote_image", true);
// Ask sites not to track. A default only: the policy cannot lock a privacy. preference.
pref("privacy.donottrackheader.enabled", true);