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
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.
84 lines
4.2 KiB
JavaScript
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);
|