git: 0d40f183c67b - main - devel/electron43: Update to 43.6.0

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Fri, 04 Sep 2026 22:54:03 UTC
The branch main has been updated by tagattie:

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

commit 0d40f183c67b1c4b20a6fe4b40b866cff216bd42
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2026-09-04 22:52:50 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2026-09-04 22:53:55 +0000

    devel/electron43: Update to 43.6.0
    
    Changelog:
    - https://github.com/electron/electron/releases/tag/v43.5.1
    - https://github.com/electron/electron/releases/tag/v43.6.0
    
    Reported by:    GitHub (watch releases)
---
 devel/electron43/Makefile                          |  2 +-
 devel/electron43/Makefile.version                  |  2 +-
 devel/electron43/distinfo                          | 18 ++---
 devel/electron43/files/packagejsons/package.json   |  4 +-
 .../fixtures/native-addon/object-wrap/package.json |  9 +++
 .../files/packagejsons/spec/package.json           |  1 +
 devel/electron43/files/packagejsons/yarn.lock      |  7 ++
 .../files/patch-electron_script_spec-runner.js     | 15 +++-
 ...lectron_shell_browser_api_electron__api__app.cc |  6 +-
 ...ell_browser_api_electron__api__web__contents.cc | 16 ++--
 ...hell_browser_api_electron__api__web__contents.h |  4 +-
 ...shell_browser_electron__browser__main__parts.cc | 94 +++++++++++++++++++---
 ..._shell_browser_electron__browser__main__parts.h | 10 +--
 ...ll_common_api_electron__api__shared__texture.cc |  4 +-
 .../files/patch-electron_spec_api-menu-spec.ts     |  4 +-
 ...patch-electron_spec_api-utility-process-spec.ts |  6 +-
 .../patch-electron_spec_api-web-contents-spec.ts   |  4 +-
 .../files/patch-electron_spec_lib_spec-helpers.ts  |  4 +-
 18 files changed, 157 insertions(+), 53 deletions(-)

diff --git a/devel/electron43/Makefile b/devel/electron43/Makefile
index accdb241351b..9764f84b2b2d 100644
--- a/devel/electron43/Makefile
+++ b/devel/electron43/Makefile
@@ -228,7 +228,7 @@ SNDIO_VARS_OFF=		GN_ARGS+=use_sndio=false
 # See ${WRKSRC}/electron/DEPS for CHROMIUM_VER
 CHROMIUM_VER=			150.0.7871.250
 # See ${WRKSRC}/electron/DEPS for NODE_VER
-NODE_VER=			24.19.0
+NODE_VER=			24.20.0
 # See ${WRKSRC}/electron/DEPS for NAN_VER
 NAN_VER=			675cefebca42410733da8a454c8d9391fcebfbc2
 # See ${WRKSRC}/electron/DEPS for SQUIRREL_MAC_VER
