mesh/merge-gate head 1835f0efad0f merged into trunk 39e7a06e6293 — pass: builds betterbird, sent nowhere; no bus step; 2 wait(s) for a person; every machin…
mesh/repo-check head 1835f0efad0f merged into trunk 39e7a06e6293 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
mesh/delivery superseded: a newer head of the same pull request
The module owned only the accounts' server fields, so identities, signatures, calendars, address books, filters and tags could differ between desktop nodes unseen, and the operator's own preferences were shipped in the catalogue. prefs becomes one entry per preference (a node's layer overrides one key) and the defaults file keeps no value of the operator's; identities, calendars, address-books, filters and tags become settings, adopted like accounts, filters owned whole per account, and what Betterbird rewrites written only while it is closed. New tools list each kind, derive the layers from every desktop node and propose one at a time, and show drift; every answer passes a credential check.
198 lines
7.2 KiB
JSON
198 lines
7.2 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",
|
|
"seat:mesh-controller.nodes",
|
|
"seat:mesh-controller.node",
|
|
"betterbird.betterbird_derive"
|
|
],
|
|
"tools": [
|
|
"betterbird_status",
|
|
"betterbird_prefs",
|
|
"betterbird_config",
|
|
"betterbird_config_apply",
|
|
"betterbird_user_js",
|
|
"betterbird_log",
|
|
"betterbird_restart",
|
|
"betterbird_check",
|
|
"betterbird_accounts",
|
|
"betterbird_identities",
|
|
"betterbird_calendars",
|
|
"betterbird_address_books",
|
|
"betterbird_filters",
|
|
"betterbird_tags",
|
|
"betterbird_derive",
|
|
"betterbird_drift",
|
|
"betterbird_reminder_test"
|
|
],
|
|
"resources": [
|
|
{
|
|
"id": "configuration-dir",
|
|
"type": "directory",
|
|
"path": "${machine:account-home}/.config/betterbird",
|
|
"owner": "${machine:account}",
|
|
"mode": "0755"
|
|
},
|
|
{
|
|
"id": "prefs",
|
|
"type": "file",
|
|
"path": "${machine:account-home}/.config/betterbird/prefs.json",
|
|
"owner": "${machine:account}",
|
|
"mode": "0644",
|
|
"merge": "json",
|
|
"takes-settings": [
|
|
"prefs"
|
|
],
|
|
"content": "{\n \"prefs\": {}\n}\n",
|
|
"trusted": true
|
|
},
|
|
{
|
|
"id": "accounts",
|
|
"type": "file",
|
|
"path": "${machine:account-home}/.config/betterbird/accounts.json",
|
|
"owner": "${machine:account}",
|
|
"mode": "0600",
|
|
"merge": "json",
|
|
"takes-settings": [
|
|
"accounts"
|
|
],
|
|
"content": "{\n \"accounts\": {}\n}\n",
|
|
"trusted": true
|
|
},
|
|
{
|
|
"id": "configuration",
|
|
"type": "file",
|
|
"path": "${machine:account-home}/.config/betterbird/configuration.json",
|
|
"owner": "${machine:account}",
|
|
"mode": "0600",
|
|
"merge": "json",
|
|
"takes-settings": [
|
|
"identities",
|
|
"calendars",
|
|
"address-books",
|
|
"filters"
|
|
],
|
|
"content": "{\n \"identities\": {},\n \"calendars\": {},\n \"address-books\": {},\n \"filters\": {}\n}\n",
|
|
"trusted": true
|
|
},
|
|
{
|
|
"id": "tags",
|
|
"type": "file",
|
|
"path": "${machine:account-home}/.config/betterbird/tags.json",
|
|
"owner": "${machine:account}",
|
|
"mode": "0644",
|
|
"merge": "json",
|
|
"takes-settings": [
|
|
"tags"
|
|
],
|
|
"content": "{\n \"tags\": {}\n}\n",
|
|
"trusted": false
|
|
},
|
|
{
|
|
"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 settings prefs, accounts, identities, calendars,\n# address-books and tags) and write what Betterbird rewrites itself: the account lists and each declared account's filters. 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"
|
|
}
|
|
]
|
|
}
|
|
}
|