{ "module": "betterbird", "version": "1", "upgrade": { "policy": "record", "why": "a new build may remove the community package betterbird-bin and replaces the installation in /opt/betterbird, which a running Betterbird has open: the switch on each node and every upgrade wait for the operator, who quits Betterbird first and then pushes (novox/hq ADR 0316 §4, §5)" }, "requires": [ "x11-display" ], "invokes": [ "seat:mesh-controller.settings" ], "settings": { "prefs": { "kind": "preference", "default": "// none", "why": "Betterbird runs with its own defaults until a machine's assignment names a preference: one line of user_pref(\"name\", value); statements, which the module's user.js holds and Betterbird reads at its start (novox/hq issue 345). An account's preferences (mail.account., mail.identity., mail.server., mail.smtpserver. and the account lists) are refused here: an account is declared in the setting accounts, so it has one owner (novox/hq ADR 0316 §11)" } }, "tools": [ "betterbird_status", "betterbird_prefs", "betterbird_config", "betterbird_config_apply", "betterbird_user_js", "betterbird_log", "betterbird_restart", "betterbird_check", "betterbird_accounts", "betterbird_reminder_test" ], "resources": [ { "id": "configuration-dir", "type": "directory", "path": "${machine:account-home}/.config/betterbird", "owner": "${machine:account}", "mode": "0755" }, { "id": "user-js", "type": "file", "path": "${machine:account-home}/.config/betterbird/user.js", "owner": "${machine:account}", "mode": "0644", "content": "// Betterbird's user.js (module betterbird, novox/hq issue 345). Owned by the mesh: the node-engine\n// writes it here at every push, and the module's tools copy it whole into Betterbird's profile\n// (betterbird_user_js with apply, betterbird_restart), where Betterbird reads it at its start and lets it\n// win over the preferences Betterbird saves itself. Change the module's setting prefs, never this file or the profile's copy.\n//\n// Only comments and user_pref(\"name\", value); statements; the tools refuse anything else, and any\n// preference whose name can hold a credential.\n${setting:prefs}\n", "trusted": true }, { "id": "accounts", "type": "file", "path": "${machine:account-home}/.config/betterbird/accounts.json", "owner": "${machine:account}", "mode": "0600", "merge": "json", "content": "{\n \"accounts\": {}\n}\n", "trusted": true }, { "id": "community-package", "type": "package", "package": "betterbird-bin", "absent": true }, { "id": "installation", "type": "archive", "path": "/opt/betterbird", "artifact": "archive" }, { "id": "owl", "type": "archive", "path": "/opt/betterbird/owl", "artifact": "owl" }, { "id": "policies", "type": "archive", "path": "/opt/betterbird/distribution", "artifact": "distribution" }, { "id": "spelling", "type": "archive", "path": "/opt/betterbird/defaults/pref", "artifact": "defaults" }, { "id": "preparation", "type": "archive", "path": "/usr/local/lib/mesh-betterbird", "artifact": "tools" }, { "id": "start", "type": "file", "path": "/usr/local/bin/betterbird", "mode": "0755", "content": "#!/bin/sh\n# Betterbird's start, written by the mesh (module betterbird, novox/hq ADR 0316). Replaced at every push.\n#\n# Before Betterbird starts, the module's tools place its user.js in the profile (the setting prefs, and the\n# accounts the setting accounts declares) and add the declared accounts to the profile's account list. They do\n# it only while no Betterbird of this account runs, because Betterbird rewrites its saved preferences when it quits; a\n# second start while one runs only hands over to it. What the preparation could not do it says here, and\n# betterbird_check says it too. Betterbird starts either way: its configuration never holds the mail back.\n/usr/local/lib/mesh-betterbird/betterbird-tools prepare || echo \"betterbird: the mesh's preparation did not complete; betterbird_check says why\" >&2\nexec /opt/betterbird/betterbird \"$@\"\n" }, { "id": "launcher", "type": "file", "path": "/usr/local/share/applications/eu.betterbird.Betterbird.desktop", "mode": "0644", "content": "[Desktop Entry]\nVersion=1.0\nType=Application\nName=Betterbird\nGenericName=Mail Client\nComment=Send and receive mail with Betterbird\nExec=/usr/local/bin/betterbird %u\nIcon=/opt/betterbird/chrome/icons/default/default128.png\nTerminal=false\nCategories=Network;Email;\nMimeType=message/rfc822;x-scheme-handler/mailto;application/x-xpinstall;application/x-extension-ics;text/calendar;text/vcard;text/x-vcard;x-scheme-handler/webcal;x-scheme-handler/webcals;x-scheme-handler/mid;\nStartupNotify=true\nStartupWMClass=eu.betterbird.Betterbird\nKeywords=Email;E-mail;Calendar;Thunderbird;\nActions=ComposeMessage;OpenAddressBook;\n# Written by the mesh (module betterbird, novox/hq ADR 0316 §3), in place of the community package's entry:\n# it starts Betterbird through the module's start, and names the icon in the installation, with no link.\n\n[Desktop Action ComposeMessage]\nName=Write new message\nExec=/usr/local/bin/betterbird -compose\n\n[Desktop Action OpenAddressBook]\nName=Open address book\nExec=/usr/local/bin/betterbird -addressbook\n" } ], "build": { "artifacts": [ { "name": "tools", "kind": "bundle", "language": "go", "system": "arch", "from": "cmd/betterbird-tools", "binary": "betterbird-tools", "loads": [ "betterbird-tools" ] }, { "name": "archive", "kind": "archive", "url": "https://www.betterbird.eu/downloads/LinuxArchive/betterbird-153.4.0esr-bb10.en-US.linux-x86_64.tar.xz", "sha256": "38dd24890a66b4cf9a45bc24e15192e00c26b929e1bb8df7974c16a4539129e2", "version": "153.4.0esr-bb10", "within": "betterbird", "names-on-purpose": { "www.betterbird.eu": "Betterbird's project publishes its Linux release there; the build seat fetches it once, by its pinned sha256 (novox/hq ADR 0316 §2)" } }, { "name": "owl", "kind": "archive", "url": "https://www.beonex.com/owl/owl.xpi", "sha256": "a54cc3d52113b34f97942ee19190947dee23561e2217f18db3d80ac023991221", "version": "1.5.6.1", "file": "owl.xpi", "names-on-purpose": { "www.beonex.com": "Owl's vendor publishes its xpi there; the build seat fetches it once, by its pinned sha256 (novox/hq ADR 0316 §6)" } }, { "name": "distribution", "kind": "archive", "from": "install/distribution" }, { "name": "defaults", "kind": "archive", "from": "install/defaults-pref" } ] } }