diff --git a/devel/electron43/Makefile.version b/devel/electron43/Makefile.version
index 3f1625584a1f..7321b79239ae 100644
--- a/devel/electron43/Makefile.version
+++ b/devel/electron43/Makefile.version
@@ -1,2 +1,2 @@
-ELECTRON_VER=		43.5.0
+ELECTRON_VER=		43.6.0
 ELECTRON_VER_MAJOR=	${ELECTRON_VER:C/\..*//}
diff --git a/devel/electron43/distinfo b/devel/electron43/distinfo
index 5d8d1b59b147..5f4b96d46ffa 100644
--- a/devel/electron43/distinfo
+++ b/devel/electron43/distinfo
@@ -1,4 +1,4 @@
-TIMESTAMP = 1788183284
+TIMESTAMP = 1788529272
 SHA256 (electron/chromium-150.0.7871.250.tar.xz.0) = ff59b1687c8682c9f6138ae24f0e3b0239c035a585857debd902a5783ebed85c
 SIZE (electron/chromium-150.0.7871.250.tar.xz.0) = 2000000000
 SHA256 (electron/chromium-150.0.7871.250.tar.xz.1) = 44420b00bd86f06de3aa57e555df31c80102042ab214a94d0f090f1d64e80786
@@ -417,14 +417,14 @@ SHA256 (electron/rust/crates/zmij-1.0.21.crate) = b8848ee67ecc8aedbaf3e4122217af
 SIZE (electron/rust/crates/zmij-1.0.21.crate) = 26665
 SHA256 (electron/yarn-4.12.0.tgz) = bd58d06826ce9542c4cd904fe10bab7bc718ea2cc39a45d9fbd15f2edb45761c
 SIZE (electron/yarn-4.12.0.tgz) = 1056794
-SHA256 (electron/electron43-43.5.0-node-modules-arm64.tar.xz) = 6a1a0c39a5b18dcdad561b23b15847660e7b51b3be476595e93256c0f91e017a
-SIZE (electron/electron43-43.5.0-node-modules-arm64.tar.xz) = 62711992
-SHA256 (electron/electron43-43.5.0-node-modules-x64.tar.xz) = f57cf602ff06507d38ed76d09e2ee24c350472f99e451bbfb4bc2b5d2c69c8c0
-SIZE (electron/electron43-43.5.0-node-modules-x64.tar.xz) = 71098213
-SHA256 (electron/electron-electron-v43.5.0_GH0.tar.gz) = c330d659335387e6f5f8c6164e01f09891bd273933fb495badc5cef9e4bd96e2
-SIZE (electron/electron-electron-v43.5.0_GH0.tar.gz) = 19737708
-SHA256 (electron/nodejs-node-v24.19.0_GH0.tar.gz) = f06a13587eab05e24972f39628559a942a495f7140b702ce87d79454e2925bb3
-SIZE (electron/nodejs-node-v24.19.0_GH0.tar.gz) = 127452601
+SHA256 (electron/electron43-43.6.0-node-modules-arm64.tar.xz) = 6a1a0c39a5b18dcdad561b23b15847660e7b51b3be476595e93256c0f91e017a
+SIZE (electron/electron43-43.6.0-node-modules-arm64.tar.xz) = 62711992
+SHA256 (electron/electron43-43.6.0-node-modules-x64.tar.xz) = f57cf602ff06507d38ed76d09e2ee24c350472f99e451bbfb4bc2b5d2c69c8c0
+SIZE (electron/electron43-43.6.0-node-modules-x64.tar.xz) = 71098213
+SHA256 (electron/electron-electron-v43.6.0_GH0.tar.gz) = 037e2b5afcd20f1f456755bcd8c6d60198e888b6f90efab3e54fcdd982405455
+SIZE (electron/electron-electron-v43.6.0_GH0.tar.gz) = 19808200
+SHA256 (electron/nodejs-node-v24.20.0_GH0.tar.gz) = d64f066a3e828f1fcc4d8cc063efd35465604923c16fc64f1e66145bef26ce50
+SIZE (electron/nodejs-node-v24.20.0_GH0.tar.gz) = 129491600
 SHA256 (electron/nodejs-nan-675cefebca42410733da8a454c8d9391fcebfbc2_GH0.tar.gz) = 3983c68f19ed75dd37dc228eab385093ae2533132730f253f0c3d19ff10788e3
 SIZE (electron/nodejs-nan-675cefebca42410733da8a454c8d9391fcebfbc2_GH0.tar.gz) = 111323
 SHA256 (electron/Squirrel-Squirrel.Mac-0e5d146ba13101a1302d59ea6e6e0b3cace4ae38_GH0.tar.gz) = f4ebb40a8d85dbb7ef02aa0571b2f8e22182c6d73b6992484a53c90047779d01
diff --git a/devel/electron43/files/packagejsons/package.json b/devel/electron43/files/packagejsons/package.json
index e4ce0ab095b7..b04839eafd85 100644
--- a/devel/electron43/files/packagejsons/package.json
+++ b/devel/electron43/files/packagejsons/package.json
@@ -131,7 +131,9 @@
     ],
     "DEPS": [
       "node script/gen-hunspell-filenames.js",
-      "node script/gen-libc++-filenames.js"
+      "node script/gen-libc++-filenames.js",
+      "node script/gen-siso-revision.js",
+      "git add build/siso_revision"
     ],
     ".github/workflows/pipeline-segment-electron-build.yml": [
       "node script/copy-pipeline-segment-publish.js",
diff --git a/devel/electron43/files/packagejsons/spec/fixtures/native-addon/object-wrap/package.json b/devel/electron43/files/packagejsons/spec/fixtures/native-addon/object-wrap/package.json
new file mode 100644
index 000000000000..964bc2c37e9d
--- /dev/null
+++ b/devel/electron43/files/packagejsons/spec/fixtures/native-addon/object-wrap/package.json
@@ -0,0 +1,9 @@
+{
+  "name": "@electron-ci/object-wrap",
+  "version": "0.0.1",
+  "main": "./lib/object-wrap.js",
+  "electron:requiresElectronHeaders": true,
+  "scripts": {
+    "install": "node-gyp configure && node-gyp build"
+  }
+}
diff --git a/devel/electron43/files/packagejsons/spec/package.json b/devel/electron43/files/packagejsons/spec/package.json
index df8fe98835c4..12ec1036a125 100644
--- a/devel/electron43/files/packagejsons/spec/package.json
+++ b/devel/electron43/files/packagejsons/spec/package.json
@@ -11,6 +11,7 @@
     "@electron-ci/echo": "*",
     "@electron-ci/external-ab": "*",
     "@electron-ci/is-valid-window": "*",
+    "@electron-ci/object-wrap": "*",
     "@electron-ci/osr-gpu": "*",
     "@electron-ci/uv-dlopen": "*",
     "@electron/fuses": "^1.8.0",
diff --git a/devel/electron43/files/packagejsons/yarn.lock b/devel/electron43/files/packagejsons/yarn.lock
index be1d5c8c7f29..873dccc2d793 100644
--- a/devel/electron43/files/packagejsons/yarn.lock
+++ b/devel/electron43/files/packagejsons/yarn.lock
@@ -652,6 +652,12 @@ __metadata:
   languageName: unknown
   linkType: soft
 
+"@electron-ci/object-wrap@npm:*, @electron-ci/object-wrap@workspace:spec/fixtures/native-addon/object-wrap":
+  version: 0.0.0-use.local
+  resolution: "@electron-ci/object-wrap@workspace:spec/fixtures/native-addon/object-wrap"
+  languageName: unknown
+  linkType: soft
+
 "@electron-ci/osr-gpu@npm:*, @electron-ci/osr-gpu@workspace:spec/fixtures/native-addon/osr-gpu":
   version: 0.0.0-use.local
   resolution: "@electron-ci/osr-gpu@workspace:spec/fixtures/native-addon/osr-gpu"
@@ -4445,6 +4451,7 @@ __metadata:
     "@electron-ci/echo": "npm:*"
     "@electron-ci/external-ab": "npm:*"
     "@electron-ci/is-valid-window": "npm:*"
+    "@electron-ci/object-wrap": "npm:*"
     "@electron-ci/osr-gpu": "npm:*"
     "@electron-ci/uv-dlopen": "npm:*"
     "@electron/fuses": "npm:^1.8.0"
diff --git a/devel/electron43/files/patch-electron_script_spec-runner.js b/devel/electron43/files/patch-electron_script_spec-runner.js
index 07151b7d7ce7..939319181d59 100644
--- a/devel/electron43/files/patch-electron_script_spec-runner.js
+++ b/devel/electron43/files/patch-electron_script_spec-runner.js
@@ -1,6 +1,6 @@
---- electron/script/spec-runner.js.orig	2026-07-21 15:33:01 UTC
+--- electron/script/spec-runner.js.orig	2026-09-04 00:15:46 UTC
 +++ electron/script/spec-runner.js
-@@ -543,7 +543,7 @@ async function runTestUsingElectron(specDir, testName,
+@@ -554,7 +554,7 @@ async function runTestUsingElectron(specDir, testName,
      );
    }
    const runnerArgs = [`electron/${specDir}`, ...argsToPass, ...additionalArgs];
@@ -9,7 +9,7 @@
      runnerArgs.unshift(path.resolve(__dirname, 'dbus_mock.py'), exe);
      exe = 'python3';
    }
