Skip to content

desktops: route apt.armbian.com browsers + add code, armbian-imager, restore thunderbird#848

Merged
igorpecovnik merged 2 commits intomainfrom
desktops-armbian-packages
Apr 13, 2026
Merged

desktops: route apt.armbian.com browsers + add code, armbian-imager, restore thunderbird#848
igorpecovnik merged 2 commits intomainfrom
desktops-armbian-packages

Conversation

@igorpecovnik
Copy link
Copy Markdown
Member

Summary

apt.armbian.com is always present on Armbian systems, so packages it hosts can sit in the regular YAML lists without any conditional-source juggling. This PR uses that to clean up the desktop matrix:

  • Browser virtual token routes through apt.armbian.com .debs across the board:
    • amd64 every release → google-chrome-stable (Google publishes no arm/riscv builds)
    • Ubuntu (jammy/noble/plucky/questing/resolute) arm64/armhf → real chromium (was epiphany-browser fallback because Ubuntu's deb is a snap-shim)
    • Ubuntu riscv64 → real firefox (was epiphany-browser)
    • Debian unchanged: chromium for amd64/arm64/armhf, firefox-esr for riscv64
  • mid tier gains armbian-imager (SD-card flasher; universal across arches)
  • full tier gains code (vscode; universal)
  • Restore thunderbird on Ubuntu amd64/arm64 — apt.armbian.com's real .deb wins over the snap-shim. armhf/riscv64 still strip it (deb missing upstream and not yet shipped via apt.armbian.com); the audit will catch any false positive on the next run.

Schema extension

_apply_tier_overrides() now honours per-arch / per-release-per-arch packages: ADDS in addition to the existing packages_remove. Symmetric with how the top-level tier block already supports both. Not used after the browser-map refactor (the browser slot covers the only current need), but kept for future arch-only additions that don't fit the browser slot.

Net effect

release arch tier browser thunderbird armbian-imager code
noble amd64 mid google-chrome-stable
noble amd64 full google-chrome-stable
noble arm64 full chromium
noble armhf full chromium
noble riscv64 full firefox
trixie amd64 full google-chrome-stable
trixie armhf full chromium
sid loong64 mid firefox-esr

Test plan

Smoke-tested locally across the matrix in the table above plus edge cases:

  • bookworm/riscv64 mid drops the browser silently (no riscv64 entry in the bookworm browser map; intentional)
  • sid/loong64 mid renders firefox-esr (chromium not yet built for loong64)
  • code lands at full on every arch
  • armbian-imager lands at mid on every arch
  • amd64 always renders google-chrome-stable regardless of release

Real-board tests still wanted:

  • On a fresh Armbian noble/amd64 image, armbian-config --api module_desktops install de=xfce tier=full installs google-chrome-stable + code + armbian-imager + thunderbird + the rest, all from apt.armbian.com or the distro
  • On Ubuntu noble/arm64, chromium resolves to the apt.armbian.com .deb (not the snap-transitional)
  • On Debian trixie/amd64, no behaviour regression — chromium (Debian deb) replaced by google-chrome-stable (apt.armbian.com)

apt.armbian.com hosts real .debs of chromium / firefox /
google-chrome-stable, so the existing browser virtual token can
point straight at them — no need for a separate package list or
temp-source juggling.

- common.yaml `browser:` map: amd64 every release -> google-chrome-
  stable. Ubuntu releases (jammy/noble/plucky/questing/resolute)
  switch arm64/armhf to chromium and riscv64 to firefox (real .debs
  from apt.armbian.com instead of the previous epiphany-browser
  fallback). Debian rules unchanged (chromium / firefox-esr).
- common.yaml `full.packages` += code (vscode from apt.armbian.com,
  universal across arches).

Schema extension (kept for future use):

- _apply_tier_overrides() now honours per-arch / per-release-per-arch
  `packages:` ADDS in addition to the existing `packages_remove`.
  Symmetric with the top-level tier block. Not used by this commit
  (the browser token is the cleaner place for browser substitution),
  but available when a future change needs an arch-only addition
  that isn't a browser.

Smoke-tested across xfce {trixie,noble} {amd64,arm64,riscv64}
{minimal,mid,full} plus bookworm/riscv64 (browser dropped — no
riscv64 port) and sid/loong64 (firefox-esr — chromium not built).
apt.armbian.com hosts both: armbian-imager (universal) and a real
thunderbird .deb that wins by version against Ubuntu's snap-shim
package on amd64/arm64. The previous tier_overrides stripped
thunderbird on every Ubuntu arch out of caution about the snap-shim.

- common.yaml `mid.packages` += armbian-imager (SD-card flasher,
  universal — apt.armbian.com builds for every arch we ship).
- common.yaml `tier_overrides.full.releases.<release>.architectures`
  for noble/plucky/jammy/questing/resolute: drop the amd64 + arm64
  thunderbird strips. Keep armhf + riscv64 strips since the original
  comment notes the upstream Ubuntu deb is missing on those arches
  and we don't (yet) ship them via apt.armbian.com — the audit will
  catch any false positive on the next run.

Debian armhf strips (bookworm, trixie, forky, sid) untouched —
those are Debian-side gaps, unrelated to the snap-shim issue.

Smoke-tested across xfce {noble,trixie} {amd64,arm64,armhf,riscv64}
{mid,full}: amd64 keeps chrome+thunderbird, arm64 keeps chromium+
thunderbird, armhf keeps chromium (no thunderbird), riscv64 keeps
firefox (no thunderbird), armbian-imager present on every mid+.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 13, 2026

Walkthrough

This pull request introduces two changes. The first updates the _apply_tier_overrides() function in the desktop YAML parser to support additive package overrides alongside existing removal logic. The function now reads optional packages lists from tier override configurations at both architecture-wide and per-release-per-architecture levels, appending packages while avoiding duplicates. The packages_remove behavior remains unchanged. The second change updates the desktop configuration YAML file to add new packages (armbian-imager to the mid tier and code to the full tier), revise browser substitution mappings across Debian and Ubuntu releases/architectures (introducing google-chrome-stable and firefox variants), and adjust thunderbird removal overrides for Ubuntu release and architecture combinations.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically summarizes the main changes: routing browsers through apt.armbian.com, adding code and armbian-imager packages, and restoring thunderbird support.
Description check ✅ Passed The description provides comprehensive context directly related to the changeset, including the rationale for browser routing, package additions, schema extensions, testing approach, and a detailed table of net effects across releases and architectures.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch desktops-armbian-packages

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions Bot added size/medium PR with more then 50 and less then 250 lines 05 Milestone: Second quarter release labels Apr 13, 2026
igorpecovnik added a commit to armbian/os that referenced this pull request Apr 13, 2026
Mirrors the existing noble desktop sources for the new LTS so the
desktop YAML in configng (PR armbian/configng#848) can rely on
apt.armbian.com for chromium/firefox/thunderbird/code/chrome/edge
on resolute, not just on noble.

New per-release files:

  chromium-aarch64-resolute.conf — xtradeb/apps PPA, arm64
  firefox-resolute.conf          — mozillateam PPA, all 4 arches
  thunderbird-resolute.conf      — mozillateam PPA, all 4 arches

Multi-release RELEASE lists gain `resolute`:

  code.conf, codium.conf       (vscode + vscodium)
  discord.conf
  edge.conf
  google-chrome.conf
  zoom.conf

Untouched (utils, separate concern — split off if needed):
  urbackup-server-noble.conf, zfs-noble.conf,
  rpi-libraspberrypi-bin-noble.conf, rpi-pi-bluetooth-ubuntu.conf,
  rpi-ubuntu-firmware-raspi.conf

If any upstream PPA does not yet publish for resolute, the aptly
build of that source will surface the gap on the next run.
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
tools/modules/desktops/scripts/parse_desktop_yaml.py (1)

190-193: Clarify the example to avoid mixing browser mapping with tier overrides.

Lines 190–193 currently use google-chrome-stable as a tier-override example, but browser selection is actually driven by the separate browser: map. A neutral example here would reduce schema confusion.

Suggested doc-only tweak
-    arch-wide additions/holes (e.g. google-chrome-stable always on
-    amd64, blender always missing on armhf), and the per-release-per-
+    arch-wide additions/holes (e.g. package X always present on
+    amd64, blender always missing on armhf), and the per-release-per-
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tools/modules/desktops/scripts/parse_desktop_yaml.py` around lines 190 - 193,
Replace the confusing example that uses "google-chrome-stable" (which is
controlled by the separate browser: map) with a neutral package example when
describing arch-wide additions/holes and per-release-per-arch overrides; update
the prose near the "arch-wide additions/holes" and "per-release-per-arch"
explanation to use a non-browser package name (e.g., a generic "foo-package"
always on amd64 / missing on armhf) and keep the browser: mapping reference
distinct so readers don't conflate browser selection with tier overrides (look
for mentions of "google-chrome-stable", "browser:", "loupe", "bookworm",
"amd64", and "armhf" to locate the text to edit).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@tools/modules/desktops/yaml/common.yaml`:
- Around line 59-60: The YAML currently lists packages "code" and "thunderbird"
without excluding OS release/architecture combos where apt.armbian.com is
missing them; update the common.yaml package entries for "code" and
"thunderbird" to include conditional removal rules (e.g., per-release and
per-arch booleans or if/when selectors) that exclude the combinations reported
(forky, sid, jammy, plucky, questing, resolute across all arches for "code", and
jammy/plucky/questing/resolute on amd64/arm64 for "thunderbird"), or alternately
add a documented note in the YAML comments indicating unsupported release/arch
combinations; ensure the changes target the package list entries named "code"
and "thunderbird" so installs skip unavailable packages rather than failing.

---

Nitpick comments:
In `@tools/modules/desktops/scripts/parse_desktop_yaml.py`:
- Around line 190-193: Replace the confusing example that uses
"google-chrome-stable" (which is controlled by the separate browser: map) with a
neutral package example when describing arch-wide additions/holes and
per-release-per-arch overrides; update the prose near the "arch-wide
additions/holes" and "per-release-per-arch" explanation to use a non-browser
package name (e.g., a generic "foo-package" always on amd64 / missing on armhf)
and keep the browser: mapping reference distinct so readers don't conflate
browser selection with tier overrides (look for mentions of
"google-chrome-stable", "browser:", "loupe", "bookworm", "amd64", and "armhf" to
locate the text to edit).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 12698187-ba0e-47af-ac4d-b637034e2d6d

📥 Commits

Reviewing files that changed from the base of the PR and between 57a7243 and 99acb30.

📒 Files selected for processing (2)
  • tools/modules/desktops/scripts/parse_desktop_yaml.py
  • tools/modules/desktops/yaml/common.yaml

Comment on lines +59 to 60
- code # vscode (from apt.armbian.com)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
python - <<'PY'
import urllib.request, gzip, lzma, re

BASE = "https://apt.armbian.com/dists"
checks = {
    "code": {
        "releases": ["bookworm", "trixie", "forky", "sid", "jammy", "noble", "plucky", "questing", "resolute"],
        "arches": ["amd64", "arm64", "armhf", "riscv64", "loong64"],
    },
    "thunderbird": {
        "releases": ["jammy", "noble", "plucky", "questing", "resolute"],
        "arches": ["amd64", "arm64"],
    },
}

def fetch(url):
    with urllib.request.urlopen(url, timeout=15) as r:
        return r.read()

def get_components(release):
    try:
        txt = fetch(f"{BASE}/{release}/Release").decode("utf-8", "ignore")
    except Exception as e:
        return [], f"Release file missing/unreadable: {e}"
    for line in txt.splitlines():
        if line.startswith("Components:"):
            parts = line.split()[1:]
            return (parts if parts else ["main"]), None
    return ["main"], None

def fetch_packages_index(release, comp, arch):
    for ext, dec in [("xz", lzma.decompress), ("gz", gzip.decompress)]:
        url = f"{BASE}/{release}/{comp}/binary-{arch}/Packages.{ext}"
        try:
            raw = fetch(url)
            return dec(raw).decode("utf-8", "ignore"), None
        except Exception:
            pass
    return None, "No Packages.{xz,gz} index"

def has_pkg(index_text, pkg):
    return re.search(rf"(?m)^Package:\s*{re.escape(pkg)}\s*$", index_text) is not None

for pkg, spec in checks.items():
    print(f"\n=== Checking package: {pkg} ===")
    for rel in spec["releases"]:
        comps, err = get_components(rel)
        if err:
            print(f"{rel:10} {'-':8} ERROR {err}")
            continue
        for arch in spec["arches"]:
            found = False
            idx_errs = []
            for comp in comps:
                idx, idx_err = fetch_packages_index(rel, comp, arch)
                if idx is None:
                    idx_errs.append(f"{comp}:{idx_err}")
                    continue
                if has_pkg(idx, pkg):
                    print(f"{rel:10} {arch:8} FOUND (component={comp})")
                    found = True
                    break
            if not found:
                reason = "; ".join(idx_errs) if idx_errs else "package not present"
                print(f"{rel:10} {arch:8} MISSING ({reason})")
PY

Repository: armbian/configng

Length of output: 2748


🏁 Script executed:

git ls-files tools/modules/desktops/yaml/ | head -20

Repository: armbian/configng

Length of output: 588


🏁 Script executed:

cat -n tools/modules/desktops/yaml/common.yaml | sed -n '55,65p'

Repository: armbian/configng

Length of output: 436


🏁 Script executed:

cat -n tools/modules/desktops/yaml/common.yaml | sed -n '230,260p'

Repository: armbian/configng

Length of output: 1573


🏁 Script executed:

#!/bin/bash
python - <<'PY'
import urllib.request, gzip, lzma, re, ssl

# Disable SSL verification for sandbox environment
ssl._create_default_https_context = ssl._create_unverified_context

BASE = "https://apt.armbian.com/dists"
checks = {
    "code": {
        "releases": ["bookworm", "trixie", "forky", "sid", "jammy", "noble", "plucky", "questing", "resolute"],
        "arches": ["amd64", "arm64", "armhf", "riscv64", "loong64"],
    },
    "thunderbird": {
        "releases": ["jammy", "noble", "plucky", "questing", "resolute"],
        "arches": ["amd64", "arm64"],
    },
}

def fetch(url):
    with urllib.request.urlopen(url, timeout=15) as r:
        return r.read()

def get_components(release):
    try:
        txt = fetch(f"{BASE}/{release}/Release").decode("utf-8", "ignore")
    except Exception as e:
        return [], f"Release file missing/unreadable"
    for line in txt.splitlines():
        if line.startswith("Components:"):
            parts = line.split()[1:]
            return (parts if parts else ["main"]), None
    return ["main"], None

def fetch_packages_index(release, comp, arch):
    for ext, dec in [("xz", lzma.decompress), ("gz", gzip.decompress)]:
        url = f"{BASE}/{release}/{comp}/binary-{arch}/Packages.{ext}"
        try:
            raw = fetch(url)
            return dec(raw).decode("utf-8", "ignore"), None
        except Exception:
            pass
    return None, "No Packages.{xz,gz} index"

def has_pkg(index_text, pkg):
    return re.search(rf"(?m)^Package:\s*{re.escape(pkg)}\s*$", index_text) is not None

for pkg, spec in checks.items():
    print(f"\n=== Checking package: {pkg} ===")
    for rel in spec["releases"]:
        comps, err = get_components(rel)
        if err:
            print(f"{rel:10} {'-':8} ERROR {err}")
            continue
        for arch in spec["arches"]:
            found = False
            idx_errs = []
            for comp in comps:
                idx, idx_err = fetch_packages_index(rel, comp, arch)
                if idx is None:
                    idx_errs.append(f"{comp}:{idx_err}")
                    continue
                if has_pkg(idx, pkg):
                    print(f"{rel:10} {arch:8} FOUND (component={comp})")
                    found = True
                    break
            if not found:
                reason = "; ".join(idx_errs) if idx_errs else "package not present"
                print(f"{rel:10} {arch:8} MISSING ({reason})")
PY

Repository: armbian/configng

Length of output: 2914


Fix apt.armbian.com package availability gaps or update YAML conditionals.

Verification reveals missing packages in apt.armbian.com that will cause install failures:

  • code (line 59): Missing on forky, sid, jammy, plucky, questing, resolute (all architectures), and riscv64/loong64 on bookworm/trixie
  • thunderbird (lines 235–258): Missing on jammy, plucky, questing, resolute (amd64/arm64), yet YAML doesn't remove it for those combinations—only armhf/riscv64

Either add packages to apt.armbian.com, define release/arch conditionals in YAML to exclude unavailable combinations, or document the limitation.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@tools/modules/desktops/yaml/common.yaml` around lines 59 - 60, The YAML
currently lists packages "code" and "thunderbird" without excluding OS
release/architecture combos where apt.armbian.com is missing them; update the
common.yaml package entries for "code" and "thunderbird" to include conditional
removal rules (e.g., per-release and per-arch booleans or if/when selectors)
that exclude the combinations reported (forky, sid, jammy, plucky, questing,
resolute across all arches for "code", and jammy/plucky/questing/resolute on
amd64/arm64 for "thunderbird"), or alternately add a documented note in the YAML
comments indicating unsupported release/arch combinations; ensure the changes
target the package list entries named "code" and "thunderbird" so installs skip
unavailable packages rather than failing.

igorpecovnik added a commit to armbian/os that referenced this pull request Apr 13, 2026
PR armbian/configng#848 expects apt.armbian.com to host the snap-
shim workarounds (chromium / firefox / thunderbird) and vendor
desktop apps (chrome / code / codium / edge / discord / zoom) on
every non-eos release armbian/build supports. The previous commit
covered noble + resolute; this one fills in the rest.

Added per-release noble-style files for snap-shim workarounds:

  chromium-aarch64-jammy.conf   — re-enabled (was .disabled);
                                  uses liujianfeng1994/chromium PPA
  chromium-aarch64-questing.conf — xtradeb/apps PPA, arm64
  firefox-jammy.conf             — mozillateam PPA, all 4 arches
  firefox-questing.conf          — mozillateam PPA, all 4 arches
  thunderbird-jammy.conf         — mozillateam PPA, all 4 arches
  thunderbird-questing.conf      — mozillateam PPA, all 4 arches

Multi-release RELEASE lists gain `jammy` (Ubuntu LTS, csc) and
`forky` (next Debian stable, csc):

  code.conf, codium.conf
  discord.conf
  edge.conf
  google-chrome.conf
  zoom.conf

Releases skipped on purpose:

  plucky  — eos as of 2026-01-25 (armbian/build PR #9657)
  sid     — Debian unstable; rolling, vendor debs may break
  loong64 — separate arch story; not yet a desktop target

If a particular upstream PPA (notably mozillateam, xtradeb,
liujianfeng1994) doesn't actually publish for a given release,
the aptly build of that source will fail loudly on next run and
we drop that single config — better than silent gaps.
igorpecovnik added a commit to armbian/os that referenced this pull request Apr 13, 2026
Mirrors the existing noble desktop sources for the new LTS so the
desktop YAML in configng (PR armbian/configng#848) can rely on
apt.armbian.com for chromium/firefox/thunderbird/code/chrome/edge
on resolute, not just on noble.

New per-release files:

  chromium-aarch64-resolute.conf — xtradeb/apps PPA, arm64
  firefox-resolute.conf          — mozillateam PPA, all 4 arches
  thunderbird-resolute.conf      — mozillateam PPA, all 4 arches

Multi-release RELEASE lists gain `resolute`:

  code.conf, codium.conf       (vscode + vscodium)
  discord.conf
  edge.conf
  google-chrome.conf
  zoom.conf

Untouched (utils, separate concern — split off if needed):
  urbackup-server-noble.conf, zfs-noble.conf,
  rpi-libraspberrypi-bin-noble.conf, rpi-pi-bluetooth-ubuntu.conf,
  rpi-ubuntu-firmware-raspi.conf

If any upstream PPA does not yet publish for resolute, the aptly
build of that source will surface the gap on the next run.
igorpecovnik added a commit to armbian/os that referenced this pull request Apr 13, 2026
PR armbian/configng#848 expects apt.armbian.com to host the snap-
shim workarounds (chromium / firefox / thunderbird) and vendor
desktop apps (chrome / code / codium / edge / discord / zoom) on
every non-eos release armbian/build supports. The previous commit
covered noble + resolute; this one fills in the rest.

Added per-release noble-style files for snap-shim workarounds:

  chromium-aarch64-jammy.conf   — re-enabled (was .disabled);
                                  uses liujianfeng1994/chromium PPA
  chromium-aarch64-questing.conf — xtradeb/apps PPA, arm64
  firefox-jammy.conf             — mozillateam PPA, all 4 arches
  firefox-questing.conf          — mozillateam PPA, all 4 arches
  thunderbird-jammy.conf         — mozillateam PPA, all 4 arches
  thunderbird-questing.conf      — mozillateam PPA, all 4 arches

Multi-release RELEASE lists gain `jammy` (Ubuntu LTS, csc) and
`forky` (next Debian stable, csc):

  code.conf, codium.conf
  discord.conf
  edge.conf
  google-chrome.conf
  zoom.conf

Releases skipped on purpose:

  plucky  — eos as of 2026-01-25 (armbian/build PR #9657)
  sid     — Debian unstable; rolling, vendor debs may break
  loong64 — separate arch story; not yet a desktop target

If a particular upstream PPA (notably mozillateam, xtradeb,
liujianfeng1994) doesn't actually publish for a given release,
the aptly build of that source will fail loudly on next run and
we drop that single config — better than silent gaps.
igorpecovnik added a commit to armbian/os that referenced this pull request Apr 13, 2026
resolute just promoted to `supported` in armbian/build PR #9657.
Mirrors the existing noble desktop sources for the new LTS so the
desktop YAML in armbian/configng#848 can rely on apt.armbian.com
for chromium / firefox / thunderbird and the vendor desktop apps
on resolute.

New per-release files:

  chromium-aarch64-resolute.conf  — xtradeb/apps PPA, arm64
  firefox-resolute.conf            — mozillateam PPA, all 4 arches
  thunderbird-resolute.conf        — mozillateam PPA, all 4 arches

Multi-release RELEASE lists gain `resolute`:

  code.conf, codium.conf
  discord.conf
  edge.conf
  google-chrome.conf
  zoom.conf

Releases skipped on purpose (no apt.armbian.com desktop coverage):

  plucky    — eos as of 2026-01-25
  jammy     — csc; desktop story stale
  questing  — 9-month interim, dropped from configng desktop YAML
  sid       — Debian unstable; vendor debs may break
  loong64   — separate arch story; not yet a desktop target

Out of scope (utils packages with their own scope):
  urbackup-server-*.conf, zfs-*.conf, harfbuzz-jammy.conf,
  libcec6-sid-to-jammy.conf, rpi-*.conf
@igorpecovnik igorpecovnik merged commit aeb7308 into main Apr 13, 2026
73 of 100 checks passed
@igorpecovnik igorpecovnik deleted the desktops-armbian-packages branch April 13, 2026 19:48
igorpecovnik added a commit that referenced this pull request Apr 14, 2026
Same pattern as Firefox: single Mozilla policies.json at
/etc/thunderbird/policies/policies.json. Thunderbird is now
installed by default at the full tier on amd64/arm64 (PR #848
unwound the Ubuntu snap-shim strip on those arches), so it gets
the same privacy-respecting defaults as the rest of the Mozilla
stack.

Policies set:
- DisableTelemetry: true
- DisableFirefoxStudies: true   (controls Mozilla Studies; same
                                 policy name applies to TB)
- AppAutoUpdate: false           (apt manages the package; TB
                                 should not try to self-update)
- StartPageURL: https://www.armbian.com
                                 (the page shown in the message
                                 pane when no message is selected)

Bookmarks / homepage policies don't apply to Thunderbird.
First-run account-setup wizard isn't suppressible (and shouldn't
be — users still need to add their account).

File ships harmlessly even when thunderbird isn't installed
(applies the same logic as the rest of the browsers/ overlay).
igorpecovnik added a commit that referenced this pull request Apr 14, 2026
Same pattern as Firefox: single Mozilla policies.json at
/etc/thunderbird/policies/policies.json. Thunderbird is now
installed by default at the full tier on amd64/arm64 (PR #848
unwound the Ubuntu snap-shim strip on those arches), so it gets
the same privacy-respecting defaults as the rest of the Mozilla
stack.

Policies set:
- DisableTelemetry: true
- DisableFirefoxStudies: true   (controls Mozilla Studies; same
                                 policy name applies to TB)
- AppAutoUpdate: false           (apt manages the package; TB
                                 should not try to self-update)
- StartPageURL: https://www.armbian.com
                                 (the page shown in the message
                                 pane when no message is selected)

Bookmarks / homepage policies don't apply to Thunderbird.
First-run account-setup wizard isn't suppressible (and shouldn't
be — users still need to add their account).

File ships harmlessly even when thunderbird isn't installed
(applies the same logic as the rest of the browsers/ overlay).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

05 Milestone: Second quarter release size/medium PR with more then 50 and less then 250 lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant