Read more of this story at Slashdot.
Read more of this story at Slashdot.
Electron 37.0.0 has been released! It includes upgrades to Chromium 138, V8 13.8, and Node 22.16.0.
The Electron team is excited to announce the release of Electron 37.0.0! You can install it with npm via npm install electron@latest
or download it from our releases website. Continue reading for details about this release.
If you have any feedback, please share it with us on Bluesky or Mastodon, or join our community Discord! Bugs and feature requests can be reported in Electron's issue tracker.
Electron 37 introduces the custom -electron-corner-smoothing
CSS property, which allows apps to create smoother rounded corners to match Apple's macOS design language. This feature originally landed in Electron 36, but we felt like it deserved a brighter spotlight.
Code | Result |
---|---|
|
Unlike the standard border-radius
property, which carves quarter-circle corners out of a rectangle, -electron-corner-smoothing
smoothly transitions
the curve into a squircle shape with a continuous perimeter.
You can adjust the smoothness using values from 0% to 100%, or use the system-ui
value to match the operating system's style (60% on macOS and 0% otherwise).
This design enhancement can be applied on borders, outlines, and shadows, giving your app a subtle layer of polish.
Read more about Electron's squircle implementation in @clavin's RFC 0012. The document goes over the motivation and technical implementation in more detail.
The initial design drew inspiration from Figma's corner smoothing implementation. Read more about their own quest for smooth corners in "Desperately seeking squircles".
138.0.7204.35
22.16.0
13.8
Electron 37 upgrades Chromium from 136.0.7103.48
to 138.0.7204.35
, and V8 from 13.6
to 13.8
.
Our two Google Summer of Code contributors have started the program's coding period!
It has been an exciting couple of weeks for our GSOC participants, so stay tuned for more updates!
innerWidth
and innerHeight
options for window.open
. #47039 (Also in 35, 36)before-mouse-event
to allow intercepting and preventing mouse events in webContents
. #47364 (Also in 36)scriptURL
property to ServiceWorkerMain
. #45863sublabel
functionality for menus on macOS >= 14.4. #47042 (Also in 35, 36)HIDDevice.collections
. #47483 (Also in 36)--no-experimental-global-navigator
flag. #47418 (Also in 35, 36)screen.dipToScreenPoint(point)
and screen.screenToDipPoint(point)
on Linux X11. #46895 (Also in 35, 36)palette
and header
on macOS. #47245--experimental-network-inspection
. #47031 (Also in 35, 36)win.isContentProtected()
to allow developers to check window protection status. #47310 (Also in 36)Utility Processes will now warn with an error message when an unhandled rejection occurs instead of crashing the process.
To restore the previous behavior, you can use:
process.on('unhandledRejection', () => {
process.exit(1);
});
process.exit()
kills utility process synchronouslyCalling process.exit()
in a utility process will now kill the utility process synchronously.
This brings the behavior of process.exit()
in line with Node.js behavior.
Please refer to the
Node.js docs and
PR #45690 to understand the potential
implications of that, e.g., when calling console.log()
before process.exit()
.
WebUSB and Web Serial now support the WebUSB Blocklist and Web Serial Blocklist used by Chromium and outlined in their respective specifications.
To disable these, users can pass disable-usb-blocklist
and disable-serial-blocklist
as command line flags.
null
value for session
property in ProtocolResponse
This deprecated feature has been removed.
Previously, setting the ProtocolResponse.session
property to null
would create a random independent session. This is no longer supported.
Using single-purpose sessions here is discouraged due to overhead costs;
however, old code that needs to preserve this behavior can emulate it by
creating a random session with session.fromPartition(some_random_string)
and then using it in ProtocolResponse.session
.
BrowserWindow.IsVisibleOnAllWorkspaces()
on LinuxBrowserWindow.IsVisibleOnAllWorkspaces()
will now return false on Linux if the
window is not currently visible.
Electron 34.x.y has reached end-of-support as per the project's support policy. Developers and applications are encouraged to upgrade to a newer version of Electron.
E37 (Jun'25) | E38 (Aug'25) | E39 (Oct'25) |
---|---|---|
37.x.y | 38.x.y | 39.x.y |
36.x.y | 37.x.y | 38.x.y |
35.x.y | 36.x.y | 37.x.y |
In the short term, you can expect the team to continue to focus on keeping up with the development of the major components that make up Electron, including Chromium, Node, and V8.
You can find Electron's public timeline here.
More information about future changes can be found on the Planned Breaking Changes page.
The OWASP Foundation has officially introduced the AI Testing Guide (AITG), a new open-source initiative aimed at assisting organizations in the systematic testing and security of artificial intelligence systems. This guide serves as a fundamental resource for developers, testers, risk officers, and cybersecurity professionals, promoting best practices in AI system security.
By Robert KrzaczyńskiAI presents both a once-in-a-generation opportunity and a challenge to help every employee conquer the infinite workday.
The post How Microsoft 365 Copilot and agents help tackle the infinite workday appeared first on Microsoft 365 Blog.
basePath
property in config objectsConfig objects can now include the new basePath
property to specify the path to a subdirectory to which the config object should apply to. If a config object has a basePath
property, patterns specified in files
and ignores
are evaluated relative to the subdirectory represented by basePath
. This makes it easier to write config objects that target a particular directory inside your project.
// eslint.config.js
import { defineConfig } from "eslint/config";
import js from "@eslint/js";
export default defineConfig([
{
basePath: "packages/hello-base-path",
plugins: { js },
extends: ["js/recommended"],
ignores: ["coverage/**", "dist/**"],
},
]);
You can read more about base paths in config objects in the documentation
.
v10_config_lookup_from_file
With the addition of the basePath
property in config objects, the experimental configuration file resolution introduced in ESLint v9.12.0 has been finalized. It will become the default behavior in the next major release of ESLint. Accordingly, the feature flag unstable_config_lookup_from_file
has been renamed to v10_config_lookup_from_file
. The old flag name still works, so if you are already using unstable_config_lookup_from_file
in your setup, you don’t need to take any action.
allowSeparateTypeImports
option in no-duplicate-imports
With the new option allowSeparateTypeImports
, the no-duplicate-imports
rule can now be configured to treat import
and import type
as separate usages, even if they specify the same module.
/*eslint no-duplicate-imports: ["error", { "allowSeparateTypeImports": false }]*/
import { someValue } from 'module';
import type { SomeType } from 'module';
SourceCode
method getIndexFromLoc
now throws an error if the argument specifies a negative value for the column
property.52a5fca
feat: Support basePath
property in config objects (#19879) (Milos Djermanovic)4ab4482
feat: add allowSeparateTypeImports
option to no-duplicate-imports
(#19872) (sethamus)b8a7e7a
feat: throw error when column is negative in getIndexFromLoc
(#19831) (루밀LuMir)6a0f164
fix: handle null
type loc
in getIndexFromLoc
method (#19862) (루밀LuMir)3fbcd70
fix: update error message for no-restricted-properties
(#19855) (Tanuj Kanti)7ef4cf7
fix: remove unnecessary semicolon from fixes (#19857) (Francesco Trotta)7dabc38
fix: use process.version
in --env-info
(#19865) (TKDev7)8662ed1
docs: adopt eslint-stylistic sub packages related changes (#19887) (ntnyq)20158b0
docs: typo in comment for unused variables handling (#19870) (leopardracer)ebfb5b4
docs: Fixed Typo in configuration-files.md (#19873) (0-20)4112fd0
docs: clarify that boolean is still allowed for rule meta.deprecated
(#19866) (Bryan Mishkin)