Skip to content

Desktop to Firefox 157.0 (LibreWolf 157.0-1); Android stays on 153.0esr - #1

Merged
CPlusPlus17 merged 247 commits into
mainfrom
desktop/firefox-157
Oct 2, 2026
Merged

CPlusPlus17 merged 247 commits into
mainfrom
desktop/firefox-157

Conversation

@CPlusPlus17

@CPlusPlus17 CPlusPlus17 commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

Merges LibreWolf upstream main (244 commits, 153.0.4-1 → 157.0-1) into Redoubt.

What changes

  • Desktop: Firefox 157.0 with upstream's patch set. That includes about 20 new patches and the removal of hide-passwordmgr, firefox-view, hide-default-browser, hide-finish-setup-bookmark and macos-relaunch-without-updater. Upstream's settings changes for 156 and 157 are ported into the cfg fragments.
  • Android: nothing in the patched source changes. Every upstream-modified patch that still reached the 153esr tree is split. The 157 text goes to desktop.txt, and the pre-merge bytes stay as patches/android/*-esr.patch.
  • Settings: upstream folded the settings repository into this repo. Redoubt keeps the submodule, which now points at Redoubt-settings 6b41a31. android.cfg restates every value the beta shipped.

Verified

  • check-patchfail.sh passes for desktop on firefox-157.0 and Android on firefox-153.0esr, with zero rejects (27 and 14 fuzzed hunks). Both tarballs' signatures check out against Mozilla's release key.
  • Android patched tree (diff -rq) against the pre-merge lists: empty.
  • These all pass: board.py --check-scope, --check-cfg-split, --diff-mozconfig --strict and --check; lint-patch-scope.py; and all of scripts/tests (15 py + 8 js). check-patch-order.py gives the same 7 errors as on main, all pre-existing pairs involving firefox-suggest-data.
  • Not built. The checks above are patch-apply checks and repo gates, not a compiled desktop 157 build.

Updater: LibreWolf's keys are not trusted (708db89)

Redoubt desktop does not install LibreWolf's MAR certificates and does not apply updater.patch (which pointed updates at update.librewolf.net) or allow-disabling-updater.patch. The updater isn't built, so behaviour is unchanged; this only closes a hidden trust path. Android-only runs apply l10n-esr/, a byte copy of the pre-merge overlay, so the real Android run on 153.0esr is diff -r identical to main's outside lw/l10n and the settings files.

Remaining Android differences outside the patches (owner decisions)

  • The l10n pin moves to 52c920bc. Android ships Gecko in en-US only, so the APK is unaffected (reasoning in assets/l10n-pin.txt).
  • Upstream hardening held back on Android pending a decision: disk-cache encryption, the cachedClientID canary, Mullvad DoH removal, and moving the uBO bootstrap and app.releaseNotesURL to librewolf.dev.

🤖 Generated with Claude Code

kennyfs and others added 30 commits August 15, 2026 17:51
Currently translated at 100.0% (40 of 40 strings)

Co-authored-by: kennyfs <kennyfs@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserbrowserpreferencespreferences/zh_Hant/
Translation: LibreWolf/browser/browser/preferences/preferences
Currently translated at 100.0% (1 of 1 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (8 of 8 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (13 of 13 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (4 of 4 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (40 of 40 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (6 of 6 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (4 of 4 strings)

Translated using Weblate (Romanian)

Currently translated at 100.0% (1 of 1 strings)

Added translation using Weblate (Romanian)

Added translation using Weblate (Romanian)

Added translation using Weblate (Romanian)

Added translation using Weblate (Romanian)

Added translation using Weblate (Romanian)

Added translation using Weblate (Romanian)

Added translation using Weblate (Romanian)

Added translation using Weblate (Romanian)

Co-authored-by: koh <koh@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserbrowseraboutdialog/ro/
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserbrowserbrowser/ro/
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserbrowserpreferencespermissions/ro/
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserbrowserpreferencespreferences/ro/
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserchromebrowserbrowser/ro/
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserchromebrowsersitepermissions/ro/
Translate-URL: https://translate.codeberg.org/projects/librewolf/browsertranslations/ro/
Translate-URL: https://translate.codeberg.org/projects/librewolf/toolkittoolkitbrandingbrandings/ro/
Translation: LibreWolf/browser/browser/aboutDialog
Translation: LibreWolf/browser/browser/browser
Translation: LibreWolf/browser/browser/preferences/permissions
Translation: LibreWolf/browser/browser/preferences/preferences
Translation: LibreWolf/browser/browser/translations
Translation: LibreWolf/browser/chrome/browser/browser
Translation: LibreWolf/browser/chrome/browser/sitePermissions
Translation: LibreWolf/toolkit/toolkit/branding/brandings
Currently translated at 100.0% (6 of 6 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (13 of 13 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (4 of 4 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (40 of 40 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (6 of 6 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (2 of 2 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (1 of 1 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (4 of 4 strings)

Translated using Weblate (Italian)

Currently translated at 100.0% (40 of 40 strings)

Co-authored-by: silverClampBuckle <silverclampbuckle@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserbrowseraboutdialog/it/
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserbrowserbrowser/it/
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserbrowserpreferencespermissions/it/
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserbrowserpreferencespreferences/it/
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserchromebrowserbrowser/it/
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserchromebrowsersitepermissions/it/
Translation: LibreWolf/browser/browser/aboutDialog
Translation: LibreWolf/browser/browser/browser
Translation: LibreWolf/browser/browser/preferences/permissions
Translation: LibreWolf/browser/browser/preferences/preferences
Translation: LibreWolf/browser/chrome/browser/browser
Translation: LibreWolf/browser/chrome/browser/sitePermissions
Currently translated at 100.0% (13 of 13 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (6 of 6 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (40 of 40 strings)

Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (8 of 8 strings)

Co-authored-by: andendev <andendev@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserbrowserpreferencespermissions/pt_BR/
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserbrowserpreferencespreferences/pt_BR/
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserchromebrowserbrowser/pt_BR/
Translate-URL: https://translate.codeberg.org/projects/librewolf/toolkittoolkitbrandingbrandings/pt_BR/
Translation: LibreWolf/browser/browser/preferences/permissions
Translation: LibreWolf/browser/browser/preferences/preferences
Translation: LibreWolf/browser/chrome/browser/browser
Translation: LibreWolf/toolkit/toolkit/branding/brandings
Currently translated at 100.0% (40 of 40 strings)

Co-authored-by: ltGuillaume <ltguillaume@noreply.codeberg.org>
Translate-URL: https://translate.codeberg.org/projects/librewolf/browserbrowserpreferencespreferences/nl/
Translation: LibreWolf/browser/browser/preferences/preferences
any1here and others added 27 commits September 29, 2026 15:23
This reverts commit 51e4d975cfe1dacc6bbc3dd1230747ecb4b8deb0.
This reverts commit 1e6200c6a04cdec7c5846610cff89b6529409895.
…hanged

Desktop moves from Firefox 153.0.4 to 157.0 with upstream's 244 commits.
The Android track stays on 153.0esr and produces the same patched tree as
before: every upstream-modified patch that still reached Android is split,
with its pre-merge bytes kept as patches/android/*-esr.patch (rs-blocker,
vendor-name, disable-data-reporting-common, always-fetch-latest-toolchain-
artifact, neterror-common, remove-openai, webgl-permission-common,
bootstrap, fix-canvas-extraction-permission).

Upstream inlined the settings repository; Redoubt keeps the submodule.
Upstream's settings changes are ported into Redoubt-settings (common /
desktop fragments), and android.cfg restates every value the 153 ESR beta
shipped. librewolf-patches.py keeps Android's version.txt (153.0esr-1)
and plain mozconfig copy; MOZ_PKG_VERSION and the glean checksum seds are
desktop-only and fail closed.

Verified: check-patchfail desktop@157.0 and android@153.0esr, zero
rejects; Android patched tree diff -rq empty against the pre-merge lists;
board.py --check-scope/--check-cfg-split/--diff-mozconfig --strict/--check
and all scripts/tests pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… shipped

Redoubt desktop no longer installs LibreWolf's MAR signing certificates
(assets/marsigner*.der) or applies updater.patch, which pointed the
update host at update.librewolf.net, nor allow-disabling-updater.patch.
The updater is not built (--disable-updater), so no behaviour changes;
this removes a latent path by which an enabled updater would install
builds signed by LibreWolf. Desktop updates, if ever shipped, use
Redoubt's own key and host.

The merge also changed existing translations in l10n/ files Android
receives, so Android-only runs now apply l10n-esr/, a byte copy of the
pre-merge overlay, and write the pre-merge mozconfig bytes. A real
android run on 153.0esr is diff -r identical to main's outside lw/l10n
(shared pin) and lw/librewolf.cfg / lw/policies.json (settings).

Verified: check-patchfail desktop@157 and android@153esr zero rejects;
board.py gates, lint-patch-scope, check-patch-order (unchanged from
main) and scripts/tests match main's results.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…dle editors

CI failed at "Check patch order" on seven UNCLASSIFIED pairs: firefox-suggest-data
with branding, fenix-abi-split, no-adjust, no-crashreporter, no-glean, no-gms and
update-check, all sharing mobile/android/fenix/app/build.gradle. All seven are
recorded in REVIEWED_ORDER_FREE; none is a constraint.

Measured on a fresh extract of firefox-153.0esr.source.tar.xz per order, applying
the full common.txt + android.txt sequence (67 patches) with `patch -p1 -i` as
librewolf-patches.py does, hashing all 452 files the sequence touches:

- Shipping order: every patch exits 0. firefox-suggest-data's build.gradle
  section (f8189c4) has a bare '@@' hunk header. GNU patch 2.8 skips it silently
  (exit 0, no "patching file" line; alone it says "Only garbage was found", and
  git apply rejects it too). The shipped build.gradle is sha256 2ef204e5..., the
  LW-M6-06 value from before the hunk, so the mozilla_appservices_suggest
  dependency never reaches the tree. That is a bug in the patch, not an ordering
  question, and this commit does not fix it.
- A moved to just after suggest-data: branding, fenix-abi-split,
  no-crashreporter and update-check apply clean, with all 452 files
  byte-identical to shipping. For no-adjust, no-glean and no-gms the move
  crosses existing constraints with third patches (no-adjust -> no-glean/no-gms/
  no-crashreporter, no-glean -> no-gms, no-gms -> no-crashreporter), and those
  patches reject.
- suggest-data moved to just before A: it rejects in all seven cases, because
  that lifts it above firefox-suggest-policy (declared policy -> data). The
  rejects are in SearchEngineFragment.kt, firefox_suggest_policy_strings.xml and
  search_settings_preferences.xml, never in build.gradle.
- A build.gradle-only replay with the hunk header repaired: the 8 patches that
  edit the file give sha256 33826457... with suggest-data last and with it
  moved before each of the seven. So the rows stay true once the header is
  fixed.

CONSTRAINTS is unchanged at 29 rows. check-patch-order now exits 0 (154 pairs
classified).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@CPlusPlus17
CPlusPlus17 merged commit b3832c7 into main Oct 2, 2026
2 checks passed
@CPlusPlus17
CPlusPlus17 deleted the desktop/firefox-157 branch October 14, 2026 20:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants