git: f30c942d285f - 2026Q3 - devel/electron42: Update to 42.10.0

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Thu, 03 Sep 2026 18:43:37 UTC
The branch 2026Q3 has been updated by tagattie:

URL: https://cgit.FreeBSD.org/ports/commit/?id=f30c942d285f83b8265fa1b321af1fb0b78bf062

commit f30c942d285f83b8265fa1b321af1fb0b78bf062
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2026-08-26 11:52:50 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2026-09-03 18:43:18 +0000

    devel/electron42: Update to 42.10.0
    
    Changelog: https://github.com/electron/electron/releases/tag/v42.10.0
    
    Reported by:    GitHub (watch releases)
    
    (cherry picked from commit d346072f67bec5fc8bee498efeedc91f94661cff)
---
 devel/electron42/Makefile                          |  4 ++
 devel/electron42/Makefile.version                  |  2 +-
 devel/electron42/distinfo                          | 14 +++----
 .../api/exit-before-ready-after-tls/package.json   |  4 ++
 .../fixtures/api/session-bus-lost/package.json     |  4 ++
 .../apps/remote-debugging-emulation/package.json   |  4 ++
 devel/electron42/files/patch-electron_BUILD.gn     | 14 +++----
 .../files/patch-electron_shell_app_node__main.cc   |  4 +-
 ...hell_browser_api_electron__api__base__window.cc |  8 ++--
 ...shell_browser_api_electron__api__base__window.h |  4 +-
 ...ell_browser_api_electron__api__web__contents.cc | 16 +++----
 ...hell_browser_api_electron__api__web__contents.h |  4 +-
 .../files/patch-electron_shell_browser_browser.cc  |  4 +-
 .../files/patch-electron_shell_browser_browser.h   |  4 +-
 ...shell_browser_electron__browser__main__parts.cc | 33 +++++++--------
 ...electron_shell_browser_native__window__views.cc | 42 +++++++++----------
 ...-electron_shell_browser_native__window__views.h | 10 ++---
 ...ll_common_api_electron__api__shared__texture.cc |  8 ++--
 .../patch-electron_shell_common_node__bindings.cc  |  4 +-
 ...-electron_shell_common_node__bindings__linux.cc | 15 +++----
 .../files/patch-electron_spec_api-app-spec.ts      | 49 +++++++++++++---------
 .../patch-electron_spec_api-browser-window-spec.ts | 20 ++++-----
 .../files/patch-electron_spec_api-dialog-spec.ts   | 11 +++++
 .../patch-electron_spec_api-web-contents-spec.ts   |  6 +--
 .../files/patch-electron_spec_chromium-spec.ts     |  6 +--
 .../files/patch-electron_spec_node-spec.ts         |  4 +-
 26 files changed, 167 insertions(+), 131 deletions(-)

diff --git a/devel/electron42/Makefile b/devel/electron42/Makefile
index a12df701810e..de6076bda571 100644
--- a/devel/electron42/Makefile
+++ b/devel/electron42/Makefile
@@ -349,6 +349,10 @@ pre-patch:
 	# ${FIND} ${WRKSRC} -type f -name '*.orig' -print -delete
 	# ${FIND} ${WRKSRC} -type f -name '*~' -print -delete
 
+post-patch:
+	@${REINPLACE_CMD} -e 's|/usr/bin/dbus-daemon|${LOCALBASE}/bin/dbus-daemon|' \
+		${WRKSRC}/electron/spec/api-app-spec.ts
+
 pre-configure:
 	# We used to remove bundled libraries to be sure that chromium uses
 	# system libraries and not shipped ones.
diff --git a/devel/electron42/Makefile.version b/devel/electron42/Makefile.version
index 226dfa67925d..1a463e962090 100644
--- a/devel/electron42/Makefile.version
+++ b/devel/electron42/Makefile.version
@@ -1,2 +1,2 @@
-ELECTRON_VER=		42.9.3
+ELECTRON_VER=		42.10.0
 ELECTRON_VER_MAJOR=	${ELECTRON_VER:C/\..*//}
diff --git a/devel/electron42/distinfo b/devel/electron42/distinfo
index 93596b64e557..0ff29fb881d1 100644
--- a/devel/electron42/distinfo
+++ b/devel/electron42/distinfo
@@ -1,4 +1,4 @@
-TIMESTAMP = 1787181243
+TIMESTAMP = 1787660467
 SHA256 (electron/chromium-148.0.7778.280.tar.xz.0) = cddbfeba5a50d950693590399df8df3a8ef5910eee367c76aec2541444c59dea
 SIZE (electron/chromium-148.0.7778.280.tar.xz.0) = 2000000000
 SHA256 (electron/chromium-148.0.7778.280.tar.xz.1) = cd2f2c3740c05eb549878ab6c6571f7858456c2c56cf798e60ffbaf7e651429f
@@ -341,12 +341,12 @@ SHA256 (electron/rust/crates/zerocopy-derive-0.7.35.crate) = fa4f8080344d4671fb4
 SIZE (electron/rust/crates/zerocopy-derive-0.7.35.crate) = 37829
 SHA256 (electron/yarn-4.12.0.tgz) = bd58d06826ce9542c4cd904fe10bab7bc718ea2cc39a45d9fbd15f2edb45761c
 SIZE (electron/yarn-4.12.0.tgz) = 1056794
-SHA256 (electron/electron42-42.9.3-node-modules-arm64.tar.xz) = 6baba78a49cb9d05aaf307ef35030f2d5ee218fc3121d72fe4f225e10a94fdf0
-SIZE (electron/electron42-42.9.3-node-modules-arm64.tar.xz) = 62590395
-SHA256 (electron/electron42-42.9.3-node-modules-x64.tar.xz) = 73224ef31205c29739c6d35f93129f0ab290bf714d59e1461fc675c070aac933
-SIZE (electron/electron42-42.9.3-node-modules-x64.tar.xz) = 71097369
-SHA256 (electron/electron-electron-v42.9.3_GH0.tar.gz) = 07a2a27021a0b95649aefec385b1d32242716090db94d3920bf590eb2eb88dbb
-SIZE (electron/electron-electron-v42.9.3_GH0.tar.gz) = 19686775
+SHA256 (electron/electron42-42.10.0-node-modules-arm64.tar.xz) = 6baba78a49cb9d05aaf307ef35030f2d5ee218fc3121d72fe4f225e10a94fdf0
+SIZE (electron/electron42-42.10.0-node-modules-arm64.tar.xz) = 62590395
+SHA256 (electron/electron42-42.10.0-node-modules-x64.tar.xz) = 73224ef31205c29739c6d35f93129f0ab290bf714d59e1461fc675c070aac933
+SIZE (electron/electron42-42.10.0-node-modules-x64.tar.xz) = 71097369
+SHA256 (electron/electron-electron-v42.10.0_GH0.tar.gz) = b8a20d5e307e164c55cb716cffe3244dce90d26800b153b576c4e5fd77dfdf0e
+SIZE (electron/electron-electron-v42.10.0_GH0.tar.gz) = 19753763
 SHA256 (electron/nodejs-node-v24.18.1_GH0.tar.gz) = bb8065bf6b8b4a2da85dba16c1f69c0a3ad90c0481b33f1ab4c82e3d2bcc8c77
 SIZE (electron/nodejs-node-v24.18.1_GH0.tar.gz) = 127539215
 SHA256 (electron/nodejs-nan-675cefebca42410733da8a454c8d9391fcebfbc2_GH0.tar.gz) = 3983c68f19ed75dd37dc228eab385093ae2533132730f253f0c3d19ff10788e3
diff --git a/devel/electron42/files/packagejsons/spec/fixtures/api/exit-before-ready-after-tls/package.json b/devel/electron42/files/packagejsons/spec/fixtures/api/exit-before-ready-after-tls/package.json
new file mode 100644
index 000000000000..3ea3cd254f79
--- /dev/null
+++ b/devel/electron42/files/packagejsons/spec/fixtures/api/exit-before-ready-after-tls/package.json
@@ -0,0 +1,4 @@
+{
+  "name": "electron-test-exit-before-ready-after-tls",
+  "main": "main.js"
+}
diff --git a/devel/electron42/files/packagejsons/spec/fixtures/api/session-bus-lost/package.json b/devel/electron42/files/packagejsons/spec/fixtures/api/session-bus-lost/package.json
new file mode 100644
index 000000000000..b2ead513c071
--- /dev/null
+++ b/devel/electron42/files/packagejsons/spec/fixtures/api/session-bus-lost/package.json
@@ -0,0 +1,4 @@
+{
+  "name": "session-bus-lost",
+  "main": "main.js"
+}
diff --git a/devel/electron42/files/packagejsons/spec/fixtures/apps/remote-debugging-emulation/package.json b/devel/electron42/files/packagejsons/spec/fixtures/apps/remote-debugging-emulation/package.json
new file mode 100644
index 000000000000..734fa7ffacb5
--- /dev/null
+++ b/devel/electron42/files/packagejsons/spec/fixtures/apps/remote-debugging-emulation/package.json
@@ -0,0 +1,4 @@
+{
+  "name": "remote-debugging-emulation",
+  "main": "main.js"
+}
diff --git a/devel/electron42/files/patch-electron_BUILD.gn b/devel/electron42/files/patch-electron_BUILD.gn
index 401c6a9d6d71..518870d315ec 100644
--- a/devel/electron42/files/patch-electron_BUILD.gn
+++ b/devel/electron42/files/patch-electron_BUILD.gn
@@ -1,6 +1,6 @@
---- electron/BUILD.gn.orig	2026-08-10 18:14:56 UTC
+--- electron/BUILD.gn.orig	2026-08-24 01:09:19 UTC
 +++ electron/BUILD.gn
-@@ -609,7 +609,7 @@ source_set("electron_lib") {
+@@ -610,7 +610,7 @@ source_set("electron_lib") {
      defines += [ "GDK_DISABLE_DEPRECATION_WARNINGS" ]
    }
  
@@ -9,7 +9,7 @@
      deps += [
        "//components/crash/core/app",
        "//components/crash/core/browser",
-@@ -723,6 +723,12 @@ source_set("electron_lib") {
+@@ -724,6 +724,12 @@ source_set("electron_lib") {
        cflags_objcc = [ "-fobjc-weak" ]
      }
    }
@@ -22,7 +22,7 @@
    if (is_linux) {
      libs = [ "xshmfence" ]
      deps += [
-@@ -1505,7 +1511,7 @@ if (is_mac) {
+@@ -1528,7 +1534,7 @@ if (is_mac) {
        ":electron_lib",
        ":electron_win32_resources",
        ":packed_resources",
@@ -31,7 +31,7 @@
        "//content:sandbox_helper_win",
        "//electron/buildflags",
        "//third_party/electron_node:libnode",
-@@ -1532,7 +1538,7 @@ if (is_mac) {
+@@ -1555,7 +1561,7 @@ if (is_mac) {
        public_deps = [ "//tools/v8_context_snapshot" ]
      }
  
@@ -40,7 +40,7 @@
        data_deps += [ "//components/crash/core/app:chrome_crashpad_handler" ]
      }
  
-@@ -1599,7 +1605,7 @@ if (is_mac) {
+@@ -1622,7 +1628,7 @@ if (is_mac) {
          configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
        }
  
@@ -49,7 +49,7 @@
          deps += [ "//sandbox/linux:chrome_sandbox" ]
        }
      }
-@@ -1720,7 +1726,9 @@ dist_zip("electron_dist_zip") {
+@@ -1743,7 +1749,9 @@ dist_zip("electron_dist_zip") {
        ]
      }
  
diff --git a/devel/electron42/files/patch-electron_shell_app_node__main.cc b/devel/electron42/files/patch-electron_shell_app_node__main.cc
index 9f82dd18173f..4e5a6e707f96 100644
--- a/devel/electron42/files/patch-electron_shell_app_node__main.cc
+++ b/devel/electron42/files/patch-electron_shell_app_node__main.cc
@@ -1,4 +1,4 @@
---- electron/shell/app/node_main.cc.orig	2026-04-15 14:10:25 UTC
+--- electron/shell/app/node_main.cc.orig	2026-08-24 01:09:19 UTC
 +++ electron/shell/app/node_main.cc
 @@ -53,7 +53,7 @@
  #include "shell/common/mac/codesign_util.h"
@@ -26,7 +26,7 @@
    electron::crash_keys::GetCrashKeys(&keys);
  #endif
    return gin::ConvertToV8(isolate, keys);
-@@ -296,7 +296,7 @@ int NodeMain() {
+@@ -326,7 +326,7 @@ int NodeMain() {
        // Setup process.crashReporter in child node processes
        auto reporter = gin_helper::Dictionary::CreateEmpty(isolate);
        reporter.SetMethod("getParameters", &GetParameters);
diff --git a/devel/electron42/files/patch-electron_shell_browser_api_electron__api__base__window.cc b/devel/electron42/files/patch-electron_shell_browser_api_electron__api__base__window.cc
index b1c73d8734a7..456403eeace8 100644
--- a/devel/electron42/files/patch-electron_shell_browser_api_electron__api__base__window.cc
+++ b/devel/electron42/files/patch-electron_shell_browser_api_electron__api__base__window.cc
@@ -1,4 +1,4 @@
---- electron/shell/browser/api/electron_api_base_window.cc.orig	2026-05-08 13:54:01 UTC
+--- electron/shell/browser/api/electron_api_base_window.cc.orig	2026-08-24 01:09:19 UTC
 +++ electron/shell/browser/api/electron_api_base_window.cc
 @@ -43,7 +43,7 @@
  #include "shell/browser/ui/views/win_frame_view.h"
@@ -9,7 +9,7 @@
  #include "shell/browser/ui/views/opaque_frame_view.h"
  #include "ui/gfx/image/image_skia.h"
  #endif
-@@ -1043,7 +1043,7 @@ void BaseWindow::SetIconImpl(v8::Isolate* isolate,
+@@ -1058,7 +1058,7 @@ void BaseWindow::SetIconImpl(v8::Isolate* isolate,
    static_cast<NativeWindowViews*>(window_.get())
        ->SetIcon(native_image->GetHICON(GetSystemMetrics(SM_CXSMICON)),
                  native_image->GetHICON(GetSystemMetrics(SM_CXICON)));
@@ -18,7 +18,7 @@
    static_cast<NativeWindowViews*>(window_.get())
        ->SetIcon(native_image->image().AsImageSkia());
  #endif
-@@ -1144,7 +1144,7 @@ v8::Local<v8::Value> BaseWindow::GetAccentColor() cons
+@@ -1159,7 +1159,7 @@ v8::Local<v8::Value> BaseWindow::GetAccentColor() cons
  }
  #endif
  
@@ -27,7 +27,7 @@
  void BaseWindow::SetTitleBarOverlay(const gin_helper::Dictionary& options,
                                      gin::Arguments* args) {
    static_cast<NativeWindowViews*>(window_.get())
-@@ -1326,7 +1326,7 @@ void BaseWindow::BuildPrototype(v8::Isolate* isolate,
+@@ -1341,7 +1341,7 @@ void BaseWindow::BuildPrototype(v8::Isolate* isolate,
        .SetMethod("setThumbnailToolTip", &BaseWindow::SetThumbnailToolTip)
        .SetMethod("setAppDetails", &BaseWindow::SetAppDetails)
  #endif
diff --git a/devel/electron42/files/patch-electron_shell_browser_api_electron__api__base__window.h b/devel/electron42/files/patch-electron_shell_browser_api_electron__api__base__window.h
index 0892dc19e2ba..1b77067e9207 100644
--- a/devel/electron42/files/patch-electron_shell_browser_api_electron__api__base__window.h
+++ b/devel/electron42/files/patch-electron_shell_browser_api_electron__api__base__window.h
@@ -1,6 +1,6 @@
---- electron/shell/browser/api/electron_api_base_window.h.orig	2026-05-08 13:54:01 UTC
+--- electron/shell/browser/api/electron_api_base_window.h.orig	2026-08-24 01:09:19 UTC
 +++ electron/shell/browser/api/electron_api_base_window.h
-@@ -263,7 +263,7 @@ class BaseWindow : public gin_helper::TrackableObject<
+@@ -265,7 +265,7 @@ class BaseWindow : public gin_helper::TrackableObject<
    v8::Local<v8::Value> GetAccentColor() const;
  #endif
  
diff --git a/devel/electron42/files/patch-electron_shell_browser_api_electron__api__web__contents.cc b/devel/electron42/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
index d15c1145694c..03cc25ca3aea 100644
--- a/devel/electron42/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
+++ b/devel/electron42/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/api/electron_api_web_contents.cc.orig	2026-08-17 14:38:13 UTC
+--- electron/shell/browser/api/electron_api_web_contents.cc.orig	2026-08-24 01:09:19 UTC
 +++ electron/shell/browser/api/electron_api_web_contents.cc
-@@ -175,11 +175,11 @@
+@@ -182,11 +182,11 @@
  #include "ui/base/cocoa/defaults_utils.h"
  #endif
  
@@ -14,7 +14,7 @@
  #include "ui/aura/window.h"
  #include "ui/gfx/font_render_params.h"
  #endif
-@@ -209,7 +209,7 @@
+@@ -216,7 +216,7 @@
  #include "content/public/browser/plugin_service.h"
  #endif
  
@@ -23,7 +23,7 @@
  #include "chrome/browser/hang_monitor/hang_crash_dump.h"  // nogncheck
  #endif
  
-@@ -630,7 +630,7 @@ std::optional<base::TimeDelta> GetCursorBlinkInterval(
+@@ -637,7 +637,7 @@ std::optional<base::TimeDelta> GetCursorBlinkInterval(
        ui::TextInsertionCaretBlinkPeriodFromDefaults());
    if (system_value)
      return *system_value;
@@ -32,7 +32,7 @@
    if (auto* native_theme = ui::NativeTheme::GetInstanceForNativeUi())
      return native_theme->caret_blink_interval();
  #elif BUILDFLAG(IS_WIN)
-@@ -1015,7 +1015,7 @@ void WebContents::InitWithSessionAndOptions(
+@@ -1034,7 +1034,7 @@ void WebContents::InitWithSessionAndOptions(
    accept_languages.pop_back();
    prefs->accept_languages = accept_languages;
  
@@ -41,7 +41,7 @@
    // Update font settings.
    static const gfx::FontRenderParams params(
        gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr));
-@@ -3040,13 +3040,13 @@ void WebContents::ForcefullyCrashRenderer() {
+@@ -3067,13 +3067,13 @@ void WebContents::ForcefullyCrashRenderer() {
  
    content::RenderProcessHost* rph = rwh->GetProcess();
    if (rph) {
@@ -57,7 +57,7 @@
      CrashDumpHungChildProcess(rph->GetProcess().Handle());
  #endif
      rph->Shutdown(content::RESULT_CODE_HUNG);
-@@ -3679,7 +3679,7 @@ void WebContents::Focus() {
+@@ -3706,7 +3706,7 @@ void WebContents::Focus() {
  void WebContents::Focus() {
    // Focusing on WebContents does not automatically focus the window on macOS
    // and Linux, do it manually to match the behavior on Windows.
@@ -66,7 +66,7 @@
    if (owner_window())
      owner_window()->Focus(true);
  #endif
-@@ -4580,7 +4580,7 @@ ui::ImageModel WebContents::GetDevToolsWindowIcon() {
+@@ -4607,7 +4607,7 @@ ui::ImageModel WebContents::GetDevToolsWindowIcon() {
  }
  #endif
  
diff --git a/devel/electron42/files/patch-electron_shell_browser_api_electron__api__web__contents.h b/devel/electron42/files/patch-electron_shell_browser_api_electron__api__web__contents.h
index cf038accd5fb..420e0b8f2080 100644
--- a/devel/electron42/files/patch-electron_shell_browser_api_electron__api__web__contents.h
+++ b/devel/electron42/files/patch-electron_shell_browser_api_electron__api__web__contents.h
@@ -1,6 +1,6 @@
---- electron/shell/browser/api/electron_api_web_contents.h.orig	2026-08-17 14:38:13 UTC
+--- electron/shell/browser/api/electron_api_web_contents.h.orig	2026-08-24 01:09:19 UTC
 +++ electron/shell/browser/api/electron_api_web_contents.h
-@@ -764,7 +764,7 @@ class WebContents final : public ExclusiveAccessContex
+@@ -770,7 +770,7 @@ class WebContents final : public ExclusiveAccessContex
  #if defined(TOOLKIT_VIEWS) && !BUILDFLAG(IS_MAC)
    ui::ImageModel GetDevToolsWindowIcon() override;
  #endif
diff --git a/devel/electron42/files/patch-electron_shell_browser_browser.cc b/devel/electron42/files/patch-electron_shell_browser_browser.cc
index eb74b8c22fc4..e29ab215e8cf 100644
--- a/devel/electron42/files/patch-electron_shell_browser_browser.cc
+++ b/devel/electron42/files/patch-electron_shell_browser_browser.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/browser.cc.orig	2026-03-17 08:46:36 UTC
+--- electron/shell/browser/browser.cc.orig	2026-08-24 01:09:19 UTC
 +++ electron/shell/browser/browser.cc
-@@ -96,7 +96,7 @@ bool Browser::IsValidProtocolScheme(const std::string&
+@@ -105,7 +105,7 @@ bool Browser::IsValidProtocolScheme(const std::string&
    return true;
  }
  
diff --git a/devel/electron42/files/patch-electron_shell_browser_browser.h b/devel/electron42/files/patch-electron_shell_browser_browser.h
index 70dbc36b1fbb..16d800fd3a03 100644
--- a/devel/electron42/files/patch-electron_shell_browser_browser.h
+++ b/devel/electron42/files/patch-electron_shell_browser_browser.h
@@ -1,6 +1,6 @@
---- electron/shell/browser/browser.h.orig	2026-08-10 18:14:56 UTC
+--- electron/shell/browser/browser.h.orig	2026-08-24 01:09:19 UTC
 +++ electron/shell/browser/browser.h
-@@ -287,10 +287,10 @@ class Browser : private WindowListObserver {
+@@ -296,10 +296,10 @@ class Browser : private WindowListObserver {
    PCWSTR GetAppUserModelID();
  #endif  // BUILDFLAG(IS_WIN)
  
diff --git a/devel/electron42/files/patch-electron_shell_browser_electron__browser__main__parts.cc b/devel/electron42/files/patch-electron_shell_browser_electron__browser__main__parts.cc
index 1c53a0adb9cf..a8766d0cbe44 100644
--- a/devel/electron42/files/patch-electron_shell_browser_electron__browser__main__parts.cc
+++ b/devel/electron42/files/patch-electron_shell_browser_electron__browser__main__parts.cc
@@ -1,4 +1,4 @@
---- electron/shell/browser/electron_browser_main_parts.cc.orig	2026-08-10 18:14:56 UTC
+--- electron/shell/browser/electron_browser_main_parts.cc.orig	2026-08-24 01:09:19 UTC
 +++ electron/shell/browser/electron_browser_main_parts.cc
 @@ -81,7 +81,7 @@
  #include "ui/wm/core/wm_state.h"
@@ -8,17 +8,17 @@
 +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
  #include "base/environment.h"
  #include "chrome/browser/ui/views/dark_mode_manager_linux.h"
- #include "device/bluetooth/bluetooth_adapter_factory.h"
-@@ -138,7 +138,7 @@ namespace {
+ #include "components/dbus/thread_linux/dbus_thread_linux.h"
+@@ -139,7 +139,7 @@ namespace {
  
  namespace {
  
 -#if BUILDFLAG(IS_LINUX)
 +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
- class LinuxUiGetterImpl : public ui::LinuxUiGetter {
-  public:
-   LinuxUiGetterImpl() = default;
-@@ -220,7 +220,7 @@ int ElectronBrowserMainParts::PreEarlyInitialization()
+ // The display server connection or the session bus is gone: exit like
+ // Chrome's SessionEnding(), with an off-thread watchdog that crashes us if
+ // exiting hangs on the dead connection.
+@@ -239,7 +239,7 @@ int ElectronBrowserMainParts::PreEarlyInitialization()
  #if BUILDFLAG(IS_OZONE)
    // Initialize Ozone platform and add required feature flags as per platform's
    // properties.
@@ -27,7 +27,7 @@
    ui::SetOzonePlatformForLinuxIfNeeded(*base::CommandLine::ForCurrentProcess());
  #endif
    ui::OzonePlatform::PreEarlyInitialization();
-@@ -334,7 +334,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
+@@ -354,7 +354,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
    // happen before the ResourceBundle is loaded
    if (locale.empty())
      l10n_util::OverrideLocaleWithCocoaLocale();
@@ -36,7 +36,7 @@
    // l10n_util::GetApplicationLocaleInternal uses g_get_language_names(),
    // which keys off of getenv("LC_ALL").
    // We must set this env first to make ui::ResourceBundle accept the custom
-@@ -363,7 +363,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
+@@ -383,7 +383,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
    ElectronBrowserClient::SetApplicationLocale(app_locale);
    fake_browser_process_->SetApplicationLocale(app_locale);
  
@@ -45,7 +45,7 @@
    // Reset to the original LC_ALL since we should not be changing it.
    if (!locale.empty()) {
      if (lc_all)
-@@ -419,7 +419,7 @@ void ElectronBrowserMainParts::ToolkitInitialized() {
+@@ -439,7 +439,7 @@ void ElectronBrowserMainParts::ToolkitInitialized() {
  }
  
  void ElectronBrowserMainParts::ToolkitInitialized() {
@@ -54,7 +54,7 @@
    auto* linux_ui = ui::GetDefaultLinuxUi();
    CHECK(linux_ui);
    linux_ui_getter_ = std::make_unique<LinuxUiGetterImpl>();
-@@ -530,10 +530,10 @@ void ElectronBrowserMainParts::PostCreateMainMessageLo
+@@ -550,19 +550,23 @@ void ElectronBrowserMainParts::PostCreateMainMessageLo
  }
  
  void ElectronBrowserMainParts::PostCreateMainMessageLoop() {
@@ -64,12 +64,11 @@
  #endif
 -#if BUILDFLAG(IS_LINUX)
 +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
-   // The display server connection is gone (X IO error / compositor lost):
-   // exit like Chrome's SessionEnding(), with an off-thread watchdog that
-   // crashes us if exiting hangs on the dead display connection.
-@@ -553,9 +553,13 @@ void ElectronBrowserMainParts::PostCreateMainMessageLo
-       std::move(shutdown_cb),
+   ui::OzonePlatform::GetInstance()->PostCreateMainMessageLoop(
+       base::BindOnce(&ExitOnSessionLoss),
        content::GetUIThreadTaskRunner({content::BrowserTaskType::kUserInput}));
+   dbus_thread_linux::SetDisconnectedCallback(
+       base::BindRepeating(&ExitOnSessionLoss));
  
 +#if BUILDFLAG(IS_LINUX)
    if (!bluez::BluezDBusManager::IsInitialized())
@@ -81,7 +80,7 @@
    // Set up crypt config. This needs to be done before anything starts the
    // network service, as the raw encryption key needs to be shared with the
    // network service for encrypted cookie storage.
-@@ -652,7 +656,7 @@ void ElectronBrowserMainParts::PostMainMessageLoopRun(
+@@ -659,7 +663,7 @@ void ElectronBrowserMainParts::PostMainMessageLoopRun(
    fake_browser_process_->PostMainMessageLoopRun();
    content::DevToolsAgentHost::StopRemoteDebuggingPipeHandler();
  
diff --git a/devel/electron42/files/patch-electron_shell_browser_native__window__views.cc b/devel/electron42/files/patch-electron_shell_browser_native__window__views.cc
index 2e12b4e783b7..db60b6f327c4 100644
--- a/devel/electron42/files/patch-electron_shell_browser_native__window__views.cc
+++ b/devel/electron42/files/patch-electron_shell_browser_native__window__views.cc
@@ -1,4 +1,4 @@
---- electron/shell/browser/native_window_views.cc.orig	2026-08-17 14:38:13 UTC
+--- electron/shell/browser/native_window_views.cc.orig	2026-08-24 01:09:19 UTC
 +++ electron/shell/browser/native_window_views.cc
 @@ -57,7 +57,7 @@
  #include "ui/views/window/non_client_view.h"
@@ -9,7 +9,7 @@
  #include "base/notimplemented.h"
  #include "shell/browser/browser.h"
  #include "shell/browser/linux/unity_service.h"
-@@ -299,7 +299,7 @@ NativeWindowViews::NativeWindowViews(const int32_t bas
+@@ -307,7 +307,7 @@ NativeWindowViews::NativeWindowViews(const int32_t bas
      params.parent = parent->GetNativeWindow();
  
    params.native_widget = new ElectronDesktopNativeWidgetAura{this, widget()};
@@ -18,7 +18,7 @@
    // Set the WM_CLASS and XDG App ID to the same value
    // for best compatibility with both X11 and Wayland.
    const auto app_id = platform_util::GetXdgAppId();
-@@ -329,7 +329,7 @@ NativeWindowViews::NativeWindowViews(const int32_t bas
+@@ -337,7 +337,7 @@ NativeWindowViews::NativeWindowViews(const int32_t bas
    std::string window_type;
    options.Get(options::kType, &window_type);
  
@@ -27,7 +27,7 @@
    // Set _GTK_THEME_VARIANT to dark if we have "dark-theme" option set.
    if (options.ValueOrDefault(options::kDarkTheme, false))
      SetGTKDarkThemeEnabled(true);
-@@ -521,7 +521,7 @@ void NativeWindowViews::SetGTKDarkThemeEnabled(bool us
+@@ -529,7 +529,7 @@ void NativeWindowViews::SetGTKDarkThemeEnabled(bool us
  }
  
  void NativeWindowViews::SetGTKDarkThemeEnabled(bool use_dark_theme) {
@@ -36,7 +36,7 @@
    if (x11_util::IsX11()) {
      const std::string color = use_dark_theme ? "dark" : "light";
      auto* connection = x11::Connection::Get();
-@@ -587,7 +587,7 @@ void NativeWindowViews::Show() {
+@@ -595,7 +595,7 @@ void NativeWindowViews::Show() {
  
    NotifyWindowShow();
  
@@ -45,7 +45,7 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowMapped();
  
-@@ -603,7 +603,7 @@ void NativeWindowViews::ShowInactive() {
+@@ -611,7 +611,7 @@ void NativeWindowViews::ShowInactive() {
  
    NotifyWindowShow();
  
@@ -54,7 +54,7 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowMapped();
  
-@@ -622,7 +622,7 @@ void NativeWindowViews::Hide() {
+@@ -630,7 +630,7 @@ void NativeWindowViews::Hide() {
  
    NotifyWindowHide();
  
@@ -63,7 +63,7 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowUnmapped();
  #endif
-@@ -653,7 +653,7 @@ bool NativeWindowViews::IsEnabled() const {
+@@ -661,7 +661,7 @@ bool NativeWindowViews::IsEnabled() const {
  bool NativeWindowViews::IsEnabled() const {
  #if BUILDFLAG(IS_WIN)
    return ::IsWindowEnabled(GetAcceleratedWidget());
@@ -72,7 +72,7 @@
    if (x11_util::IsX11())
      return !event_disabler_.get();
    NOTIMPLEMENTED();
-@@ -878,7 +878,7 @@ void NativeWindowViews::SetBounds(const gfx::Rect& bou
+@@ -886,7 +886,7 @@ void NativeWindowViews::SetBounds(const gfx::Rect& bou
    }
  #endif
  
@@ -81,7 +81,7 @@
    // On Linux and Windows the minimum and maximum size should be updated with
    // window size when window is not resizable.
    if (!CanResize()) {
-@@ -933,7 +933,7 @@ void NativeWindowViews::SetContentSizeConstraints(
+@@ -941,7 +941,7 @@ void NativeWindowViews::SetContentSizeConstraints(
    // of this to determine whether native widget has initialized.
    if (widget() && widget()->widget_delegate())
      widget()->OnSizeConstraintsChanged();
@@ -90,7 +90,7 @@
    if (resizable_)
      old_size_constraints_ = GetSizeConstraints();
  #endif
-@@ -1153,7 +1153,7 @@ bool NativeWindowViews::IsClosable() const {
+@@ -1161,7 +1161,7 @@ bool NativeWindowViews::IsClosable() const {
      return false;
    }
    return !(info.fState & MFS_DISABLED);
@@ -99,7 +99,7 @@
    return true;
  #endif
  }
-@@ -1293,7 +1293,7 @@ void NativeWindowViews::SetBackgroundColor(SkColor bac
+@@ -1301,7 +1301,7 @@ void NativeWindowViews::SetBackgroundColor(SkColor bac
    InvalidateRect(GetAcceleratedWidget(), nullptr, 1);
  #endif
  
@@ -108,7 +108,7 @@
    // Widget and root view need to be transparent for CSD to draw shadow regions
    // and custom edges and corners. The web contents view will still be
    // painted with the true background color, which is cached in state.
-@@ -1423,7 +1423,7 @@ void NativeWindowViews::SetMenu(ElectronMenuModel* men
+@@ -1431,7 +1431,7 @@ void NativeWindowViews::SetMenu(ElectronMenuModel* men
  }
  
  void NativeWindowViews::SetMenu(ElectronMenuModel* menu_model) {
@@ -117,7 +117,7 @@
    // Remove global menu bar.
    if (global_menu_bar_ && menu_model == nullptr) {
      global_menu_bar_.reset();
-@@ -1479,7 +1479,7 @@ void NativeWindowViews::SetParentWindow(NativeWindow* 
+@@ -1487,7 +1487,7 @@ void NativeWindowViews::SetParentWindow(NativeWindow* 
  void NativeWindowViews::SetParentWindow(NativeWindow* parent) {
    NativeWindow::SetParentWindow(parent);
  
@@ -126,7 +126,7 @@
    if (x11_util::IsX11()) {
      auto* connection = x11::Connection::Get();
      connection->SetProperty(
-@@ -1541,7 +1541,7 @@ void NativeWindowViews::SetProgressBar(double progress
+@@ -1549,7 +1549,7 @@ void NativeWindowViews::SetProgressBar(double progress
                                         NativeWindow::ProgressState state) {
  #if BUILDFLAG(IS_WIN)
    taskbar_host_.SetProgressBar(GetAcceleratedWidget(), progress, state);
@@ -135,7 +135,7 @@
    if (unity::IsRunning()) {
      unity::SetProgressFraction(progress);
    }
-@@ -1667,7 +1667,7 @@ content::DesktopMediaID NativeWindowViews::GetDesktopM
+@@ -1675,7 +1675,7 @@ content::DesktopMediaID NativeWindowViews::GetDesktopM
  #if BUILDFLAG(IS_WIN)
    window_handle =
        reinterpret_cast<content::DesktopMediaID::Id>(accelerated_widget);
@@ -144,7 +144,7 @@
    window_handle = static_cast<uint32_t>(accelerated_widget);
  #endif
    aura::WindowTreeHost* const host =
-@@ -1797,7 +1797,7 @@ void NativeWindowViews::SetIcon(HICON window_icon, HIC
+@@ -1805,7 +1805,7 @@ void NativeWindowViews::SetIcon(HICON window_icon, HIC
    SendMessage(hwnd, WM_SETICON, ICON_BIG,
                reinterpret_cast<LPARAM>(app_icon_.get()));
  }
@@ -153,7 +153,7 @@
  void NativeWindowViews::SetIcon(const gfx::ImageSkia& icon) {
    auto* tree_host = views::DesktopWindowTreeHostLinux::GetHostForWidget(
        GetAcceleratedWidget());
-@@ -1918,7 +1918,7 @@ bool NativeWindowViews::CanMinimize() const {
+@@ -1926,7 +1926,7 @@ bool NativeWindowViews::CanMinimize() const {
  bool NativeWindowViews::CanMinimize() const {
  #if BUILDFLAG(IS_WIN)
    return minimizable_;
@@ -162,7 +162,7 @@
    return true;
  #endif
  }
-@@ -1952,7 +1952,7 @@ std::unique_ptr<views::FrameView> NativeWindowViews::C
+@@ -1960,7 +1960,7 @@ std::unique_ptr<views::FrameView> NativeWindowViews::C
  #endif
  }
  
@@ -171,7 +171,7 @@
  LinuxFrameLayout* NativeWindowViews::GetLinuxFrameLayout() {
    auto* ncv = widget()->non_client_view();
    if (!ncv)
-@@ -1972,7 +1972,7 @@ void NativeWindowViews::HandleKeyboardEvent(
+@@ -1980,7 +1980,7 @@ void NativeWindowViews::HandleKeyboardEvent(
    if (widget_destroyed_)
      return;
  
@@ -180,7 +180,7 @@
    if (event.windows_key_code == ui::VKEY_BROWSER_BACK)
      NotifyWindowExecuteAppCommand(kBrowserBackward);
    else if (event.windows_key_code == ui::VKEY_BROWSER_FORWARD)
-@@ -1991,7 +1991,7 @@ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* e
+@@ -1999,7 +1999,7 @@ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* e
    // Alt+Click should not toggle menu bar.
    root_view_.ResetAltState();
  
diff --git a/devel/electron42/files/patch-electron_shell_browser_native__window__views.h b/devel/electron42/files/patch-electron_shell_browser_native__window__views.h
index a3eafd8cbd4b..1dba800afe77 100644
--- a/devel/electron42/files/patch-electron_shell_browser_native__window__views.h
+++ b/devel/electron42/files/patch-electron_shell_browser_native__window__views.h
@@ -1,4 +1,4 @@
---- electron/shell/browser/native_window_views.h.orig	2026-05-08 13:54:01 UTC
+--- electron/shell/browser/native_window_views.h.orig	2026-08-24 01:09:19 UTC
 +++ electron/shell/browser/native_window_views.h
 @@ -32,7 +32,7 @@ namespace electron {
  
@@ -18,16 +18,16 @@
    void SetIcon(const gfx::ImageSkia& icon);
  #endif
  
-@@ -200,7 +200,7 @@ class NativeWindowViews : public NativeWindow,
-   SkColor overlay_button_color() const { return overlay_button_color_; }
-   SkColor overlay_symbol_color() const { return overlay_symbol_color_; }
+@@ -204,7 +204,7 @@ class NativeWindowViews : public NativeWindow,
+     return overlay_symbol_color_;
+   }
  
 -#if BUILDFLAG(IS_LINUX)
 +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
    LinuxFrameLayout* GetLinuxFrameLayout();
  #endif
  
-@@ -278,7 +278,7 @@ class NativeWindowViews : public NativeWindow,
+@@ -282,7 +282,7 @@ class NativeWindowViews : public NativeWindow,
    // events from resizing the window.
    extensions::SizeConstraints old_size_constraints_;
  
diff --git a/devel/electron42/files/patch-electron_shell_common_api_electron__api__shared__texture.cc b/devel/electron42/files/patch-electron_shell_common_api_electron__api__shared__texture.cc
index 691a8ec64c9a..c942849f7e9d 100644
--- a/devel/electron42/files/patch-electron_shell_common_api_electron__api__shared__texture.cc
+++ b/devel/electron42/files/patch-electron_shell_common_api_electron__api__shared__texture.cc
@@ -1,4 +1,4 @@
---- electron/shell/common/api/electron_api_shared_texture.cc.orig	2026-05-08 13:54:01 UTC
+--- electron/shell/common/api/electron_api_shared_texture.cc.orig	2026-08-24 01:09:19 UTC
 +++ electron/shell/common/api/electron_api_shared_texture.cc
 @@ -27,7 +27,7 @@
  #include "third_party/blink/renderer/platform/graphics/gpu/shared_gpu_context.h"  // nogncheck
@@ -9,7 +9,7 @@
  #include "base/posix/eintr_wrapper.h"
  #include "base/strings/string_number_conversions.h"
  #endif
-@@ -548,7 +548,7 @@ struct ImportSharedTextureInfo {
+@@ -584,7 +584,7 @@ struct ImportSharedTextureInfo {
    // On macOS, it is an IOSurfaceRef, this must be a valid IOSurface at the
    // current process.
    uintptr_t io_surface = 0;
@@ -18,7 +18,7 @@
    // On Linux, to be implemented.
    std::vector<ImportSharedTextureInfoPlane> planes;
    uint64_t modifier = gfx::NativePixmapHandle::kNoModifier;
-@@ -618,7 +618,7 @@ struct Converter<ImportSharedTextureInfo> {
+@@ -654,7 +654,7 @@ struct Converter<ImportSharedTextureInfo> {
      GetNativeHandle("ntHandle", &out->nt_handle);
  #elif BUILDFLAG(IS_APPLE)
      GetNativeHandle("ioSurface", &out->io_surface);
@@ -27,7 +27,7 @@
      v8::Local<v8::Object> native_pixmap;
      if (shared_texture.Get("nativePixmap", &native_pixmap)) {
        gin::Dictionary v8_native_pixmap(isolate, native_pixmap);
-@@ -694,7 +694,7 @@ v8::Local<v8::Value> ImportSharedTexture(v8::Isolate* 
+@@ -730,7 +730,7 @@ v8::Local<v8::Value> ImportSharedTexture(v8::Isolate* 
    auto io_surface_scoped = base::apple::ScopedCFTypeRef<IOSurfaceRef>(
        io_surface, base::scoped_policy::RETAIN);
    gmb_handle = gfx::GpuMemoryBufferHandle(std::move(io_surface_scoped));
diff --git a/devel/electron42/files/patch-electron_shell_common_node__bindings.cc b/devel/electron42/files/patch-electron_shell_common_node__bindings.cc
index b42bb5aac2e9..6b5341d86040 100644
--- a/devel/electron42/files/patch-electron_shell_common_node__bindings.cc
+++ b/devel/electron42/files/patch-electron_shell_common_node__bindings.cc
@@ -1,4 +1,4 @@
---- electron/shell/common/node_bindings.cc.orig	2026-08-10 18:14:56 UTC
+--- electron/shell/common/node_bindings.cc.orig	2026-08-24 01:09:19 UTC
 +++ electron/shell/common/node_bindings.cc
 @@ -55,7 +55,7 @@
  #include "third_party/electron_node/src/node_snapshot_builder.h"
@@ -27,7 +27,7 @@
    // TryGetCurrent() instead of GetCurrent() to avoid FATAL if no isolate.
    v8::Isolate* isolate = v8::Isolate::TryGetCurrent();
    electron::v8_oom::RecordErrorDetails(isolate, location, details);
-@@ -664,7 +664,7 @@ void NodeBindings::Initialize(v8::Isolate* const isola
+@@ -649,7 +649,7 @@ void NodeBindings::Initialize(v8::Isolate* const isola
    TRACE_EVENT0("electron", "NodeBindings::Initialize");
    // Open node's error reporting system for browser process.
  
diff --git a/devel/electron42/files/patch-electron_shell_common_node__bindings__linux.cc b/devel/electron42/files/patch-electron_shell_common_node__bindings__linux.cc
index 0dabd6390a8d..a17e5db91798 100644
--- a/devel/electron42/files/patch-electron_shell_common_node__bindings__linux.cc
+++ b/devel/electron42/files/patch-electron_shell_common_node__bindings__linux.cc
@@ -1,6 +1,6 @@
---- electron/shell/common/node_bindings_linux.cc.orig	2023-10-20 08:29:17 UTC
+--- electron/shell/common/node_bindings_linux.cc.orig	2026-08-24 01:09:19 UTC
 +++ electron/shell/common/node_bindings_linux.cc
-@@ -4,12 +4,25 @@
+@@ -4,13 +4,26 @@
  
  #include "shell/common/node_bindings_linux.h"
  
@@ -16,17 +16,18 @@
  
  namespace electron {
  
- NodeBindingsLinux::NodeBindingsLinux(BrowserEnvironment browser_env)
+ NodeBindingsLinux::NodeBindingsLinux(BrowserEnvironment browser_env,
+                                      uv_loop_t* loop)
 +#if !defined(OS_BSD)
-     : NodeBindings(browser_env), epoll_(epoll_create(1)) {
+     : NodeBindings(browser_env, loop), epoll_(epoll_create(1)) {
 +#else
-+    : NodeBindings(browser_env) {
++    : NodeBindings(browser_env, loop) {
 +#endif
 +#if !defined(OS_BSD)
    auto* const event_loop = uv_loop();
  
    int backend_fd = uv_backend_fd(event_loop);
-@@ -17,11 +30,13 @@ NodeBindingsLinux::NodeBindingsLinux(BrowserEnvironmen
+@@ -18,11 +31,13 @@ NodeBindingsLinux::NodeBindingsLinux(BrowserEnvironmen
    ev.events = EPOLLIN;
    ev.data.fd = backend_fd;
    epoll_ctl(epoll_, EPOLL_CTL_ADD, backend_fd, &ev);
@@ -40,7 +41,7 @@
    int timeout = uv_backend_timeout(event_loop);
  
    // Wait for new libuv events.
-@@ -30,6 +45,26 @@ void NodeBindingsLinux::PollEvents() {
+@@ -31,6 +46,26 @@ void NodeBindingsLinux::PollEvents() {
      struct epoll_event ev;
      r = epoll_wait(epoll_, &ev, 1, timeout);
    } while (r == -1 && errno == EINTR);
diff --git a/devel/electron42/files/patch-electron_spec_api-app-spec.ts b/devel/electron42/files/patch-electron_spec_api-app-spec.ts
index 29a7dca1fe6b..b51b11b9c2ee 100644
--- a/devel/electron42/files/patch-electron_spec_api-app-spec.ts
+++ b/devel/electron42/files/patch-electron_spec_api-app-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec/api-app-spec.ts.orig	2026-06-16 15:20:20 UTC
+--- electron/spec/api-app-spec.ts.orig	2026-08-24 01:09:19 UTC
 +++ electron/spec/api-app-spec.ts
 @@ -124,7 +124,7 @@ describe('app module', () => {
      });
@@ -23,8 +23,17 @@
        const languages = app.getPreferredSystemLanguages();
        if (languages.length) {
          expect(languages).to.not.include('C');
-@@ -236,7 +236,7 @@ describe('app module', () => {
-       expect(code).to.equal(123, 'exit code should be 123, if you see this please tag @MarshallOfSound');
+@@ -199,7 +199,7 @@ describe('app module', () => {
+     });
+   });
+ 
+-  ifdescribe(process.platform === 'linux' && fs.existsSync('/usr/bin/dbus-daemon'))(
++  ifdescribe((process.platform === 'linux' || process.platform === 'freebsd') && fs.existsSync('/usr/bin/dbus-daemon'))(
+     'when a D-Bus bus goes away',
+     () => {
+       it('exits cleanly instead of crashing', async () => {
+@@ -290,7 +290,7 @@ describe('app module', () => {
+       }
      });
  
 -    ifit(['darwin', 'linux'].includes(process.platform))('exits gracefully', async function () {
@@ -32,7 +41,7 @@
        const electronPath = process.execPath;
        const appPath = path.join(fixturesPath, 'api', 'singleton');
        appProcess = cp.spawn(electronPath, [appPath]);
-@@ -407,7 +407,7 @@ describe('app module', () => {
+@@ -474,7 +474,7 @@ describe('app module', () => {
    });
  
    // GitHub Actions macOS-13 runners used for x64 seem to have a problem with this test.
@@ -41,7 +50,7 @@
      const tempFiles = [
        path.join(fixturesPath, 'foo.txt'),
        path.join(fixturesPath, 'bar.txt'),
-@@ -536,7 +536,7 @@ describe('app module', () => {
+@@ -603,7 +603,7 @@ describe('app module', () => {
    //   let w = null
  
    //   before(function () {
@@ -50,7 +59,7 @@
    //       this.skip()
    //     }
    //   })
-@@ -649,7 +649,7 @@ describe('app module', () => {
+@@ -716,7 +716,7 @@ describe('app module', () => {
  
    describe('app.badgeCount', () => {
      const platformIsNotSupported =
@@ -59,7 +68,7 @@
  
      const expectedBadgeCount = 42;
  
-@@ -696,7 +696,7 @@ describe('app module', () => {
+@@ -763,7 +763,7 @@ describe('app module', () => {
    });
  
    ifdescribe(
@@ -68,7 +77,7 @@
    )('app.get/setLoginItemSettings API', function () {
      const isMac = process.platform === 'darwin';
      const isWin = process.platform === 'win32';
-@@ -1113,7 +1113,7 @@ describe('app module', () => {
+@@ -1190,7 +1190,7 @@ describe('app module', () => {
      });
    });
  
@@ -77,7 +86,7 @@
      it('is mutable', () => {
        const values = [false, true, false];
        const setters: Array<(arg: boolean) => void> = [
-@@ -1383,7 +1383,7 @@ describe('app module', () => {
+@@ -1460,7 +1460,7 @@ describe('app module', () => {
      });
    });
  
@@ -86,7 +95,7 @@
      let w: BrowserWindow;
  
      before(function () {
-@@ -1526,7 +1526,7 @@ describe('app module', () => {
+@@ -1603,7 +1603,7 @@ describe('app module', () => {
  
    describe('getApplicationNameForProtocol()', () => {
      // TODO: Linux CI doesn't have registered http & https handlers
@@ -95,7 +104,7 @@
        'returns application names for common protocols',
        function () {
          // We can't expect particular app names here, but these protocols should
-@@ -1543,7 +1543,7 @@ describe('app module', () => {
+@@ -1620,7 +1620,7 @@ describe('app module', () => {
        expect(app.getApplicationNameForProtocol('bogus-protocol://')).to.equal('');
      });
  
@@ -104,7 +113,7 @@
        const desktopFileId = 'mock-browser.desktop';
        const mockDisplayName = 'Mock Browser';
        const mockScheme = 'mockproto';
-@@ -1593,7 +1593,7 @@ describe('app module', () => {
+@@ -1670,7 +1670,7 @@ describe('app module', () => {
      let xdgBinDir: string;
  
      before(() => {
@@ -113,7 +122,7 @@
          return;
        }
  
-@@ -1610,7 +1610,7 @@ describe('app module', () => {
+@@ -1687,7 +1687,7 @@ describe('app module', () => {
      });
  
      after(() => {
@@ -122,7 +131,7 @@
          fs.rmSync(xdgDir, { recursive: true, force: true });
        }
      });
-@@ -1622,7 +1622,7 @@ describe('app module', () => {
+@@ -1699,7 +1699,7 @@ describe('app module', () => {
      });
  
      it('returns resolved promise with appPath, displayName and icon', async function () {
@@ -131,7 +140,7 @@
          const appInfo = await spawnProtocolInfoWithXdgMock(`${mockScheme}://`, xdgDataHome, xdgConfigHome);
          expect(appInfo.name).to.equal(mockDisplayName);
          expect(appInfo.path).to.equal('/usr/bin/true');
-@@ -1636,7 +1636,7 @@ describe('app module', () => {
+@@ -1713,7 +1713,7 @@ describe('app module', () => {
        expect(appInfo.icon).not.to.be.undefined();
      });
  
@@ -140,7 +149,7 @@
        const pathLookupExecutable = 'mock-browser';
        const pathLookupExecutablePath = path.join(xdgBinDir, pathLookupExecutable);
        const pathLookupDisplayName = 'Mock Browser PATH';
-@@ -1670,7 +1670,7 @@ describe('app module', () => {
+@@ -1747,7 +1747,7 @@ describe('app module', () => {
      });
    });
  
@@ -149,7 +158,7 @@
      const protocol = 'electron-test-linux';
      const desktopFileId = 'electron-test.desktop';
      const protocolMimeType = `x-scheme-handler/${protocol}`;
-@@ -1787,7 +1787,7 @@ describe('app module', () => {
+@@ -1864,7 +1864,7 @@ describe('app module', () => {
    });
  
    // FIXME Get these specs running on Linux CI
@@ -158,7 +167,7 @@
      const iconPath = path.join(__dirname, 'fixtures/assets/icon.ico');
      const sizes = {
        small: 16,
-@@ -1869,7 +1869,7 @@ describe('app module', () => {
+@@ -1946,7 +1946,7 @@ describe('app module', () => {
            expect(entry.memory).to.have.property('privateBytes').that.is.greaterThan(0);
          }
  
@@ -167,7 +176,7 @@
            expect(entry.sandboxed).to.be.a('boolean');
          }
  
-@@ -1938,7 +1938,7 @@ describe('app module', () => {
+@@ -2015,7 +2015,7 @@ describe('app module', () => {
  
      it('succeeds with complete GPUInfo', async () => {
        const completeInfo = await getGPUInfo('complete');
@@ -176,7 +185,7 @@
          // For linux and macOS complete info is same as basic info
          await verifyBasicGPUInfo(completeInfo);
          const basicInfo = await getGPUInfo('basic');
-@@ -1962,7 +1962,7 @@ describe('app module', () => {
+@@ -2039,7 +2039,7 @@ describe('app module', () => {
      });
    });
  
diff --git a/devel/electron42/files/patch-electron_spec_api-browser-window-spec.ts b/devel/electron42/files/patch-electron_spec_api-browser-window-spec.ts
index 9e4ed528a8c9..7afeaab38535 100644
--- a/devel/electron42/files/patch-electron_spec_api-browser-window-spec.ts
+++ b/devel/electron42/files/patch-electron_spec_api-browser-window-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec/api-browser-window-spec.ts.orig	2026-08-04 15:02:58 UTC
+--- electron/spec/api-browser-window-spec.ts.orig	2026-08-24 01:09:19 UTC
 +++ electron/spec/api-browser-window-spec.ts
 @@ -100,7 +100,7 @@ describe('BrowserWindow module', () => {
        }).not.to.throw();
@@ -108,7 +108,7 @@
            const maximize = once(w, 'maximize');
            w.show();
            w.maximize();
-@@ -4680,7 +4680,7 @@ describe('BrowserWindow module', () => {
+@@ -4750,7 +4750,7 @@ describe('BrowserWindow module', () => {
          expect(test.nodeTimers).to.equal(true);
          expect(test.nodeUrl).to.equal(true);
  
@@ -117,7 +117,7 @@
            expect(test.creationTime).to.be.null('creation time');
            expect(test.systemMemoryInfo).to.be.null('system memory info');
          } else {
-@@ -5196,7 +5196,7 @@ describe('BrowserWindow module', () => {
+@@ -5266,7 +5266,7 @@ describe('BrowserWindow module', () => {
*** 146 LINES SKIPPED ***