❌

Lees weergave

33.0.0-beta3: OBS Studio 33.0.0 Beta 3

βœ‡OBS
Door: RytoEX

Beta 3 Changes

  • Fixed a CI issue. There are no application changes since Beta 1.

Beta 2 Changes

  • Fixed a versioning issue. There are no application changes since Beta 1.

33.0 New Features

  • Updated CEF from 127/6533 to 150/7871 [WizardCM] (#13900)
    • This is a massive update to the underlying framework used for browser sources and docks from the July 2024 release to September 2026
    • All of this work is on the backend and should be invisible to users. Please be sure to report any new weirdness or problems you run into with browser sources!
  • Complete overhaul to plugin loading [FiniteSingularity/PatTheMav] (#13594)
    • First-party plugins are now in a new folder named core
    • Third-party plugins have an updated installation location and folder structure
    • Existing third-party plugins will continue to load from the legacy locations until OBS Studio 34.0
    • More information is available in our knowledge base article.
  • Improved how source snapping works in the preview [Warchamp7] (#12298)
    • New visual indicator added
    • Sources now snap along the entire axis instead of only when directly touching
    • Sources no longer snap to hidden sources
  • Improved behavior of spinboxes for number values [Warchamp7] (#12337)
    • Typing is no longer mysteriously blocked in some situations
    • Numbers are no longer cut off in some situations
    • Values now update only after pressing Enter and Enter does not close the window
    • Holding Shift + Up/Down now advances multiple steps at a time
    • Dragging the cursor inside the input but outside the text itself now works properly
  • Enabled NVENC on Arm64 [RytoEX] (#13827)

33.0 Changes

  • Added a check for encoders being missing when loading a profile [derrod] (#11340)
  • Added support for newest NVIDIA Broadcast SDKs for NVIDIA Audio Effects and Video Effects [pkviet] (#13838)
  • Added hotkeys for controlling audio monitoring of a source [Warchamp7] (#13599)
  • Fixed issues with groups in Studio Mode [Warchamp7] (#11092)
    • Fixed moving sources inside a group causing them to glitch out in Program
    • Fixed moving sources inside a group showing up live in Program
  • Adjusted naming of Window Capture methods on Windows [Penwy] (#12047)
  • Improved detection of fullscreen games for Game Capture [Kira-NT] (#10880)
  • Improved transparency handling for macOS Screen Capture [jcm93] (#13030)
  • Scaled simple output recording audio bitrate by channel count [nickvonkaenel] (#13311)
  • Removed support for Ubuntu 24.04

33.0 Bug Fixes

  • Added a startup error if obs-transitions failed to load [notr1ch] (#13321)
  • Improved file splitting for Hybrid MP4/MOV [derrod] (#13386)
  • Fixed outputs getting stuck running when a bad rescale output resolution is set [suogesi] (#13375)
  • Fixed monitoring icon state getting desynced when using third-party tools or websockets [prgmitchell] (#13822)
  • Fixed potential crash when shader cache file is invalid [notr1ch] (#13538)
  • Fixed a potential crash on Linux when USB mic is removed [R0te/RytoEX] (#13922)
  • Fixed a potential crash when renaming a source with the Add Source window open [Warchamp7] (#13800)
  • Fixed a potential deadlock during video/audio tasks [exeldro] (#13579)
  • Fixed an issue with B-frame offset calculation in AMF that could cause streams to disconnect [lexano-ivs] (#13762)
  • Fixed PipeWire screencast sources being duplicated in studio mode [tytan652] (#13673)
  • Fixed a potential crash when switching off a newly created profile [Warchamp7] (#13182)
  • Fixed a source toolbar crash when source type is missing [Penwy] (#13539)

33.0 Developer Information

  • Added frontend event and output signal for replay buffer saving [Penwy] (#8955)
  • Added guidance regarding the theme system to the top of all theme files [Warchamp7] (#13733)
  • Added ability to set a file extension filter for OBS_PATH_FILE_SAVE path types [FiniteSingularity] (#10190)
  • Added obs_frontend_is_safe_mode for first-party plugins
    • Third-party plugins are not loaded at all in Safe Mode
  • Added versions to Flatpak plugin extension point [tytan652] (#13735)
  • Updated libnsgif to 1.0.0 [RytoEX] (#11178)
    • This is a breaking change for any plugins using libobs/graphics gs_image_file
  • Clarified documentation for obs_module_unload [notr1ch] (#13327)
  • Required MbedTLS 3 and exclude 4 or later [tytan652] (#13799)
  • Fixed repeated preview enable/disables not working [WarmUpTill] (#12580)
  • Only emit core signal handlers for public canvases [tt2468] (#13574)
  • Deprecated unused hidden API for sources [derrod] (#13122)
  • Deprecated APIs for audio source monitoring_type [Warchamp7] (#13599)
    • This is replaced by a new monitoring_enabled boolean

  •  

33.0.0-beta2: OBS Studio 33.0.0 Beta 2

βœ‡OBS
Door: RytoEX

Beta 2 Changes

  • Fixed a versioning issue. There are no application changes since Beta 1.

33.0 New Features

  • Updated CEF from 127/6533 to 150/7871 [WizardCM] (#13900)
    • This is a massive update to the underlying framework used for browser sources and docks from the July 2024 release to September 2026
    • All of this work is on the backend and should be invisible to users. Please be sure to report any new weirdness or problems you run into with browser sources!
  • Complete overhaul to plugin loading [FiniteSingularity/PatTheMav] (#13594)
    • First-party plugins are now in a new folder named core
    • Third-party plugins have an updated installation location and folder structure
    • Existing third-party plugins will continue to load from the legacy locations until OBS Studio 34.0
    • More information is available in our knowledge base article.
  • Improved how source snapping works in the preview [Warchamp7] (#12298)
    • New visual indicator added
    • Sources now snap along the entire axis instead of only when directly touching
    • Sources no longer snap to hidden sources
  • Improved behavior of spinboxes for number values [Warchamp7] (#12337)
    • Typing is no longer mysteriously blocked in some situations
    • Numbers are no longer cut off in some situations
    • Values now update only after pressing Enter and Enter does not close the window
    • Holding Shift + Up/Down now advances multiple steps at a time
    • Dragging the cursor inside the input but outside the text itself now works properly
  • Enabled NVENC on Arm64 [RytoEX] (#13827)

33.0 Changes

  • Added a check for encoders being missing when loading a profile [derrod] (#11340)
  • Added support for newest NVIDIA Broadcast SDKs for NVIDIA Audio Effects and Video Effects [pkviet] (#13838)
  • Added hotkeys for controlling audio monitoring of a source [Warchamp7] (#13599)
  • Fixed issues with groups in Studio Mode [Warchamp7] (#11092)
    • Fixed moving sources inside a group causing them to glitch out in Program
    • Fixed moving sources inside a group showing up live in Program
  • Adjusted naming of Window Capture methods on Windows [Penwy] (#12047)
  • Improved detection of fullscreen games for Game Capture [Kira-NT] (#10880)
  • Improved transparency handling for macOS Screen Capture [jcm93] (#13030)
  • Scaled simple output recording audio bitrate by channel count [nickvonkaenel] (#13311)
  • Removed support for Ubuntu 24.04

33.0 Bug Fixes

  • Added a startup error if obs-transitions failed to load [notr1ch] (#13321)
  • Improved file splitting for Hybrid MP4/MOV [derrod] (#13386)
  • Fixed outputs getting stuck running when a bad rescale output resolution is set [suogesi] (#13375)
  • Fixed monitoring icon state getting desynced when using third-party tools or websockets [prgmitchell] (#13822)
  • Fixed potential crash when shader cache file is invalid [notr1ch] (#13538)
  • Fixed a potential crash on Linux when USB mic is removed [R0te/RytoEX] (#13922)
  • Fixed a potential crash when renaming a source with the Add Source window open [Warchamp7] (#13800)
  • Fixed a potential deadlock during video/audio tasks [exeldro] (#13579)
  • Fixed an issue with B-frame offset calculation in AMF that could cause streams to disconnect [lexano-ivs] (#13762)
  • Fixed PipeWire screencast sources being duplicated in studio mode [tytan652] (#13673)
  • Fixed a potential crash when switching off a newly created profile [Warchamp7] (#13182)
  • Fixed a source toolbar crash when source type is missing [Penwy] (#13539)

33.0 Developer Information

  • Added frontend event and output signal for replay buffer saving [Penwy] (#8955)
  • Added guidance regarding the theme system to the top of all theme files [Warchamp7] (#13733)
  • Added ability to set a file extension filter for OBS_PATH_FILE_SAVE path types [FiniteSingularity] (#10190)
  • Added obs_frontend_is_safe_mode for first-party plugins
    • Third-party plugins are not loaded at all in Safe Mode
  • Added versions to Flatpak plugin extension point [tytan652] (#13735)
  • Updated libnsgif to 1.0.0 [RytoEX] (#11178)
    • This is a breaking change for any plugins using libobs/graphics gs_image_file
  • Clarified documentation for obs_module_unload [notr1ch] (#13327)
  • Required MbedTLS 3 and exclude 4 or later [tytan652] (#13799)
  • Fixed repeated preview enable/disables not working [WarmUpTill] (#12580)
  • Only emit core signal handlers for public canvases [tt2468] (#13574)
  • Deprecated unused hidden API for sources [derrod] (#13122)
  • Deprecated APIs for audio source monitoring_type [Warchamp7] (#13599)
    • This is replaced by a new monitoring_enabled boolean

  •  

33.0.0-beta1: OBS Studio 33.0.0 Beta 1

βœ‡OBS
Door: RytoEX

33.0 New Features

  • Updated CEF from 127/6533 to 150/7871 [WizardCM] (#13900)
    • This is a massive update to the underlying framework used for browser sources and docks from the July 2024 release to September 2026
    • All of this work is on the backend and should be invisible to users. Please be sure to report any new weirdness or problems you run into with browser sources!
  • Complete overhaul to plugin loading [FiniteSingularity/PatTheMav] (#13594)
    • First-party plugins are now in a new folder named core
    • Third-party plugins have an updated installation location and folder structure
    • Existing third-party plugins will continue to load from the legacy locations until OBS Studio 34.0
    • More information is available in our knowledge base article.
  • Improved how source snapping works in the preview [Warchamp7] (#12298)
    • New visual indicator added
    • Sources now snap along the entire axis instead of only when directly touching
    • Sources no longer snap to hidden sources
  • Improved behavior of spinboxes for number values [Warchamp7] (#12337)
    • Typing is no longer mysteriously blocked in some situations
    • Numbers are no longer cut off in some situations
    • Values now update only after pressing Enter and Enter does not close the window
    • Holding Shift + Up/Down now advances multiple steps at a time
    • Dragging the cursor inside the input but outside the text itself now works properly
  • Enabled NVENC on Arm64 [RytoEX] (#13827)

33.0 Changes

  • Added a check for encoders being missing when loading a profile [derrod] (#11340)
  • Added support for newest NVIDIA Broadcast SDKs for NVIDIA Audio Effects and Video Effects [pkviet] (#13838)
  • Added hotkeys for controlling audio monitoring of a source [Warchamp7] (#13599)
  • Fixed issues with groups in Studio Mode [Warchamp7] (#11092)
    • Fixed moving sources inside a group causing them to glitch out in Program
    • Fixed moving sources inside a group showing up live in Program
  • Adjusted naming of Window Capture methods on Windows [Penwy] (#12047)
  • Improved detection of fullscreen games for Game Capture [Kira-NT] (#10880)
  • Improved transparency handling for macOS Screen Capture [jcm93] (#13030)
  • Scaled simple output recording audio bitrate by channel count [nickvonkaenel] (#13311)
  • Removed support for Ubuntu 24.04

33.0 Bug Fixes

  • Added a startup error if obs-transitions failed to load [notr1ch] (#13321)
  • Improved file splitting for Hybrid MP4/MOV [derrod] (#13386)
  • Fixed outputs getting stuck running when a bad rescale output resolution is set [suogesi] (#13375)
  • Fixed monitoring icon state getting desynced when using third-party tools or websockets [prgmitchell] (#13822)
  • Fixed potential crash when shader cache file is invalid [notr1ch] (#13538)
  • Fixed a potential crash on Linux when USB mic is removed [R0te/RytoEX] (#13922)
  • Fixed a potential crash when renaming a source with the Add Source window open [Warchamp7] (#13800)
  • Fixed a potential deadlock during video/audio tasks [exeldro] (#13579)
  • Fixed an issue with B-frame offset calculation in AMF that could cause streams to disconnect [lexano-ivs] (#13762)
  • Fixed PipeWire screencast sources being duplicated in studio mode [tytan652] (#13673)
  • Fixed a potential crash when switching off a newly created profile [Warchamp7] (#13182)
  • Fixed a source toolbar crash when source type is missing [Penwy] (#13539)

33.0 Developer Information

  • Added frontend event and output signal for replay buffer saving [Penwy] (#8955)
  • Added guidance regarding the theme system to the top of all theme files [Warchamp7] (#13733)
  • Added ability to set a file extension filter for OBS_PATH_FILE_SAVE path types [FiniteSingularity] (#10190)
  • Added obs_frontend_is_safe_mode for first-party plugins
    • Third-party plugins are not loaded at all in Safe Mode
  • Added versions to Flatpak plugin extension point [tytan652] (#13735)
  • Updated libnsgif to 1.0.0 [RytoEX] (#11178)
    • This is a breaking change for any plugins using libobs/graphics gs_image_file
  • Clarified documentation for obs_module_unload [notr1ch] (#13327)
  • Required MbedTLS 3 and exclude 4 or later [tytan652] (#13799)
  • Fixed repeated preview enable/disables not working [WarmUpTill] (#12580)
  • Only emit core signal handlers for public canvases [tt2468] (#13574)
  • Deprecated unused hidden API for sources [derrod] (#13122)
  • Deprecated APIs for audio source monitoring_type [Warchamp7] (#13599)
    • This is replaced by a new monitoring_enabled boolean

  •  

v0.20.0-rc.6

❗ This is a pre-release

  • May contain bugs and unfinished features.

⚠️ Note for macOS users

Builds are unsigned (no Apple Developer ID). After dragging MarkText into Applications, clear the quarantine flag once:

xattr -cr /Applications/marktext.app

Verifying downloads

All artifacts are listed with their SHA-256 in SHA256SUMS.txt. Verify with:

sha256sum -c SHA256SUMS.txt --ignore-missing

What's Changed

  • docs: explain how to put marktext on PATH on every platform by @Jocs in #5459
  • fix(desktop): wrap long code-block lines when exporting to PDF (#5307) by @Jocs in #5460
  • fix(desktop): restore treePathExcludePatterns filtering in the sidebar tree by @Jocs in #5461
  • fix(desktop): require deliberate movement before a tab click becomes a drag (#4895) by @Jocs in #5464
  • fix(desktop): put the unsaved dot back on the left of the title bar path (#5467) by @Jocs in #5468
  • fix(muya): render SVG images that state no size of their own (#4991) by @Jocs in #5462
  • fix(muya): bound inline math by the text column, not by its own box (#5034) by @Jocs in #5466
  • fix(muya): give every mermaid render its own id (#5023) by @Jocs in #5465
  • fix(muya): show the text cursor over the whole editable column (#5477) by @Jocs in #5478
  • feat: support pandoc's backslash TeX math delimiters (#5446) by @Jocs in #5481
  • fix(desktop): theme the table of contents text and arrows (#5094) by @Jocs in #5486
  • fix(desktop): tell the two backslash math preferences apart in the UI (#5481) by @Jocs in #5485
  • feat(export): convert Markdown to arbitrary formats via Pandoc by @dimbc in #5379
  • fix(desktop): make source mode math highlighting follow the editor (#5483) by @Jocs in #5484
  • fix(desktop): reload an unedited tab silently when its file changes on disk (#3652) by @Jocs in #5479
  • fix(muya): keep footnote definitions packed one per line as siblings by @Jocs in #5487
  • fix(muya): resolve footnote references while escapes are still visible by @Jocs in #5491
  • fix(muya): give each repeated footnote reference its own id and backref by @Jocs in #5492
  • feat(i18n): add Russian (ru) localization by @blvcknwh1te in #5496
  • test(muya): stop the deepClone spec from overflowing the stack itself by @Jocs in #5505
  • fix(i18n): give Dutch users the Dutch editor UI, and hold the language registries together by @Jocs in #5502
  • fix(desktop): resolve local link paths without decoding the document folder (#4749) by @Jocs in #5506
  • test(desktop): repoint the technical-term checks at keys that exist by @Jocs in #5503
  • i18n: improve Russian localization wording by @NeroWolfe75 in #5507
  • feat(toc): highlight active heading based on cursor position by @rkristelijn in #4345
  • docs: update verify the download instructions by @slovanos in #5511
  • fix(desktop): keep the outline title in place, and make its word-wrap preference work by @Jocs in #5514
  • perf(muya): skip a code block re-render that produces identical DOM by @Jocs in #4876
  • fix(muya): re-render a code block when the grammar it renders with changes (#5515) by @Jocs in #5516
  • fix(desktop): stop clipboard image uploads clobbering each other and mangling paths by @Jocs in #5512
  • fix(desktop): retry a save whose rename an SMB share refused (#5322) by @Jocs in #5520
  • fix(desktop): find the uploader the user installed, wherever they installed it (#5518) by @Jocs in #5519
  • fix(desktop): find pandoc the same way the uploader finds picgo (#2751) by @Jocs in #5525
  • Type the .vue CodeMirror/spell-checker handles and forbid any in .vue (#4257) by @Jocs in #5521
  • Type the editor handle as Muya, from the engine's own declarations (#4257) by @Jocs in #5533
  • Drop the legacy muya ambient bridge and its aliases (#4257) by @Jocs in #5526
  • fix(muya): select the clicked line ourselves on a triple-click (#5389) by @Jocs in #5524
  • fix(muya): take the image references from the live DOM after selecting (#5391) by @Jocs in #5534
  • fix(muya): keep an image resize released outside the window (#5393) by @Jocs in #5537
  • fix(muya): size an image from where its resize handle was grabbed (#5392) by @Jocs in #5535
  • fix(muya): cut a cross-block selection from beforeinput too (#5415) by @Jocs in #5536
  • fix: keep the export render container out of the page layout (#5541) by @Jocs in #5542
  • fix(muya): keep a wide equation from scrolling under its own tag (#4339) by @Jocs in #5540

New Contributors

Full Changelog: v0.20.0-rc.5...v0.20.0-rc.6

  •  

Paint.NET 5.2 Beta (build 9762)

​

Welcome to the first beta for the 5.2 update! This new version has new effects and also has a big focus on performance, quality-of-life, and infrastructure improvements which prepare for the big 6.0 version that will be coming later. The two biggest changes are the new FileType plugin system and the rewritten high-precision layer rendering engine. There are also 8 new effects and very experimental support for running on Wine (Linux/Mac), which we’ll get to later.

New FileType Plugin System

The original FileType plugin system dates back to 2005 with the v2.5 release. It has withstood the test of time in the sense that it still works and has provided a lot of value for a lot of people, but it has also noticeably aged poorly in ways that have prevented progress in other areas of the app. It was written at a time when .NET itself was just 3 years old and hitting its 2.0 release with generics and 64-bit support. The modern systems used in Paint.NET for component management and isolation were nowhere to be found back then. I had no clue that the project’s longevity would stretch so far into the future, nor that so many plugins would be developed!

The old FileType plugin system is tightly coupled with the Document, Layer, and Surface classes which Paint.NET also uses internally for UI and rendering purposes. They only support the 32-bit BGRA UI8 pixel format and a flat list of bitmap layers. The new FileType system works through interfaces such as IFileTypeDocument<TPixel> and ILayer<TPixel>, along with a rich and strongly-typed imaging framework providing support for a wide variety of pixel formats, pooled bitmap allocation, scaling/interpolation, quantization/dithering, format conversion, color management, and more.

Decoupling the FileType system from the internal classes means that these two systems can now evolve independently, and internal details can be abstracted away from plugins. The new plugin system has been designed to support versioning, meaning that functionality can be added or changed in the programming interfaces that are provided to plugins while maintaining compatibility for plugins that have already been published. New layer types and topologies (e.g. layer folders) can be added without breaking existing plugins, new blend modes can be introduced, and bitmap layers can finally be migrated to a tiled storage system.

Note to plugin authors: In general, plugins should provide pixel data in the image file’s original format without converting it to BGRA32. In other words, let Paint.NET handle the conversion, whether you’re supplying pixels as RGBA64, BGR24, or even an HDR format such as RGBA FP16. Paint.NET will figure out the best conversion for pixel format and color profile handling, and when expanded pixel format support is rolled out your plugin can automatically benefit from it. Note that plugins can query at runtime which pixel formats are supported and which are native, in case they do want to do the conversion themselves for whatever reason.

New Layer Rendering Engine

The old layer rendering engine has its roots going all the way back to the 1.0 release in 2004. Over the years it has migrated from C# to C for performance reasons, and then back to C# once the language and .NET’s JIT had finally caught up to (and surpassed!) the performance of the native C compiler’s code generation. However, it has no SIMD optimizations, it only has 8 bits per channel of precision (β€œUI8”), and the code was very messy and difficult to make changes to. Working with many layers can result in incorrect colors or banding artifacts as off-by-1 errors accumulate across multiple layers.Β 

With 5.2, this has been completely rewritten and upgraded to use 32-bits of floating-point precision per channel (β€œFP32”). It is fully optimized for AVX2, AVX512, and even ARM64 NEON thanks to .NET’s new platform-agnostic intrinsics support. Because FP32 uses a lot more memory bandwidth than UI8, many tricks have been employed to optimize that to the point that there is no perceptible performance reduction from previous versions (the old renderer not using any SIMD also helps this comparison). The bottleneck is compute, not memory bandwidth, and performance really shines on CPUs with AVX512 support (e.g. AMD Zen 5) even with standard dual channel memory.

A driving factor behind this change was to prepare for future versions of Paint.NET that will expand pixel format support beyond BGRA UI8. In order to do this in a sane and maintainable manner, having a canonical pixel format became important so that each rendering kernel only needs to be written once. All of the rendering kernels can now operate exclusively on FP32 data, with high-performance format conversion and color transform kernels at the beginning and end of the rendering pipeline. This will make it much easier to add application-level support for RGBA UI16, RGBA FP16, and even RGBA FP32 β€” the layer rendering engine already supports it, the rest of the app just has to catch up.

New Effects

This release adds 8 new effects. These fill in the Artistic submenu, add some new dithering capabilities, two new distortion effects, and finally support for high-quality halftoning.

  • Artistic -> Linocut
    • Simulates a relief printmaking technique where an artist carves an image into a sheet of linoleum, rolls ink onto the raised surface, and then stamps it onto paper or fabric.
  • Artistic -> Mosaic
    • This is sort of like an expanded Pixelate effect with optional beveling and grout separation between the β€œpixels.” There are numerous tiling patterns to choose from.
  • Artistic -> Pointilism
    • Simulates a painting technique where an artist applies small, distinct dots of color next to each other to form an image.
  • Artistic -> Stained Glass
    • Simulates stained glass. Similar to Distort->Crystalize, but more fleshed out.
  • Color -> Ordered Dither
    • Simple ordered dithering patterns from the Bayer, Spiral, Dual Spiral, Blue Noise, and White Noise families.
  • Distort -> Spherize
    • Similar to Distort -> Bulge, but produces an actual spherical shape.
  • Distort -> Waves
    • A very configurable effect that can produce waves, ripples, spirals, flowers, and other shapes.
  • Stylize -> Halftone
    • Simulates physical printing, such as seen in newspapers or comic books, using either CMYK or black-and-white dots. The conversions between RGB and CMYK are color space aware and operate in linear gamma space when appropriate, resulting in a very high quality result.

Examples of each new effect:

Original
image.png
Linocut
image.png
Mosaic
image.png

Pointilism
image.png
Stained Glass
image.png
Ordered Dither
image.png

Spherize
image.png
Waves
image.png
Halftone
image.png

Experimental Wine Support

NOTE: This is not for the faint of heart! It is very much experimental and targeted towards early adopters who aren’t afraid of missing functionality, performance issues, crashes, and wrestling with dependencies.

I’ve recently made major progress getting Paint.NET working on top of Wine, which means Paint.NET can now finally run on Linux and Mac. This was first made available as part of 5.2 Alpha (build 9739) and has now been moved into its own package that you can download from a separate GitHub page with its own Releases page and Issues tracker. Updates will be independent(-ish) of the main Windows packages, at least for the foreseeable future. Each new Windows release will be accompanied by a corresponding Wine release so that it doesn’t fall behind in functionality.

What’s coming in 6.0?

The next big update will introduce a new .PDN file format that will finally enable the ability to add new features to the document and layering systems. High bit-depth pixel formats, new blend modes, and layer folders are planned to be the first use of this. Later on, features such as adjustment layers, text layers, and HDR are also planned (to name just a few).

Change Log

Changes since 5.2 Alpha (build 9739) (sorry, I forgot to cross-post it to the blog):

  • New: The Eraser tool now supports selecting a Fill pattern in the toolbar.
  • Improved: When using Image->Resize and β€œMaintain aspect ratio”, the rounding has been improved to reduce the aspect ratio error
  • Fixed a bug in the Move tools where shift-clicking on a side handle (north/south/east/west) would sometimes cause it to move on its own by 1-2 pixels.
  • Fixed: The Colors window will no longer erase the hex field if an invalid character is typed.
  • Fixed the tooltips in the File -> Open Recent menu by removing them (WinForms is just very buggy here). The directory paths are now shown on a second line of text instead.
  • Renamed the β€œMove Selected Pixels” tool to β€œMove Pixels.”
  • Fixed an SEHException error message when changing the language.
  • Experimental Wine support is now in a separate package that is updated independently(-ish) of the main package. You can get it here: https://github.com/paintdotnet/Paint.NET-on-Wine
  • Updated the DDS FileType Plus bundled plugin. The Save Options dialog will now auto-check or auto-uncheck the checkboxes for enabling mipmaps or cube maps if the image was originally opened from a DDS file.

Download and Install

This build is available via the built-in updater as long as you have opted-in to pre-release updates. From within Settings -> Updates, enable β€œAlso check for pre-release (beta) versions of Paint.NET” and then click on the Check Now button. You can also use the links below to download an offline installer or portable ZIP.

image.png

You can also download the installer here (for any supported CPU and OS), which is also where you can find downloads for offline installers, portable ZIPs, and deployable MSIs.

For the experimental builds for Wine, you can go here to download them.

​

  •  

Early Stable Update for Desktop

Β The Stable channel has been updated to 155.0.8059.12/.13 for Windows and Mac as part of our early stable release to a small percentage of users. A full list of changes in this build is available in the log.

You can find more details about early Stable releases here.

Interested in switching release channels? Β Find out how here. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.


Srinivas Sista

Google Chrome

  •  

Extended Stable Update for Desktop

The Extended Stable channel has been updated to 152.0.7977.140Β for Windows and Mac which will roll out over the coming days/weeks.

A full list of changes in this build is available in the log. Interested in switching release channels? Find out how here. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.

Srinivas Sista
Google Chrome
  •  

Stable Channel Update for Desktop

The Chrome team is delighted to announce the promotion of Chrome 154 to the stable channel for Windows, Mac and Linux. This will roll out over the coming days/weeks.

Chrome 154.0.8037.57 (Linux)Β 154.0.8037.57/.58Β Windows/Mac contains a number of fixes and improvements -- a list of changes is available in the log. Watch out for upcoming Chrome and Chromium blog posts about new features and big efforts delivered in 154.

Security Fixes and Rewards

Note: Access to bug details and links may be kept restricted until a majority of users are updated with a fix. We will also retain restrictions if the bug exists in a third party library that other projects similarly depend on, but haven’t yet fixed.

This update includes 108 security fixes. Please see the Chrome Security Page for more information.

[$5,000][551573368] Critical CVE-2026-95350: Buffer overflow in ANGLE. Reported by Billy Jheng Bing Jhong, Muhammad Alifa Ramdhan, Pan Zhenpeng of STAR Labs SG Pte. LTd. on 2026-08-24

[$2,500][530045332] Critical CVE-2026-95357: Out of bounds write in GPU. Reported by Anymous on 2026-07-01

[TBD][548585299] Critical CVE-2026-95339: Use after free in ServiceWorker. Reported by Andrew Boni on 2026-08-18

[TBD][551708184] Critical CVE-2026-95281: Buffer overflow in ANGLE. Reported by Muhammad Alifa Ramdhan of STAR Labs SG Pte. Ltd. on 2026-08-24

[TBD][552665794] Critical CVE-2026-95313: Use after free in Fullscreen. Reported by WinD39 - Huynh Dinh Vu on 2026-08-26

[N/A][553172761] Critical CVE-2026-95349: Buffer overflow in WebGL. Reported by Google on 2026-08-27

[TBD][556435507] Critical CVE-2026-95284: Buffer overflow in ANGLE. Reported by Muhammad Alifa Ramdhan (STARLABS SG) on 2026-09-03

[TBD][556576992] Critical CVE-2026-95322: Out of bounds write in GPU. Reported by David Sievers (@loknop) on 2026-09-03

[N/A][559320837] Critical CVE-2026-95329: Out of bounds write in WebGL. Reported by Google on 2026-09-09

[TBD][560439699] Critical CVE-2026-95356: Use after free in WindowDialog. Reported by Xinyang Ge on 2026-09-12

[TBD][562151598] Critical CVE-2026-95310: Use after free in AdFilter. Reported by Xinyang Ge on 2026-09-16

[$5,000][540265100] High CVE-2026-95301: Missing authorization in Extensions. Reported by OGINOME Tomohito on 2026-07-29

[$5,000][543471693] High CVE-2026-95291: UI misrepresentation in SecurityIndicators. Reported by NH DEV on 2026-08-07

[N/A][508462481] High CVE-2026-95355: Incorrect authorization in Navigation. Reported by Google on 2026-05-01

[N/A][517661385] High CVE-2026-95315: Use after free in Aura. Reported by Google on 2026-05-29

[N/A][520516206] High CVE-2026-95298: Use after free in Browser. Reported by Google on 2026-06-05

[N/A][534997484] High CVE-2026-95372: Use after free in Chromecast. Reported by Google on 2026-07-15

[N/A][537857253] High CVE-2026-95324: Uninitialized resource in GPU. Reported by Google on 2026-07-22

[N/A][543141419] High CVE-2026-95283: Buffer overflow in Tint. Reported by Google on 2026-08-06

[TBD][550953039] High CVE-2026-95293: Uninitialized resource in GPU. Reported by TienPA - NGS Holdings on 2026-08-22

[N/A][553116160] High CVE-2026-95274: Improper output encoding in DevTools. Reported by Google on 2026-08-26

[N/A][553129513] High CVE-2026-95282: Use after free in Platform. Reported by Google on 2026-08-26

[N/A][553130481] High CVE-2026-95373: Use after free in DevTools. Reported by Google on 2026-08-26

[N/A][553136141] High CVE-2026-95277: Use after free in Views. Reported by Google on 2026-08-26

[N/A][554558320] High CVE-2026-95348: Use after free in Bluetooth. Reported by Google on 2026-08-29

[TBD][555299641] High CVE-2026-95335: Use after free in HID. Reported by WinD39 - Huynh Dinh Vu on 2026-09-01

[TBD][556535630] High CVE-2026-95338: Use after free in PDFium. Reported by SeungMyung Lee (@sm1ee), Siung kim (@ksw9722) on 2026-09-03

[TBD][556576976] High CVE-2026-95318: Buffer overflow in Video. Reported by alex.laboirie on 2026-09-03

[TBD][557523002] High CVE-2026-95286: Type confusion in Bindings. Reported by @bean5oup on 2026-09-05

[TBD][558764482] High CVE-2026-95365: Type confusion in IndexedDB. Reported by HoneyBee on 2026-09-08

[TBD][559815527] High CVE-2026-95343: Use after free in WebAudio. Reported by HoneyBee on 2026-09-11

[N/A][560406548] High CVE-2026-95280: Race condition in V8. Reported by Google on 2026-09-12

[TBD][560536731] High CVE-2026-95304: Out of bounds write in V8. Reported by OpenAI Codex Security (amyb) on 2026-09-12

[TBD][560536735] High CVE-2026-95306: Type confusion in V8. Reported by OpenAI Codex Security (amyb) on 2026-09-12

[N/A][561997427] High CVE-2026-95299: Use after free in GPU. Reported by Google on 2026-09-15

[TBD][562242429] High CVE-2026-95351: Use after free in Views. Reported by Xinyang Ge on 2026-09-16

[N/A][495529018] Medium CVE-2026-95287: Missing authorization in Navigation. Reported by Google on 2026-03-23

[N/A][497204165] Medium CVE-2026-95366: Use of released resource in Core. Reported by Google on 2026-03-28

[N/A][497212105] Medium CVE-2026-95382: Improper input validation in Auth. Reported by Google on 2026-03-28

[N/A][497603247] Medium CVE-2026-95381: Improper input validation in Printing. Reported by Google on 2026-03-30

[N/A][500127519] Medium CVE-2026-95331: Out of bounds write in ANGLE. Reported by Google on 2026-04-06

[N/A][501648493] Medium CVE-2026-95297: Missing authorization in Contextual Tasks. Reported by Google on 2026-04-11

[N/A][502179319] Medium CVE-2026-95375: Incorrect authorization in BrowserTag. Reported by Google on 2026-04-13

[N/A][502242455] Medium CVE-2026-95302: Incorrect authorization in WebAPKs. Reported by Google on 2026-04-13

[N/A][511791538] Medium CVE-2026-95362: Cross-site request forgery in DevTools. Reported by Google on 2026-05-10

[N/A][513049042] Medium CVE-2026-95369: Inappropriate implementation in XML. Reported by Google on 2026-05-14

[N/A][513134076] Medium CVE-2026-95376: Externally controlled reference in DevTools. Reported by Google on 2026-05-14

[N/A][513162143] Medium CVE-2026-95359: Uninitialized resource in GPU. Reported by Google on 2026-05-14

[N/A][513992281] Medium CVE-2026-95294: UI misrepresentation in Browser. Reported by Google on 2026-05-17

[N/A][514019137] Medium CVE-2026-95337: UI misrepresentation in Messages. Reported by Google on 2026-05-17

[N/A][514059630] Medium CVE-2026-95346: UI misrepresentation in Chromoting. Reported by Google on 2026-05-17

[N/A][514072284] Medium CVE-2026-95320: Missing authorization in Navigation. Reported by Google on 2026-05-17

[N/A][514487499] Medium CVE-2026-95317: Incorrect authorization in MediaCapture. Reported by Google on 2026-05-19

[N/A][516404074] Medium CVE-2026-95345: Use after free in Actor. Reported by Google on 2026-05-25

[N/A][517163294] Medium CVE-2026-95330: Improper state validation in Downloads. Reported by Google on 2026-05-27

[N/A][517417437] Medium CVE-2026-95370: Inappropriate implementation in NFC. Reported by Google on 2026-05-28

[N/A][517442714] Medium CVE-2026-95303: Incomplete cleanup in SmartCard. Reported by Google on 2026-05-28

[N/A][517584808] Medium CVE-2026-95360: Race condition in Editing. Reported by Google on 2026-05-28

[N/A][517596255] Medium CVE-2026-95295: Information leak in Mobile. Reported by Google on 2026-05-28

[N/A][517730821] Medium CVE-2026-95276: Improper input validation in Themes. Reported by Google on 2026-05-29

[N/A][517802696] Medium CVE-2026-95314: Incorrect authorization in HID. Reported by Google on 2026-05-29

[N/A][520504291] Medium CVE-2026-95371: Missing authorization in Views. Reported by Google on 2026-06-05

[N/A][522061704] Medium CVE-2026-95353: Use after free in Bindings. Reported by Google on 2026-06-10

[N/A][522344883] Medium CVE-2026-95363: UI misrepresentation in FileSystem. Reported by Google on 2026-06-10

[N/A][523719002] Medium CVE-2026-95341: Improper input validation in Desktop. Reported by Google on 2026-06-14

[N/A][524582798] Medium CVE-2026-95354: Use after free in Verifier. Reported by Google on 2026-06-16

[N/A][526550688] Medium CVE-2026-95384: Race condition in Transactions Platform. Reported by Google on 2026-06-22

[N/A][532962621] Medium CVE-2026-95336: Information leak in Transactions Platform. Reported by Google on 2026-07-09

[N/A][536161355] Medium CVE-2026-95290: Missing authorization in NFC. Reported by Google on 2026-07-18

[N/A][536648933] Medium CVE-2026-95325: Use after free in ANGLE. Reported by Google on 2026-07-19

[TBD][542926849] Medium CVE-2026-95275: Incorrect reference resolution in MediaStream. Reported by Zabith Mohammed (@nmzabith) on 2026-08-05

[TBD][543464436] Medium CVE-2026-95374: Incorrect authorization in Network. Reported by NH DEV on 2026-08-07

[N/A][545449081] Medium CVE-2026-95300: Missing authorization in DevTools. Reported by Google on 2026-08-12

[TBD][545879261] Medium CVE-2026-95321: UI misrepresentation in Payments. Reported by jodyritonga on 2026-08-13

[TBD][546438368] Medium CVE-2026-95323: UI misrepresentation in Chromium. Reported by Wihdatu Nuuro Ahmadi on 2026-08-14

[N/A][546639650] Medium CVE-2026-95332: Use of uninitialized variable in Tint. Reported by Google on 2026-08-14

[N/A][547832510] Medium CVE-2026-95312: Information leak in Passwords. Reported by Google on 2026-08-17

[TBD][548611433] Medium CVE-2026-95344: Race condition in DevTools. Reported by @bean5oup on 2026-08-18

[TBD][549911100] Medium CVE-2026-95289: Incorrect authorization in Scroll. Reported by Vu Van Tien (@n0_Be3r) on 2026-08-21

[TBD][550181232] Medium CVE-2026-95347: Use after free in Updater. Reported by a45hif on 2026-08-21

[N/A][553123003] Medium CVE-2026-95311: Free of non-heap memory in Fonts. Reported by Google on 2026-08-26

[N/A][553141660] Medium CVE-2026-95358: Incorrect authorization in Mobile. Reported by Google on 2026-08-26

[TBD][559682346] Medium CVE-2026-95333: Use after free in Metrics. Reported by sean geofrey on 2026-09-10

[$500][423956129] Low CVE-2026-95307: UI misrepresentation in ExtensionsMenu. Reported by Hafiizh on 2025-06-11

[N/A][497094708] Low CVE-2026-95285: Missing authorization in WebView. Reported by Google on 2026-03-28

[N/A][497344014] Low CVE-2026-95278: Missing authorization in WakeLock. Reported by Google on 2026-03-29

[N/A][502077689] Low CVE-2026-95327: Information leak in Networking. Reported by Google on 2026-04-13

[N/A][513403696] Low CVE-2026-95334: Incorrect reference resolution in WebProtect. Reported by Google on 2026-05-15

[N/A][513714849] Low CVE-2026-95308: Integer overflow in Metrics. Reported by Google on 2026-05-16

[N/A][513781838] Low CVE-2026-95292: Incorrect authorization in Safebrowsing. Reported by Google on 2026-05-16

[N/A][513791872] Low CVE-2026-95352: Incorrect authorization in DevTools. Reported by Google on 2026-05-16

[N/A][514012689] Low CVE-2026-95279: UI misrepresentation in Omnibox. Reported by Google on 2026-05-17

[N/A][514524620] Low CVE-2026-95367: Information leak in DataTransfer. Reported by Google on 2026-05-19

[N/A][517192965] Low CVE-2026-95385: Inappropriate implementation in PlatformIntegration. Reported by Google on 2026-05-27

[N/A][522413520] Low CVE-2026-95368: Incorrect authorization in DevTools. Reported by Google on 2026-06-10

[N/A][523765972] Low CVE-2026-95319: Use after free in Printing. Reported by Google on 2026-06-14

[N/A][533041383] Low CVE-2026-95326: Incomplete cleanup in Bluetooth. Reported by Google on 2026-07-09

[N/A][533074595] Low CVE-2026-95309: UI misrepresentation in Mobile. Reported by Google on 2026-07-09

[N/A][533095855] Low CVE-2026-95361: Confused deputy in DevTools. Reported by Google on 2026-07-09

[N/A][533102653] Low CVE-2026-95288: UI misrepresentation in Mobile. Reported by Google on 2026-07-09

[N/A][534579660] Low CVE-2026-95380: Type confusion in V8. Reported by Google on 2026-07-14

[TBD][547027738] Low CVE-2026-95342: Missing authorization in V8. Reported by Hongwei Li, Zhun Wang, Ziyue Pan, Junmin Zhu, Saastha Vasan, and Wenbo Guo on 2026-08-16

[TBD][551296612] Low CVE-2026-95296: Missing authorization in Core. Reported by Quyền SƑn (@zer0qs1337) on 2026-08-23

[N/A][552023752] Low CVE-2026-95316: Unchecked return value in Performance. Reported by Google on 2026-08-24

[N/A][553148673] Low CVE-2026-95328: Confused deputy in Mobile. Reported by Google on 2026-08-26

[N/A][553268567] Low CVE-2026-95340: Incorrect authorization in PictureInPicture. Reported by Google on 2026-08-27

[N/A][553271219] Low CVE-2026-95364: Improper input validation in Passwords. Reported by Google on 2026-08-27

[N/A][553921181] Low CVE-2026-95305: UI misrepresentation in Chromoting. Reported by Google on 2026-08-28

We would also like to thank all security researchers that worked with us during the development cycle to prevent security bugs from ever reaching the stable channel.

Many of our security bugs are detected using AddressSanitizer, MemorySanitizer, UndefinedBehaviorSanitizer, Control Flow Integrity, libFuzzer, or AFL.

Interested in switching release channels? Find out how here. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.


Srinivas Sista

Google Chrome

Share on TwitterΒ 
  •  

Firefox 156.0.1

Fixed

  • Fixed the NVDA screen reader not announcing address bar buttons when the mouse pointer moves over them. (Bug 2069276)

  • Fixed elements inside a link not showing their CSS :active styles while being clicked. (Bug 2067272)

  • Fixed Firefox becoming unresponsive on some pages that use CSS anchor positioning. (Bug 2070171)

  • Fixed Firefox windows on macOS 27 immediately returning to maximized after being restored by double-clicking the title bar. (Bug 2066632)

  • Fixed Firefox leaking system handles on Windows as content processes were started and stopped. (Bug 2069644)

Changed

  • Pressing Tab now moves focus straight to the text field of the address bar and search bar instead of stopping on the search engine button first. The button can still be reached with Shift+Tab.

  •  

Development build

Below are development builds with the latest fixes and improvements. Please test them thoroughly and report problems immediately, so that any regressions can be fixed in time for next stable release.

Latest development build: 2.8.2.56 (October 7th 2026)

Latest stable release build: 2.8.2
https://github.com/clsid2/mpc-hc/releases/tag/2.8.2

  •  

v0.20.0-rc.5

❗ This is a pre-release

  • May contain bugs and unfinished features.

⚠️ Note for macOS users

Builds are unsigned (no Apple Developer ID). After dragging MarkText into Applications, clear the quarantine flag once:

xattr -cr /Applications/marktext.app

Verifying downloads

All artifacts are listed with their SHA-256 in SHA256SUMS.txt. Verify with:

sha256sum -c SHA256SUMS.txt --ignore-missing

What's Changed

  • fix(desktop): load the e2e Playwright config by moving it to the package root by @Fr4ncis in #5435
  • fix(muya): ignore a table tool click once its table left the document (#5442) by @Jocs in #5443
  • docs: add StarDesk as a special sponsor by @Jocs in #5444
  • fix(tests): Windows paths + CI + timeout fix by @dzid26 in #5323
  • ci: check every text file out as LF so the Windows test leg sees the same bytes by @Jocs in #5447
  • ci: bound the unit-test job at ten minutes by @Jocs in #5448
  • fix(desktop): keep title bar path segments in order under the Bidi algorithm by @dronov-dmitry in #5317
  • fix(muya): apply pandoc's tex_math_dollars constraints to $…$ (#5446) by @Jocs in #5449
  • feat: add the texMathDollars preference, replacing the math option (#5446) by @Jocs in #5450
  • feat: implement pandoc's tex_math_gfm, replacing the GitLab compatibility option (#5446) by @Jocs in #5457
  • feat: show selected text word count by @Renakoni in #4457

New Contributors

Full Changelog: v0.20.0-rc.4...v0.20.0-rc.5

  •  

Stable Channel Update for Desktop

Β The Stable channel has been updated to 153.0.8010.52/.53 for Windows and Mac andΒ 153.0.8010.52 toΒ Linux which will roll out over the coming days/weeks. A full list of changes in this build is available in the LogΒ 

Security Fixes and Rewards

Note: Access to bug details and links may be kept restricted until a majority of users are updated with a fix. We will also retain restrictions if the bug exists in a third party library that other projects similarly depend on, but haven’t yet fixed.
This update includes 16 security fixes. Please see the Chrome Security Page for more information.

[TBD][500417361] Critical CVE-2026-93374: Use after free in Dawn. Reported by Florian Schweitzer on 2026-04-08 [N/A][548085797] Critical CVE-2026-93372: Buffer overflow in WebGL. Reported by Google on 2026-08-17 [$3,000][550839154] High CVE-2026-93375: Incorrect reference resolution in Tracing. Reported by M. Fauzan Wijaya (Gh05t666nero) on 2026-08-22 [TBD][541707261] High CVE-2026-93382: Use after free in PDFium. Reported by WinD39 - Huynh Dinh Vu on 2026-08-02 [N/A][553130676] High CVE-2026-93387: Improper state validation in Skia. Reported by Google on 2026-08-26 [N/A][553132214] High CVE-2026-93373: Use after free in Extensions. Reported by Google on 2026-08-26 [TBD][556853443] High CVE-2026-93381: Buffer overflow in PDFium. Reported by SeungMyung Lee (@sm1ee), Siung kim (@ksw9722) on 2026-09-03 [TBD][560039872] High CVE-2026-93379: Incorrect authorization in ORB. Reported by OGINOME Tomohito on 2026-09-11 [N/A][560121552] High CVE-2026-93377: Type confusion in V8. Reported by Google on 2026-09-11 [N/A][498411599] Medium CVE-2026-93380: Race condition in FileSystem. Reported by Google on 2026-04-01 [N/A][511832293] Medium CVE-2026-93384: Server-side request forgery in Omnibox. Reported by Google on 2026-05-10 [N/A][515493668] Medium CVE-2026-93383: Information leak in Permissions. Reported by Google on 2026-05-22 [N/A][520521197] Medium CVE-2026-93376: Out of bounds read in DataTransfer. Reported by Google on 2026-06-05 [N/A][540051167] Medium CVE-2026-93378: Missing authorization in Storage. Reported by Google on 2026-07-28 [N/A][553136980] Medium CVE-2026-93385: Information leak in Paint. Reported by Google on 2026-08-26 [N/A][513996595] Low CVE-2026-93386: UI misrepresentation in WebAppInstalls. Reported by Google on 2026-05-17

We would also like to thank all security researchers that worked with us during the development cycle to prevent security bugs from ever reaching the stable channel.

Interested in switching release channels? Find out how here. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.

Srinivas Sista

Google Chrome
  •  

Extended Stable Update for Desktop

Β The Extended Stable channel has been updated to 152.0.7977.134Β for Windows and Mac which will roll out over the coming days/weeks.

A full list of changes in this build is available in the log. Interested in switching release channels? Find out how here. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.

Srinivas Sista
Google Chrome
  •  

2.8.2

Changes from 2.8.1 to 2.8.2:

Updates:

  • Updated LAV Filters to version 0.83-5-gd65a9
  • Updated MPC Video Renderer to version 0.10.8.2587

Changes/additions:

  • Added ReplayGain support. Options can be found in audio switcher.
  • Improvements for exclusive mode seekbar when using MPCVR.
  • Improvements for opening a selection of files from Explorer. Now supports DropTarget interface.
  • Playback rate can now be shown in statusbar for audio files.
  • Keyboard shortcuts can now be edited without a mouse. Press Space or Enter to start editing a selected command. Press Enter or Tab to apply a pressed key combination. Enter/Tab can only be set as hotkey when combined with Alt/Ctrl/Shift.
  • Improvements for ATSC/DVB channel scanning.

Fixes:

  • Lots of small fixes and improvements.

  •  

v0.20.0-rc.4

❗ This is a pre-release

  • May contain bugs and unfinished features.

⚠️ Note for macOS users

Builds are unsigned (no Apple Developer ID). After dragging MarkText into Applications, clear the quarantine flag once:

xattr -cr /Applications/marktext.app

Verifying downloads

All artifacts are listed with their SHA-256 in SHA256SUMS.txt. Verify with:

sha256sum -c SHA256SUMS.txt --ignore-missing

What's Changed

  • chore(desktop): disable the Report button in the error dialog by @Jocs in #5359
  • fix(muya): run paragraph commands on the whole table or code block (#4944) by @Jocs in #5358
  • fix(muya): don't drop blocks when a cut ends inside a code block (#4903, #5148) by @Jocs in #5357
  • feat: add source line number toggle by @masalha-alaa in #5111
  • fix(muya): change the heading level of the caret's paragraph, not its list (#5360) by @Jocs in #5361
  • fix(muya): keep a setext heading's level when promoting or demoting it (#5362) by @Jocs in #5363
  • fix(muya): keep every line when a multi-line block becomes a heading (#5366) by @Jocs in #5367
  • fix(muya): collapse only the nested code block when a cut starts in its language line (#5368) by @Jocs in #5370
  • fix(muya): keep the code block when a cut ends in its language line (#5371) by @Jocs in #5372
  • fix(muya): remove the selected rest of a list or quote when a cut starts in it (#5385) by @Jocs in #5397
  • feat(muya): support same-line display math by @Renakoni in #4935
  • fix(muya): start an image resize only from the resize bar's own handles (#5116) by @Jocs in #5382
  • fix(muya): don't crash or replace another block when picking a table size after undo (#5355) by @Jocs in #5384
  • fix(desktop): launch normally when NODE_ENV=development is set (#5053) by @Jocs in #5374
  • fix(desktop): open files from a second instance started with --user-data-dir (#3020) by @Jocs in #5375
  • fix(desktop): keep debug mode out of release builds (#5407) by @Jocs in #5410
  • fix(desktop): read locale files from the app's resources (#5408) by @Jocs in #5411
  • fix(muya): keep the document intact when a cut ends in a table (#5400, #5405, #5399, #5398) by @Jocs in #5406
  • fix(muya): cancel Backspace that turns a setext heading into a paragraph (#5035) by @Jocs in #5381
  • fix(muya): keep a dollar sign in a regex replace capture by @Dev-next-gen in #5404
  • fix(muya): regexp replace groups β€” per-match Replace All, unmatched groups, two-digit $nn by @Jocs in #5420
  • fix(muya): keep an inline raw HTML tag's id intact by @Dev-next-gen in #5416
  • fix(muya): re-read the block type after a Backspace on a syntax marker (#5388) by @Jocs in #5421
  • fix(muya): keep blocks after a paragraph merged into a table cell out of the row (#5386) by @Jocs in #5422
  • fix(muya): keep the rest of a blockquote quoted on forward-Delete merge (#5423) by @Jocs in #5424
  • fix(muya): escape braces in a plain-text find query by @Dev-next-gen in #5428
  • fix(desktop): open Quick Open when files are open without a folder by @Dev-next-gen in #5431
  • fix(muya): select the document when Select All's cached caret block was removed by undo (#5387) by @Jocs in #5425

New Contributors

Full Changelog: v0.20.0-rc.3...v0.20.0-rc.4

  •  

Early Stable Update for Desktop

The Stable channel has been updated to 154.0.8037.44/.45 for Windows. as part of our early stable release to a small percentage of users. A full list of changes in this build is available in the log.

You can find more details about early Stable releases here.

Interested in switching release channels? Β Find out how here. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.


Srinivas Sista

Google Chrome

  •  

Stable Channel Update for Desktop

The Stable channel has been updated to 153.0.8010.47/.48 for Windows and Mac andΒ 153.0.8010.47Β for Linux, which will roll out over the coming days/weeks. A full list of changes in this build is available in the LogΒ 

Security Fixes and Rewards

Note: Access to bug details and links may be kept restricted until a majority of users are updated with a fix. We will also retain restrictions if the bug exists in a third party library that other projects similarly depend on, but haven’t yet fixed.

This update includes 42 security fixes. Please see the Chrome Security Page for more information.

[N/A][556870863] Critical CVE-2026-91726: Out of bounds read in WebGL. Reported by Google on 2026-09-03 [TBD][557320614] Critical CVE-2026-91721: Use after free in Internals. Reported by xinyang on 2026-09-04 [TBD][558456602] Critical CVE-2026-91749: Use after free in Workers. Reported by WinD39 - Huynh Dinh Vu on 2026-09-08 [$1,500][552283275] High CVE-2026-91724: Use after free in Input. Reported by Hafiizh on 2026-08-25 [$1,000][556715288] High CVE-2026-91728: Integer overflow in V8. Reported by Jihyeon Jeong (Compsec Lab, Seoul National University / Research Intern) on 2026-09-03 [N/A][516780835] High CVE-2026-91734: Incorrect authorization in Core. Reported by Google on 2026-05-26 [N/A][516893912] High CVE-2026-91727: Incorrect reference resolution in Extensions. Reported by Google on 2026-05-26 [N/A][516947138] High CVE-2026-91743: Race condition in Core. Reported by Google on 2026-05-27 [N/A][520019273] High CVE-2026-91744: Race condition in PlatformIntegration. Reported by Google on 2026-06-04 [N/A][521486621] High CVE-2026-91712: Race condition in Extensions. Reported by Google on 2026-06-08 [N/A][521559611] High CVE-2026-91748: Race condition in Extensions. Reported by Google on 2026-06-09 [N/A][523470135] High CVE-2026-91720: Uninitialized resource in ANGLE. Reported by Google on 2026-06-13 [N/A][523554372] High CVE-2026-91731: Type confusion in Compositing. Reported by Google on 2026-06-13 [N/A][540016074] High CVE-2026-91747: Use after free in Skia. Reported by Google on 2026-07-28 [N/A][540021213] High CVE-2026-91733: Improper state validation in Skia. Reported by Google on 2026-07-28 [TBD][546413288] High CVE-2026-91741: Type confusion in CacheStorage. Reported by Salvatore Gulizia (nickname: Serotav) on 2026-08-14 [TBD][547815507] High CVE-2026-91709: Type confusion in ServiceWorker. Reported by Jihyeon Jeong (Compsec Lab, Seoul National University / Research Intern) on 2026-08-17 [TBD][549225472] High CVE-2026-91717: Missing authorization in Android. Reported by jodyritonga on 2026-08-20 [N/A][552416113] High CVE-2026-91735: Incorrect authorization in WebUI. Reported by Google on 2026-08-25 [N/A][553115724] High CVE-2026-91708: Race condition in Network. Reported by Google on 2026-08-26 [N/A][553121008] High CVE-2026-91736: Use after free in DOM. Reported by Google on 2026-08-26 [N/A][553122373] High CVE-2026-91740: Uninitialized resource in Skia. Reported by Google on 2026-08-26 [N/A][553132148] High CVE-2026-91710: Use after free in WebAppInstalls. Reported by Google on 2026-08-26 [N/A][553133215] High CVE-2026-91718: Use after free in Core. Reported by Google on 2026-08-26 [N/A][554558368] High CVE-2026-91716: Use after free in Auth. Reported by Google on 2026-08-29 [N/A][556260782] High CVE-2026-91746: Integer overflow in Compositing. Reported by Google on 2026-09-02 [TBD][557206809] High CVE-2026-91729: Use after free in DigitalCredentials. Reported by sean geofrey on 2026-09-04 [TBD][558036280] High CVE-2026-91737: Use after free in PDF. Reported by SeungMyung Lee (@sm1ee), Siung kim (@ksw9722) on 2026-09-06 [TBD][558342353] High CVE-2026-91711: Out of bounds write in ServiceWorker. Reported by Cristian Di Nicola (@crih.exe) on 2026-09-07 [TBD][558367547] High CVE-2026-91715: Type confusion in ServiceWorker. Reported by Cristian Di Nicola (@crih.exe) on 2026-09-07 [N/A][558734727] High CVE-2026-91745: Use after free in V8. Reported by Google on 2026-09-08 [TBD][474131239] Medium CVE-2026-91723: Race condition in WebAppInstalls. Reported by Luan Herrera (@lbherrera_) on 2026-01-07 [TBD][511062248] Medium CVE-2026-91732: Missing authorization in AppManifest. Reported by pakhunov.anton.n on 2026-05-08 [N/A][513858387] Medium CVE-2026-91742: Confused deputy in PriceTracking. Reported by Google on 2026-05-16 [N/A][517710554] Medium CVE-2026-91714: Observable discrepancy in Fonts. Reported by Google on 2026-05-29 [N/A][518032534] Medium CVE-2026-91725: Observable discrepancy in CSS. Reported by Google on 2026-05-29 [N/A][521951328] Medium CVE-2026-91739: Missing authorization in Transactions Platform. Reported by Google on 2026-06-09 [N/A][523715133] Medium CVE-2026-91713: Missing authorization in Browser. Reported by Google on 2026-06-14 [N/A][536450979] Medium CVE-2026-91738: Improper input validation in ANGLE. Reported by Google on 2026-07-19 [TBD][543640868] Medium CVE-2026-91730: Incomplete cleanup in GetUserMedia. Reported by Keita Sode and Daisuke Hatakeyama (SYZD Research) on 2026-08-07 [TBD][554953456] Medium CVE-2026-91722: Use after free in Input. Reported by TIENPA on 2026-08-31 [TBD][542115030] Low CVE-2026-91719: Code injection in XML. Reported by Zabith Mohammed (@nmzabith) on 2026-08-03

We would also like to thank all security researchers that worked with us during the development cycle to prevent security bugs from ever reaching the stable channel.

Many of our security bugs are detected using AddressSanitizer, MemorySanitizer, UndefinedBehaviorSanitizer, Control Flow Integrity, libFuzzer, or AFL.

Interested in switching release channels? Find out how here. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.


Srinivas Sista

Google Chrome
  •  

Extended Stable Update for Desktop

Β The Extended Stable channel has been updated to 152.0.7977.130 for Windows and Mac which will roll out over the coming days/weeks.

A full list of changes in this build is available in the log. Interested in switching release channels? Find out how here. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.

Srinivas Sista
Google Chrome
  •  

Firefox 156.0

New

  • Firefox on macOS can now be set to open automatically when the computer starts up, from the Startup section of Settings.

  • Localized Wikipedia and occasional sponsored suggestions in the address bar are now available in France, Germany, and Italy. These suggestions can be turned off in Firefox Suggest settings.

Fixed

  • Fixed an issue where dragging an image to a new position in a rich-text editor could replace it with a long line of text instead of moving it.

  • Fixed high-sample-rate FLAC audio in MP4 failing to play on sites such as Bilibili.

  • Fixed subtitles not appearing in the Picture-in-Picture window when they are turned on in the video player after the window has already opened.

  • Fixed bookmarks moving out of their folder when the folder and the bookmarks inside it were selected and dragged together in the Bookmarks sidebar.

  • Fixed the find bar becoming permanently unavailable in a tab after reversing the panes in Split View.

  • Fixed some sites failing to load when DNS over HTTPS is enabled and the site does not support HTTPS.

  • Fixed Firefox losing all network connectivity for some users with the built-in VPN enabled.

  • Fixed an issue on Windows where Firefox could block an auto-hiding taskbar from showing.

  • Various security fixes.

Changed

  • Firefox's built-in PDF viewer now starts up to 45% faster.

  • Improved memory and CPU usage when Firefox displays large JPEG images scaled down to fit a page.

  • On Windows devices with ARM64 processors, WebRTC video calls may now use hardware H264 decoding instead of falling back to software.

Enterprise

Developer

Web Platform

  • text-box-trim now uses the font metrics of a ::first-line pseudo-element when one applies, matching other browsers and the specification.

Community Contributions

  •  

v0.20.0-rc.3

❗ This is a pre-release

  • May contain bugs and unfinished features.

⚠️ Note for macOS users

Builds are unsigned (no Apple Developer ID). After dragging MarkText into Applications, clear the quarantine flag once:

xattr -cr /Applications/marktext.app

Verifying downloads

All artifacts are listed with their SHA-256 in SHA256SUMS.txt. Verify with:

sha256sum -c SHA256SUMS.txt --ignore-missing

What's Changed

  • fix(muya): make a code block a diagram when its language is a diagram language (#5060) by @Jocs in #5304
  • docs: fix the macOS alias path in the CLI docs by @Jocs in #5308
  • chore: run only eslint --fix on staged desktop TS/Vue files by @Jocs in #5318
  • fix(desktop): ignore line-ending menu updates for a closed window (#4923) by @Jocs in #5319
  • fix: #4926 prevent emoji deletion from splitting surrogate pairs by @Renakoni in #4931
  • fix(desktop): keep exported links working from folders named with #, ? or % by @Dev-next-gen in #5320
  • fix(desktop): explain the max width format in preferences (#5331) by @Jocs in #5334
  • fix(muya): delete emoji whole in code blocks and drop the caret-inside-cluster handler (#4926) by @Jocs in #5332
  • fix(desktop): keep exported images working from folders named with #, ? or % (#5335) by @Jocs in #5337
  • fix(muya): regex search freezes on zero-width patterns and splits emoji by @Jocs in #5333
  • fix(desktop): keep the share host in exported links from UNC documents (#5336) by @Jocs in #5338
  • fix: #4899 keep trailing content out of the child list when outdenting a list item by @doktorigi in #4913
  • fix(muya): keep the link popover open when moving between links (#5313) by @anandghegde in #5324
  • fix: reuse image on case-insensitive path match (#3119) by @dzid26 in #5326
  • fix(desktop): name copied images after their content, not their path (#5344) by @Jocs in #5346
  • fix(muya): only outdent a paragraph that sits in a nested list item (#5342) by @Jocs in #5345
  • fix(muya): split the list when outdenting a task item into a plain list (#5341) by @Jocs in #5348
  • fix(muya): edit a footnote definition as its own container (#5340, #5343) by @Jocs in #5347
  • fix(muya): keep a Tab-indented list item out of a sublist of the other kind (#5349) by @Jocs in #5354
  • fix(muya): preserve ordered list source markers by @Renakoni in #4776

New Contributors

Full Changelog: v0.20.0-rc.2...v0.20.0-rc.3

  •  

HWMonitor 1.68

  • PCI Express errors counters on AMD and Intel GPUs.
  • New metrics on AMD Strix Point, Strix Halo and Kraken Point : NPU power, NPU clocks, NPU TOPS and TOPS per watt, NPU DRAM bandwidth usage, global platform power and DRAM read and write bandwidths.
  • New HDD metrics (IOPS, average latency, NVMe controller link speed).
  • Remembers devices & sensor types nodes state.
  •  

v0.20.0-rc.2

❗ This is a pre-release

  • May contain bugs and unfinished features.

⚠️ Note for macOS users

Builds are unsigned (no Apple Developer ID). After dragging MarkText into Applications, clear the quarantine flag once:

xattr -cr /Applications/marktext.app

Verifying downloads

All artifacts are listed with their SHA-256 in SHA256SUMS.txt. Verify with:

sha256sum -c SHA256SUMS.txt --ignore-missing

What's Changed

  • fix: preserve Google Docs CSS formatting on paste by @Renakoni in #4699
  • fix(desktop): preserve RTL text direction in PDF and print export by @Jocs in #4874
  • docs: update sponsor logo by @Jocs in #5014
  • docs: remove sponsor ukey by @Jocs in #5217
  • fix: preserve viewport when toggling task-list checkbox by @Awaker-OTE in #5189
  • fix(desktop): allow saving directly to a drive root (#5150) by @Panisnbb in #5188
  • docs: fix grammar issues in FAQ.md by @woltary02-creator in #5089
  • fix(ui): sync quick insert highlight with input method by @KDOJP in #5176
  • feat(i18n): add Dutch locale + validation tests + fix existing issues by @rkristelijn in #5137
  • Japanese translation update by @coolvitto in #5049
  • fix: allow copy-paste in same folder with auto-rename by @rkristelijn in #5139
  • chore: add pre-commit hooks (husky + lint-staged) by @rkristelijn in #4999
  • fix(muya): escape HTML in image attribute values (CWE-79) by @andesyteoss in #4980
  • fix: #5001 persist pasted bitmap images to the assets folder per preferences by @Panisnbb in #5168
  • fix(muya): preserve cursor on IME composition backspace(#4956) by @Zengzzhao in #4957
  • fix(muya): size table columns to their content by @Renakoni in #4952
  • fix: handle UNC image paths and watchers by @Renakoni in #4778
  • fix(desktop): ignore revoked output pipe errors on macOS by @Awaker-OTE in #5229
  • feat(desktop): add "Reset Zoom" item to the Window menu by @xrgzs in #5185
  • fix: #3469 decode Windows clipboard file paths as UTF-16LE by @Panisnbb in #5167
  • fix(desktop): prevent CodeMirror line tree corruption by @Renakoni in #4930
  • fix(i18n): add the missing Dutch resetZoom label by @githello1 in #5245
  • feat(macOS): add Dictionary lookup for selected editor text by @nikkogibler in #4814
  • fix: #4890 use file extension for side bar icons by @doktorigi in #4910
  • fix(muya): #4747 deep clone editor state without recursing by @CookPiu in #5259
  • fix: init image size when render html tag image by @Jocs in #5264
  • fix: render rect selection in table by @Jocs in #5265
  • fix: the missing locale key by @Jocs in #5266
  • fix: #5152 align TOC navigation with editor viewport by @foo-hao in #5153
  • fix: #5130 keep Electron locale resources for all supported UI languages by @legsing in #5132
  • fix: #5129 detect system language on first start by @legsing in #5131
  • fix: skip website preview deploy on fork PRs by @Jocs in #5278
  • feat: add 'Treat soft newlines as spaces' preference (#1849) by @wmoss in #4937
  • fix(muya): keep IME input intact after a soft line break by @Jocs in #5281
  • fix(muya): stop the quick-insert hint claiming a line of its own by @Jocs in #5283
  • fix(muya): give a code block's trailing empty line a line box by @Jocs in #5286
  • fix(muya): keep footnote reference ids intact for special identifiers (#5208) by @Jocs in #5285
  • fix(muya): skip search matches whose block left the document (#5163, #5215) by @Jocs in #5287
  • fix(muya): keep the image resize bar from crashing after its image is removed (#5216) by @Jocs in #5288
  • fix(muya): ignore a quick-insert pick once its paragraph is gone (#5213) by @Jocs in #5289
  • fix(muya): drop an image selection whose block left the document (#5055) by @Jocs in #5291
  • fix(muya): number empty lines in code blocks (#5294) by @Jocs in #5295
  • fix(muya): don't restore a drag selection onto removed blocks (#4981, #5256) by @Jocs in #5290
  • fix(muya): end the paragraph on a Shift+Enter that would leave an empty line by @Jocs in #5300
  • fix: make anchor links reach CJK headings and headings in other documents (#5292) by @Jocs in #5298
  • fix(desktop): flush pending edits before entering source code mode by @richbodo in #5103
  • fix(muya): load relative images from folders named with #, ? or % (#5302) by @Jocs in #5301
  • test(desktop): wait for TOC scrolls to settle in the toc-scroll e2e by @Jocs in #5303

New Contributors

Full Changelog: v0.20.0-rc.1...v0.20.0-rc.2

  •  

Early Stable Update for Desktop

Β The Stable channel has been updated to 154.0.8037.17/.18 for Windows. Mac is coming shortly , as part of our early stable release to a small percentage of users. A full list of changes in this build is available in the log.

You can find more details about early Stable releases here.

Interested in switching release channels? Β Find out how here. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.


Srinivas Sista

Google Chrome

  •  

Extended Stable Update for Desktop

Β The Extended Stable channel has been updated to 152.0.7977.120Β for Windows and Mac which will roll out over the coming days/weeks.

A full list of changes in this build is available in the log. Interested in switching release channels? Find out how here. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.

Srinivas Sista
Google Chrome
  •  

Stable Channel Update for Desktop

The Chrome team is delighted to announce the promotion of Chrome 153 to the stable channel for Windows, Mac and Linux. This will roll out over the coming days/weeks.

Chrome 153.0.8010.36 (Linux)Β 153.0.8010.36/.37Β Windows/Mac contains a number of fixes and improvements -- a list of changes is available in the log. Watch out for upcoming Chrome and Chromium blog posts about new features and big efforts delivered in 153.

Security Fixes and Rewards

Note: Access to bug details and links may be kept restricted until a majority of users are updated with a fix. We will also retain restrictions if the bug exists in a third party library that other projects similarly depend on, but haven’t yet fixed.

This update includes 230 security fixes. Please see the Chrome Security Page for more information.

[$2,500][544163112] Critical CVE-2026-87464: Use after free in WebGL. Reported by Lexi Groves (49016) on 2026-08-08 [N/A][546252753] Critical CVE-2026-87488: Use after free in WebGL. Reported by Google on 2026-08-14 [N/A][548127218] Critical CVE-2026-87438: Out of bounds write in WebGL. Reported by Google on 2026-08-18 [N/A][548130125] Critical CVE-2026-87527: Buffer overflow in WebGL. Reported by Google on 2026-08-18 [TBD][553770012] Critical CVE-2026-87628: Use after free in Cast. Reported by Hafiizh on 2026-08-28 [$2,500][541715128] High CVE-2026-87512: Use after free in ANGLE. Reported by weihengqiuu on 2026-08-02 [$500][540817065] High CVE-2026-87585: Double free in PDFium. Reported by Jeongkihyun on 2026-07-30 [TBD][489489002] High CVE-2026-87444: Memory corruption in Codecs. Reported by Casper Woudenberg on 2026-03-03 [N/A][503464711] High CVE-2026-87447: Incorrect authorization in Network. Reported by Google on 2026-04-16 [N/A][513458719] High CVE-2026-87440: Out of bounds read in Media. Reported by Google on 2026-05-15 [N/A][516996291] High CVE-2026-87633: Use after free in Views. Reported by Google on 2026-05-27 [N/A][517336350] High CVE-2026-87525: Out of bounds read in Chromoting. Reported by Google on 2026-05-28 [N/A][517371367] High CVE-2026-87578: Use after free in Receiver. Reported by Google on 2026-05-28 [N/A][517581661] High CVE-2026-87517: Race condition in Mobile. Reported by Google on 2026-05-28 [N/A][522546457] High CVE-2026-87524: Use after free in Core. Reported by Google on 2026-06-11 [N/A][523277481] High CVE-2026-87569: Missing authorization in Views. Reported by Google on 2026-06-12 [N/A][524423633] High CVE-2026-87554: Race condition in Chromoting. Reported by Google on 2026-06-16 [N/A][524453236] High CVE-2026-87467: Race condition in Updater. Reported by Google on 2026-06-16 [TBD][529123409] High CVE-2026-87492: Incorrect authorization in DevTools. Reported by Avadhut Mahamuni on 2026-06-29 [N/A][529878021] High CVE-2026-87520: Use after free in Dawn. Reported by Google on 2026-06-30 [N/A][532916987] High CVE-2026-87514: Use after free in Views. Reported by Google on 2026-07-09 [N/A][534912743] High CVE-2026-87650: Out of bounds read in WebGL. Reported by Google on 2026-07-14 [N/A][536434693] High CVE-2026-87596: Out of bounds read in ANGLE. Reported by Google on 2026-07-19 [N/A][536444790] High CVE-2026-87654: Buffer overflow in ANGLE. Reported by Google on 2026-07-19 [N/A][536648007] High CVE-2026-87604: Out of bounds read in ANGLE. Reported by Google on 2026-07-19 [N/A][536664909] High CVE-2026-87621: Out of bounds write in ANGLE. Reported by Google on 2026-07-20 [N/A][536673946] High CVE-2026-87647: Uninitialized resource in GPU. Reported by Google on 2026-07-20 [TBD][539754136] High CVE-2026-87646: Use after free in Web Authentication. Reported by h3ee on 2026-07-28 [N/A][540019091] High CVE-2026-87500: Improper validation of array index in ANGLE. Reported by Google on 2026-07-28 [N/A][540021969] High CVE-2026-87572: Injection in DevTools. Reported by Google on 2026-07-28 [N/A][540058837] High CVE-2026-87460: Use after free in Platform. Reported by Google on 2026-07-28 [N/A][542756749] High CVE-2026-87542: Use after free in Input. Reported by Google BigSleep@Grape on 2026-08-05 [TBD][544415098] High CVE-2026-87639: Use after free in WebPackaging. Reported by OpenAI Codex Security (amyb) on 2026-08-09 [TBD][547426657] High CVE-2026-87552: Missing authorization in TrustedWebActivities. Reported by juddrouillon0 on 2026-08-16 [TBD][550141694] High CVE-2026-87651: Incorrect authorization in Paint. Reported by OGINOME Tomohito on 2026-08-21 [TBD][550360762] High CVE-2026-87587: Use after free in V8. Reported by Jihyeon Jeong (Compsec Lab, Seoul National University / Research Intern) on 2026-08-21 [TBD][552342545] High CVE-2026-87564: Type confusion in V8. Reported by Tech Division (@taiphung) - Mobifone Digital Payment on 2026-08-25 [N/A][552413517] High CVE-2026-87498: Missing authorization in WebUI. Reported by Google on 2026-08-25 [N/A][553118043] High CVE-2026-87499: Incorrect authorization in Network. Reported by Google on 2026-08-26 [N/A][553122131] High CVE-2026-87607: Use after free in Device. Reported by Google on 2026-08-26 [N/A][553128689] High CVE-2026-87558: Use after free in Payments. Reported by Google on 2026-08-26 [N/A][553129531] High CVE-2026-87581: Use after free in Payments. Reported by Google on 2026-08-26 [N/A][553928324] High CVE-2026-87480: Use after free in Printing. Reported by Google on 2026-08-28 [TBD][554236352] High CVE-2026-87612: Type confusion in V8. Reported by ywatanabee on 2026-08-29 [TBD][554421904] High CVE-2026-87536: Use after free in V8. Reported by StinkyTuna56 on 2026-08-29 [N/A][554558968] High CVE-2026-87474: Use after free in Payments. Reported by Google on 2026-08-29 [$5,000][499206649] Medium CVE-2026-87504: Use after free in Core. Reported by c6eed09fc8b174b0f3eebedcceb1e792 on 2026-04-03 [$3,000][498482618] Medium CVE-2026-87640: Out of bounds read in WebView. Reported by c6eed09fc8b174b0f3eebedcceb1e792 on 2026-04-01 [$2,500][543557673] Medium CVE-2026-87491: Out of bounds write in V8. Reported by Jihyeon Jeong (Compsec Lab, Seoul National University / Research Intern) on 2026-08-06 [$2,000][40060525] Medium CVE-2026-87478: Observable discrepancy in Autofill. Reported by Maurice Dauer on 2022-08-07 [$2,000][483435192] Medium CVE-2026-87446: Incomplete cleanup in Extensions. Reported by Hafiizh on 2026-02-11 [$1,000][542146471] Medium CVE-2026-87657: Use after free in V8. Reported by Jihyeon Jeong (Compsec Lab, Seoul National University / Research Intern) on 2026-08-03 [N/A][493322521] Medium CVE-2026-87434: Missing authorization in CORS. Reported by Google on 2026-03-17 [N/A][495429423] Medium CVE-2026-87487: Missing authorization in FileSystem. Reported by Google on 2026-03-23 [N/A][495444970] Medium CVE-2026-87453: Confused deputy in BackgroundFetch. Reported by Google on 2026-03-23 [N/A][495515356] Medium CVE-2026-87588: Use after free in Chromecast. Reported by Google on 2026-03-23 [N/A][495541478] Medium CVE-2026-87636: Type confusion in XML. Reported by Google on 2026-03-23 [N/A][495876543] Medium CVE-2026-87611: Missing authorization in FileSystem. Reported by Google on 2026-03-24 [N/A][495933780] Medium CVE-2026-87606: Missing authorization in SiteIsolation. Reported by Google on 2026-03-25 [N/A][496231550] Medium CVE-2026-87456: Uninitialized resource in Media. Reported by Google on 2026-03-25 [N/A][496595299] Medium CVE-2026-87553: Improper input validation in SiteIsolation. Reported by Google on 2026-03-26 [N/A][496615345] Medium CVE-2026-87658: Information leak in Extensions. Reported by Google on 2026-03-26 [N/A][496616790] Medium CVE-2026-87465: Incorrect authorization in Downloads. Reported by Google on 2026-03-26 [N/A][497093426] Medium CVE-2026-87515: Incorrect authorization in FileAPI. Reported by Google on 2026-03-28 [N/A][497111188] Medium CVE-2026-87547: Incorrect reference resolution in FileSystem. Reported by Google on 2026-03-28 [N/A][497443419] Medium CVE-2026-87442: Confused deputy in Prerender. Reported by Google on 2026-03-29 [N/A][497551905] Medium CVE-2026-87506: Privilege elevation in WebUI. Reported by Google on 2026-03-29 [N/A][497574154] Medium CVE-2026-87433: Race condition in FileAPI. Reported by Google on 2026-03-30 [N/A][497635917] Medium CVE-2026-87557: Missing authorization in LocalNetworkAccess. Reported by Google on 2026-03-30 [N/A][497837188] Medium CVE-2026-87457: Race condition in Updater. Reported by Google on 2026-03-30 [N/A][497986036] Medium CVE-2026-87503: Inappropriate implementation in Downloads. Reported by Google on 2026-03-31 [N/A][498730641] Medium CVE-2026-87481: Incorrect authorization in WebView. Reported by Google on 2026-04-01 [N/A][498732709] Medium CVE-2026-87537: Missing authorization in Extensions. Reported by Google on 2026-04-01 [N/A][498869663] Medium CVE-2026-87471: Incorrect authorization in ServiceWorker. Reported by Google on 2026-04-02 [N/A][499230506] Medium CVE-2026-87485: Incorrect authorization in CORS. Reported by Google on 2026-04-03 [N/A][499425100] Medium CVE-2026-87652: Incorrect authorization in PushAPI. Reported by Google on 2026-04-04 [N/A][500094528] Medium CVE-2026-87582: Confused deputy in DataTransfer. Reported by Google on 2026-04-06 [N/A][500467033] Medium CVE-2026-87466: Incorrect authorization in Workers. Reported by Google on 2026-04-07 [N/A][501627201] Medium CVE-2026-87603: Missing authorization in FileSystem. Reported by Google on 2026-04-11 [N/A][501643868] Medium CVE-2026-87615: Race condition in Payments. Reported by Google on 2026-04-11 [N/A][501644790] Medium CVE-2026-87642: Uninitialized resource in WebGL. Reported by Google on 2026-04-11 [N/A][501700023] Medium CVE-2026-87577: Incorrect authorization in Isolated. Reported by Google on 2026-04-11 [N/A][501850947] Medium CVE-2026-87449: Cross-site request forgery in DeviceBoundSessionCredentials. Reported by Google on 2026-04-12 [N/A][501889544] Medium CVE-2026-87613: Incorrect reference resolution in Extensions. Reported by Google on 2026-04-12 [N/A][502611474] Medium CVE-2026-87645: Improper state validation in Safebrowsing. Reported by Google on 2026-04-14 [N/A][502768228] Medium CVE-2026-87443: Missing authorization in Actor. Reported by Google on 2026-04-15 [TBD][502783118] Medium CVE-2026-87630: Integer overflow in WebRTC. Reported by ngrunbaum on 2026-04-15 [N/A][502814490] Medium CVE-2026-87590: Improper input validation in Passwords. Reported by Google on 2026-04-15 [N/A][502986244] Medium CVE-2026-87580: Incorrect authorization in WebAppInstalls. Reported by Google on 2026-04-15 [N/A][503736006] Medium CVE-2026-87482: Cleartext transmission of sensitive data in HttpsUpgrades. Reported by Google on 2026-04-17 [N/A][504670493] Medium CVE-2026-87497: Uninitialized resource in Codecs. Reported by Google on 2026-04-20 [N/A][504690157] Medium CVE-2026-87579: Buffer overflow in WebRTC. Reported by Google on 2026-04-20 [N/A][506385755] Medium CVE-2026-87576: Uninitialized resource in GPU. Reported by Google on 2026-04-25 [N/A][506390077] Medium CVE-2026-87476: Incorrect authorization in Loader. Reported by Google on 2026-04-25 [N/A][507225626] Medium CVE-2026-87475: Missing authorization in Omnibox. Reported by Google on 2026-04-28 [N/A][511754574] Medium CVE-2026-87436: Incomplete cleanup in Browser. Reported by Google on 2026-05-10 [N/A][511772271] Medium CVE-2026-87479: Insufficient policy enforcement in Extensions. Reported by Google on 2026-05-10 [N/A][511773417] Medium CVE-2026-87513: Missing authorization in ControlledFrame. Reported by Google on 2026-05-10 [N/A][511820041] Medium CVE-2026-87432: Incorrect authorization in Navigation. Reported by Google on 2026-05-10 [N/A][511824746] Medium CVE-2026-87560: Missing authorization in Browser. Reported by Google on 2026-05-10 [N/A][512986143] Medium CVE-2026-87521: Information leak in WebMCP. Reported by Google on 2026-05-13 [N/A][513003268] Medium CVE-2026-87539: Observable discrepancy in Network. Reported by Google on 2026-05-14 [N/A][513048243] Medium CVE-2026-87648: Use after free in ANGLE. Reported by Google on 2026-05-14 [N/A][513134173] Medium CVE-2026-87534: Missing authorization in WebView. Reported by Google on 2026-05-14 [N/A][513135531] Medium CVE-2026-87562: Incorrect reference resolution in Accessibility. Reported by Google on 2026-05-14 [N/A][513192482] Medium CVE-2026-87556: Missing authorization in Browser. Reported by Google on 2026-05-14 [N/A][513346220] Medium CVE-2026-87508: Incorrect authorization in Loader. Reported by Google on 2026-05-14 [N/A][513416699] Medium CVE-2026-87643: Integer overflow in GPU. Reported by Google on 2026-05-15 [N/A][513438970] Medium CVE-2026-87573: Improper input validation in Network. Reported by Google on 2026-05-15 [N/A][513495219] Medium CVE-2026-87548: Improper state validation in Installer. Reported by Google on 2026-05-15 [N/A][513509804] Medium CVE-2026-87501: UI misrepresentation in Passwords. Reported by Google on 2026-05-15 [N/A][513524705] Medium CVE-2026-87452: Incorrect authorization in GPU. Reported by Google on 2026-05-15 [N/A][513608513] Medium CVE-2026-87516: Observable discrepancy in Navigation. Reported by Google on 2026-05-15 [N/A][513702096] Medium CVE-2026-87599: Improper input validation in Interstitials. Reported by Google on 2026-05-16 [N/A][514009699] Medium CVE-2026-87507: UI misrepresentation in Downloads. Reported by Google on 2026-05-17 [N/A][514011926] Medium CVE-2026-87559: UI misrepresentation in UI. Reported by Google on 2026-05-17 [N/A][514016678] Medium CVE-2026-87472: Improper input validation in FedCM. Reported by Google on 2026-05-17 [N/A][514017067] Medium CVE-2026-87486: Clickjacking in TrustedWebActivities. Reported by Google on 2026-05-17 [N/A][514023309] Medium CVE-2026-87655: Clickjacking in Downloads. Reported by Google on 2026-05-17 [N/A][514041087] Medium CVE-2026-87462: UI misrepresentation in FedCM. Reported by Google on 2026-05-17 [N/A][514055890] Medium CVE-2026-87649: UI misrepresentation in Downloads. Reported by Google on 2026-05-17 [N/A][514056835] Medium CVE-2026-87445: UI misrepresentation in Session. Reported by Google on 2026-05-17 [N/A][514069596] Medium CVE-2026-87567: UI misrepresentation in UrlFormatting. Reported by Google on 2026-05-17 [N/A][514074827] Medium CVE-2026-87496: UI misrepresentation in Browser. Reported by Google on 2026-05-17 [N/A][514556469] Medium CVE-2026-87441: Missing authorization in Downloads. Reported by Google on 2026-05-19 [N/A][516534546] Medium CVE-2026-87549: Incomplete cleanup in Downloads. Reported by Google on 2026-05-25 [N/A][517072005] Medium CVE-2026-87458: UI misrepresentation in Geometry. Reported by Google on 2026-05-27 [N/A][517092658] Medium CVE-2026-87574: Information leak in ServiceWorker. Reported by Google on 2026-05-27 [N/A][517122234] Medium CVE-2026-87495: Information leak in Scroll. Reported by Google on 2026-05-27 [N/A][517156678] Medium CVE-2026-87541: Information leak in Navigation. Reported by Google on 2026-05-27 [N/A][517178299] Medium CVE-2026-87451: Information leak in Downloads. Reported by Google on 2026-05-27 [N/A][517215407] Medium CVE-2026-87570: Incorrect authorization in SiteIsolation. Reported by Google on 2026-05-27 [N/A][517337579] Medium CVE-2026-87555: Uninitialized resource in GPU. Reported by Google on 2026-05-28 [N/A][517339356] Medium CVE-2026-87600: Improper input validation in Safebrowsing. Reported by Google on 2026-05-28 [N/A][517369256] Medium CVE-2026-87532: Improper state validation in Safebrowsing. Reported by Google on 2026-05-28 [N/A][517415433] Medium CVE-2026-87439: Information leak in ServiceWorker. Reported by Google on 2026-05-28 [N/A][517432155] Medium CVE-2026-87450: Incorrect authorization in Permissions. Reported by Google on 2026-05-28 [N/A][517597701] Medium CVE-2026-87505: Incorrect authorization in FileSystem. Reported by Google on 2026-05-28 [N/A][517602176] Medium CVE-2026-87622: Missing authorization in FedCM. Reported by Google on 2026-05-28 [N/A][517721914] Medium CVE-2026-87540: Incorrect authorization in Isolated. Reported by Google on 2026-05-29 [N/A][517732336] Medium CVE-2026-87594: Incorrect authorization in DataTransfer. Reported by Google on 2026-05-29 [N/A][517917560] Medium CVE-2026-87518: Observable discrepancy in Safebrowsing. Reported by Google on 2026-05-29 [N/A][518002426] Medium CVE-2026-87589: Incorrect authorization in SiteIsolation. Reported by Google on 2026-05-29 [N/A][518039263] Medium CVE-2026-87484: UI misrepresentation in Geometry. Reported by Google on 2026-05-29 [N/A][518081914] Medium CVE-2026-87530: Uncontrolled search path element in CredentialProvider. Reported by Google on 2026-05-30 [N/A][518082852] Medium CVE-2026-87550: Improper encoding or escaping of output in CSS. Reported by Google on 2026-05-30 [N/A][520161438] Medium CVE-2026-87494: Use after free in Browser. Reported by Google on 2026-06-05 [N/A][520201931] Medium CVE-2026-87483: Incorrect authorization in Browser. Reported by Google on 2026-06-05 [N/A][520389619] Medium CVE-2026-87454: Information leak in Enterprise. Reported by Google on 2026-06-05 [N/A][520469117] Medium CVE-2026-87616: Improper initialization in Views. Reported by Google on 2026-06-05 [N/A][520572550] Medium CVE-2026-87535: Information loss or omission in Safebrowsing. Reported by Google on 2026-06-06 [N/A][521616899] Medium CVE-2026-87644: Incorrect authorization in Views. Reported by Google on 2026-06-09 [N/A][521620916] Medium CVE-2026-87533: Use after free in DevTools. Reported by Google on 2026-06-09 [N/A][522304737] Medium CVE-2026-87635: UI misrepresentation in Payments. Reported by Google on 2026-06-10 [N/A][523091391] Medium CVE-2026-87641: Race condition in Browser. Reported by Google on 2026-06-12 [N/A][523313374] Medium CVE-2026-87431: Missing authorization in Extensions. Reported by Microsoft Edge on 2026-06-12 [N/A][523741272] Medium CVE-2026-87493: Missing authorization in FileSystem. Reported by Google on 2026-06-14 [N/A][532921336] Medium CVE-2026-87625: Use after free in V8. Reported by Google on 2026-07-09 [N/A][532931962] Medium CVE-2026-87468: Incorrect authorization in Isolated. Reported by Google on 2026-07-09 [N/A][532952073] Medium CVE-2026-87563: Origin validation error in Paint. Reported by Google on 2026-07-09 [N/A][532957878] Medium CVE-2026-87510: Improper input validation in FileAPI. Reported by Google on 2026-07-09 [N/A][533070113] Medium CVE-2026-87435: Information leak in ControlledFrame. Reported by Google on 2026-07-09 [N/A][533597592] Medium CVE-2026-87531: Information leak in CORS. Reported by Google on 2026-07-11 [N/A][534863145] Medium CVE-2026-87637: Use after free in Extensions. Reported by Google on 2026-07-14 [N/A][536423794] Medium CVE-2026-87529: Numeric truncation error in Media. Reported by Google on 2026-07-19 [N/A][536446354] Medium CVE-2026-87470: Improper quantity validation in Tint. Reported by Google on 2026-07-19 [N/A][536598187] Medium CVE-2026-87586: Out of bounds read in ANGLE. Reported by Google on 2026-07-19 [N/A][537466493] Medium CVE-2026-87584: Incorrect authorization in WebUI. Reported by Google on 2026-07-21 [TBD][538197156] Medium CVE-2026-87632: Cross-site scripting in SanitizerAPI. Reported by Eli Ainhorn on 2026-07-24 [N/A][539569491] Medium CVE-2026-87528: Type confusion in Rust. Reported by marcobartoli on 2026-07-27 [N/A][540015493] Medium CVE-2026-87623: Observable discrepancy in DOM. Reported by Google on 2026-07-28 [N/A][540021850] Medium CVE-2026-87566: Observable discrepancy in Layout. Reported by Google on 2026-07-28 [N/A][540024134] Medium CVE-2026-87638: Out of bounds write in Media. Reported by Google on 2026-07-28 [N/A][542565481] Medium CVE-2026-87455: Use after free in Aura. Reported by Microsoft on 2026-08-04 [TBD][543938457] Medium CVE-2026-87591: Incorrect authorization in Extensions. Reported by antoniosmr02 on 2026-08-07 [N/A][544484669] Medium CVE-2026-87526: Use after free in Passwords. Reported by shab on 2026-08-10 [N/A][547322272] Medium CVE-2026-87609: Use after free in Sharing. Reported by Google on 2026-08-16 [TBD][547592631] Medium CVE-2026-87610: Incorrect authorization in Omnibox. Reported by Arni Hardarson (Neonix Security) on 2026-08-17 [N/A][553155590] Medium CVE-2026-87626: Incorrect authorization in DeviceBoundSessionCredentials. Reported by Google on 2026-08-26 [$1,500][490773579] Low CVE-2026-87629: Incorrect authorization in Sources. Reported by lebr0nli of National Yang Ming Chiao Tung University, Dept. of CS, Security and Systems Lab on 2026-03-08 [$500][40058710] Low CVE-2026-87653: UI misrepresentation in FullScreen. Reported by Lijo A.T on 2022-02-07 [N/A][349994197] Low CVE-2026-87634: Use after free in WebPackaging. Reported by Google on 2024-06-28 [N/A][497025031] Low CVE-2026-87429: Missing authorization in ServiceWorker. Reported by Google on 2026-03-27 [N/A][497203958] Low CVE-2026-87618: Incorrect reference resolution in Storage. Reported by Google on 2026-03-28 [N/A][497359396] Low CVE-2026-87614: Incorrect authorization in ServiceWorker. Reported by Google on 2026-03-29 [N/A][497433347] Low CVE-2026-87619: Observable discrepancy in Prefetch. Reported by Google on 2026-03-29 [N/A][499217288] Low CVE-2026-87561: Incorrect authorization in Web Authentication. Reported by Google on 2026-04-03 [N/A][499218516] Low CVE-2026-87598: Incorrect authorization in ServiceWorker. Reported by Google on 2026-04-03 [N/A][501763003] Low CVE-2026-87519: Incorrect authorization in Safebrowsing. Reported by Google on 2026-04-11 [N/A][502452118] Low CVE-2026-87543: Missing authorization in Core. Reported by Google on 2026-04-14 [N/A][507219126] Low CVE-2026-87522: Missing authorization in WebView. Reported by Google on 2026-04-28 [N/A][513143955] Low CVE-2026-87568: Improper input validation in Chromium. Reported by Google on 2026-05-14 [N/A][513245072] Low CVE-2026-87656: Improper state validation in Safebrowsing. Reported by Google on 2026-05-14 [N/A][513395384] Low CVE-2026-87511: Missing authorization in DevTools. Reported by Google on 2026-05-15 [N/A][513473551] Low CVE-2026-87627: Interpretation conflict in Safebrowsing. Reported by Google on 2026-05-15 [N/A][513726466] Low CVE-2026-87595: Server-side request forgery in Mobile. Reported by Google on 2026-05-16 [N/A][513947572] Low CVE-2026-87592: Out of bounds read in Tint. Reported by Google on 2026-05-17 [N/A][514489101] Low CVE-2026-87620: Observable discrepancy in SVG. Reported by Google on 2026-05-19 [N/A][515426792] Low CVE-2026-87502: Confused deputy in Fullscreen. Reported by Google on 2026-05-21 [N/A][516965176] Low CVE-2026-87448: Use after free in DevTools. Reported by Google on 2026-05-27 [N/A][517219513] Low CVE-2026-87459: Observable discrepancy in Select. Reported by Google on 2026-05-27 [N/A][517776674] Low CVE-2026-87463: Incorrect authorization in Certificate. Reported by Google on 2026-05-29 [N/A][517926950] Low CVE-2026-87546: Incorrect type conversion or cast in Safebrowsing. Reported by Google on 2026-05-29 [N/A][522399466] Low CVE-2026-87538: Clickjacking in Input. Reported by Google on 2026-06-10 [N/A][523243507] Low CVE-2026-87545: Information leak in Mobile. Reported by Google on 2026-06-12 [N/A][523442920] Low CVE-2026-87617: Use after free in DevTools. Reported by Google on 2026-06-13 [N/A][532933816] Low CVE-2026-87523: Race condition in DataTransfer. Reported by Google on 2026-07-09 [N/A][532968511] Low CVE-2026-87565: Information leak in Passwords. Reported by Google on 2026-07-09 [N/A][533018632] Low CVE-2026-87597: UI misrepresentation in CustomTabs. Reported by Google on 2026-07-09 [N/A][533044125] Low CVE-2026-87624: UI misrepresentation in Passwords. Reported by Google on 2026-07-09 [N/A][533084499] Low CVE-2026-87605: Missing authorization in Contacts. Reported by Google on 2026-07-09 [N/A][533112829] Low CVE-2026-87490: Information leak in Transactions Platform. Reported by Google on 2026-07-09 [N/A][533116484] Low CVE-2026-87583: UI misrepresentation in Passwords. Reported by Google on 2026-07-09 [N/A][535718578] Low CVE-2026-87509: Incorrect authorization in Updater. Reported by Google on 2026-07-16 [N/A][537101736] Low CVE-2026-87473: Incorrect authorization in FileHandling. Reported by Google on 2026-07-21 [N/A][537470182] Low CVE-2026-87461: Information leak in Core. Reported by Google on 2026-07-21 [N/A][537476242] Low CVE-2026-87631: Missing authorization in DOM. Reported by Google on 2026-07-21 [TBD][538715523] Low CVE-2026-87469: Improper input validation in Extensions. Reported by Jeong Woo Lee (@eclipse07077) on 2026-07-24 [N/A][539453394] Low CVE-2026-87489: Memory corruption in V8. Reported by Google on 2026-07-27 [N/A][540013886] Low CVE-2026-87575: Incorrect authorization in Loader. Reported by Google on 2026-07-28 [N/A][540046516] Low CVE-2026-87571: Improper certificate validation in Loader. Reported by Google on 2026-07-28 [N/A][540059211] Low CVE-2026-87477: Information leak in Core. Reported by Google on 2026-07-28 [N/A][540070236] Low CVE-2026-87551: Improper certificate validation in CORS. Reported by Google on 2026-07-28 [N/A][540072282] Low CVE-2026-87608: Improper certificate validation in FedCM. Reported by Google on 2026-07-28 [N/A][540082621] Low CVE-2026-87437: Information leak in Frames. Reported by Google on 2026-07-28 [TBD][541546782] Low CVE-2026-87602: Out of bounds read in ANGLE. Reported by Hyeongeun Ji of JeroScope on 2026-08-01 [TBD][541604100] Low CVE-2026-87601: Race condition in V8. Reported by Salvatore Gulizia (nickname: Serotav) on 2026-08-01 [TBD][542355360] Low CVE-2026-87544: Incorrect authorization in Extensions. Reported by antoniosmr02 on 2026-08-04 [TBD][542449805] Low CVE-2026-87430: Buffer overflow in WebRTC. Reported by k-kyuno on 2026-08-04 [N/A][553252820] Low CVE-2026-87593: Information leak in Editing. Reported by Google on 2026-08-27

Google is aware that an exploit for CVE-2026-87491 exists in the wild.


We would also like to thank all security researchers that worked with us during the development cycle to prevent security bugs from ever reaching the stable channel.

Many of our security bugs are detected using AddressSanitizer, MemorySanitizer, UndefinedBehaviorSanitizer, Control Flow Integrity, libFuzzer, or AFL.


Interested in switching release channels? Find out how here. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.


Srinivas Sista

Google Chrome

  •  

v0.20.0-rc.1

❗ This is a pre-release

  • May contain bugs and unfinished features.

⚠️ Note for macOS users

Builds are unsigned (no Apple Developer ID). After dragging MarkText into Applications, clear the quarantine flag once:

xattr -cr /Applications/marktext.app

Verifying downloads

All artifacts are listed with their SHA-256 in SHA256SUMS.txt. Verify with:

sha256sum -c SHA256SUMS.txt --ignore-missing

What's Changed

  • fix(desktop): resolve Homebrew/standard bin dirs for GUI launches by @Jocs in #4796
  • fix(muya): show and slug TOC headings by rendered plain text (#3516) by @Jocs in #4811
  • Add UKey Wallet sponsor to README and website by @Jocs in #4819
  • fix(desktop): apply editor max-width preference to @muyajs/core content column (#4828) by @Jocs in #4830
  • Add Bengali README and links by @FahimFBA in #4823
  • fix(muya): skip identity operations during deferred flush by @tech-hoon in #4815
  • fix(muya): harden History against identity (null) json-change ops by @Jocs in #4838
  • fix(muya): stop inline math showing a scrollbar for trailing sub/superscripts (#4837) by @Jocs in #4839
  • fix(muya): isolate mermaid render failures during export (#4812) by @Jocs in #4840
  • fix(desktop): correct English typos in locale and preference schema (#4787) by @Jocs in #4845
  • fix(muya): stop double percent-encoding autolink hrefs by @Jocs in #4841
  • fix(muya): keep pasted list items in order when merging mid-list by @Jocs in #4842
  • fix(desktop): confirm before opening executable link targets (code execution) by @Jocs in #4843
  • fix(muya): keep soft line breaks when exporting to HTML/PDF by @Jocs in #4844
  • fix(muya): show escaped pipe in table cell code as | not | (#4849) by @Jocs in #4850
  • fix(muya): preserve fenced code block info string on round-trip (#4770) by @Jocs in #4846
  • fix(muya): load Prism component dependencies in order (fixes flaky c++ load) by @Jocs in #4861
  • refactor(muya): treat the code fence info string as the source of truth (CommonMark) by @Jocs in #4856
  • fix(muya): call h1-h6 "headings" not "headers" in the insert menu by @Jocs in #4854
  • fix(desktop): don't crash on unwatchable image directories (UNC/WSL paths) by @Jocs in #4853
  • fix(desktop): save files atomically to prevent data loss on crash by @Jocs in #4852
  • fix(desktop): make crash-recovery buffer writes durable against power loss by @Jocs in #4864
  • fix(muya): render extensionless remote images served with a charset (shields.io badges) by @Jocs in #4857
  • fix(muya): follow the link when modifier-clicking a linked image by @Jocs in #4858
  • fix(muya): follow the link on Ctrl/Cmd-click for reference-linked and raw-HTML linked images (#4865) by @Jocs in #4866
  • fix(desktop): keep TOC collapse state across tab switches by @Jocs in #4860
  • fix(desktop): flush pending edits before saving (dropped last keystroke) by @Jocs in #4859

New Contributors

Full Changelog: v0.20.0-beta.5...v0.20.0-rc.1

  •  

v0.20.0-beta.5

❗ This is a pre-release

  • May contain bugs and unfinished features.

⚠️ Note for macOS users

Builds are unsigned (no Apple Developer ID). After dragging MarkText into Applications, clear the quarantine flag once:

xattr -cr /Applications/marktext.app

Verifying downloads

All artifacts are listed with their SHA-256 in SHA256SUMS.txt. Verify with:

sha256sum -c SHA256SUMS.txt --ignore-missing

What's Changed

  • fix(muya): scroll wide math blocks instead of clipping by @Jocs in #4751
  • fix(desktop): route undo/redo to CodeMirror in source code mode by @Jocs in #4752
  • fix(muya): leave Tab to the IME during composition by @Jocs in #4753
  • fix(desktop): add a context menu to the sidebar root folder by @Jocs in #4754
  • fix(muya): preserve code fence length on serialize by @Jocs in #4755
  • fix(muya): refresh math/diagram preview on undo by @Jocs in #4756
  • fix(desktop): resolve relative local links on export by @Jocs in #4757
  • fix(muya): require a word boundary before an emoji shortcode by @Jocs in #4758
  • fix(desktop): don't overwrite an existing file when creating from the sidebar by @Jocs in #4759
  • fix(desktop): ignore content-identical file-change events by @Jocs in #4760
  • fix(desktop): make the source-mode selection visible on dark themes by @Jocs in #4771
  • fix(desktop): persist export dialog options across sessions by @Jocs in #4768
  • fix(muya): convert $$ to a math block in place inside a list item by @Jocs in #4767
  • fix(muya): self-close generated tags for JSX/MDX compatibility by @Jocs in #4766
  • fix(muya): preserve current-line indent on Enter in code fences by @Jocs in #4761
  • fix(muya): make autolinks and bare URLs followable on Cmd/Ctrl-click by @Jocs in #4763
  • fix(muya): exclude selection whitespace when applying inline format by @Jocs in #4762
  • fix(desktop): make empty-state CTA button labels readable in all themes by @Jocs in #4775
  • fix(muya): surface the KaTeX parse error for invalid math by @Jocs in #4764
  • fix(desktop): keep sidebar width + tree collapse state across icon toggle by @Jocs in #4769
  • fix(muya): recognize c++/h++ as aliases for the cpp code grammar by @Jocs in #4794
  • fix(muya): don't highlight LaTeX \% as a comment by @Jocs in #4795
  • fix(muya): recolor sequence-diagram text/boxes for dark themes by @Jocs in #4800
  • fix(muya): keep image resize handles attached on layout reflow by @Jocs in #4802
  • fix(muya): make cpp c++/h++ alias registration idempotent by @Jocs in #4816
  • fix(desktop): preserve TOC collapse state across content edits by @Jocs in #4803
  • fix(desktop): make Paragraph/Format commands inert in source mode (grey out menus) by @Jocs in #4810
  • fix(desktop): New File on a collapsed sidebar folder expands it by @Jocs in #4809
  • fix(desktop): select the query when re-opening the Find bar by @Jocs in #4807
  • fix(desktop): keep diagram content when exporting with Header & Footer by @Jocs in #4805
  • fix(desktop): list bundled fonts in the font picker by @Jocs in #4801
  • fix(desktop): remove doubled Edit-menu separator on Windows/Linux by @Jocs in #4797
  • fix(desktop): generate a PDF outline from headings on export by @Jocs in #4798
  • fix(desktop): avoid PDF/print page breaks right after a heading by @Jocs in #4799

Full Changelog: v0.20.0-beta.4...v0.20.0-beta.5

  •  

v0.20.0-beta.4

❗ This is a pre-release

  • May contain bugs and unfinished features.

⚠️ Note for macOS users

Builds are unsigned (no Apple Developer ID). After dragging MarkText into Applications, clear the quarantine flag once:

xattr -cr /Applications/marktext.app

Verifying downloads

All artifacts are listed with their SHA-256 in SHA256SUMS.txt. Verify with:

sha256sum -c SHA256SUMS.txt --ignore-missing

What's Changed

  • fix(renderer): keep the key bindings hover row readable on dark themes by @FurkaanBoraa in #4719
  • fix(renderer): make the custom dictionary table readable on dark themes by @FurkaanBoraa in #4721
  • feat(muya): self-contained editor typography via --mu-* options by @Jocs in #4722
  • refactor(desktop): consume muya self-contained typography, remove shell style injection by @Jocs in #4726
  • fix(muya): move preview toolbar to the block's top-right by @Jocs in #4734
  • fix(renderer): hide muya float tools in source-code mode by @Jocs in #4732
  • fix(desktop): remove duplicate title when using the native title bar by @Jocs in #4630
  • fix(muya): keep a nested sublist when forward-deleting an empty list item (#1845) by @Jocs in #4725
  • fix(muya): remove the inner format when un-toggling a nested inline run (#2063) by @Jocs in #4727
  • docs: add commenting guidelines by @Jocs in #4738
  • fix(muya): escape parentheses in inserted image paths (#3060) by @Jocs in #4728
  • fix(muya): decode HTML entities in fetched page titles when pasting a URL (#2525) by @Jocs in #4729
  • fix(muya): reset search state when the document is replaced (#1932) by @Jocs in #4730
  • fix(muya): split on Enter over a cross-block selection (#2443) by @Jocs in #4735
  • fix(muya): let Enter replace a selection when the format toolbar is shown (#3196) by @Jocs in #4736
  • fix(muya): stop punctuation after a link wrapping to its own line (#2258, #3025) by @Jocs in #4737
  • chore: audit Claude-authored comments against the commenting guidelines by @Jocs in #4740
  • fix: normalize HTML task-list paste by @Renakoni in #4710
  • fix: preserve bare URL HTML links on paste by @Renakoni in #4711
  • fix: preserve whitespace-only plain text paste by @Renakoni in #4706
  • fix: preserve nested HTML lists under ordered parents by @Renakoni in #4709
  • fix: prevent nested empty list items from becoming setext headings by @Renakoni in #4697
  • fix: preserve empty task list items when parsing markdown by @Renakoni in #4696
  • fix: remove ~1s sidebar delay for newly created files (#3955) by @Jocs in #4744
  • fix(i18n): degrade malformed translations to raw text instead of crashing (#4046) by @Jocs in #4745
  • fix: vertically center task list checkbox with item text by @Jocs in #4750
  • fix(desktop): prefer UTF-8 when a file is valid UTF-8 instead of trusting ced (#3151) by @Jocs in #4739
  • fix(desktop): scroll the view up when the caret moves above the viewport (#3329) by @Jocs in #4742
  • fix: scroll the active tab into view on tab switch (#3958) by @Jocs in #4743

Full Changelog: v0.20.0-beta.3...v0.20.0-beta.4

  •  

v0.20.0-beta.3

❗ This is a pre-release

  • May contain bugs and unfinished features.

⚠️ Note for macOS users

Builds are unsigned (no Apple Developer ID). After dragging MarkText into Applications, clear the quarantine flag once:

xattr -cr /Applications/marktext.app

Verifying downloads

All artifacts are listed with their SHA-256 in SHA256SUMS.txt. Verify with:

sha256sum -c SHA256SUMS.txt --ignore-missing

What's Changed

  • fix(desktop): restore vue-tsc typecheck (vite 7 PluginOption) by @Jocs in #4667
  • fix(release): support immutable releases (draft-then-promote) + docs by @Jocs in #4666
  • fix(muya): undo/redo corruption on coalesced paragraphβ†’list + text edits by @Jocs in #4669
  • fix(renderer): keep find-bar prefill from being clobbered on open by @NSO73 in #4646
  • fix(muya): preserve nested-list indentation in RTL mode by @Jocs in #4676
  • fix(muya): load mhchem onto the same katex instance so \ce renders (#4670) by @Jocs in #4674
  • fix(muya): keep inline links that are followed by a bare URL or text (#4671) by @Jocs in #4672
  • fix(keybinding): sync menu bar and command palette when keybindings change by @Jocs in #4681
  • fix(muya): guard detached code block in language selector (#4654) by @Jocs in #4677
  • test(e2e): stabilize flaky search-prefill test (wait for selection commit) by @Jocs in #4682
  • fix: export PDF/HTML/print in the editor's text direction (RTL) by @Jocs in #4678
  • fix(muya): create a code-block when typing ``` + Enter inside block-quotes and lists by @Jocs in #4689
  • fix(muya): prevent undo/redo exceptions from permanently disabling history (#4685) by @Jocs in #4692
  • fix(muya): auto-hide inline markers when holding an arrow key out of a token by @Jocs in #4694
  • test(e2e): replace fixed waits with expect.poll in editor-input by @NSO73 in #4695
  • fix: normalize first-row colspan table paste by @Renakoni in #4707
  • fix(renderer): use the theme text colour for the key bindings list (#3937) by @FurkaanBoraa in #4713
  • fix: wrap selected text when typing auto-pair characters by @Renakoni in #4698
  • fix(muya): skip empty sibling containers in caret navigation (#4644 follow-up) by @FurkaanBoraa in #4715
  • fix(muya): stop the paragraph front-menu from acting on a stale block (#4686) by @Jocs in #4714
  • fix(muya): re-sync the live tree from json state when an undo/redo apply throws by @Jocs in #4717
  • fix(desktop): paint the launch window in the active theme's background (#3957) by @FurkaanBoraa in #4718

New Contributors

Full Changelog: v0.20.0-beta.2...v0.20.0-beta.3

  •  

v0.20.0-beta.2

❗ This is a pre-release

  • May contain bugs and unfinished features.

⚠️ Note for macOS users

Builds are unsigned (no Apple Developer ID). After dragging MarkText into Applications, clear the quarantine flag once:

xattr -cr /Applications/marktext.app

Verifying downloads

All artifacts are listed with their SHA-256 in SHA256SUMS.txt. Verify with:

sha256sum -c SHA256SUMS.txt --ignore-missing

What's Changed

  • chore(release): v0.19.0 release branch (DO NOT MERGE until stable) by @Jocs in #4269
  • chore: bump develop to 0.20.0-dev by @Jocs in #4296
  • docs(release): update Step 7 asset list to 24 by @Jocs in #4298
  • docs(end-user): align user docs with 0.19 prefs and platform matrix by @Jocs in #4300
  • docs(dev): sync developer docs with current codebase by @Jocs in #4299
  • chore: convert repo to pnpm monorepo (packages/desktop, muyajs, website) by @Jocs in #4302
  • refactor(website): migrate to Next.js 15 + Cloudflare Workers CI by @Jocs in #4305
  • feat(website): serve www.marktext.me (301 β†’ apex) by @Jocs in #4308
  • fix(website): wwwβ†’apex redirect (middleware) + smarter preview-URL parsing by @Jocs in #4309
  • ci(website): enable Preview URLs on marktext-website Worker by @Jocs in #4311
  • refactor(website): redesign landing page, drop markdown engine deps by @Jocs in #4312
  • feat(muya): migrate TS rewrite to packages/muya alongside legacy muyajs by @Jocs in #4314
  • feat(website): add /docs route and consolidate docs/ under packages/website/ by @Jocs in #4316
  • fix: replace remaining absolute raw.githubusercontent.com URLs with relative paths in READMEs by @Jocs with @Copilot in #4329
  • fix(website): serve prerendered docs pages via static-assets cache by @Jocs in #4335
  • fix(website): open download buttons in new tab pointing to releases page by @Jocs in #4336
  • refactor(website): simplify docs subtree (palette / sidebar / markdown / nav) by @Jocs in #4349
  • refactor(website): simplify landing page (helpers, types, data-driven blocks) by @Jocs in #4350
  • chore(website): tighten middleware matcher; drop unused 'use client' by @Jocs in #4351
  • fix(muyajs): preserve nested lists of differing types (#4341) by @Jocs in #4354
  • fix(muyajs): allow CJK ideographs as flanking boundary for emphasis by @Jocs in #4355
  • fix(muyajs): clamp setStart offset to legal range to prevent IndexSizeError (#2800) by @Jocs in #4358
  • fix(muyajs): null-guard list block paths to prevent renderer crash (#4346) by @Jocs in #4359
  • fix: restore local builds after monorepo split by @Jocs in #4361
  • fix(release): add repository field for electron-builder by @Jocs in #4368
  • fix(muyajs): split correct paragraph on Enter in multi-block list items (#4374) by @Jocs in #4376
  • fix(renderer): improve graphite contrast and unify accent colors (#4377) by @Jocs in #4378
  • feat(muya): expose desktop-required public API accessors by @Jocs in #4381
  • feat(muya): expose themeable CSS variables and diagram theming by @Jocs in #4382
  • feat(muya): add block duplicate/insert/delete public API by @Jocs in #4384
  • feat(muya): restore flowchart and sequence diagrams by @Jocs in #4385
  • feat(muya): add ImagePathPicker floating autocomplete UI by @Jocs in #4386
  • fix(muya): unbreak lint:css (stylelint 17 compatibility) by @Jocs in #4388
  • feat(muya): add cursorCoords + active formats to selection-change by @Jocs in #4387
  • feat(muya): implement focus mode (dim inactive blocks) by @Jocs in #4389
  • feat(muya): emit format-click and preview-image interaction events by @Jocs in #4390
  • feat(muya): add updateParagraph block-type conversion API by @Jocs in #4391
  • feat(muya): add runtime setOptions / setFont / setTabSize / setListIndentation by @Jocs in #4393
  • feat(muya): add spellcheck word-replacement API by @Jocs in #4392
  • feat(muya): serialize/restore undo history by @Jocs in #4394
  • feat(muya): add invalidateImageCache by @Jocs in #4396
  • test(muya): port MarkText regression cases (#4341/#4307/#4190) by @Jocs in #4399
  • feat(muya): add createTable / insertImage / setCursor API by @Jocs in #4397
  • feat(muya): add clipboardFilePath paste hook by @Jocs in #4398
  • fix(muya): treat CJK as punctuation for strong/em flanking (#4307) by @Jocs in #4401
  • feat(desktop): consume @muyajs/core in util files (markdownToHtml/pdf/dompurify/printService/sourceCode/icon) by @Jocs in #4402
  • feat(desktop): add kebab-case editor CSS vars to themes for @muyajs/core by @Jocs in #4404
  • feat(desktop): migrate editor.vue to @muyajs/core engine by @Jocs in #4406
  • fix(i18n): unify quick-insert hint to "/" trigger by @Jocs in #4405
  • test(parity): failing-test scoreboard for #4406 muyajsβ†’@muyajs/core gaps by @Jocs in #4407
  • fix(muya): insertParagraph immediate-block anchoring in nested blocks (PG13) by @Jocs in #4408
  • fix(muya): consume autoCheck + hideLinkPopup options (PG3/PG12) by @Jocs in #4409
  • feat(muya): expose block affiliation in selection-change (PG1) by @Jocs in #4410
  • feat(muya): restore clipboard image paste + imageAction routing + copyAsRich (PG5/PG6/PG9) by @Jocs in #4411
  • fix(muya): inline export CSS + heading ids for offline export & TOC anchors (PG7/PG8) by @Jocs in #4412
  • feat(muya): emit preview-image + heading-copy-link events (PG10/PG11) by @Jocs in #4414
  • feat(muya): restore drag-and-drop image insertion (PG4) by @Jocs in #4413
  • feat(desktop): wire @muyajs/core parity APIs (menu state, copyAsRich, heading-link, source cursor, saved indicator) by @Jocs in #4415
  • fix(desktop): pass imageAction + getPathForFile to Muya constructor (re-activate PG4/5/6) by @Jocs in #4417
  • fix(muya): resolve pre-existing lint:css no-descending-specificity by @Jocs in #4419
  • fix(muya): record source-mode bulk edit as a single undo boundary (PG14) by @Jocs in #4420
  • test(desktop): remove redundant muyajs-engine unit specs (Phase F) by @Jocs in #4422
  • fix(desktop): retarget theme.ts editor CSS at muya mu-* classes (E4) by @Jocs in #4421
  • fix(desktop): port print image-src resolution off muyajs (last muya/lib import) by @Jocs in #4423
  • fix(muya): crash typing '#' β€” guard I18n.t + add heading-copy-link locale key by @Jocs in #4424
  • fix(muya): add missing image i18n keys ('Click to add an image' / 'Load image failed') by @Jocs in #4427
  • fix(muya): render relative image paths anchored to the document dir (Phase G blocker) by @Jocs in #4428
  • fix(desktop): Editβ–ΈReplace action + saved-indicator false-clean (Phase G) by @Jocs in #4431
  • fix(muya): preserve drive/UNC roots in relative image path resolution (#4428 review follow-up) by @Jocs in #4430
  • fix: source-mode cursor sync + language-switch hint refresh (Phase G G7/G8) by @Jocs in #4432
  • fix(muya): updateParagraph data-loss on list/quote + front-matter insertion + frontmatterType lang (Phase G) by @Jocs in #4429
  • test: cover @muyajs/core migration regression gaps (Phase G) by @Jocs in #4434
  • fix(muya): restore cross-cell table selection + resolve dead TableChessboard picker (Phase G) by @Jocs in #4435
  • test(muya): de-flake heading-locale + backspace regression specs (#4434 review) by @Jocs in #4436
  • fix(muya): restore the in-editor table grid picker (revert #4435 chessboard deletion + wire trigger) by @Jocs in #4437
  • docs: archive the muyajs β†’ @muyajs/core migration tracker by @Jocs in #4438
  • chore: keep .claude/ fully ignored (untrack migration tracker) by @Jocs in #4439
  • fix: restore editor visual parity after @muyajs/core migration by @Jocs in #4443
  • fix(muya): align Cmd+A / copy / cut / paste with legacy muyajs by @Jocs in #4446
  • chore(muya): align packages/muya conventions with desktop + doc cleanup by @Jocs in #4450
  • fix(muya): editor parity with muyajs (themes, fonts, spellcheck) + CLASS_NAMES cleanup by @Jocs in #4454
  • refactor(muya): split clipboard into modules + type copy/paste modes as enums by @Jocs in #4459
  • fix(muya): enable inline image resize by @Jocs in #4460
  • refactor(muya): rebuild ImageEditTool to match muyajs ImageSelector by @Jocs in #4461
  • chore: remove ununsed comments by @Jocs in #4462
  • chore(muya): remove redundant comments added during the muyajs port by @Jocs in #4463
  • refactor(muya): unify Selection into facade over Text/Table/Image sub-selections by @Jocs in #4467
  • fix(muya): match muyajs nested list spacing and bullet markers by @Jocs in #4469
  • fix(editor): restore caret on source-mode undo and tab switch by @Jocs in #4470
  • fix(muya): preventDefault on forward-delete paragraph merge by @Jocs in #4471
  • fix(muya): restore Paste as Plain Text via async clipboard read by @Jocs in #4472
  • fix(muya): stop drag-selection from expanding to whole blocks by @Jocs in #4477
  • fix(muya): delete whole image on backspace (inline, raw html, reference) by @Jocs in #4478
  • fix(muya): stop Shift+Tab unindent from crashing on insertTab by @Jocs in #4479
  • fix(muya): stop arrow nav from crashing on null cursor coords by @Jocs in #4480
  • fix(muya): clear the / trigger when quick-inserting front matter by @Jocs in #4481
  • fix(desktop): make Promote Heading shortcut fire on macOS by @Jocs in #4482
  • fix(desktop): refresh muya locale on language switch (hint + quick-insert menu stay translated) by @Jocs in #4489
  • fix(desktop): anchor theme card h3 label to its heading by @Jocs in #4490
  • fix(muya): stop in-flight float positioning from re-revealing a hidden float by @Jocs in #4491
  • fix(desktop): return relative image path for local-path-string inserts by @Jocs in #4492
  • fix: insert web images dragged from a browser by @Jocs in #4494
  • fix(muya): support resizing images that share the same link by @Jocs in #4495
  • fix(muya): render vega-lite diagrams under the renderer CSP by @Jocs in #4496
  • fix(muya): refresh local images on "Reload images" (View β†’ Reload images) by @Jocs in #4498
  • fix: reflect the current block in the Paragraph menu (PG1) by @Jocs in #4500
  • fix(muya): keep selection after applying an inline format to a range by @Jocs in #4501
  • fix(desktop): reflect underline/superscript/subscript/highlight in the Format menu by @Jocs in #4503
  • fix: paragraph menu / command palette parity (focus, list unwrap, shortcut symbols) by @Jocs in #4504
  • fix(muya): keep cursor in place when toggling Loose List Item by @Jocs in #4506
  • refactor(muya): rework the selection type surface by @Jocs in #4512
  • fix(desktop): point in-app docs links at marktext.me by @Jocs in #4513
  • fix(website): point self-referential doc links at the published docs by @Jocs in #4514
  • fix(website): register the missing end-user docs pages by @Jocs in #4515
  • feat(i18n): add Turkish (tr) locale by @FurkaanBoraa in #4510
  • feat: make PlantUML server URL configurable by @jyte in #4400
  • fix: #4474 unsaved indicator never clears after undoing back to on-disk content by @FurkaanBoraa in #4475
  • fix(test): correct PlantUML custom-server URL assertion by @Jocs in #4517
  • fix(i18n): reconcile desktop & muya locale keys after the muya engine refactor by @Jocs in #4516
  • test(muya): backfill engine-unit coverage for audited gaps by @Jocs in #4508
  • test(muya-e2e): backfill real-DOM e2e coverage for audited gaps by @Jocs in #4511
  • test(desktop): backfill renderer/main unit coverage for audited gaps by @Jocs in #4509
  • refactor(muya): return enums from TextSelection direction/type by @Jocs in #4519
  • refactor(muya): setSelection takes anchor/focus endpoints by @Jocs in #4523
  • refactor(muya): route format/codeblock selection through setCursor by @Jocs in #4520
  • refactor(muya): split ICursor into focused interfaces by @Jocs in #4524
  • refactor(muya): keep table rect selection exclusive of text selection by @Jocs in #4522
  • refactor(muya): extract computeDirection/computeCaretType helpers by @Jocs in #4525
  • refactor(muya): simplify selectAll into three escalation rules by @Jocs in #4526
  • test(muya): replace any with precise block/state types in specs by @Jocs in #4528
  • refactor(desktop): remove no-explicit-any suppressions in favor of precise types by @Jocs in #4527
  • refactor(muya): drop cyclomatic complexity below 20 across the engine by @Jocs in #4529
  • refactor(muya): rename selection enum members to UPPER_SNAKE_CASE by @Jocs in #4531
  • chore: translate remaining Chinese console/debug strings to English by @Jocs in #4533
  • refactor(muya): enforce _ prefix for private members via lint by @Jocs in #4535
  • refactor(muya): mark core/state/selection internals private by @Jocs in #4541
  • refactor(muya): mark block-tree internals private/protected by @Jocs in #4538
  • refactor(muya): mark UI float-tool internals private by @Jocs in #4539
  • refactor(desktop): remove remaining no-explicit-any suppressions by @Jocs in #4548
  • feat: align Paragraph/Format menus with muyajs behavior on @muyajs/core (+3 upgrades) by @Jocs in #4547
  • fix(muya): sync inline format toolbar highlight via selection-change by @Jocs in #4558
  • fix(muya): align normalizePastedHTML link unlinking with muyajs by @Jocs in #4550
  • fix(muya): render footnotes in copy-as-html / copy-as-rich clipboard HTML by @Jocs in #4544
  • fix(muya): align clipboard cut/delete semantics with muyajs by @Jocs in #4540
  • fix(muya): collapse code block to paragraph on cross-block cut from its language line (#918) by @Jocs in #4545
  • fix(muya): merge pasted paragraphs/headings inline (muyajs parity) by @Jocs in #4542
  • fix(muya): replace selected image on paste + language-input paste parity by @Jocs in #4543
  • fix(muya): merge same-type list paste + plain-text block HTML (muyajs parity) by @Jocs in #4546
  • fix(muya): round-2 paste/clipboard parity fixes from a full muyajs re-audit by @Jocs in #4549
  • fix: populate the table of contents on open and fix link navigation by @NSO73 in #4448
  • fix(desktop): paste captured image on macOS Edit β†’ Screenshot by @Jocs in #4566
  • fix(muya): restore editor cursor when closing the search bar (selectHighlight) by @Jocs in #4567
  • fix(muya): restore find-bar prefill from editor selection by @Jocs in #4569
  • fix(search): scroll editor to match when opening a folder-search result by @Jocs in #4568
  • fix(muya): serialize lists with the configured listIndentation by @Jocs in #4570
  • fix(muya): restore the focused frontmatter delimiter markers by @Jocs in #4571
  • fix(muya): show code-block line numbers on first render for language-less blocks by @Jocs in #4572
  • fix(muya): re-parse on parse-affecting option changes so ```math toggles live by @Jocs in #4573
  • fix(export): repair five styled-HTML export regressions (math, vega, footnotes, TOC, images) by @Jocs in #4576
  • fix(export): make "Overwrite theme font" actually override the selected theme by @Jocs in #4579
  • fix(editor): restore per-tab caret on tab switch by @Jocs in #4580
  • fix(editor): restore undo after an external file reload by @Jocs in #4582
  • fix(desktop): auto-focus the editor when creating or opening a tab by @Jocs in #4581
  • fix(editor): align code block line numbers vertically by @Jocs in #4583
  • fix(editor): keep spelling suggestions when "no underline" is enabled by @Jocs in #4584
  • refactor(muya): decouple engine/block layers from src/ui plugin internals by @Jocs in #4587
  • fix(clipboard): copy only the selected part of cross-block selections by @Jocs in #4586
  • fix(muya): correct setext heading level when typing the underline by @Jocs in #4591
  • fix(muya): guard checkNeedRender against a null cursor (image-preview reclick crash) by @Jocs in #4588
  • test(desktop): backfill renderer/main unit coverage for post-migration gaps by @Jocs in #4592
  • test(muya-e2e): backfill real-DOM e2e coverage for post-migration gaps by @Jocs in #4593
  • test(muya): backfill engine unit coverage for post-migration gaps by @Jocs in #4589
  • test(desktop): backfill app e2e coverage for post-migration gaps by @Jocs in #4594
  • chore(security): remediate 25 Dependabot alerts by @Jocs in #4596
  • chore(deps): upgrade all packages to latest + align shared versions by @Jocs in #4597
  • test(muya): poll for the html_tag mount instead of waiting a single frame by @Jocs in #4607
  • fix(muya): escape pipes at cell start and consecutive pipes in table serialization by @Jocs in #4601
  • fix(muya): absorb a manually typed closing markdown marker after text by @Jocs in #4602
  • fix(muya): let Shift+ArrowUp/Down extend selection while the inline toolbar is shown by @Jocs in #4603
  • fix(muya): render
  • fix(muya): keep emphasis intact when a line contains escaped dollar signs by @Jocs in #4605
  • fix(muya): paste a URL into link parentheses without nesting a markdown link by @Jocs in #4608
  • fix(muya): make links inside a raw HTML block clickable by @Jocs in #4609
  • fix(muya): correct inline code/math shortcut labels in the format toolbar by @Jocs in #4611
  • fix: #4356 crash when using the link popover on a link with an unsupported protocol by @FurkaanBoraa in #4473
  • fix(muya): map Β  to U+00A0 and keep escaped spaces unbreakable by @Jocs in #4612
  • fix(desktop): scroll to non-heading in-document anchors on Ctrl/Cmd-click by @Jocs in #4613
  • fix(muya): keep the inline-math parse-error message on one line by @Jocs in #4614
  • fix(muya): allow inline style in the html-block live preview by @Jocs in #4618
  • fix(muya): cap and horizontally scroll the inline-math popup by @Jocs in #4615
  • fix(desktop): isolate the editor stacking context so previews stay under modals by @Jocs in #4617
  • test(desktop): fix inline code/math shortcut tests failing on develop after #4611 by @FurkaanBoraa in #4624
  • fix(desktop): scroll CodeMirror to the heading on TOC click in source mode by @Jocs in #4619
  • fix(muya): constrain a rendered diagram svg so wide diagrams don't clip by @Jocs in #4616
  • fix(desktop): apply custom keybinding changes without an app restart by @Jocs in #4621
  • fix(muya): break undo entries at word and edit-kind boundaries by @Jocs in #4622
  • fix(muya): swap cross-block arrow boundary keys in RTL mode by @Jocs in #4610
  • fix: opaque light-theme editor text colors for crisp antialiasing by @Jocs in #4631
  • fix(muya): clamp selection offset to the node's legal range by @Jocs in #4626
  • fix(desktop): prevent data loss when closing after Source Code mode edits by @Jocs in #4627
  • fix(muya): center inline math vertically so it sits on the text baseline by @Jocs in #4632
  • fix(muya): render inline math containing an escaped dollar sign by @Jocs in #4629
  • fix(muya): prevent renderer crash when deleting consecutive thematic breaks by @Jocs in #4628
  • test: drop the low-value opaque-color guard tests from #4466 by @Jocs in #4633
  • test(muya): regression guard for code-block scroll on typing (#3191) by @Jocs in #4638
  • fix(muya): align serialized table columns by visual width (#1983) by @Jocs in #4636
  • fix(muya): insert ordinary spaces for Tab instead of non-breaking spaces (#3273) by @Jocs in #4634
  • fix(muya): convert typed diagram fences to diagram blocks on Enter (#2177) by @Jocs in #4635
  • fix(muya): keep the caret on Shift+Tab list unindent (REPLACEMENT path) (#3223) by @Jocs in #4637
  • fix(muya): typed diagram fences create diagram blocks via the language selector (#2177) by @Jocs in #4640
  • refactor: rewrite getTOC and remove unused comments by @Jocs in #4642
  • fix(muya): allow trailing whitespace after a math block's closing $$ (#1931) by @Jocs in #4649
  • fix(muya): stop ArrowDown from endlessly creating empty paragraphs (#3520) by @Jocs in #4650
  • fix(muya): take the list marker from a line start in _convertToList (#2429) by @Jocs in #4651
  • fix(muya): strip trailing punctuation from extended autolinks (#2096) by @Jocs in #4652
  • fix(muya): ArrowUp at document start moves the caret to offset 0 (#3193) by @Jocs in #4655
  • fix(muya): destroy UI plugins on Muya.destroy() to stop leaking DOM nodes (#3315) by @Jocs in #4659
  • fix(muya): don't cut a cross-block selection on Ctrl+ (Windows/Linux) (#3491) by @Jocs in #4656
  • fix(muya): apply inline format across paragraphs nested in one blockquote (#3462) by @Jocs in #4661
  • fix: #4534 group theme menu into Light/Dark submenus by @FurkaanBoraa in #4623
  • fix(muya): drop pending op batch on setContent to prevent cross-document corruption (#2938) by @Jocs in #4658
  • test(desktop): pin autosave's recreate-missing-directory behavior (#3509) by @Jocs in #4657
  • fix(muya): keep list item non-empty on Enter in empty first paragraph (#4644) by @Jocs in #4660

New Contributors

Full Changelog: v0.19.0...v0.20.0-beta.2

  •  
❌