git: cf10eca70b76 - main - devel/electron36: update to 36.3.1

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Fri, 23 May 2025 19:35:09 UTC
The branch main has been updated by tagattie:

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

commit cf10eca70b76126dd68f3dc58bf2775b1462605e
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2025-05-23 19:33:10 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2025-05-23 19:34:59 +0000

    devel/electron36: update to 36.3.1
    
    Changelog:
    - https://github.com/electron/electron/releases/tag/v36.3.0
    - https://github.com/electron/electron/releases/tag/v36.3.1
    
    Reported by:    GitHub (watch releases)
---
 devel/electron36/Makefile                          |   4 +-
 devel/electron36/Makefile.version                  |   2 +-
 devel/electron36/distinfo                          |  18 +-
 devel/electron36/files/package.json                |   4 +-
 devel/electron36/files/patch-electron_BUILD.gn     |  10 +-
 ...hell_browser_api_electron__api__base__window.cc |   4 +-
 ...tron_shell_browser_api_electron__api__screen.cc |  38 ++
 .../patch-electron_shell_browser_native__window.cc |   4 +-
 ...electron_shell_browser_native__window__views.cc |  50 +--
 .../patch-electron_shell_common_node__bindings.cc  |   4 +-
 ...atch-electron_spec_api-desktop-capturer-spec.ts |   8 +-
 .../files/patch-electron_spec_chromium-spec.ts     |   6 +-
 ...derer_platform_runtime__enabled__features.json5 |   8 +-
 devel/electron36/files/patch-v8_src_api_api.cc     |   4 +-
 devel/electron36/files/yarn.lock                   | 459 +++++++++++----------
 15 files changed, 339 insertions(+), 284 deletions(-)

diff --git a/devel/electron36/Makefile b/devel/electron36/Makefile
index 6c2448fa713b..9ea6a15025c5 100644
--- a/devel/electron36/Makefile
+++ b/devel/electron36/Makefile
@@ -217,9 +217,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=			136.0.7103.93
+CHROMIUM_VER=			136.0.7103.113
 # See ${WRKSRC}/electron/DEPS for NODE_VER
-NODE_VER=			22.15.0
+NODE_VER=			22.15.1
 # See ${WRKSRC}/electron/DEPS for NAN_VER
 NAN_VER=			e14bdcd1f72d62bca1d541b66da43130384ec213
 # See ${WRKSRC}/electron/DEPS for SQUIRREL_MAC_VER
diff --git a/devel/electron36/Makefile.version b/devel/electron36/Makefile.version
index 75b5187e0b95..28ea9b501c14 100644
--- a/devel/electron36/Makefile.version
+++ b/devel/electron36/Makefile.version
@@ -1,2 +1,2 @@
-ELECTRON_VER=	36.2.1
+ELECTRON_VER=	36.3.1
 ELECTRON_VER_MAJOR=	${ELECTRON_VER:C/\..*//}
diff --git a/devel/electron36/distinfo b/devel/electron36/distinfo
index c0927717143b..d6195be6e444 100644
--- a/devel/electron36/distinfo
+++ b/devel/electron36/distinfo
@@ -1,14 +1,14 @@
-TIMESTAMP = 1747316807
-SHA256 (electron/chromium-136.0.7103.93.tar.xz) = db98c44d9e47325b79b0aa24885d41e42ed6254973c34ee85f197a510a42f54b
-SIZE (electron/chromium-136.0.7103.93.tar.xz) = 7189003340
+TIMESTAMP = 1747975088
+SHA256 (electron/chromium-136.0.7103.113.tar.xz) = 7c765bd13df842a28bb52279b8d711411ac6082151473e07bd70b9a482c0a0ac
+SIZE (electron/chromium-136.0.7103.113.tar.xz) = 7196537592
 SHA256 (electron/pulseaudio-16.1.tar.gz) = 027266c62f2a84422ac45fa721a649508f0f1628fb1fd9242315ac54ce2d7c92
 SIZE (electron/pulseaudio-16.1.tar.gz) = 2763111
-SHA256 (electron/electron-yarn-cache-36.2.1.tar.xz) = 95bd287084ffb970f023ff11d8700b543db04a4fb7ccc4692420d2e7ac46f7f5
-SIZE (electron/electron-yarn-cache-36.2.1.tar.xz) = 29892300
-SHA256 (electron/electron-electron-v36.2.1_GH0.tar.gz) = 1336a88dd5fbc49c34939de5eb95000bf4e36400274d59e48d7ee38b45b07090
-SIZE (electron/electron-electron-v36.2.1_GH0.tar.gz) = 15777294
-SHA256 (electron/nodejs-node-v22.15.0_GH0.tar.gz) = 4f2515e143ffd73f069916ecc5daf503e7a05166c0ae4f1c1f8afdc8ab2f8a82
-SIZE (electron/nodejs-node-v22.15.0_GH0.tar.gz) = 122833296
+SHA256 (electron/electron-yarn-cache-36.3.1.tar.xz) = 0861d7e6e1e27d8a63c43f5d3a9742d1c2a2d79b75f9757191a7303c4f859f47
+SIZE (electron/electron-yarn-cache-36.3.1.tar.xz) = 30644040
+SHA256 (electron/electron-electron-v36.3.1_GH0.tar.gz) = 88b407429ec71b9ac66bfa1b433e87199c4c358727371bb7cdace5bfcb2113cb
+SIZE (electron/electron-electron-v36.3.1_GH0.tar.gz) = 15778134
+SHA256 (electron/nodejs-node-v22.15.1_GH0.tar.gz) = 71c357ee1a2df8d58509fa2a88b2028698e3113a0f1cbfdb849e808bef0b18ff
+SIZE (electron/nodejs-node-v22.15.1_GH0.tar.gz) = 122830007
 SHA256 (electron/nodejs-nan-e14bdcd1f72d62bca1d541b66da43130384ec213_GH0.tar.gz) = 02edf8d5b3fef9af94d8a1355da60564a57e7f2c99cb422bce042400607ed2eb
 SIZE (electron/nodejs-nan-e14bdcd1f72d62bca1d541b66da43130384ec213_GH0.tar.gz) = 180646
 SHA256 (electron/Squirrel-Squirrel.Mac-0e5d146ba13101a1302d59ea6e6e0b3cace4ae38_GH0.tar.gz) = f4ebb40a8d85dbb7ef02aa0571b2f8e22182c6d73b6992484a53c90047779d01
diff --git a/devel/electron36/files/package.json b/devel/electron36/files/package.json
index 3891c1f11d86..0fa8629ff8a3 100644
--- a/devel/electron36/files/package.json
+++ b/devel/electron36/files/package.json
@@ -9,7 +9,7 @@
     "@electron/docs-parser": "^2.0.0",
     "@electron/fiddle-core": "^1.3.4",
     "@electron/github-app-auth": "^2.2.1",
-    "@electron/lint-roller": "^2.4.0",
+    "@electron/lint-roller": "^3.0.0",
     "@electron/typescript-definitions": "^9.1.2",
     "@octokit/rest": "^20.0.2",
     "@primer/octicons": "^10.0.0",
@@ -40,7 +40,7 @@
     "got": "^11.8.5",
     "husky": "^8.0.1",
     "lint-staged": "^10.2.11",
-    "markdownlint-cli2": "^0.13.0",
+    "markdownlint-cli2": "^0.18.0",
     "minimist": "^1.2.8",
     "null-loader": "^4.0.1",
     "pre-flight": "^2.0.0",
diff --git a/devel/electron36/files/patch-electron_BUILD.gn b/devel/electron36/files/patch-electron_BUILD.gn
index 57aa76487d7f..32319d474890 100644
--- a/devel/electron36/files/patch-electron_BUILD.gn
+++ b/devel/electron36/files/patch-electron_BUILD.gn
@@ -1,4 +1,4 @@
---- electron/BUILD.gn.orig	2025-04-04 05:26:44 UTC
+--- electron/BUILD.gn.orig	2025-05-22 22:48:48 UTC
 +++ electron/BUILD.gn
 @@ -543,7 +543,7 @@ source_set("electron_lib") {
      defines += [ "GDK_DISABLE_DEPRECATION_WARNINGS" ]
@@ -22,7 +22,7 @@
    if (is_linux) {
      libs = [ "xshmfence" ]
      deps += [
-@@ -1204,7 +1210,7 @@ if (is_mac) {
+@@ -1206,7 +1212,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",
-@@ -1231,7 +1237,7 @@ if (is_mac) {
+@@ -1233,7 +1239,7 @@ if (is_mac) {
        public_deps = [ "//tools/v8_context_snapshot:v8_context_snapshot" ]
      }
  
@@ -40,7 +40,7 @@
        data_deps += [ "//components/crash/core/app:chrome_crashpad_handler" ]
      }
  
-@@ -1298,7 +1304,7 @@ if (is_mac) {
+@@ -1300,7 +1306,7 @@ if (is_mac) {
          configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
        }
  
@@ -49,7 +49,7 @@
          deps += [ "//sandbox/linux:chrome_sandbox" ]
        }
      }
-@@ -1406,7 +1412,7 @@ dist_zip("electron_dist_zip") {
+@@ -1408,7 +1414,7 @@ dist_zip("electron_dist_zip") {
      ":electron_version_file",
      ":licenses",
    ]
diff --git a/devel/electron36/files/patch-electron_shell_browser_api_electron__api__base__window.cc b/devel/electron36/files/patch-electron_shell_browser_api_electron__api__base__window.cc
index 0f5691bdb5a7..bb00052d766a 100644
--- a/devel/electron36/files/patch-electron_shell_browser_api_electron__api__base__window.cc
+++ b/devel/electron36/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	2025-05-07 07:36:13 UTC
+--- electron/shell/browser/api/electron_api_base_window.cc.orig	2025-05-22 22:48:48 UTC
 +++ electron/shell/browser/api/electron_api_base_window.cc
 @@ -42,7 +42,7 @@
  #include "shell/browser/ui/views/win_frame_view.h"
@@ -27,7 +27,7 @@
  void BaseWindow::SetTitleBarOverlay(const gin_helper::Dictionary& options,
                                      gin_helper::Arguments* args) {
    // Ensure WCO is already enabled on this window
-@@ -1346,7 +1346,7 @@ void BaseWindow::BuildPrototype(v8::Isolate* isolate,
+@@ -1342,7 +1342,7 @@ void BaseWindow::BuildPrototype(v8::Isolate* isolate,
        .SetMethod("setThumbnailToolTip", &BaseWindow::SetThumbnailToolTip)
        .SetMethod("setAppDetails", &BaseWindow::SetAppDetails)
  #endif
diff --git a/devel/electron36/files/patch-electron_shell_browser_api_electron__api__screen.cc b/devel/electron36/files/patch-electron_shell_browser_api_electron__api__screen.cc
new file mode 100644
index 000000000000..570fb7bbb724
--- /dev/null
+++ b/devel/electron36/files/patch-electron_shell_browser_api_electron__api__screen.cc
@@ -0,0 +1,38 @@
+--- electron/shell/browser/api/electron_api_screen.cc.orig	2025-05-23 04:56:07 UTC
++++ electron/shell/browser/api/electron_api_screen.cc
+@@ -28,7 +28,7 @@
+ #include "ui/display/win/screen_win.h"
+ #endif
+ 
+-#if BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+ #include "shell/browser/linux/x11_util.h"
+ #endif
+ 
+@@ -136,7 +136,7 @@ gfx::PointF Screen::ScreenToDIPPoint(const gfx::PointF
+ gfx::PointF Screen::ScreenToDIPPoint(const gfx::PointF& point_px) {
+ #if BUILDFLAG(IS_WIN)
+   return display::win::ScreenWin::ScreenToDIPPoint(point_px);
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+   if (x11_util::IsX11()) {
+     gfx::Point pt_px = gfx::ToFlooredPoint(point_px);
+     display::Display display = GetDisplayNearestPoint(pt_px);
+@@ -155,7 +155,7 @@ gfx::Point Screen::DIPToScreenPoint(const gfx::Point& 
+ gfx::Point Screen::DIPToScreenPoint(const gfx::Point& point_dip) {
+ #if BUILDFLAG(IS_WIN)
+   return display::win::ScreenWin::DIPToScreenPoint(point_dip);
+-#elif BUILDFLAG(IS_LINUX)
++#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+   if (x11_util::IsX11()) {
+     display::Display display = GetDisplayNearestPoint(point_dip);
+     gfx::Rect bounds_dip = display.bounds();
+@@ -198,7 +198,7 @@ gin::ObjectTemplateBuilder Screen::GetObjectTemplateBu
+       .SetMethod("getPrimaryDisplay", &Screen::GetPrimaryDisplay)
+       .SetMethod("getAllDisplays", &Screen::GetAllDisplays)
+       .SetMethod("getDisplayNearestPoint", &Screen::GetDisplayNearestPoint)
+-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
++#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
+       .SetMethod("screenToDipPoint", &Screen::ScreenToDIPPoint)
+       .SetMethod("dipToScreenPoint", &Screen::DIPToScreenPoint)
+ #endif
diff --git a/devel/electron36/files/patch-electron_shell_browser_native__window.cc b/devel/electron36/files/patch-electron_shell_browser_native__window.cc
index d55f8462f6b1..e5b0c444fb35 100644
--- a/devel/electron36/files/patch-electron_shell_browser_native__window.cc
+++ b/devel/electron36/files/patch-electron_shell_browser_native__window.cc
@@ -1,6 +1,6 @@
---- electron/shell/browser/native_window.cc.orig	2025-04-17 14:56:35 UTC
+--- electron/shell/browser/native_window.cc.orig	2025-05-22 22:48:48 UTC
 +++ electron/shell/browser/native_window.cc
-@@ -198,7 +198,7 @@ void NativeWindow::InitFromOptions(const gin_helper::D
+@@ -188,7 +188,7 @@ void NativeWindow::InitFromOptions(const gin_helper::D
    } else {
      SetSizeConstraints(size_constraints);
    }
diff --git a/devel/electron36/files/patch-electron_shell_browser_native__window__views.cc b/devel/electron36/files/patch-electron_shell_browser_native__window__views.cc
index 81913d117220..7411fa10e09b 100644
--- a/devel/electron36/files/patch-electron_shell_browser_native__window__views.cc
+++ b/devel/electron36/files/patch-electron_shell_browser_native__window__views.cc
@@ -1,4 +1,4 @@
---- electron/shell/browser/native_window_views.cc.orig	2025-05-12 02:18:43 UTC
+--- electron/shell/browser/native_window_views.cc.orig	2025-05-22 22:48:48 UTC
 +++ electron/shell/browser/native_window_views.cc
 @@ -51,7 +51,7 @@
  #include "ui/wm/core/shadow_types.h"
@@ -9,7 +9,7 @@
  #include "base/strings/string_util.h"
  #include "shell/browser/browser.h"
  #include "shell/browser/linux/unity_service.h"
-@@ -295,7 +295,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+@@ -289,7 +289,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
      params.parent = parent->GetNativeWindow();
  
    params.native_widget = new ElectronDesktopNativeWidgetAura(this);
@@ -18,7 +18,7 @@
    std::string name = Browser::Get()->GetName();
    // Set WM_WINDOW_ROLE.
    params.wm_role_name = "browser-window";
-@@ -320,7 +320,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+@@ -314,7 +314,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
    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);
-@@ -427,7 +427,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
+@@ -436,7 +436,7 @@ NativeWindowViews::NativeWindowViews(const gin_helper:
    if (window)
      window->AddPreTargetHandler(this);
  
@@ -36,16 +36,16 @@
    // On linux after the widget is initialized we might have to force set the
    // bounds if the bounds are smaller than the current display
    SetBounds(gfx::Rect(GetPosition(), bounds.size()), false);
-@@ -463,7 +463,7 @@ void NativeWindowViews::SetGTKDarkThemeEnabled(bool us
+@@ -472,7 +472,7 @@ void NativeWindowViews::SetGTKDarkThemeEnabled(bool us
  }
  
  void NativeWindowViews::SetGTKDarkThemeEnabled(bool use_dark_theme) {
 -#if BUILDFLAG(IS_LINUX)
 +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
-   if (IsX11()) {
+   if (x11_util::IsX11()) {
      const std::string color = use_dark_theme ? "dark" : "light";
      auto* connection = x11::Connection::Get();
-@@ -524,7 +524,7 @@ void NativeWindowViews::Show() {
+@@ -533,7 +533,7 @@ void NativeWindowViews::Show() {
  
    NotifyWindowShow();
  
@@ -54,7 +54,7 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowMapped();
  
-@@ -540,7 +540,7 @@ void NativeWindowViews::ShowInactive() {
+@@ -549,7 +549,7 @@ void NativeWindowViews::ShowInactive() {
  
    NotifyWindowShow();
  
@@ -63,7 +63,7 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowMapped();
  
-@@ -559,7 +559,7 @@ void NativeWindowViews::Hide() {
+@@ -568,7 +568,7 @@ void NativeWindowViews::Hide() {
  
    NotifyWindowHide();
  
@@ -72,16 +72,16 @@
    if (global_menu_bar_)
      global_menu_bar_->OnWindowUnmapped();
  #endif
-@@ -590,7 +590,7 @@ bool NativeWindowViews::IsEnabled() const {
+@@ -599,7 +599,7 @@ bool NativeWindowViews::IsEnabled() const {
  bool NativeWindowViews::IsEnabled() const {
  #if BUILDFLAG(IS_WIN)
    return ::IsWindowEnabled(GetAcceleratedWidget());
 -#elif BUILDFLAG(IS_LINUX)
 +#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
-   if (IsX11())
+   if (x11_util::IsX11())
      return !event_disabler_.get();
    NOTIMPLEMENTED();
-@@ -840,7 +840,7 @@ void NativeWindowViews::SetBounds(const gfx::Rect& bou
+@@ -849,7 +849,7 @@ void NativeWindowViews::SetBounds(const gfx::Rect& bou
    }
  #endif
  
@@ -90,7 +90,7 @@
    // On Linux and Windows the minimum and maximum size should be updated with
    // window size when window is not resizable.
    if (!resizable_) {
-@@ -1098,7 +1098,7 @@ bool NativeWindowViews::IsClosable() const {
+@@ -1107,7 +1107,7 @@ bool NativeWindowViews::IsClosable() const {
      return false;
    }
    return !(info.fState & MFS_DISABLED);
@@ -99,7 +99,7 @@
    return true;
  #endif
  }
-@@ -1138,7 +1138,7 @@ void NativeWindowViews::Center() {
+@@ -1147,7 +1147,7 @@ void NativeWindowViews::Center() {
  // for now to avoid breaking API contract, but should consider the long
  // term plan for this aligning with upstream.
  void NativeWindowViews::Center() {
@@ -108,7 +108,7 @@
    auto display =
        display::Screen::GetScreen()->GetDisplayNearestWindow(GetNativeWindow());
    gfx::Rect window_bounds_in_screen = display.work_area();
-@@ -1362,7 +1362,7 @@ void NativeWindowViews::SetMenu(ElectronMenuModel* men
+@@ -1371,7 +1371,7 @@ void NativeWindowViews::SetMenu(ElectronMenuModel* men
  }
  
  void NativeWindowViews::SetMenu(ElectronMenuModel* menu_model) {
@@ -117,16 +117,16 @@
    // Remove global menu bar.
    if (global_menu_bar_ && menu_model == nullptr) {
      global_menu_bar_.reset();
-@@ -1417,7 +1417,7 @@ void NativeWindowViews::SetParentWindow(NativeWindow* 
+@@ -1427,7 +1427,7 @@ void NativeWindowViews::SetParentWindow(NativeWindow* 
  void NativeWindowViews::SetParentWindow(NativeWindow* parent) {
    NativeWindow::SetParentWindow(parent);
  
 -#if BUILDFLAG(IS_LINUX)
 +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
-   if (IsX11()) {
+   if (x11_util::IsX11()) {
      auto* connection = x11::Connection::Get();
      connection->SetProperty(
-@@ -1463,7 +1463,7 @@ void NativeWindowViews::SetProgressBar(double progress
+@@ -1473,7 +1473,7 @@ void NativeWindowViews::SetProgressBar(double progress
                                         NativeWindow::ProgressState state) {
  #if BUILDFLAG(IS_WIN)
    taskbar_host_.SetProgressBar(GetAcceleratedWidget(), progress, state);
@@ -135,16 +135,16 @@
    if (unity::IsRunning()) {
      unity::SetProgressFraction(progress);
    }
-@@ -1557,7 +1557,7 @@ bool NativeWindowViews::IsVisibleOnAllWorkspaces() con
+@@ -1567,7 +1567,7 @@ bool NativeWindowViews::IsVisibleOnAllWorkspaces() con
    if (const auto* view_native_widget = widget()->native_widget_private())
      return view_native_widget->IsVisibleOnAllWorkspaces();
  
 -#if BUILDFLAG(IS_LINUX)
 +#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
-   if (IsX11()) {
+   if (x11_util::IsX11()) {
      // Use the presence/absence of _NET_WM_STATE_STICKY in _NET_WM_STATE to
      // determine whether the current window is visible on all workspaces.
-@@ -1580,7 +1580,7 @@ content::DesktopMediaID NativeWindowViews::GetDesktopM
+@@ -1590,7 +1590,7 @@ content::DesktopMediaID NativeWindowViews::GetDesktopM
  #if BUILDFLAG(IS_WIN)
    window_handle =
        reinterpret_cast<content::DesktopMediaID::Id>(accelerated_widget);
@@ -153,7 +153,7 @@
    window_handle = static_cast<uint32_t>(accelerated_widget);
  #endif
    aura::WindowTreeHost* const host =
-@@ -1678,7 +1678,7 @@ void NativeWindowViews::SetIcon(HICON window_icon, HIC
+@@ -1688,7 +1688,7 @@ void NativeWindowViews::SetIcon(HICON window_icon, HIC
    SendMessage(hwnd, WM_SETICON, ICON_BIG,
                reinterpret_cast<LPARAM>(app_icon_.get()));
  }
@@ -162,7 +162,7 @@
  void NativeWindowViews::SetIcon(const gfx::ImageSkia& icon) {
    auto* tree_host = views::DesktopWindowTreeHostLinux::GetHostForWidget(
        GetAcceleratedWidget());
-@@ -1774,7 +1774,7 @@ bool NativeWindowViews::CanMinimize() const {
+@@ -1784,7 +1784,7 @@ bool NativeWindowViews::CanMinimize() const {
  bool NativeWindowViews::CanMinimize() const {
  #if BUILDFLAG(IS_WIN)
    return minimizable_;
@@ -171,7 +171,7 @@
    return true;
  #endif
  }
-@@ -1830,7 +1830,7 @@ void NativeWindowViews::HandleKeyboardEvent(
+@@ -1840,7 +1840,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)
-@@ -1849,7 +1849,7 @@ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* e
+@@ -1859,7 +1859,7 @@ void NativeWindowViews::OnMouseEvent(ui::MouseEvent* e
    // Alt+Click should not toggle menu bar.
    root_view_.ResetAltState();
  
diff --git a/devel/electron36/files/patch-electron_shell_common_node__bindings.cc b/devel/electron36/files/patch-electron_shell_common_node__bindings.cc
index 0fac3385e2f7..7483bb2c7966 100644
--- a/devel/electron36/files/patch-electron_shell_common_node__bindings.cc
+++ b/devel/electron36/files/patch-electron_shell_common_node__bindings.cc
@@ -1,4 +1,4 @@
---- electron/shell/common/node_bindings.cc.orig	2025-04-04 05:26:44 UTC
+--- electron/shell/common/node_bindings.cc.orig	2025-05-22 22:48:48 UTC
 +++ electron/shell/common/node_bindings.cc
 @@ -46,7 +46,7 @@
  #include "third_party/electron_node/src/debug_utils.h"
@@ -27,7 +27,7 @@
    electron::crash_keys::SetCrashKey("electron.v8-oom.is_heap_oom",
                                      std::to_string(details.is_heap_oom));
    if (location) {
-@@ -564,7 +564,7 @@ void NodeBindings::Initialize(v8::Local<v8::Context> c
+@@ -565,7 +565,7 @@ void NodeBindings::Initialize(v8::Local<v8::Context> c
    TRACE_EVENT0("electron", "NodeBindings::Initialize");
    // Open node's error reporting system for browser process.
  
diff --git a/devel/electron36/files/patch-electron_spec_api-desktop-capturer-spec.ts b/devel/electron36/files/patch-electron_spec_api-desktop-capturer-spec.ts
index 4511304eebfc..c125afd1a24a 100644
--- a/devel/electron36/files/patch-electron_spec_api-desktop-capturer-spec.ts
+++ b/devel/electron36/files/patch-electron_spec_api-desktop-capturer-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec/api-desktop-capturer-spec.ts.orig	2025-03-26 14:46:58 UTC
+--- electron/spec/api-desktop-capturer-spec.ts.orig	2025-05-22 22:48:48 UTC
 +++ electron/spec/api-desktop-capturer-spec.ts
 @@ -45,7 +45,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
    });
@@ -24,7 +24,7 @@
      // the --ci parameter.
 -    if (process.platform === 'linux' && sources.length === 0) {
 +    if ((process.platform === 'linux' || process.platform === 'freebsd') && sources.length === 0) {
-       it.skip('desktopCapturer.getSources returned an empty source list');
+       this.skip();
        return;
      }
 @@ -154,7 +154,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
@@ -33,7 +33,7 @@
      // the --ci parameter.
 -    if (process.platform === 'linux' && sources.length === 0) {
 +    if ((process.platform === 'linux' || process.platform === 'freebsd') && sources.length === 0) {
-       it.skip('desktopCapturer.getSources returned an empty source list');
+       this.skip();
        return;
      }
 @@ -223,7 +223,7 @@ ifdescribe(!process.arch.includes('arm') && process.pl
@@ -43,5 +43,5 @@
 -      if (process.platform === 'linux' && sources.length === 0) {
 +      if ((process.platform === 'linux' || process.platform === 'freebsd') && sources.length === 0) {
          destroyWindows();
-         it.skip('desktopCapturer.getSources returned an empty source list');
+         this.skip();
          return;
diff --git a/devel/electron36/files/patch-electron_spec_chromium-spec.ts b/devel/electron36/files/patch-electron_spec_chromium-spec.ts
index 7d69820fc241..772535460b0b 100644
--- a/devel/electron36/files/patch-electron_spec_chromium-spec.ts
+++ b/devel/electron36/files/patch-electron_spec_chromium-spec.ts
@@ -1,4 +1,4 @@
---- electron/spec/chromium-spec.ts.orig	2025-05-07 07:36:13 UTC
+--- electron/spec/chromium-spec.ts.orig	2025-05-22 22:48:48 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', () => {
-@@ -2923,12 +2923,12 @@ describe('font fallback', () => {
+@@ -2958,12 +2958,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>
-@@ -3472,7 +3472,7 @@ describe('paste execCommand', () => {
+@@ -3507,7 +3507,7 @@ describe('paste execCommand', () => {
    });
  });
  
diff --git a/devel/electron36/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5 b/devel/electron36/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5
index 65807d5b3422..2342aab79195 100644
--- a/devel/electron36/files/patch-third__party_blink_renderer_platform_runtime__enabled__features.json5
+++ b/devel/electron36/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	2025-04-22 20:15:27 UTC
+--- third_party/blink/renderer/platform/runtime_enabled_features.json5.orig	2025-05-13 14:35:14 UTC
 +++ third_party/blink/renderer/platform/runtime_enabled_features.json5
 @@ -434,7 +434,7 @@
        name: "AppTitle",
@@ -45,7 +45,7 @@
        status: "stable",
        public: true,
        base_feature: "none",
-@@ -4636,7 +4636,7 @@
+@@ -4635,7 +4635,7 @@
        name: "UnrestrictedSharedArrayBuffer",
        base_feature: "none",
        origin_trial_feature_name: "UnrestrictedSharedArrayBuffer",
@@ -54,7 +54,7 @@
      },
      // Enables using policy-controlled feature "usb-unrestricted" to allow
      // isolated context to access protected USB interface classes and to
-@@ -4811,7 +4811,7 @@
+@@ -4810,7 +4810,7 @@
      {
        name: "WebAppScopeExtensions",
        origin_trial_feature_name: "WebAppScopeExtensions",
@@ -63,7 +63,7 @@
        status: "experimental",
        base_feature: "none",
      },
-@@ -5086,7 +5086,7 @@
+@@ -5085,7 +5085,7 @@
      {
        name: "WebIdentityDigitalCredentials",
        origin_trial_feature_name: "WebIdentityDigitalCredentials",
diff --git a/devel/electron36/files/patch-v8_src_api_api.cc b/devel/electron36/files/patch-v8_src_api_api.cc
index 8d0959c25064..3effc6ff741a 100644
--- a/devel/electron36/files/patch-v8_src_api_api.cc
+++ b/devel/electron36/files/patch-v8_src_api_api.cc
@@ -1,4 +1,4 @@
---- v8/src/api/api.cc.orig	2025-05-11 11:50:46 UTC
+--- v8/src/api/api.cc.orig	2025-05-13 14:35:14 UTC
 +++ v8/src/api/api.cc
 @@ -153,7 +153,7 @@
  #include "src/wasm/wasm-serialization.h"
@@ -9,7 +9,7 @@
  #include <signal.h>
  #include <unistd.h>
  
-@@ -6502,7 +6502,7 @@ bool v8::V8::Initialize(const int build_config) {
+@@ -6483,7 +6483,7 @@ bool v8::V8::Initialize(const int build_config) {
    return true;
  }
  
diff --git a/devel/electron36/files/yarn.lock b/devel/electron36/files/yarn.lock
index cb940d319816..67d472fe0255 100644
--- a/devel/electron36/files/yarn.lock
+++ b/devel/electron36/files/yarn.lock
@@ -263,26 +263,23 @@
     "@octokit/auth-app" "^4.0.13"
     "@octokit/rest" "^19.0.11"
 
-"@electron/lint-roller@^2.4.0":
-  version "2.4.0"
-  resolved "https://registry.yarnpkg.com/@electron/lint-roller/-/lint-roller-2.4.0.tgz#67ab5911400ec1e6a842153acc59613a9522d233"
-  integrity sha512-U1FDBpNxVbu9TlL8O0F9mmaEimINtdr6RB6gGNVm1aBqOvLs579w0k4aqyYqDIV20HHcuWh/287sll6ou8Pfcw==
+"@electron/lint-roller@^3.0.0":
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/@electron/lint-roller/-/lint-roller-3.0.0.tgz#1c1604f9fe87ace82142d8bd25b5c5f0d1e08003"
+  integrity sha512-YdbWKivSZj+J0yjJhzACU6yXuah0VQMcyijKOaVxX6qG5J/df75oCt/jyuOpRr0HRtz62DaHphEnzGRhTFx9FA==
   dependencies:
     "@dsanders11/vscode-markdown-languageservice" "^0.3.0"
     ajv "^8.16.0"
-    balanced-match "^2.0.0"
-    glob "^8.1.0"
+    balanced-match "^3.0.1"
+    glob "^10.4.5"
     hast-util-from-html "^2.0.1"
-    markdown-it "^13.0.1"
-    markdownlint-cli "^0.40.0"
+    markdown-it "^14.1.0"
     mdast-util-from-markdown "^1.3.0"
-    minimist "^1.2.8"
-    rimraf "^4.4.1"
     standard "^17.0.0"
     unist-util-visit "^4.1.2"
     vscode-languageserver "^8.1.0"
     vscode-languageserver-textdocument "^1.0.8"
-    vscode-uri "^3.0.7"
+    vscode-uri "^3.0.8"
     yaml "^2.4.5"
 
 "@electron/typescript-definitions@^9.1.2":
@@ -924,6 +921,11 @@
   dependencies:
     "@types/node" "*"
 
+"@types/katex@^0.16.0":
+  version "0.16.7"
+  resolved "https://registry.yarnpkg.com/@types/katex/-/katex-0.16.7.tgz#03ab680ab4fa4fbc6cb46ecf987ecad5d8019868"
+  integrity sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==
+
 "@types/keyv@*":
   version "3.1.4"
   resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6"
@@ -1624,10 +1626,10 @@ balanced-match@^1.0.0:
   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
   integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
 
-balanced-match@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-2.0.0.tgz#dc70f920d78db8b858535795867bf48f820633d9"
-  integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==
+balanced-match@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-3.0.1.tgz#e854b098724b15076384266497392a271f4a26a0"
+  integrity sha512-vjtV3hiLqYDNRoiAv0zC4QaGAMPomEoq83PRmYIofPswwZurCeWR5LByXm7SyoL0Zh5+2z0+HC7jG8gSZJUh0w==
 
 base64-js@^1.3.1:
   version "1.5.1"
@@ -1669,7 +1671,7 @@ brace-expansion@^2.0.1:
   dependencies:
     balanced-match "^1.0.0"
 
-braces@^3.0.2, braces@^3.0.3, braces@~3.0.2:
+braces@^3.0.3, braces@~3.0.2:
   version "3.0.3"
   resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
   integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
@@ -1824,6 +1826,11 @@ character-entities-legacy@^2.0.0:
   resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz#57f4d00974c696e8f74e9f493e7fcb75b44d7ee7"
   integrity sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA==
 
+character-entities-legacy@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz#76bc83a90738901d7bc223a9e93759fdd560125b"
+  integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==
+
 character-entities@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.0.tgz#508355fcc8c73893e0909efc1a44d28da2b6fdf3"
@@ -1990,10 +1997,10 @@ commander@^5.0.0, commander@^5.1.0:
   resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
   integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
 
-commander@~12.0.0:
-  version "12.0.0"
-  resolved "https://registry.yarnpkg.com/commander/-/commander-12.0.0.tgz#b929db6df8546080adfd004ab215ed48cf6f2592"
-  integrity sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==
+commander@^8.3.0:
+  version "8.3.0"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
+  integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
 
 compress-brotli@^1.3.8:
   version "1.3.8"
@@ -2115,11 +2122,6 @@ deep-eql@^5.0.1:
   resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-5.0.2.tgz#4b756d8d770a9257300825d52a2c2cff99c3a341"
   integrity sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==
 
-deep-extend@^0.6.0:
-  version "0.6.0"
-  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
-  integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
-
 deep-is@^0.1.3:
   version "0.1.3"
   resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
@@ -2293,11 +2295,6 @@ entities@^4.4.0:
   resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
   integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
 
-entities@~3.0.1:
-  version "3.0.1"
-  resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4"
-  integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==
-
 env-paths@^2.2.0, env-paths@^2.2.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2"
@@ -2939,6 +2936,17 @@ fast-glob@^3.3.2:
     merge2 "^1.3.0"
     micromatch "^4.0.4"
 
+fast-glob@^3.3.3:
+  version "3.3.3"
+  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818"
+  integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==
+  dependencies:
+    "@nodelib/fs.stat" "^2.0.2"
+    "@nodelib/fs.walk" "^1.2.3"
+    glob-parent "^5.1.2"
+    merge2 "^1.3.0"
+    micromatch "^4.0.8"
+
 fast-json-stable-stringify@^2.0.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
@@ -3172,11 +3180,6 @@ get-stdin@^8.0.0:
   resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53"
   integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==
 
-get-stdin@~9.0.0:
-  version "9.0.0"
-  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-9.0.0.tgz#3983ff82e03d56f1b2ea0d3e60325f39d703a575"
-  integrity sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==
-
 get-stream@^5.0.0, get-stream@^5.1.0:
   version "5.2.0"
   resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
@@ -3234,7 +3237,7 @@ glob-to-regexp@^0.4.1:
   resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
   integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
 
-glob@^10.0.0, glob@^10.2.2:
+glob@^10.0.0, glob@^10.2.2, glob@^10.4.5:
   version "10.4.5"
   resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
   integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
@@ -3258,17 +3261,6 @@ glob@^7.0.0, glob@^7.1.3, glob@^7.1.6:
     once "^1.3.0"
     path-is-absolute "^1.0.0"
 
-glob@^8.1.0:
-  version "8.1.0"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e"
-  integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
-  dependencies:
-    fs.realpath "^1.0.0"
-    inflight "^1.0.4"
-    inherits "2"
-    minimatch "^5.0.1"
-    once "^1.3.0"
-
 glob@^9.2.0:
   version "9.3.5"
   resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21"
@@ -3279,17 +3271,6 @@ glob@^9.2.0:
     minipass "^4.2.4"
     path-scurry "^1.6.1"
 
-glob@~10.3.12:
-  version "10.3.12"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.12.tgz#3a65c363c2e9998d220338e88a5f6ac97302960b"
-  integrity sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==
-  dependencies:
-    foreground-child "^3.1.0"
-    jackspeak "^2.3.6"
-    minimatch "^9.0.1"
-    minipass "^7.0.4"
-    path-scurry "^1.10.2"
-
 global-agent@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6"
@@ -3328,17 +3309,17 @@ globalthis@^1.0.1, globalthis@^1.0.3:
   dependencies:
     define-properties "^1.1.3"
 
-globby@14.0.1:
-  version "14.0.1"
-  resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.1.tgz#a1b44841aa7f4c6d8af2bc39951109d77301959b"
-  integrity sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==
+globby@14.1.0:
+  version "14.1.0"
+  resolved "https://registry.yarnpkg.com/globby/-/globby-14.1.0.tgz#138b78e77cf5a8d794e327b15dce80bf1fb0a73e"
+  integrity sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==
   dependencies:
     "@sindresorhus/merge-streams" "^2.1.0"
-    fast-glob "^3.3.2"
-    ignore "^5.2.4"
-    path-type "^5.0.0"
+    fast-glob "^3.3.3"
+    ignore "^7.0.3"
+    path-type "^6.0.0"
     slash "^5.1.0"
-    unicorn-magic "^0.1.0"
+    unicorn-magic "^0.3.0"
 
 gopd@^1.0.1:
   version "1.0.1"
@@ -3556,7 +3537,7 @@ ieee754@^1.2.1:
   resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
   integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
 
-ignore@^5.0.0, ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4, ignore@~5.3.1:
+ignore@^5.0.0, ignore@^5.1.1, ignore@^5.2.0, ignore@^5.2.4:
   version "5.3.1"
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
   integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
@@ -3566,6 +3547,11 @@ ignore@^5.3.1:
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
   integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
 
+ignore@^7.0.3:
+  version "7.0.4"
+  resolved "https://registry.yarnpkg.com/ignore/-/ignore-7.0.4.tgz#a12c70d0f2607c5bf508fb65a40c75f037d7a078"
+  integrity sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==
+
 import-fresh@^3.1.0, import-fresh@^3.2.1:
   version "3.3.0"
   resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
@@ -3615,11 +3601,6 @@ ini@^4.1.2, ini@^4.1.3:
   resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.3.tgz#4c359675a6071a46985eb39b14e4a2c0ec98a795"
   integrity sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==
 
-ini@~4.1.0:
-  version "4.1.2"
-  resolved "https://registry.yarnpkg.com/ini/-/ini-4.1.2.tgz#7f646dbd9caea595e61f88ef60bfff8b01f8130a"
-  integrity sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==
-
 internal-slot@^1.0.3, internal-slot@^1.0.5:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986"
@@ -3958,15 +3939,6 @@ isobject@^3.0.1:
   resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
   integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
 
-jackspeak@^2.3.6:
-  version "2.3.6"
-  resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8"
-  integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==
-  dependencies:
-    "@isaacs/cliui" "^8.0.2"
-  optionalDependencies:
-    "@pkgjs/parseargs" "^0.11.0"
-
 jackspeak@^3.1.2:
   version "3.4.3"
   resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a"
@@ -4067,10 +4039,10 @@ json5@^2.0.0, json5@^2.1.2:
   resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
   integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
 
-jsonc-parser@3.2.1, jsonc-parser@~3.2.1:
-  version "3.2.1"
-  resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a"
-  integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==
+jsonc-parser@3.3.1:
+  version "3.3.1"
+  resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.3.1.tgz#f2a524b4f7fd11e3d791e559977ad60b98b798b4"
+  integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==
 
 jsonfile@^4.0.0:
   version "4.0.0"
@@ -4088,11 +4060,6 @@ jsonfile@^6.0.1:
   optionalDependencies:
     graceful-fs "^4.1.6"
 
-jsonpointer@5.0.1:
-  version "5.0.1"
-  resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559"
-  integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==
-
 jsonwebtoken@^9.0.0:
   version "9.0.0"
   resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d"
@@ -4128,6 +4095,13 @@ jws@^3.2.2:
     jwa "^1.4.1"
     safe-buffer "^5.0.1"
 
+katex@^0.16.0:
+  version "0.16.22"
+  resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.22.tgz#d2b3d66464b1e6d69e6463b28a86ced5a02c5ccd"
+  integrity sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==
+  dependencies:
+    commander "^8.3.0"
+
 keyv@^4.0.0:
   version "4.3.1"
   resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.3.1.tgz#7970672f137d987945821b1a07b524ce5a4edd27"
@@ -4164,13 +4138,6 @@ lines-and-columns@^2.0.3:
   resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-2.0.4.tgz#d00318855905d2660d8c0822e3f5a4715855fc42"
   integrity sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==
 
-linkify-it@^4.0.1:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-4.0.1.tgz#01f1d5e508190d06669982ba31a7d9f56a5751ec"
-  integrity sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==
-  dependencies:
-    uc.micro "^1.0.1"
-
 linkify-it@^5.0.0:
   version "5.0.0"
   resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421"
@@ -4385,63 +4352,37 @@ markdown-it@14.1.0, markdown-it@^14.1.0:
     punycode.js "^2.3.1"
     uc.micro "^2.1.0"
 
-markdown-it@^13.0.1:
-  version "13.0.1"
-  resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-13.0.1.tgz#c6ecc431cacf1a5da531423fc6a42807814af430"
-  integrity sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==
-  dependencies:
-    argparse "^2.0.1"
-    entities "~3.0.1"
-    linkify-it "^4.0.1"
-    mdurl "^1.0.1"
-    uc.micro "^1.0.5"
-
-markdownlint-cli2-formatter-default@0.0.4:
-  version "0.0.4"
-  resolved "https://registry.yarnpkg.com/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.4.tgz#81e26b0a50409c0357c6f0d38d8246946b236fab"
-  integrity sha512-xm2rM0E+sWgjpPn1EesPXx5hIyrN2ddUnUwnbCsD/ONxYtw3PX6LydvdH6dciWAoFDpwzbHM1TO7uHfcMd6IYg==
+markdownlint-cli2-formatter-default@0.0.5:
+  version "0.0.5"
+  resolved "https://registry.yarnpkg.com/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.5.tgz#b8fde4e127f9a9c0596e6d45eed352dd0aa0ff98"
+  integrity sha512-4XKTwQ5m1+Txo2kuQ3Jgpo/KmnG+X90dWt4acufg6HVGadTUG5hzHF/wssp9b5MBYOMCnZ9RMPaU//uHsszF8Q==
 
-markdownlint-cli2@^0.13.0:
-  version "0.13.0"
-  resolved "https://registry.yarnpkg.com/markdownlint-cli2/-/markdownlint-cli2-0.13.0.tgz#691cab01994295b4b8c87aa0485c0b1e0f792289"
-  integrity sha512-Pg4nF7HlopU97ZXtrcVISWp3bdsuc5M0zXyLp2/sJv2zEMlInrau0ZKK482fQURzVezJzWBpNmu4u6vGAhij+g==
+markdownlint-cli2@^0.18.0:
+  version "0.18.0"
+  resolved "https://registry.yarnpkg.com/markdownlint-cli2/-/markdownlint-cli2-0.18.0.tgz#eb8007f8f276399197c65966d3428e777a9ecbf3"
+  integrity sha512-gHvff1KxBxTqaN1F5cTxRSxBipx+Qkki430tyg0wPxty67iQNZzxREZkXy8ltbj7ObMz1eYD4aspnYXfV0sHAw==
   dependencies:
-    globby "14.0.1"
+    globby "14.1.0"
     js-yaml "4.1.0"
-    jsonc-parser "3.2.1"
-    markdownlint "0.34.0"
-    markdownlint-cli2-formatter-default "0.0.4"
-    micromatch "4.0.5"
-
-markdownlint-cli@^0.40.0:
-  version "0.40.0"
-  resolved "https://registry.yarnpkg.com/markdownlint-cli/-/markdownlint-cli-0.40.0.tgz#57678cabd543c654d2ea88f752e9ac058b31c207"
-  integrity sha512-JXhI3dRQcaqwiFYpPz6VJ7aKYheD53GmTz9y4D/d0F1MbZDGOp9pqKlbOfUX/pHP/iAoeiE4wYRmk8/kjLakxA==
-  dependencies:
-    commander "~12.0.0"
-    get-stdin "~9.0.0"
-    glob "~10.3.12"
-    ignore "~5.3.1"
-    js-yaml "^4.1.0"
-    jsonc-parser "~3.2.1"
-    jsonpointer "5.0.1"
-    markdownlint "~0.34.0"
-    minimatch "~9.0.4"
-    run-con "~1.3.2"
-    toml "~3.0.0"
-
-markdownlint-micromark@0.1.9:
-  version "0.1.9"
-  resolved "https://registry.yarnpkg.com/markdownlint-micromark/-/markdownlint-micromark-0.1.9.tgz#4876996b60d4dceb3a02f4eee2d3a366eb9569fa"
-  integrity sha512-5hVs/DzAFa8XqYosbEAEg6ok6MF2smDj89ztn9pKkCtdKHVdPQuGMH7frFfYL9mLkvfFe4pTyAMffLbjf3/EyA==
-
-markdownlint@0.34.0, markdownlint@~0.34.0:
-  version "0.34.0"
-  resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.34.0.tgz#bbc2047c952d1644269009a69ba227ed597b23fa"
-  integrity sha512-qwGyuyKwjkEMOJ10XN6OTKNOVYvOIi35RNvDLNxTof5s8UmyGHlCdpngRHoRGNvQVGuxO3BJ7uNSgdeX166WXw==
-  dependencies:
+    jsonc-parser "3.3.1"
     markdown-it "14.1.0"
-    markdownlint-micromark "0.1.9"
+    markdownlint "0.38.0"
+    markdownlint-cli2-formatter-default "0.0.5"
+    micromatch "4.0.8"
+
+markdownlint@0.38.0:
+  version "0.38.0"
+  resolved "https://registry.yarnpkg.com/markdownlint/-/markdownlint-0.38.0.tgz#862ca9d08f3a28f4149bd388ac369bb95865534e"
+  integrity sha512-xaSxkaU7wY/0852zGApM8LdlIfGCW8ETZ0Rr62IQtAnUMlMuifsg09vWJcNYeL4f0anvr8Vo4ZQar8jGpV0btQ==
+  dependencies:
+    micromark "4.0.2"
+    micromark-core-commonmark "2.0.3"
+    micromark-extension-directive "4.0.0"
+    micromark-extension-gfm-autolink-literal "2.1.0"
+    micromark-extension-gfm-footnote "2.1.0"
+    micromark-extension-gfm-table "2.1.1"
+    micromark-extension-math "3.1.0"
+    micromark-util-types "2.0.2"
*** 354 LINES SKIPPED ***