git: 2604dc1239b6 - main - devel/electron41: Update to 41.2.1

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Tue, 21 Apr 2026 07:44:28 UTC
The branch main has been updated by tagattie:

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

commit 2604dc1239b6c7cb57a36eef1c3ffc7b1ae12efc
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2026-04-21 07:42:46 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2026-04-21 07:44:16 +0000

    devel/electron41: Update to 41.2.1
    
    Changelog: https://github.com/electron/electron/releases/tag/v41.2.1
    
    Reported by:    GitHub (watch releases)
---
 devel/electron41/Makefile                          | 20 ++++++++++---
 devel/electron41/Makefile.version                  |  2 +-
 devel/electron41/distinfo                          | 22 ++++++++------
 devel/electron41/files/patch-electron_BUILD.gn     | 14 ++++-----
 .../patch-electron_default__app_default__app.ts    |  4 +--
 .../files/patch-electron_shell_app_node__main.cc   |  4 +--
 ...lectron_shell_browser_api_electron__api__app.cc | 18 ++++++------
 ...shell_browser_api_electron__api__base__window.h |  4 +--
 ...ell_browser_api_electron__api__web__contents.cc |  8 ++---
 ...lectron_shell_browser_browser__process__impl.cc |  6 ++--
 ...electron_shell_browser_browser__process__impl.h |  6 ++--
 ...electron_shell_browser_native__window__views.cc | 34 +++++++++++-----------
 ...-electron_shell_browser_native__window__views.h |  6 ++--
 ...shell_browser_osr_osr__host__display__client.cc |  4 +--
 ...ctron_shell_browser_osr_osr__video__consumer.cc |  4 +--
 ..._shell_browser_ui_inspectable__web__contents.cc | 14 ++++-----
 .../patch-electron_spec_api-browser-window-spec.ts |  4 +--
 .../patch-electron_spec_api-crash-reporter-spec.ts |  8 ++---
 ...atch-electron_spec_api-desktop-capturer-spec.ts | 23 ++++++++++-----
 .../patch-electron_spec_api-web-contents-spec.ts   | 13 +++++++--
 .../files/patch-electron_spec_chromium-spec.ts     |  6 ++--
 ...derer_platform_runtime__enabled__features.json5 | 10 +++----
 ...atch-ui_gtk_select__file__dialog__linux__gtk.cc |  4 +--
 23 files changed, 136 insertions(+), 102 deletions(-)

diff --git a/devel/electron41/Makefile b/devel/electron41/Makefile
index 6535339b4256..0935cc80d476 100644
--- a/devel/electron41/Makefile
+++ b/devel/electron41/Makefile
@@ -4,12 +4,15 @@ DISTVERSION=	${ELECTRON_VER}
 PULSEMV=	16
 PULSEV=		${PULSEMV}.1
 CATEGORIES=	devel
-MASTER_SITES=	https://commondatastorage.googleapis.com/chromium-browser-official/:chromium \
+MASTER_SITES=	https://github.com/tagattie/FreeBSD-Electron/releases/download/v41.2.1/:chromium \
 		https://freedesktop.org/software/pulseaudio/releases/:pulseaudio
 PKGNAMESUFFIX=	${ELECTRON_VER_MAJOR}
-DISTFILES=	chromium-${CHROMIUM_VER}-lite${EXTRACT_SUFX}:chromium \
+DISTFILES=	chromium-${CHROMIUM_VER}${EXTRACT_SUFX}.0:chromium \
+		chromium-${CHROMIUM_VER}${EXTRACT_SUFX}.1:chromium \
+		chromium-${CHROMIUM_VER}${EXTRACT_SUFX}.2:chromium \
 		pulseaudio-${PULSEV}.tar.gz:pulseaudio
 DIST_SUBDIR=	${PORTNAME}
+EXTRACT_ONLY=	${DISTFILES:C/:[^:]+$//:C/chromium-${CHROMIUM_VER}${EXTRACT_SUFX}\.[0-9]//}
 
 MAINTAINER=	tagattie@FreeBSD.org
 COMMENT=	Build cross-platform desktop apps with JavaScript, HTML, and CSS
@@ -221,9 +224,9 @@ SNDIO_VARS=		GN_ARGS+=use_sndio=true
 SNDIO_VARS_OFF=		GN_ARGS+=use_sndio=false
 
 # See ${WRKSRC}/electron/DEPS for CHROMIUM_VER
-CHROMIUM_VER=			146.0.7680.179
+CHROMIUM_VER=			146.0.7680.188
 # See ${WRKSRC}/electron/DEPS for NODE_VER
-NODE_VER=			24.14.0
+NODE_VER=			24.14.1
 # See ${WRKSRC}/electron/DEPS for NAN_VER
 NAN_VER=			675cefebca42410733da8a454c8d9391fcebfbc2
 # See ${WRKSRC}/electron/DEPS for SQUIRREL_MAC_VER
@@ -305,6 +308,15 @@ pre-everything::
 	@${ECHO_MSG} "and around ${WANTSPACE} of free disk space."
 	@${ECHO_MSG}
 
+pre-extract:
+# Chromium source tarball is splitted into multiple fragments. Concatenate them
+# into a single one and manually extract it into WRKDIR.
+	@${CAT} ${DISTDIR}/${DIST_SUBDIR}/chromium-${CHROMIUM_VER}${EXTRACT_SUFX}.? > \
+		${WRKDIR}/chromium-${CHROMIUM_VER}${EXTRACT_SUFX}
+	@cd ${WRKDIR} && \
+	${EXTRACT_CMD} ${EXTRACT_BEFORE_ARGS} \
+		chromium-${CHROMIUM_VER}${EXTRACT_SUFX} ${EXTRACT_AFTER_ARGS}
+
 post-extract:
 	# Move extracted sources to appropriate locations
 	${MV} ${WRKDIR}/chromium-${CHROMIUM_VER} \
diff --git a/devel/electron41/Makefile.version b/devel/electron41/Makefile.version
index 6750b4c6d762..e3f227113177 100644
--- a/devel/electron41/Makefile.version
+++ b/devel/electron41/Makefile.version
@@ -1,2 +1,2 @@
-ELECTRON_VER=	41.2.0
+ELECTRON_VER=		41.2.1
 ELECTRON_VER_MAJOR=	${ELECTRON_VER:C/\..*//}
diff --git a/devel/electron41/distinfo b/devel/electron41/distinfo
index fe85f95bb508..e93d98d79814 100644
--- a/devel/electron41/distinfo
+++ b/devel/electron41/distinfo
@@ -1,6 +1,10 @@
-TIMESTAMP = 1776245935
-SHA256 (electron/chromium-146.0.7680.179-lite.tar.xz) = 16800d0b92057f0014cbfb91c88bd66206c7624e3a8634a90dd6c87f37f20f58
-SIZE (electron/chromium-146.0.7680.179-lite.tar.xz) = 1476941696
+TIMESTAMP = 1776597735
+SHA256 (electron/chromium-146.0.7680.188.tar.xz.0) = fe0dd625b47d1a0594b20d8c748da45c023da315b4a8f2fc3944b96149330cc6
+SIZE (electron/chromium-146.0.7680.188.tar.xz.0) = 2000000000
+SHA256 (electron/chromium-146.0.7680.188.tar.xz.1) = 3a0320e66c708c527dbc39a9e21051d6146e039a50b57209ec069e808369e6ce
+SIZE (electron/chromium-146.0.7680.188.tar.xz.1) = 2000000000
+SHA256 (electron/chromium-146.0.7680.188.tar.xz.2) = 08c4ae08a2605728ed16524bcd0c930434c09f1aee9342344a2e632d25ade73a
+SIZE (electron/chromium-146.0.7680.188.tar.xz.2) = 740905224
 SHA256 (electron/pulseaudio-16.1.tar.gz) = 027266c62f2a84422ac45fa721a649508f0f1628fb1fd9242315ac54ce2d7c92
 SIZE (electron/pulseaudio-16.1.tar.gz) = 2763111
 SHA256 (electron/rust/crates/Inflector-0.11.4.crate) = fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3
@@ -337,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/electron41-41.2.0-node-modules.tar.xz) = 9ded0bbcd3c5db0b211a670695a5cd39b06240eb3cde395fcc8990702f45da14
-SIZE (electron/electron41-41.2.0-node-modules.tar.xz) = 63583255
-SHA256 (electron/electron-electron-v41.2.0_GH0.tar.gz) = 0da74eda01b0db686a0bd916ed287b6f85f6b705f2666cddd10ebb93639cadbf
-SIZE (electron/electron-electron-v41.2.0_GH0.tar.gz) = 17211528
-SHA256 (electron/nodejs-node-v24.14.0_GH0.tar.gz) = f3a7374f7d0a3b3dcd1b612dd2bf1ffbe7ace778c02c027efaaacbad1e17390a
-SIZE (electron/nodejs-node-v24.14.0_GH0.tar.gz) = 126199657
+SHA256 (electron/electron41-41.2.1-node-modules.tar.xz) = 9ded0bbcd3c5db0b211a670695a5cd39b06240eb3cde395fcc8990702f45da14
+SIZE (electron/electron41-41.2.1-node-modules.tar.xz) = 63583255
+SHA256 (electron/electron-electron-v41.2.1_GH0.tar.gz) = ca1d8c95ec295f2945f6dc8cc0ddc4be6a2f38a2e661f4ab8e03f94ec2c0a83a
+SIZE (electron/electron-electron-v41.2.1_GH0.tar.gz) = 17239327
+SHA256 (electron/nodejs-node-v24.14.1_GH0.tar.gz) = dd9da50596e7b1c4edeb56daf0e81f57e1b61e43c36f40eadeee77be7d779e08
+SIZE (electron/nodejs-node-v24.14.1_GH0.tar.gz) = 126384322
 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/electron41/files/patch-electron_BUILD.gn b/devel/electron41/files/patch-electron_BUILD.gn
index 13e84ef73413..07a399eabb58 100644
--- a/devel/electron41/files/patch-electron_BUILD.gn
+++ b/devel/electron41/files/patch-electron_BUILD.gn
@@ -1,6 +1,6 @@
---- electron/BUILD.gn.orig	2026-03-17 08:46:52 UTC
+--- electron/BUILD.gn.orig	2026-04-15 14:10:25 UTC
 +++ electron/BUILD.gn
-@@ -552,7 +552,7 @@ source_set("electron_lib") {
+@@ -553,7 +553,7 @@ source_set("electron_lib") {
      defines += [ "GDK_DISABLE_DEPRECATION_WARNINGS" ]
    }
  
@@ -9,7 +9,7 @@
      deps += [
        "//components/crash/core/app",
        "//components/crash/core/browser",
-@@ -651,6 +651,12 @@ source_set("electron_lib") {
+@@ -652,6 +652,12 @@ source_set("electron_lib") {
        cflags_objcc = [ "-fobjc-weak" ]
      }
    }
@@ -22,7 +22,7 @@
    if (is_linux) {
      libs = [ "xshmfence" ]
      deps += [
-@@ -1236,7 +1242,7 @@ if (is_mac) {
+@@ -1237,7 +1243,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",
-@@ -1263,7 +1269,7 @@ if (is_mac) {
+@@ -1264,7 +1270,7 @@ if (is_mac) {
        public_deps = [ "//tools/v8_context_snapshot" ]
      }
  
@@ -40,7 +40,7 @@
        data_deps += [ "//components/crash/core/app:chrome_crashpad_handler" ]
      }
  
-@@ -1330,7 +1336,7 @@ if (is_mac) {
+@@ -1331,7 +1337,7 @@ if (is_mac) {
          configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
        }
  
@@ -49,7 +49,7 @@
          deps += [ "//sandbox/linux:chrome_sandbox" ]
        }
      }
-@@ -1451,7 +1457,9 @@ dist_zip("electron_dist_zip") {
+@@ -1452,7 +1458,9 @@ dist_zip("electron_dist_zip") {
        ]
      }
  
diff --git a/devel/electron41/files/patch-electron_default__app_default__app.ts b/devel/electron41/files/patch-electron_default__app_default__app.ts
index 8af59e14c83f..60b7c1ac688b 100644
--- a/devel/electron41/files/patch-electron_default__app_default__app.ts
+++ b/devel/electron41/files/patch-electron_default__app_default__app.ts
@@ -1,6 +1,6 @@
---- electron/default_app/default_app.ts.orig	2024-10-09 13:53:06 UTC
+--- electron/default_app/default_app.ts.orig	2026-04-15 14:10:25 UTC
 +++ electron/default_app/default_app.ts
-@@ -61,7 +61,7 @@ async function createWindow (backgroundColor?: string)
+@@ -101,7 +101,7 @@ async function createWindow (backgroundColor?: string)
      show: false
    };
  
diff --git a/devel/electron41/files/patch-electron_shell_app_node__main.cc b/devel/electron41/files/patch-electron_shell_app_node__main.cc
index 80376104ca3f..9f82dd18173f 100644
--- a/devel/electron41/files/patch-electron_shell_app_node__main.cc
+++ b/devel/electron41/files/patch-electron_shell_app_node__main.cc
@@ -1,4 +1,4 @@
---- electron/shell/app/node_main.cc.orig	2026-01-15 18:39:20 UTC
+--- electron/shell/app/node_main.cc.orig	2026-04-15 14:10:25 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);
-@@ -291,7 +291,7 @@ int NodeMain() {
+@@ -296,7 +296,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/electron41/files/patch-electron_shell_browser_api_electron__api__app.cc b/devel/electron41/files/patch-electron_shell_browser_api_electron__api__app.cc
index 298ca85172d2..7e6775952bde 100644
--- a/devel/electron41/files/patch-electron_shell_browser_api_electron__api__app.cc
+++ b/devel/electron41/files/patch-electron_shell_browser_api_electron__api__app.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/api/electron_api_app.cc.orig	2026-03-17 08:46:52 UTC
+--- electron/shell/browser/api/electron_api_app.cc.orig	2026-04-15 14:10:25 UTC
 +++ electron/shell/browser/api/electron_api_app.cc
-@@ -100,7 +100,7 @@
+@@ -101,7 +101,7 @@
  #include "shell/common/process_util.h"
  #endif
  
@@ -9,7 +9,7 @@
  #include "base/nix/scoped_xdg_activation_token_injector.h"
  #include "base/nix/xdg_util.h"
  #endif
-@@ -428,7 +428,7 @@ bool NotificationCallbackWrapper(
+@@ -429,7 +429,7 @@ bool NotificationCallbackWrapper(
      base::CommandLine cmd,
      const base::FilePath& cwd,
      const std::vector<uint8_t> additional_data) {
@@ -18,7 +18,7 @@
    // Set the global activation token sent as a command line switch by another
    // electron app instance. This also removes the switch after use to prevent
    // any side effects of leaving it in the command line after this point.
-@@ -613,7 +613,7 @@ void App::OnFinishLaunching(base::DictValue launch_inf
+@@ -614,7 +614,7 @@ void App::OnFinishLaunching(base::DictValue launch_inf
  }
  
  void App::OnFinishLaunching(base::DictValue launch_info) {
@@ -27,7 +27,7 @@
    // Set the application name for audio streams shown in external
    // applications. Only affects pulseaudio currently.
    media::AudioManager::SetGlobalAppName(Browser::Get()->GetName());
-@@ -962,7 +962,7 @@ void App::SetDesktopName(const std::string& desktop_na
+@@ -963,7 +963,7 @@ void App::SetDesktopName(const std::string& desktop_na
  }
  
  void App::SetDesktopName(const std::string& desktop_name) {
@@ -36,7 +36,7 @@
    auto env = base::Environment::Create();
    env->SetVar("CHROME_DESKTOP", desktop_name);
  #endif
-@@ -1066,7 +1066,7 @@ bool App::RequestSingleInstanceLock(gin::Arguments* ar
+@@ -1065,7 +1065,7 @@ bool App::RequestSingleInstanceLock(gin::Arguments* ar
        base::BindRepeating(NotificationCallbackWrapper, cb));
  #endif
  
@@ -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.
-@@ -1453,7 +1453,7 @@ std::vector<gin_helper::Dictionary> App::GetAppMetrics
+@@ -1452,7 +1452,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);
-@@ -1855,7 +1855,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
+@@ -1854,7 +1854,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
        .SetMethod(
            "removeAsDefaultProtocolClient",
            base::BindRepeating(&Browser::RemoveAsDefaultProtocolClient, browser))
@@ -63,7 +63,7 @@
        .SetMethod(
            "getApplicationInfoForProtocol",
            base::BindRepeating(&Browser::GetApplicationInfoForProtocol, browser))
-@@ -1913,7 +1913,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
+@@ -1912,7 +1912,7 @@ gin::ObjectTemplateBuilder App::GetObjectTemplateBuild
        .SetMethod("getJumpListSettings", &App::GetJumpListSettings)
        .SetMethod("setJumpList", &App::SetJumpList)
  #endif
diff --git a/devel/electron41/files/patch-electron_shell_browser_api_electron__api__base__window.h b/devel/electron41/files/patch-electron_shell_browser_api_electron__api__base__window.h
index 2e7f9d9cd469..874f3557cf1b 100644
--- a/devel/electron41/files/patch-electron_shell_browser_api_electron__api__base__window.h
+++ b/devel/electron41/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-03-31 13:26:31 UTC
+--- electron/shell/browser/api/electron_api_base_window.h.orig	2026-04-15 14:10:25 UTC
 +++ electron/shell/browser/api/electron_api_base_window.h
-@@ -262,7 +262,7 @@ class BaseWindow : public gin_helper::TrackableObject<
+@@ -264,7 +264,7 @@ class BaseWindow : public gin_helper::TrackableObject<
    v8::Local<v8::Value> GetAccentColor() const;
  #endif
  
diff --git a/devel/electron41/files/patch-electron_shell_browser_api_electron__api__web__contents.cc b/devel/electron41/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
index 15c69ba61b09..74df305bd0f2 100644
--- a/devel/electron41/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
+++ b/devel/electron41/files/patch-electron_shell_browser_api_electron__api__web__contents.cc
@@ -1,4 +1,4 @@
---- electron/shell/browser/api/electron_api_web_contents.cc.orig	2026-04-07 01:35:50 UTC
+--- electron/shell/browser/api/electron_api_web_contents.cc.orig	2026-04-15 14:10:25 UTC
 +++ electron/shell/browser/api/electron_api_web_contents.cc
 @@ -164,11 +164,11 @@
  #include "ui/base/cocoa/defaults_utils.h"
@@ -41,7 +41,7 @@
    // Update font settings.
    static const gfx::FontRenderParams params(
        gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr));
-@@ -2824,13 +2824,13 @@ void WebContents::ForcefullyCrashRenderer() {
+@@ -2830,13 +2830,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);
-@@ -3532,7 +3532,7 @@ void WebContents::Focus() {
+@@ -3540,7 +3540,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
-@@ -4429,7 +4429,7 @@ ui::ImageModel WebContents::GetDevToolsWindowIcon() {
+@@ -4437,7 +4437,7 @@ ui::ImageModel WebContents::GetDevToolsWindowIcon() {
  }
  #endif
  
diff --git a/devel/electron41/files/patch-electron_shell_browser_browser__process__impl.cc b/devel/electron41/files/patch-electron_shell_browser_browser__process__impl.cc
index 65ad8a016001..5e019336ebad 100644
--- a/devel/electron41/files/patch-electron_shell_browser_browser__process__impl.cc
+++ b/devel/electron41/files/patch-electron_shell_browser_browser__process__impl.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/browser_process_impl.cc.orig	2026-03-17 08:46:52 UTC
+--- electron/shell/browser/browser_process_impl.cc.orig	2026-04-15 14:10:25 UTC
 +++ electron/shell/browser/browser_process_impl.cc
-@@ -356,7 +356,7 @@ electron::ResolveProxyHelper* BrowserProcessImpl::GetR
+@@ -368,7 +368,7 @@ electron::ResolveProxyHelper* BrowserProcessImpl::GetR
    return resolve_proxy_helper_.get();
  }
  
@@ -9,7 +9,7 @@
  void BrowserProcessImpl::SetLinuxStorageBackend(
      os_crypt::SelectedLinuxBackend selected_backend) {
    switch (selected_backend) {
-@@ -379,7 +379,7 @@ void BrowserProcessImpl::SetLinuxStorageBackend(
+@@ -391,7 +391,7 @@ void BrowserProcessImpl::SetLinuxStorageBackend(
        NOTREACHED();
    }
  }
diff --git a/devel/electron41/files/patch-electron_shell_browser_browser__process__impl.h b/devel/electron41/files/patch-electron_shell_browser_browser__process__impl.h
index b908063e459b..7a550250d201 100644
--- a/devel/electron41/files/patch-electron_shell_browser_browser__process__impl.h
+++ b/devel/electron41/files/patch-electron_shell_browser_browser__process__impl.h
@@ -1,4 +1,4 @@
---- electron/shell/browser/browser_process_impl.h.orig	2026-03-17 08:46:52 UTC
+--- electron/shell/browser/browser_process_impl.h.orig	2026-04-15 14:10:25 UTC
 +++ electron/shell/browser/browser_process_impl.h
 @@ -22,7 +22,7 @@
  #include "shell/browser/net/system_network_context_manager.h"
@@ -9,7 +9,7 @@
  #include "components/os_crypt/sync/key_storage_util_linux.h"
  #endif
  
-@@ -61,7 +61,7 @@ class BrowserProcessImpl : public BrowserProcess {
+@@ -65,7 +65,7 @@ class BrowserProcessImpl : public BrowserProcess {
    const std::string& GetSystemLocale() const;
    electron::ResolveProxyHelper* GetResolveProxyHelper();
  
@@ -18,7 +18,7 @@
    void SetLinuxStorageBackend(os_crypt::SelectedLinuxBackend selected_backend);
    [[nodiscard]] const std::string& linux_storage_backend() const {
      return selected_linux_storage_backend_;
-@@ -153,7 +153,7 @@ class BrowserProcessImpl : public BrowserProcess {
+@@ -158,7 +158,7 @@ class BrowserProcessImpl : public BrowserProcess {
    std::unique_ptr<PrefService> local_state_;
    std::string locale_;
    std::string system_locale_;
diff --git a/devel/electron41/files/patch-electron_shell_browser_native__window__views.cc b/devel/electron41/files/patch-electron_shell_browser_native__window__views.cc
index 26017a41bfb9..e0d50c4e03e1 100644
--- a/devel/electron41/files/patch-electron_shell_browser_native__window__views.cc
+++ b/devel/electron41/files/patch-electron_shell_browser_native__window__views.cc
@@ -1,4 +1,4 @@
---- electron/shell/browser/native_window_views.cc.orig	2026-03-17 08:46:52 UTC
+--- electron/shell/browser/native_window_views.cc.orig	2026-04-15 14:10:25 UTC
 +++ electron/shell/browser/native_window_views.cc
 @@ -58,7 +58,7 @@
  #include "ui/wm/core/shadow_types.h"
@@ -31,12 +31,12 @@
    if (window)
      window->AddPreTargetHandler(this);
  
--#if BUILDFLAG(IS_LINUX)
-+#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
-   // We need to set bounds again after widget init for two reasons:
-   // 1. For CSD windows, user-specified bounds need  to be inflated by frame
-   //    insets, but the frame view isn't available at first.
-@@ -516,7 +516,7 @@ void NativeWindowViews::SetGTKDarkThemeEnabled(bool us
+-#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_BSD)
+   // The initial params.bounds was applied before the frame view existed, so
+   // non-client insets weren't accounted for and bounds need to be set again.
+   if (!GetRestoredFrameBorderInsets().IsEmpty())
+@@ -514,7 +514,7 @@ void NativeWindowViews::SetGTKDarkThemeEnabled(bool us
  }
  
  void NativeWindowViews::SetGTKDarkThemeEnabled(bool use_dark_theme) {
@@ -45,7 +45,7 @@
    if (x11_util::IsX11()) {
      const std::string color = use_dark_theme ? "dark" : "light";
      auto* connection = x11::Connection::Get();
-@@ -577,7 +577,7 @@ void NativeWindowViews::Show() {
+@@ -575,7 +575,7 @@ void NativeWindowViews::Show() {
  
    NotifyWindowShow();
  
@@ -54,7 +54,7 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowMapped();
  
-@@ -593,7 +593,7 @@ void NativeWindowViews::ShowInactive() {
+@@ -591,7 +591,7 @@ void NativeWindowViews::ShowInactive() {
  
    NotifyWindowShow();
  
@@ -63,7 +63,7 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowMapped();
  
-@@ -612,7 +612,7 @@ void NativeWindowViews::Hide() {
+@@ -610,7 +610,7 @@ void NativeWindowViews::Hide() {
  
    NotifyWindowHide();
  
@@ -72,7 +72,7 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowUnmapped();
  #endif
-@@ -643,7 +643,7 @@ bool NativeWindowViews::IsEnabled() const {
+@@ -641,7 +641,7 @@ bool NativeWindowViews::IsEnabled() const {
  bool NativeWindowViews::IsEnabled() const {
  #if BUILDFLAG(IS_WIN)
    return ::IsWindowEnabled(GetAcceleratedWidget());
@@ -81,7 +81,7 @@
    if (x11_util::IsX11())
      return !event_disabler_.get();
    NOTIMPLEMENTED();
-@@ -868,7 +868,7 @@ void NativeWindowViews::SetBounds(const gfx::Rect& bou
+@@ -866,7 +866,7 @@ void NativeWindowViews::SetBounds(const gfx::Rect& bou
    }
  #endif
  
@@ -162,7 +162,7 @@
    window_handle = static_cast<uint32_t>(accelerated_widget);
  #endif
    aura::WindowTreeHost* const host =
-@@ -1761,7 +1761,7 @@ void NativeWindowViews::SetIcon(HICON window_icon, HIC
+@@ -1768,7 +1768,7 @@ void NativeWindowViews::SetIcon(HICON window_icon, HIC
    SendMessage(hwnd, WM_SETICON, ICON_BIG,
                reinterpret_cast<LPARAM>(app_icon_.get()));
  }
@@ -171,7 +171,7 @@
  void NativeWindowViews::SetIcon(const gfx::ImageSkia& icon) {
    auto* tree_host = views::DesktopWindowTreeHostLinux::GetHostForWidget(
        GetAcceleratedWidget());
-@@ -1882,7 +1882,7 @@ bool NativeWindowViews::CanMinimize() const {
+@@ -1889,7 +1889,7 @@ bool NativeWindowViews::CanMinimize() const {
  bool NativeWindowViews::CanMinimize() const {
  #if BUILDFLAG(IS_WIN)
    return minimizable_;
@@ -180,7 +180,7 @@
    return true;
  #endif
  }
-@@ -1924,7 +1924,7 @@ std::unique_ptr<views::FrameView> NativeWindowViews::C
+@@ -1931,7 +1931,7 @@ std::unique_ptr<views::FrameView> NativeWindowViews::C
  #endif
  }
  
@@ -189,7 +189,7 @@
  LinuxFrameLayout* NativeWindowViews::GetLinuxFrameLayout() {
    auto* ncv = widget()->non_client_view();
    if (!ncv)
-@@ -1944,7 +1944,7 @@ void NativeWindowViews::HandleKeyboardEvent(
+@@ -1951,7 +1951,7 @@ void NativeWindowViews::HandleKeyboardEvent(
    if (widget_destroyed_)
      return;
  
@@ -198,7 +198,7 @@
    if (event.windows_key_code == ui::VKEY_BROWSER_BACK)
      NotifyWindowExecuteAppCommand(kBrowserBackward);
    else if (event.windows_key_code == ui::VKEY_BROWSER_FORWARD)
-@@ -1963,7 +1963,7 @@ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* e
+@@ -1970,7 +1970,7 @@ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* e
    // Alt+Click should not toggle menu bar.
    root_view_.ResetAltState();
  
diff --git a/devel/electron41/files/patch-electron_shell_browser_native__window__views.h b/devel/electron41/files/patch-electron_shell_browser_native__window__views.h
index 8e0568c6964c..f22526b7e275 100644
--- a/devel/electron41/files/patch-electron_shell_browser_native__window__views.h
+++ b/devel/electron41/files/patch-electron_shell_browser_native__window__views.h
@@ -1,4 +1,4 @@
---- electron/shell/browser/native_window_views.h.orig	2026-03-17 08:46:52 UTC
+--- electron/shell/browser/native_window_views.h.orig	2026-04-15 14:10:25 UTC
 +++ electron/shell/browser/native_window_views.h
 @@ -32,7 +32,7 @@ namespace electron {
  
@@ -18,7 +18,7 @@
    void SetIcon(const gfx::ImageSkia& icon);
  #endif
  
-@@ -198,7 +198,7 @@ class NativeWindowViews : public NativeWindow,
+@@ -199,7 +199,7 @@ class NativeWindowViews : public NativeWindow,
    SkColor overlay_button_color() const { return overlay_button_color_; }
    SkColor overlay_symbol_color() const { return overlay_symbol_color_; }
  
@@ -27,7 +27,7 @@
    LinuxFrameLayout* GetLinuxFrameLayout();
  #endif
  
-@@ -276,7 +276,7 @@ class NativeWindowViews : public NativeWindow,
+@@ -277,7 +277,7 @@ class NativeWindowViews : public NativeWindow,
    // events from resizing the window.
    extensions::SizeConstraints old_size_constraints_;
  
diff --git a/devel/electron41/files/patch-electron_shell_browser_osr_osr__host__display__client.cc b/devel/electron41/files/patch-electron_shell_browser_osr_osr__host__display__client.cc
index 5d81b8439962..0f3bfbc89873 100644
--- a/devel/electron41/files/patch-electron_shell_browser_osr_osr__host__display__client.cc
+++ b/devel/electron41/files/patch-electron_shell_browser_osr_osr__host__display__client.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/osr/osr_host_display_client.cc.orig	2026-01-15 18:39:20 UTC
+--- electron/shell/browser/osr/osr_host_display_client.cc.orig	2026-04-15 14:10:25 UTC
 +++ electron/shell/browser/osr/osr_host_display_client.cc
-@@ -94,7 +94,7 @@ void OffScreenHostDisplayClient::CreateLayeredWindowUp
+@@ -102,7 +102,7 @@ void OffScreenHostDisplayClient::CreateLayeredWindowUp
    layered_window_updater_->SetActive(active_);
  }
  
diff --git a/devel/electron41/files/patch-electron_shell_browser_osr_osr__video__consumer.cc b/devel/electron41/files/patch-electron_shell_browser_osr_osr__video__consumer.cc
index 9f2c135923f4..fa58911e1093 100644
--- a/devel/electron41/files/patch-electron_shell_browser_osr_osr__video__consumer.cc
+++ b/devel/electron41/files/patch-electron_shell_browser_osr_osr__video__consumer.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/osr/osr_video_consumer.cc.orig	2026-03-17 08:46:52 UTC
+--- electron/shell/browser/osr/osr_video_consumer.cc.orig	2026-04-15 14:10:25 UTC
 +++ electron/shell/browser/osr/osr_video_consumer.cc
-@@ -129,7 +129,7 @@ void OffScreenVideoConsumer::OnFrameCaptured(
+@@ -130,7 +130,7 @@ void OffScreenVideoConsumer::OnFrameCaptured(
  #elif BUILDFLAG(IS_APPLE)
      texture.shared_texture_handle =
          reinterpret_cast<uintptr_t>(gmb_handle.io_surface().get());
diff --git a/devel/electron41/files/patch-electron_shell_browser_ui_inspectable__web__contents.cc b/devel/electron41/files/patch-electron_shell_browser_ui_inspectable__web__contents.cc
index 558968941a0e..eae4187bd261 100644
--- a/devel/electron41/files/patch-electron_shell_browser_ui_inspectable__web__contents.cc
+++ b/devel/electron41/files/patch-electron_shell_browser_ui_inspectable__web__contents.cc
@@ -1,11 +1,11 @@
---- electron/shell/browser/ui/inspectable_web_contents.cc.orig	2026-04-07 01:35:50 UTC
+--- electron/shell/browser/ui/inspectable_web_contents.cc.orig	2026-04-15 14:10:25 UTC
 +++ electron/shell/browser/ui/inspectable_web_contents.cc
-@@ -575,7 +575,7 @@ void InspectableWebContents::LoadCompleted() {
-         dock_state_ = "right";
+@@ -590,7 +590,7 @@ void InspectableWebContents::LoadCompleted() {
+           dock_state_ = "right";
+         }
        }
-     }
 -#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
 +#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
-     auto* api_web_contents = api::WebContents::From(GetWebContents());
-     if (api_web_contents) {
-       auto* win =
+       auto* api_web_contents = api::WebContents::From(GetWebContents());
+       if (api_web_contents) {
+         auto* win =
diff --git a/devel/electron41/files/patch-electron_spec_api-browser-window-spec.ts b/devel/electron41/files/patch-electron_spec_api-browser-window-spec.ts
index 3361e70ccf53..26d498cf8b42 100644
--- a/devel/electron41/files/patch-electron_spec_api-browser-window-spec.ts
+++ b/devel/electron41/files/patch-electron_spec_api-browser-window-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec/api-browser-window-spec.ts.orig	2026-04-07 01:35:50 UTC
+--- electron/spec/api-browser-window-spec.ts.orig	2026-04-15 14:10:25 UTC
 +++ electron/spec/api-browser-window-spec.ts
 @@ -69,7 +69,7 @@ describe('BrowserWindow module', () => {
        }).not.to.throw();
@@ -180,7 +180,7 @@
      // Not implemented on Linux.
      afterEach(closeAllWindows);
  
-@@ -6981,7 +6981,7 @@ describe('BrowserWindow module', () => {
+@@ -7001,7 +7001,7 @@ describe('BrowserWindow module', () => {
    describe('"transparent" option', () => {
      afterEach(closeAllWindows);
  
diff --git a/devel/electron41/files/patch-electron_spec_api-crash-reporter-spec.ts b/devel/electron41/files/patch-electron_spec_api-crash-reporter-spec.ts
index 484c399c9179..ec0516c0bfac 100644
--- a/devel/electron41/files/patch-electron_spec_api-crash-reporter-spec.ts
+++ b/devel/electron41/files/patch-electron_spec_api-crash-reporter-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec/api-crash-reporter-spec.ts.orig	2024-10-22 02:29:46 UTC
+--- electron/spec/api-crash-reporter-spec.ts.orig	2026-04-15 14:10:25 UTC
 +++ electron/spec/api-crash-reporter-spec.ts
 @@ -14,7 +14,7 @@ const isWindowsOnArm = process.platform === 'win32' &&
  import { ifdescribe, ifit, defer, startRemoteControlApp, repeatedly, listen } from './lib/spec-helpers';
@@ -27,7 +27,7 @@
        const { port, waitForCrash } = await startServer();
        let exitCode: number | null = null;
        const appPath = path.join(__dirname, 'fixtures', 'apps', 'crash');
-@@ -533,7 +533,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
+@@ -561,7 +561,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
        }
      }
  
@@ -36,7 +36,7 @@
        ? ['main', 'renderer', 'sandboxed-renderer']
        : ['main', 'renderer', 'sandboxed-renderer', 'node'];
      for (const crashingProcess of processList) {
-@@ -546,7 +546,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
+@@ -574,7 +574,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
              return app.getPath('crashDumps');
            });
            let reportsDir = crashesDir;
@@ -45,7 +45,7 @@
              reportsDir = path.join(crashesDir, 'completed');
            } else if (process.platform === 'win32') {
              reportsDir = path.join(crashesDir, 'reports');
-@@ -570,7 +570,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
+@@ -598,7 +598,7 @@ ifdescribe(!isLinuxOnArm && !process.mas && !process.e
            expect(remoteCrashesDir).to.equal(crashesDir);
  
            let reportsDir = crashesDir;
diff --git a/devel/electron41/files/patch-electron_spec_api-desktop-capturer-spec.ts b/devel/electron41/files/patch-electron_spec_api-desktop-capturer-spec.ts
index ad4474e50b31..7ed497e61213 100644
--- a/devel/electron41/files/patch-electron_spec_api-desktop-capturer-spec.ts
+++ b/devel/electron41/files/patch-electron_spec_api-desktop-capturer-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec/api-desktop-capturer-spec.ts.orig	2025-07-02 10:12:01 UTC
+--- electron/spec/api-desktop-capturer-spec.ts.orig	2026-04-15 14:10:25 UTC
 +++ electron/spec/api-desktop-capturer-spec.ts
 @@ -9,7 +9,7 @@ function getSourceTypes (): ('window' | 'screen')[] {
  import { closeAllWindows } from './lib/window-helpers';
@@ -9,7 +9,7 @@
      return ['screen'];
    }
    return ['window', 'screen'];
-@@ -35,7 +35,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
+@@ -35,7 +35,7 @@ describe('desktopCapturer', () => {
    });
  
    // Linux doesn't return any window sources.
@@ -18,7 +18,7 @@
      const promise1 = desktopCapturer.getSources({ types: ['window'] });
      await expect(promise1).to.eventually.be.fulfilled();
  
-@@ -44,7 +44,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
+@@ -44,7 +44,7 @@ describe('desktopCapturer', () => {
    });
  
    // Linux doesn't return any window sources.
@@ -27,7 +27,7 @@
      const w2 = new BrowserWindow({ width: 200, height: 200 });
      await w2.loadURL('about:blank');
  
-@@ -56,7 +56,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
+@@ -56,7 +56,7 @@ describe('desktopCapturer', () => {
      }
    });
  
@@ -36,7 +36,7 @@
      const displays = screen.getAllDisplays();
      const sources = await desktopCapturer.getSources({ types: ['screen'] });
      expect(sources).to.be.an('array').of.length(displays.length);
-@@ -99,7 +99,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
+@@ -99,7 +99,7 @@ describe('desktopCapturer', () => {
    });
  
    // Linux doesn't return any window sources.
@@ -45,7 +45,7 @@
      const w2 = new BrowserWindow({ show: false, width: 100, height: 100, webPreferences: { contextIsolation: false } });
      const wShown = once(w2, 'show');
      const wFocused = once(w2, 'focus');
-@@ -123,7 +123,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
+@@ -123,7 +123,7 @@ describe('desktopCapturer', () => {
    });
  
    // Linux doesn't return any window sources.
@@ -54,7 +54,7 @@
      const w2 = new BrowserWindow({ show: false, width: 100, height: 100, webPreferences: { contextIsolation: false } });
      const wShown = once(w2, 'show');
      const wFocused = once(w2, 'focus');
-@@ -169,7 +169,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
+@@ -169,7 +169,7 @@ describe('desktopCapturer', () => {
    });
  
    // Linux doesn't return any window sources.
@@ -63,3 +63,12 @@
      // DesktopCapturer.getSources() is guaranteed to return in the correct
      // z-order from foreground to background.
      const MAX_WIN = 4;
+@@ -256,7 +256,7 @@ describe('desktopCapturer', () => {
+   });
+ 
+   // Linux doesn't return any window sources.
+-  ifdescribe(process.platform !== 'linux')('fetchWindowIcons', function () {
++  ifdescribe(process.platform !== 'linux' && process.platform !== 'freebsd')('fetchWindowIcons', function () {
+     // Tests are sequentially dependent
+     this.bail(true);
+     let w: BrowserWindow;
diff --git a/devel/electron41/files/patch-electron_spec_api-web-contents-spec.ts b/devel/electron41/files/patch-electron_spec_api-web-contents-spec.ts
index 3c93d8efc3fe..52a64b51e27f 100644
--- a/devel/electron41/files/patch-electron_spec_api-web-contents-spec.ts
+++ b/devel/electron41/files/patch-electron_spec_api-web-contents-spec.ts
@@ -1,6 +1,15 @@
---- electron/spec/api-web-contents-spec.ts.orig	2026-03-17 08:46:52 UTC
+--- electron/spec/api-web-contents-spec.ts.orig	2026-04-15 14:10:25 UTC
 +++ electron/spec/api-web-contents-spec.ts
-@@ -2935,7 +2935,7 @@ describe('webContents module', () => {
+@@ -1266,7 +1266,7 @@ describe('webContents module', () => {
+     // back to OpenFolder() which does a blocking DirectoryExists() on the UI
+     // thread (pre-existing behavior). Workspace-gating is covered by the test
+     // above.
+-    ifit(process.platform !== 'linux')('reveals paths under a registered workspace folder without executing them', async () => {
++    ifit(process.platform !== 'linux' && process.platform !== 'freebsd')('reveals paths under a registered workspace folder without executing them', async () => {
+       const w = new BrowserWindow({ show: false });
+       await openDevTools(w);
+ 
+@@ -3013,7 +3013,7 @@ describe('webContents module', () => {
      });
  
      // TODO(codebytere): OOPIF printing is disabled on Linux at the moment due to crashes.
diff --git a/devel/electron41/files/patch-electron_spec_chromium-spec.ts b/devel/electron41/files/patch-electron_spec_chromium-spec.ts
index f771f29d1fac..85e181095b2e 100644
--- a/devel/electron41/files/patch-electron_spec_chromium-spec.ts
+++ b/devel/electron41/files/patch-electron_spec_chromium-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec/chromium-spec.ts.orig	2026-04-07 01:35:50 UTC
+--- electron/spec/chromium-spec.ts.orig	2026-04-15 14:10:25 UTC
 +++ electron/spec/chromium-spec.ts
 @@ -475,13 +475,13 @@ describe('command line switches', () => {
      it('should not set an invalid locale', async () => testLocale('asdfkl', `${currentLocale}|${currentSystemLocale}|${currentPreferredLanguages}`));
@@ -18,7 +18,7 @@
    });
  
    describe('--remote-debugging-pipe switch', () => {
-@@ -3471,12 +3471,12 @@ describe('font fallback', () => {
+@@ -3479,12 +3479,12 @@ describe('font fallback', () => {
        expect(fonts[0].familyName).to.equal('Arial');
      } else if (process.platform === 'darwin') {
        expect(fonts[0].familyName).to.equal('Helvetica');
@@ -33,7 +33,7 @@
      const html = `
      <html lang="ja-JP">
        <head>
-@@ -4029,7 +4029,7 @@ describe('paste execCommand', () => {
+@@ -4037,7 +4037,7 @@ describe('paste execCommand', () => {
    });
  });
  
diff --git a/devel/electron41/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 b/devel/electron41/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5
index 8b18163e7d9f..fbd10d49c010 100644
--- a/devel/electron41/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5
+++ b/devel/electron41/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5
@@ -1,4 +1,4 @@
---- third_party/blink/renderer/platform/runtime_enabled_features.json5.orig	2026-04-15 09:45:39 UTC
+--- third_party/blink/renderer/platform/runtime_enabled_features.json5.orig	2026-04-19 11:49:09 UTC
 +++ third_party/blink/renderer/platform/runtime_enabled_features.json5
 @@ -372,7 +372,7 @@
          "default": "",
@@ -108,7 +108,7 @@
        status: "experimental",
        public: true,
        base_feature_status: "enabled",
-@@ -5660,7 +5660,7 @@
+@@ -5665,7 +5665,7 @@
        name: "UnrestrictedSharedArrayBuffer",
        base_feature: "none",
        origin_trial_feature_name: "UnrestrictedSharedArrayBuffer",
@@ -117,7 +117,7 @@
      },
      // Enables using policy-controlled feature "usb-unrestricted" to allow
      // isolated context to access protected USB interface classes and to
-@@ -5751,7 +5751,7 @@
+@@ -5756,7 +5756,7 @@
        status: "experimental",
        origin_trial_feature_name: "UserMediaElement",
        public: true,
@@ -126,7 +126,7 @@
        base_feature_status: "enabled",
        copied_from_base_feature_if: "overridden",
      },
-@@ -5867,7 +5867,7 @@
+@@ -5872,7 +5872,7 @@
        name: "WebAppInstallation",
        status: {"Android": "", "default": "test"},
        origin_trial_feature_name: "WebAppInstallation",
@@ -135,7 +135,7 @@
        base_feature_status: "enabled",
        copied_from_base_feature_if: "overridden",
      },
-@@ -5879,7 +5879,7 @@
+@@ -5884,7 +5884,7 @@
      {
        name: "WebAppScopeExtensions",
        origin_trial_feature_name: "WebAppScopeExtensions",
diff --git a/devel/electron41/files/patch-ui_gtk_select__file__dialog__linux__gtk.cc b/devel/electron41/files/patch-ui_gtk_select__file__dialog__linux__gtk.cc
index 46575e910b1e..2422a52c0906 100644
--- a/devel/electron41/files/patch-ui_gtk_select__file__dialog__linux__gtk.cc
+++ b/devel/electron41/files/patch-ui_gtk_select__file__dialog__linux__gtk.cc
@@ -1,6 +1,6 @@
---- ui/gtk/select_file_dialog_linux_gtk.cc.orig	2026-04-04 05:40:57 UTC
+--- ui/gtk/select_file_dialog_linux_gtk.cc.orig	2026-04-19 11:49:10 UTC
 +++ ui/gtk/select_file_dialog_linux_gtk.cc
-@@ -49,7 +49,8 @@ namespace {
+@@ -50,7 +50,8 @@ namespace {
  // GTK_RESPONSE_ACCEPT as the default button, which should be avoided to prevent
  // an exploit where the user is instructed to hold Enter before the dialog
  // appears.