-@@ -614,7 +614,7 @@ async function installSpecModules(dir) {
+@@ -625,7 +625,7 @@ async function installSpecModules(dir) {
      process.exit(1);
    }
  
@@ -18,3 +18,12 @@
      const { status: rebuildStatus } = childProcess.spawnSync('npm', ['rebuild', 'abstract-socket'], {
        env,
        cwd: dir,
+@@ -703,7 +703,7 @@ function getNativeAddonToolchainEnv() {
+ // the same GCC that rejects the headers, so nothing on that host can build
+ // the fixtures.
+ function getNativeAddonToolchainEnv() {
+-  if (args.electronVersion || process.platform !== 'linux') {
++  if (args.electronVersion || (process.platform !== 'linux' && process.platform !== 'freebsd')) {
+     return {};
+   }
+   const outDir = utils.getOutDir();
diff --git a/devel/electron43/files/patch-electron_shell_browser_api_electron__api__app.cc b/devel/electron43/files/patch-electron_shell_browser_api_electron__api__app.cc
index 75a999058121..64fe09122aad 100644
--- a/devel/electron43/files/patch-electron_shell_browser_api_electron__api__app.cc
+++ b/devel/electron43/files/patch-electron_shell_browser_api_electron__api__app.cc
@@ -1,4 +1,4 @@
---- electron/shell/browser/api/electron_api_app.cc.orig	2026-08-31 00:54:38 UTC
+--- electron/shell/browser/api/electron_api_app.cc.orig	2026-09-04 00:15:46 UTC
 +++ electron/shell/browser/api/electron_api_app.cc
 @@ -110,7 +110,7 @@
  #include "ui/base/resource/resource_bundle.h"
@@ -45,7 +45,7 @@
    // Read the xdg-activation token and set it in the command line for the
    // duration of the notification in order to ensure this is propagated to an
    // already running electron app instance if it exists.
-@@ -1469,7 +1469,7 @@ std::vector<gin_helper::Dictionary> App::GetAppMetrics
+@@ -1470,7 +1470,7 @@ std::vector<gin_helper::Dictionary> App::GetAppMetrics
        pid_dict.Set("name", process_metric.second->name);
      }
  
@@ -54,7 +54,7 @@
      auto memory_info = process_metric.second->GetMemoryInfo();
  
      auto memory_dict = gin_helper::Dictionary::CreateEmpty(isolate);
-@@ -1973,7 +1973,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
+@@ -1974,7 +1974,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
        .SetMethod("getJumpListSettings", &App::GetJumpListSettings)
        .SetMethod("setJumpList", &App::SetJumpList)
  #endif
diff --git a/devel/electron43/files/patch-electron_shell_browser_api_electron__api__web__contents.cc b/devel/electron43/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
index 8d96a73bab67..8680582388be 100644
--- a/devel/electron43/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
+++ b/devel/electron43/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-31 00:54:38 UTC
+--- electron/shell/browser/api/electron_api_web_contents.cc.orig	2026-09-04 00:15:46 UTC
 +++ electron/shell/browser/api/electron_api_web_contents.cc
-@@ -182,11 +182,11 @@
+@@ -184,11 +184,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
-@@ -216,7 +216,7 @@
+@@ -218,7 +218,7 @@
  #include "content/public/browser/plugin_service.h"
  #endif
  
@@ -23,7 +23,7 @@
  #include "chrome/browser/hang_monitor/hang_crash_dump.h"  // nogncheck
  #endif
  
-@@ -639,7 +639,7 @@ std::optional<base::TimeDelta> GetCursorBlinkInterval(
+@@ -653,7 +653,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)
-@@ -1036,7 +1036,7 @@ void WebContents::InitWithSessionAndOptions(
+@@ -1055,7 +1055,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));
-@@ -3103,13 +3103,13 @@ void WebContents::ForcefullyCrashRenderer() {
+@@ -3170,13 +3170,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);
-@@ -3746,7 +3746,7 @@ void WebContents::Focus() {
+@@ -3813,7 +3813,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
-@@ -4645,7 +4645,7 @@ ui::ImageModel WebContents::GetDevToolsWindowIcon() {
+@@ -4712,7 +4712,7 @@ ui::ImageModel WebContents::GetDevToolsWindowIcon() {
  }
  #endif
  
diff --git a/devel/electron43/files/patch-electron_shell_browser_api_electron__api__web__contents.h b/devel/electron43/files/patch-electron_shell_browser_api_electron__api__web__contents.h
index b49ef1771b3b..4786b3fdd37e 100644
--- a/devel/electron43/files/patch-electron_shell_browser_api_electron__api__web__contents.h
+++ b/devel/electron43/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-31 00:54:38 UTC
+--- electron/shell/browser/api/electron_api_web_contents.h.orig	2026-09-04 00:15:46 UTC
 +++ electron/shell/browser/api/electron_api_web_contents.h
-@@ -773,7 +773,7 @@ class WebContents final : public ExclusiveAccessContex
+@@ -777,7 +777,7 @@ class WebContents final : public ExclusiveAccessContex
  #if defined(TOOLKIT_VIEWS) && !BUILDFLAG(IS_MAC)
    ui::ImageModel GetDevToolsWindowIcon() override;
  #endif
diff --git a/devel/electron43/files/patch-electron_shell_browser_electron__browser__main__parts.cc b/devel/electron43/files/patch-electron_shell_browser_electron__browser__main__parts.cc
index 2e86308ddb6f..0b12aa639448 100644
--- a/devel/electron43/files/patch-electron_shell_browser_electron__browser__main__parts.cc
+++ b/devel/electron43/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-31 00:54:38 UTC
+--- electron/shell/browser/electron_browser_main_parts.cc.orig	2026-09-04 00:15:46 UTC
 +++ electron/shell/browser/electron_browser_main_parts.cc
 @@ -81,7 +81,7 @@
  #include "ui/wm/core/wm_state.h"
@@ -6,10 +6,10 @@
  
 -#if BUILDFLAG(IS_LINUX)
 +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include <dlfcn.h>
+ 
  #include "base/environment.h"
- #include "chrome/browser/ui/views/dark_mode_manager_linux.h"
- #include "components/dbus/thread_linux/dbus_thread_linux.h"
-@@ -139,7 +139,7 @@ namespace {
+@@ -141,7 +141,7 @@ namespace {
  
  namespace {
  
@@ -18,7 +18,66 @@
  // 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.
-@@ -356,7 +356,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
+@@ -213,13 +213,17 @@ ElectronBrowserMainParts::ElectronBrowserMainParts()
+   self_ = this;
+ }
+ 
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ namespace {
+ 
+ // Resolved via dlsym: a direct reference would bind to Chromium's bundled
+ // FontConfig rather than the system copy GTK and Pango use.
+ void* SystemFontConfigSymbol(const char* name) {
++#if BUILDFLAG(IS_BSD)
++  void* lib = dlopen("libfontconfig.so", RTLD_NOW);
++#else
+   void* lib = dlopen("libfontconfig.so.1", RTLD_NOW);
++#endif
+   return lib ? dlsym(lib, name) : nullptr;
+ }
+ 
+@@ -250,10 +254,10 @@ std::vector<std::optional<std::string>> SnapshotFontCo
+ }
+ 
+ }  // namespace
+-#endif  // BUILDFLAG(IS_LINUX)
++#endif  // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ 
+ ElectronBrowserMainParts::~ElectronBrowserMainParts() {
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+   JoinSystemFontConfigInit();
+ #endif
+ }
+@@ -320,7 +324,7 @@ void ElectronBrowserMainParts::PostEarlyInitialization
+ 
+   node_bindings_->Initialize(isolate, context);
+ 
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+   // Runs during Node.js environment creation and is joined before any app
+   // code can run, so nothing else touches FontConfig or the environment.
+   const auto fontconfig_env = SnapshotFontConfigEnv();
+@@ -356,7 +360,7 @@ void ElectronBrowserMainParts::PostEarlyInitialization
+   // Wrap the uv loop with global env.
+   node_bindings_->set_uv_env(node_env_.get());
+ 
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+   JoinSystemFontConfigInit();
+ #endif
+ 
+@@ -366,7 +370,7 @@ void ElectronBrowserMainParts::PostEarlyInitialization
+   // Wait for app
+   node_bindings_->JoinAppCode();
+ 
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+   // Reload if the app's main script changed the FontConfig environment.
+   if (fontconfig_env != SnapshotFontConfigEnv()) {
+     if (auto fc_reinit = reinterpret_cast<int (*)()>(
+@@ -426,7 +430,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
    // happen before the ResourceBundle is loaded
    if (locale.empty())
      l10n_util::OverrideLocaleWithCocoaLocale();
@@ -27,7 +86,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
-@@ -385,7 +385,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
+@@ -455,7 +459,7 @@ int ElectronBrowserMainParts::PreCreateThreads() {
    ElectronBrowserClient::SetApplicationLocale(app_locale);
    fake_browser_process_->SetApplicationLocale(app_locale);
  
@@ -36,7 +95,7 @@
    // Reset to the original LC_ALL since we should not be changing it.
    if (!locale.empty()) {
      if (lc_all)
-@@ -441,7 +441,7 @@ void ElectronBrowserMainParts::ToolkitInitialized() {
+@@ -511,7 +515,7 @@ void ElectronBrowserMainParts::ToolkitInitialized() {
  }
  
  void ElectronBrowserMainParts::ToolkitInitialized() {
@@ -45,7 +104,24 @@
    // GTK3's gtk_init() probes the display for OpenGL and loads the GL driver
    // into this process; nothing here uses GdkGLContext. GDK_GL is read once at
    // init and only by GTK3 (GTK4 renders with GL itself and ignores it).
-@@ -562,19 +562,23 @@ void ElectronBrowserMainParts::PostCreateMainMessageLo
+@@ -561,14 +565,14 @@ void ElectronBrowserMainParts::ToolkitInitialized() {
+ #endif
+ }
+ 
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ void ElectronBrowserMainParts::JoinSystemFontConfigInit() {
+   if (system_fontconfig_thread_.is_null())
+     return;
+   base::PlatformThread::Join(system_fontconfig_thread_);
+   system_fontconfig_thread_ = base::PlatformThreadHandle();
+ }
+-#endif  // BUILDFLAG(IS_LINUX)
++#endif  // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ 
+ int ElectronBrowserMainParts::PreMainMessageLoopRun() {
+   // Run user's main script before most things get initialized, so we can have
+@@ -641,19 +645,23 @@ void ElectronBrowserMainParts::PostCreateMainMessageLo
  }
  
  void ElectronBrowserMainParts::PostCreateMainMessageLoop() {
@@ -71,7 +147,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.
-@@ -671,7 +675,7 @@ void ElectronBrowserMainParts::PostMainMessageLoopRun(
+@@ -750,7 +758,7 @@ void ElectronBrowserMainParts::PostMainMessageLoopRun(
    fake_browser_process_->PostMainMessageLoopRun();
    content::DevToolsAgentHost::StopRemoteDebuggingPipeHandler();
  
diff --git a/devel/electron43/files/patch-electron_shell_browser_electron__browser__main__parts.h b/devel/electron43/files/patch-electron_shell_browser_electron__browser__main__parts.h
index 59d29a3ceaf4..42c3f78be5cc 100644
--- a/devel/electron43/files/patch-electron_shell_browser_electron__browser__main__parts.h
+++ b/devel/electron43/files/patch-electron_shell_browser_electron__browser__main__parts.h
@@ -1,11 +1,11 @@
---- electron/shell/browser/electron_browser_main_parts.h.orig	2026-03-31 13:26:31 UTC
+--- electron/shell/browser/electron_browser_main_parts.h.orig	2026-09-04 00:15:46 UTC
 +++ electron/shell/browser/electron_browser_main_parts.h
-@@ -143,7 +143,7 @@ class ElectronBrowserMainParts : public content::Brows
+@@ -144,7 +144,7 @@ class ElectronBrowserMainParts : public content::Brows
    std::unique_ptr<display::Screen> screen_;
  #endif
  
 -#if BUILDFLAG(IS_LINUX)
 +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
-   std::unique_ptr<ui::DarkModeManagerLinux> dark_mode_manager_;
-   std::unique_ptr<ui::LinuxUiGetter> linux_ui_getter_;
- #endif
+   void JoinSystemFontConfigInit();
+ 
+   base::PlatformThreadHandle system_fontconfig_thread_;
diff --git a/devel/electron43/files/patch-electron_shell_common_api_electron__api__shared__texture.cc b/devel/electron43/files/patch-electron_shell_common_api_electron__api__shared__texture.cc
index 9b7699e5998d..0e1f8f529d6b 100644
--- a/devel/electron43/files/patch-electron_shell_common_api_electron__api__shared__texture.cc
+++ b/devel/electron43/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-08-31 00:54:38 UTC
+--- electron/shell/common/api/electron_api_shared_texture.cc.orig	2026-09-04 00:15:46 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
@@ -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);
-@@ -737,7 +737,7 @@ v8::Local<v8::Value> ImportSharedTexture(v8::Isolate* 
+@@ -741,7 +741,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/electron43/files/patch-electron_spec_api-menu-spec.ts b/devel/electron43/files/patch-electron_spec_api-menu-spec.ts
index 5a21975ec2b2..018e581ed194 100644
--- a/devel/electron43/files/patch-electron_spec_api-menu-spec.ts
+++ b/devel/electron43/files/patch-electron_spec_api-menu-spec.ts
@@ -1,6 +1,6 @@
---- electron/spec/api-menu-spec.ts.orig	2026-06-09 06:05:33 UTC
+--- electron/spec/api-menu-spec.ts.orig	2026-09-04 00:15:46 UTC
 +++ electron/spec/api-menu-spec.ts
-@@ -930,7 +930,7 @@ describe('Menu module', function () {
+@@ -955,7 +955,7 @@ describe('Menu module', function () {
      // https://github.com/electron/electron/issues/35724
      // Maximizing window is enough to trigger the bug
      // FIXME(dsanders11): Test always passes on CI, even pre-fix
diff --git a/devel/electron43/files/patch-electron_spec_api-utility-process-spec.ts b/devel/electron43/files/patch-electron_spec_api-utility-process-spec.ts
index 440da341fe8e..91a25ac4695d 100644
--- a/devel/electron43/files/patch-electron_spec_api-utility-process-spec.ts
+++ b/devel/electron43/files/patch-electron_spec_api-utility-process-spec.ts
@@ -1,6 +1,6 @@
---- electron/spec/api-utility-process-spec.ts.orig	2026-08-31 00:54:38 UTC
+--- electron/spec/api-utility-process-spec.ts.orig	2026-09-04 00:15:46 UTC
 +++ electron/spec/api-utility-process-spec.ts
-@@ -624,7 +624,7 @@ describe('utilityProcess module', () => {
+@@ -600,7 +600,7 @@ describe('utilityProcess module', () => {
        expect(output).to.include(result);
      });
  
@@ -9,7 +9,7 @@
        const message = 'Message from utility process';
        const child = utilityProcess.fork(path.join(fixturesPath, 'expose-main-process-module.js'));
        await once(child, 'spawn');
-@@ -661,7 +661,7 @@ describe('utilityProcess module', () => {
+@@ -637,7 +637,7 @@ describe('utilityProcess module', () => {
        await closeWindow(w);
      });
  
diff --git a/devel/electron43/files/patch-electron_spec_api-web-contents-spec.ts b/devel/electron43/files/patch-electron_spec_api-web-contents-spec.ts
index ba6ef46d163c..52d167fbf237 100644
--- a/devel/electron43/files/patch-electron_spec_api-web-contents-spec.ts
+++ b/devel/electron43/files/patch-electron_spec_api-web-contents-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec/api-web-contents-spec.ts.orig	2026-08-31 00:54:38 UTC
+--- electron/spec/api-web-contents-spec.ts.orig	2026-09-04 00:15:46 UTC
 +++ electron/spec/api-web-contents-spec.ts
 @@ -1579,7 +1579,7 @@ describe('webContents module', () => {
      // back to OpenFolder() which does a blocking DirectoryExists() on the UI
@@ -9,7 +9,7 @@
        'reveals paths under a registered workspace folder without executing them',
        async () => {
          const w = new BrowserWindow({ show: false });
-@@ -3698,7 +3698,7 @@ describe('webContents module', () => {
+@@ -3965,7 +3965,7 @@ describe('webContents module', () => {
      });
  
      // TODO(codebytere): OOPIF printing is disabled on Linux at the moment due to crashes.
diff --git a/devel/electron43/files/patch-electron_spec_lib_spec-helpers.ts b/devel/electron43/files/patch-electron_spec_lib_spec-helpers.ts
index 571ecb14103e..37ff6a9ea1f6 100644
--- a/devel/electron43/files/patch-electron_spec_lib_spec-helpers.ts
+++ b/devel/electron43/files/patch-electron_spec_lib_spec-helpers.ts
@@ -1,6 +1,6 @@
---- electron/spec/lib/spec-helpers.ts.orig	2026-05-08 13:54:01 UTC
+--- electron/spec/lib/spec-helpers.ts.orig	2026-09-04 00:15:46 UTC
 +++ electron/spec/lib/spec-helpers.ts
-@@ -27,7 +27,7 @@ export const isWayland =
+@@ -28,7 +28,7 @@ export const isWayland =
  export const ifdescribe = (condition: boolean) => (condition ? describe : addOnly<SuiteFunction>(describe.skip));
  
  export const isWayland =