diff --git a/gluon.json b/gluon.json
index e669d4f71..a78118767 100644
--- a/gluon.json
+++ b/gluon.json
@@ -5,7 +5,7 @@
"binaryName": "zen",
"version": {
"product": "firefox",
- "version": "126.0",
+ "version": "127.0.1",
"displayVersion": "1.0.0"
},
"buildOptions": {
diff --git a/src/browser/app/profile/firefox-js.patch b/src/browser/app/profile/firefox-js.patch
index 015b89289..55f11734d 100644
--- a/src/browser/app/profile/firefox-js.patch
+++ b/src/browser/app/profile/firefox-js.patch
@@ -1,10 +1,10 @@
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
-index 8c4b0e28e53f3f0e0e492dd8f351535a5604af73..968c8792f4a2358da3f89cabfa179585bfbf0874 100644
+index 27c2d13fbd8599a131de6b70bba581d435198793..25aa7546d57e206b76838bc23b609f602af43a83 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
-@@ -3038,3 +3038,5 @@ pref("startup.homepage_override_nimbus_maxVersion", "");
-
- // Pref to enable the content relevancy feature.
+@@ -3061,3 +3061,5 @@ pref("startup.homepage_override_nimbus_maxVersion", "");
pref("toolkit.contentRelevancy.enabled", false);
+ // Pref to enable the ingestion through the Rust component.
+ pref("toolkit.contentRelevancy.ingestEnabled", false);
+
+#include zen-browser.js
diff --git a/src/browser/base/content/browser-box-inc-xhtml.patch b/src/browser/base/content/browser-box-inc-xhtml.patch
index 434945cc1..afcd3683a 100644
--- a/src/browser/base/content/browser-box-inc-xhtml.patch
+++ b/src/browser/base/content/browser-box-inc-xhtml.patch
@@ -1,41 +1,23 @@
diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml
-index 41258d81bbd2549a2d80cb7df9a9d65aa73a46f1..75bb0897710a478257d38c55c7fb0efb5aedd777 100644
+index b0308911446dd6fc549401371a85faa6341f8338..3942a0b45308b110685c34e8a9367d7c5d40d8c4 100644
--- a/browser/base/content/browser-box.inc.xhtml
+++ b/browser/base/content/browser-box.inc.xhtml
-@@ -2,28 +2,17 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--
--
--
--
-+
+@@ -18,12 +18,18 @@
+
+
+
++
+
--
-+
+#include zen-sidebar-panel.inc.xhtml
--
-+
-+
+
++
++
--
-+
+
diff --git a/src/browser/base/content/browser-init-js.patch b/src/browser/base/content/browser-init-js.patch
new file mode 100644
index 000000000..237b71291
--- /dev/null
+++ b/src/browser/base/content/browser-init-js.patch
@@ -0,0 +1,33 @@
+diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
+index 0717ce21386b73fc3399c97b34c6892a674cca77..f20e8a43fdd1d885f917948a26f1c3a1bd917707 100644
+--- a/browser/base/content/browser-init.js
++++ b/browser/base/content/browser-init.js
+@@ -230,6 +230,12 @@ var gBrowserInit = {
+ gURLBar.readOnly = true;
+ }
+
++ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", this);
++
++ // ZEN: Propagate the current profile used to the browser UI, such as
++ // showing the avatar and profile info to the side bar
++ zenUpdateBrowserProfiles();
++
+ // Misc. inits.
+ gUIDensity.init();
+ TabletModeUpdater.init();
+@@ -1105,3 +1111,15 @@ var gBrowserInit = {
+ };
+
+ gBrowserInit.idleTasksFinishedPromise = gBrowserInit.idleTasksFinished.promise;
++
++function zenUpdateBrowserProfiles() {
++ const mainWindowEl = document.documentElement;
++ // Dont override the sync avatar if it's already set
++ if (mainWindowEl.style.hasOwnProperty("--avatar-image-url")) {
++ return;
++ }
++ let profile = ProfileService.currentProfile;
++ if (!profile || profile.zenAvatarPath == "") return;
++ // TODO: actually use profile data to generate the avatar, instead of just using the name
++ mainWindowEl.style.setProperty("--avatar-image-url", `url(${profile.zenAvatarPath})`);
++}
diff --git a/src/browser/base/content/browser-js.patch b/src/browser/base/content/browser-js.patch
index aae6641e1..43f8fbb87 100644
--- a/src/browser/base/content/browser-js.patch
+++ b/src/browser/base/content/browser-js.patch
@@ -1,10 +1,10 @@
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
-index 72753da622ec51d8be130a49e98a62f483d7f8db..424a8778b581af0c67cfd1c01a65fceec2bf24fb 100644
+index 5f41ca778131eedfd32043dc27d6528be978c4fb..086b01e8fdf80dd333d80b9eede190cdb5315b70 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
-@@ -13,6 +13,15 @@ ChromeUtils.importESModule("resource://gre/modules/NotificationDB.sys.mjs");
-
- // lazy module getters
+@@ -630,6 +630,15 @@ XPCOMUtils.defineLazyPreferenceGetter(
+ false
+ );
+const ZEN_WELCOME_PATH = "zen-welcome";
+const ZEN_WELCOME_ELEMENT_ATTR = "zen-dialog-welcome-element";
@@ -15,39 +15,19 @@ index 72753da622ec51d8be130a49e98a62f483d7f8db..424a8778b581af0c67cfd1c01a65fcee
+ "nsIToolkitProfileService"
+);
+
- ChromeUtils.defineESModuleGetters(this, {
- AMTelemetry: "resource://gre/modules/AddonManager.sys.mjs",
- AboutNewTab: "resource:///modules/AboutNewTab.sys.mjs",
-@@ -1668,6 +1677,7 @@ var gBrowserInit = {
- });
+ customElements.setElementCreationCallback("screenshots-buttons", () => {
+ Services.scriptloader.loadSubScript(
+ "chrome://browser/content/screenshots/screenshots-buttons.js",
+@@ -3668,6 +3677,8 @@ var XULBrowserWindow = {
+ AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
+ TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
- updateFxaToolbarMenu(gFxaToolbarEnabled, true);
-+ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", this);
-
- updatePrintCommands(gPrintEnabled);
-
-@@ -1731,6 +1741,11 @@ var gBrowserInit = {
- }
-
- // Misc. inits.
-+
-+ // ZEN: Propagate the current profile used to the browser UI, such as
-+ // showing the avatar and profile info to the side bar
-+ zenUpdateBrowserProfiles();
-+
- gUIDensity.init();
- TabletModeUpdater.init();
- CombinedStopReload.ensureInitialized();
-@@ -4821,6 +4836,8 @@ var XULBrowserWindow = {
- }
- }
- }
-+
+ gZenViewSplitter.onLocationChange(gBrowser.selectedBrowser);
- },
++
+ PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
- _updateElementsForContentType() {
-@@ -6099,7 +6116,7 @@ function setToolbarVisibility(
+ if (!gMultiProcessBrowser) {
+@@ -4982,7 +4993,7 @@ function setToolbarVisibility(
);
}
@@ -56,33 +36,16 @@ index 72753da622ec51d8be130a49e98a62f483d7f8db..424a8778b581af0c67cfd1c01a65fcee
switch (isVisible) {
case true:
case "always":
-@@ -9007,6 +9024,13 @@ var gDialogBox = {
- parentElement.style.removeProperty("width");
- parentElement.style.removeProperty("height");
- document.documentElement.setAttribute("window-modal-open", true);
-+
+@@ -7813,6 +7824,12 @@ var gDialogBox = {
+ parentElement.showModal();
+ this._didOpenHTMLDialog = true;
+
+ if (uri.includes(ZEN_WELCOME_PATH)) {
+ parentElement.setAttribute(ZEN_WELCOME_ELEMENT_ATTR, true);
+ } else if (parentElement.hasAttribute(ZEN_WELCOME_ELEMENT_ATTR)) {
+ parentElement.removeAttribute(ZEN_WELCOME_ELEMENT_ATTR);
+ }
+
- // Call this first so the contents show up and get layout, which is
- // required for SubDialog to work.
- parentElement.showModal();
-@@ -9384,3 +9408,15 @@ var FirefoxViewHandler = {
- this.button?.toggleAttribute("attention", shouldShow);
- },
- };
-+
-+function zenUpdateBrowserProfiles() {
-+ const mainWindowEl = document.documentElement;
-+ // Dont override the sync avatar if it's already set
-+ if (mainWindowEl.style.hasOwnProperty("--avatar-image-url")) {
-+ return;
-+ }
-+ let profile = ProfileService.currentProfile;
-+ if (!profile || profile.zenAvatarPath == "") return;
-+ // TODO: actually use profile data to generate the avatar, instead of just using the name
-+ mainWindowEl.style.setProperty("--avatar-image-url", `url(${profile.zenAvatarPath})`);
-+}
+ // Disable menus and shortcuts.
+ this._updateMenuAndCommandState(false /* to disable */);
+
diff --git a/src/browser/base/content/main-popupset-inc-xhtml.patch b/src/browser/base/content/main-popupset-inc-xhtml.patch
index e24f77200..55cb94c83 100644
--- a/src/browser/base/content/main-popupset-inc-xhtml.patch
+++ b/src/browser/base/content/main-popupset-inc-xhtml.patch
@@ -1,11 +1,11 @@
diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml
-index 91b2483c53fe67875d108a3d7c1959411f1d2c8f..1c3f460392a9c6ad4329865f3bf5dd253d84895d 100644
+index ef8245938ea669227c255d85422a26b99cb2290b..48c061796072e976a45f7bd0ca1c8b3913728fc7 100644
--- a/browser/base/content/main-popupset.inc.xhtml
+++ b/browser/base/content/main-popupset.inc.xhtml
-@@ -77,6 +77,12 @@
- data-lazy-l10n-id="tab-context-close-n-tabs"
- data-l10n-args='{"tabCount": 1}'
- oncommand="TabContextMenu.closeContextTabs();"/>
+@@ -80,6 +80,12 @@
+
+
+