mesh/merge-gate pass: builds betterbird, sent nowhere; no bus step; 1 wait(s) for a person; every machine composes with the change as it did without (4 of …
mesh/repo-check pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-check-typescript.sh (typescript)
mesh/delivery failed: its walk failed, carrying its own commit: a gate on a first machine (what it carried put back), a build, a machine
The shared-server check refused an adopted account for its own alias, and counted Owl's, local folders' and feeds' identities as users of the default server, though they never send by SMTP. The controller now judges an upstream pin's host like any name, so each pin declares its vendor.
157 lines
7.0 KiB
JSON
157 lines
7.0 KiB
JSON
{
|
|
"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_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"
|
|
}
|
|
]
|
|
}
|
|
}
|