Fixed a CI and packaging issue. There are no application changes since Beta 1.
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
Ready to hit the road? Today, we're taking a closer look at one of the new systems created for our upcoming Coaches DLC for Euro Truck Simulator 2 and Road Trip for American Truck Simulator; Mode Switch. This feature helps bring different types of gameplay together, allowing you to move between your trucking career and new adventures behind the wheel of a car or coach!
ETS2 & ATS are expanding beyond trucking, and with that comes the need to clearly separate the different careers and gameplay experiences available to players. This is why we have divided the game into different modes, Truck Mode, Car Mode and Coach Mode.
Each mode has its own gameplay, progression, and career systems. Truck Mode remains centred around transporting cargo and building your trucking business, while Car Mode, introduced with Road Trip, places a greater emphasis on exploration and building your reputation with customers. Coach Mode will focus on operating routes, providing passengers with a smooth journey, and keeping them satisfied along the way.
Progression is separate between these careers, with Car Mode using reputation rather than traditional experience points. However, some important parts of your profile remain shared. Your money and map exploration carry across all modes, meaning roads discovered while travelling by car will remain explored when you return to your truck, and vice versa.
Separating the experience into different modes also allows us to keep everything relevant to your current career together in one place, including your vehicles, progression, statistics, and other mode-specific information.
Switching between modes is straightforward. You can enter another mode while you're not driving to manage that career, although you cannot have more than one active job across all modes at the same time. The full switch between modes happens once you press the Drive button.
As of right now, the navigation system remains tied to the mode you last drove in, so you wonโt be able to set or adjust a route for the newly selected mode. As soon as you hit the road, the correct navigation and gameplay systems for that mode will kick in. Looking ahead, weโre already looking at ways to make navigation between modes feel even smoother in future updates.ย
Wonder where you last left off in your vehicle? The map will also show the positions of your other vehicle, as well as your current position when undertaking a Quick Job. When you mode switch, you'll continue from the location where you left your truck, coach, or car.
The introduction of multiple modes also played a part in our recent changes to the fatigue system. Fatigue Simulation is now separated into Rest State and Mandatory Breaks. Your Rest State represents how tired your character is and is shared across modes, while Mandatory Breaks represent legally required rest periods. Trucks and coaches are subject to Mandatory Breaks, while cars are not.
The introduction of different modes is an important part of expanding Euro Truck Simulator 2 and American Truck Simulator while keeping their various gameplay experiences connected. Each mode offers its own career and progression, while shared systems such as money and exploration help ensure everything still feels like part of the same world and profile.
We hope this gives you a better understanding of how Mode Switch works and some of the thought process behind the creation of the system. We're looking forward to getting you behind the wheel of some new vehicle types in Euro Truck Simulator 2 and American Truck Simulator!
Until next time, keep an eye on our blog and social media for all the latest news, and weโll see you on the road!
MeTube now refuses requests sent from other websites unless their origin is listed in CORS_ALLOWED_ORIGINS. This closes a security hole (GHSA-cxj8-27g9-669f). If you use a bookmarklet, add the sites you use it on, e.g. CORS_ALLOWED_ORIGINS=https://www.youtube.com. Details in #1085.
Changes
docs: point readers at the wiki from the README top and the issue forms (dfe3daa)
fix: let a refused bookmarklet see why it was refused (e165b36)
test: pin that scheme-less internal URLs are refused before any fetch (2979e3a)
fix: refuse state-changing requests and socket connections from other sites (772a16c)
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
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
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
Beta versions are not guaranteed to work as expected. We encourage users to create detailed bug reports if any problems arise. Read our blog post for more information about our Android beta programs.
๐๏ธ Enhancements
Implement auto-detection for audio passthrough and allow overrides #5645, by @BlackstormFirst
Config - An APP_KEY value now must be set. It should be already set in the vast majority of cases, we just no longer fall back to a default value where unset, and instead error. If you get an error upon access after upgrading, ensure a key is set. You can find guidance here.
Full List of Changes
Added interface layout system for UI customization, with theme system support. (#6179)
Added API endpoints for searching within a specific book or chapter. Thanks to @enableservices. (#6182)
Added a page scroll progress indicator. (#6176, #5932)
Added ability to easily download API docs as JSON or HTML. (#6198)
Updated translations with the latest Crowdin changes. (#6225)
Updated app logo with better accessibility text. (#6171)
Updated codebase static analysis to PHPStan Level 5. (#6143, #6089)
Updated config to remove default APP_KEY value. (#6210)
Updated new WYSIWYG editor with a range of fixes and improvements. (#6207)
Updated page create/update endpoints to allow a changelog message. (#6162)
Updated user password changes to require their existing password. (#6181)
Fixed incorrect LDAP group result handling scenario. (#6088)
Fixed lack of label text connected to checkboxes for screen readers. Thanks to @MHameed. (#6173)
Fixed markdown table alignment being removed by page content filtering. (#6167)
Fixed page content popup being caught in text selection range. (#6214)
Fixed unexpected error when using an invalid page ID with the API. (#6136)
The PostgreSQL Global Development Group announces that the fourth beta release of
PostgreSQL 19 is now available for download.
This release contains PostgreSQL 19 feature previews ahead of general
availability, though some details of the release can change during the beta
period.
You can find information about all of the PostgreSQL 19 features and changes in
the release notes:
The next planned release of PostgreSQL 19 is the release candidate, which should
occur in early October. Based on testing and evaluation, this means that the
PostgreSQL 19 GA may also occur in October. More details will be provided as
we move closer to these releases.
This beta release reverted several features that were originally planned for
PostgreSQL 19. The PostgreSQL community strongly believes that, first and
foremost, PostgreSQL must be reliable. Additionally, the community strives for a
predictable release schedule.
Because of this, the community chose to remove some features from the
PostgreSQL 19 release so they can be potentially be included in a later major
release after more time working through the community development and review
process.
Your testing and feedback help the community ensure that PostgreSQL 19
upholds our standards of delivering a stable, reliable release of the
world's most advanced open source relational database. Please read more about
our beta testing process and how
you can contribute:
To upgrade to PostgreSQL 19 Beta 4 from an earlier version of PostgreSQL,
you will need to use a strategy similar to upgrading between major versions of
PostgreSQL (e.g. pg_upgrade or pg_dump / pg_restore). For more
information, please visit the documentation section on
upgrading.
Changes Since Beta 3
Fixes and changes in PostgreSQL 19 Beta 4 include:
Revert SQL/PGQ (property graph query) support.
Revert online enabling and disabling of data checksums.
Revert support for temporal updates/deletes provided by the FOR PORTION OF
clause.
Revert ALTER TABLE ... MERGE PARTITIONS and
ALTER TABLE ... SPLIT PARTITIONS.
Remove the pg_get_role_ddl(), pg_get_tablespace_ddl(), and
pg_get_database_ddl() functions.
Revert a change that forced LC_COLLATE to C in the postmaster process.
Several fixes to the performance improvement feature for the foreign key
constraint checks.
Several fixes for the new REPACK command, including crashes, incorrect
behavior with invalid indexes and materialized views, and several permission
and error-reporting corrections.
Several fixes for the new WAIT FOR command, including a deadlock and clearer
reporting of isolation-level errors.
Fix validation of an empty FOREIGN_JOIN list in pg_plan_advice.
Several fixes for CREATE PUBLICATION ... EXCEPT.
Fix logical replication initial table synchronization when replicating from
an older PostgreSQL version to v19.
Several fixes for logical replication conflict detection.
Several fixes for the new autovacuum scoring system, including for TOAST
tables.
Fix for the COPY FROM SIMD optimization.
Fix a crash when accessing a partition whose concurrent detach did not
complete.
Clarify that failed transactions are reported separately when using
pgbench --continue-on-error.
Please see the release notes
for a complete list of new and changed features:
The stability of each PostgreSQL release greatly depends on you, the community,
to test the upcoming version with your workloads and testing tools to find bugs
and regressions before the general availability of PostgreSQL 19. As this is a
Beta, minor changes to database behaviors, feature details, and APIs are still
possible. Your feedback and testing will help determine the final tweaks on the
new features, so please test in the near future. The quality of user testing
helps determine when we can make a final release.
A list of open issues
is publicly available in the PostgreSQL wiki. You can
report bugs using this form on
the PostgreSQL website:
This is the fourth beta release of version 19. The PostgreSQL Project is
planning to move to the release candidate portion of the release cycle, and
will continue to issue release candidates until PostgreSQL 19 is made
generally available. For further information please see the
Beta Testing page.
The road is calling!
The South Dakota DLC for American Truck Simulatorย has arrived, bringing local industries, rolling prairies, stunning scenery, and some of Americaโs most recognisable landmarks to your journeys.
The South Dakota DLCย is now released and available on Steam!
Itโs been an exciting road since we first announced that South Dakota was in development, and today weโre excited to finally release it to you. So saddle up, warm up the engine, and get ready to roam the Mount Rushmore State! To help you get your bearings, here is a look at the full map of the DLC, showcasing the cities, towns, and road networks waiting for you.
We canโt wait to welcome you to the Mount Rushmore State! So what can you expect from this DLC?
Explore 13 faithfully recreated cities, including Sioux Falls, Rapid City, Pierre, and more!
Discover 21 scenic towns and settlements across the state, such as Hot Springs, Wall and Sturgis.
Travel across a road network representing around 680 miles of real-world roads, with connections to Montana, Wyoming, Nebraska, and Iowa.
See iconic South Dakota landmarks including Mount Rushmore, the Corn Palace, Sioux Falls, and the Dignity of Earth and Sky sculpture.
Deliver cargo to 10 custom depots and discover new industries, including trailer manufacturing, residential housing, and a landmark food production facility in Sioux Falls.
Explore stunning natural locations such as the Black Hills, Badlands, and the landscapes surrounding Reva.
Experience the variety of South Dakotaโs scenery, from dramatic rock formations and forested hills to wide-open plains and bustling cities.
Discover famous sights, local landmarks, scenic roads, and hidden details as you travel across the Mount Rushmore State!
From busy roads in Rapid City to the wide-open Great Plains, dramatic Badlands, and winding roads of the Black Hills, South Dakota offers plenty of variety for truckers to discover. Along the way, youโll encounter some of the stateโs most iconic sights, including Mount Rushmore and the waterfalls of Sioux Falls, while hauling cargo through the diverse landscapes of the Mount Rushmore State. We can't wait for you to start explorin'!ย Release Live Stream
Don't forget about our special Release Live Stream, which starts today at 3 pm CEST! Joining us will be some special guests, including the CEO of SCS Software, Pavel ล ebor, all of whom will be chatting with us about this exciting new addition while we drive through South Dakota.
Towards the end of the live stream, we'll officially release the South Dakota DLC together, with a live video feed from our office release party, so make sure to be there!
World of Trucks: Cruising South Dakota Event
With the release of our South Dakota DLC, we're excited to welcome you all back & invite you all to join us for our World of Trucks event - Cruising South Dakota! Roll through the Mount Rushmore State and take in its wide-open landscapes, natural beauty and rich history.
This event invites you to explore the new map, deliver cargoes to and from its many cities, and contribute to a community goal, which will you earn you special & unique in-game rewards.ย
Rewards
Personal Goal: Players who complete deliveries to or from all 13 South Dakota cities will earn a personal World of Trucks Achievement and a Call of the Badlands ATS truck paint job Steam inventory item.
Community Goal: When the community goal of driving 150,000,000 miles (241,402,000 km) during deliveries to or from any city in South Dakota is met, players who have also achieved their personal goal will receive a Ring-necked Pheasant Steam inventory item.
And thereโs an extra treat as well! Truckers who complete a job using External Contracts or the External Market TO or FROM Rapid City will be rewarded with the Quartz Triceratops hanging item for their cabin. Combining South Dakotaโs official state mineral, rose quartz, with its official state fossil, the Triceratops, itโs the perfect souvenir from your travels across the Mount Rushmore State!
We are eager for you to start trucking in the Mount Rushmore State. Remember to tag us in your photos and videos from this map expansion using the hashtag #CruisingSouthDakota on X, Facebook, Instagram, and Bluesky. If you'll enjoy your time in South Dakota, we'd really appreciate it if you left a review on its DLC Steam store page. We thank you for all your support, and until next time, happy haulin'!
[p]Increased the maximum countdown-after-elimination time from 7 seconds to 14 seconds on end rooms and Convoy.[/p][/*]
[p]The countdown-after-elimination time does not activate in cases where an entire team dies to suicides, team kills, and/or disconnects.[/p][/*]
[p]Warmup time once all players have connected, freeze time, and technical timeout time are all reduced.[/p][/*]
[p]Various gap fixes and clipping adjustments.[/p][/*]
[p][/p][p]\[ CROSSHAIR ][/p]
[p]Some additional information about the new crosshair system:[/p]
[p]The new crosshair thickness and length units are in pixels. In the past, the values were defined with an arbitrary scale and converted to pixels based on display resolution so the same value would result in different pixel counts at different resolutions. With the new settings, if you want a 1-pixel wide crosshair with a bar length of 8 pixels and a gap of 4 pixels, then you would set: thickness = 1, length = 8, and gap = 4.ย [/p][/*]
[p]Please be aware that the new crosshair system automatically rescales pixel counts when the display resolution changes. For example, if a crosshair was configured at display resolution 1280x720 with a thickness of 2 pixels and then the display resolution changes to 2560x1440, it will now automatically rescale the thickness to 4 pixels so that it remains proportionally the same as when it was configured.[/p][/*]
[/*]
[p]Added option to draw half-outlines. This will only draw the top-left portions of the outline for a crosshair.[/p][/*]
[p]Fixed a bug preventing 0 gap width from being respected.[/p][/*]
[p]Added a static square crosshair style[/p][/*]
[p]Reduced the minimum dynamic spread distance to 64 pixels. The new dynamic crosshair styles will show you the real weapon spread and inaccuracy and the 'Dynamic Spread Limit' setting is a limit on how far the crosshair will spread at maximum inaccuracy and spread. There is a baseline spread distance of 64 pixels which covers the weapons with the largest spread so that players can better understand how accurate they actually are with their equipped weapon.[/p][/*]
[p][/p][p]\[ MISC ][/p]
[p]Fixed a case where left-handed viewmodels would animate incorrectly while silent reloading.[/p][/*]
[p]Fixed a case where thirdperson player models would animate too fast while silent reloading.[/p][/*]
[p]Fixed a case where firstperson Dual Berettas would animate incorrectly while reloading.[/p][/*]
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 Linocut Mosaic
Pointilism Stained Glass Ordered Dither
Spherize Waves Halftone
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).
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.
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.
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.
ย 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 thelog.
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.
1.11.0 introduces Bulwark Lite, a static build of the webmail that runs without a Node server, and fixes many places where Bulwark and Stalwart disagreed about mail, filters, calendars, contacts and files. It contains everything from the three 1.11.0 betas. The latest Docker tag moves to this release.
Lite: Bulwark Lite, a static build that talks to the JMAP server straight from the browser. npm run build:lite builds it, and every release ships bulwark-lite-<version>.zip for any static web host
Lite: bulwark-lite-stalwart.zip, a Stalwart Application bundle that picks up its mount prefix at runtime, with OpenID Connect login
Mail: Toasts for mail actions that gave no feedback, and an "email sent" toast after immediate sends
Filters: "Keep a copy" option for forward actions
Filters: Per-rule "Also move messages marked as spam" option
Admin: Login page toggles in admin settings for the version, the 2FA code option, the heading and the subtitle (#1068)
Navigation: Deep links resolve to the local instance
Changes
Auth: Signing out of an SSO account also signs out of the identity provider when it advertises an end_session_endpoint (#905). Set OAUTH_END_SESSION=false to keep the provider session, for example when other apps share it, and OAUTH_POST_LOGOUT_REDIRECT_URI to send users back to the webmail afterwards
Filters: Move and copy rules leave mail that Stalwart marked as spam in Junk. Before, a rule such as "subject contains invoice" also collected phishing. "Keep" rules stay unguarded as the allow-list
Mail: Search sends terms exactly as typed, without adding a prefix wildcard, in tag views too
Mail: The message list loads attachment chips lazily, so large folders open faster (#1089)
Send: Scheduled send is limited to 7 days, the most Stalwart accepts
UI: Icon set migrated from Lucide to Tabler Icons
Docker: Pre-releases no longer move the latest tags
Docs: Most README details moved to the website docs, with new screenshots
Fixes
Mail: "All folders" search includes shared accounts (#1082)
Mail: A search inside a tag view narrows the tag instead of replacing it (#1084, thanks @rotterp)
Mail: Leaving an account drops a search folder scope that belongs to it (#1084, thanks @rotterp)
Mail: A failed search shows an error instead of "No results found"
Mail: In unified views, threads belong to the account that owns them (#1012, thanks @lucamzanon)
Mail: A failed move between accounts no longer deletes the original
Mail: "Mark all as read" marks every unread message instead of skipping pages past the first 500
Mail: Mark as spam and not spam report moves the server refuses
Mail: Unread-first order keeps bringing up unread mail past the first page
Mail: The tag button in a row's hover actions opens the tag picker instead of clearing the message's tags (#1032, thanks @douwezijlstra-frl)
Mail: Tag and tab counters no longer download every matching id
Mail: Text in fixed-width tables wraps to the screen on iOS (#1020)
Mail: Mail action toasts show again
Send: A send the server refuses is reported as failed instead of sent. When only filing the sent copy fails, a warning says so, so the mail is not sent twice
Send: A From override is also used as the envelope sender where the server accepts it. Where it doesn't, as on Stalwart, the composer says that the identity's address shows in the Return-Path (#1009)
Send: Sending with an identity adds its Bcc addresses
Composer: Attachments over the server's size limits are refused before upload
Composer: A staged attachment is kept until its upload finishes
Filters: Filters keep running while the auto-reply is on, and saving a filter no longer turns the auto-reply off
Filters: "Mark read", "star" and "add label" reach mail that the same rule moves, and rules keep their target folder after it is renamed
Filters: Forward actions respect the server's redirect limit (one on Stalwart) instead of being dropped without notice
Auto-reply: A warning appears before saving an auto-reply that Stalwart would refuse as too long
Calendar: Edits to a single occurrence stay on that occurrence and keep its details
Calendar: Date ranges are queried in the right time zone, and long recurring series or more than 1000 events no longer leave the calendar incomplete
Calendar: When the server refuses an event's invitations, you can save the event without sending them
Calendar: Subscriptions that fail with "Not authenticated" name the cause, such as a mail server certificate the webmail server does not trust (#1073)
Calendar: The subscription dialog no longer promises CalDAV URLs
Calendar: The import dropdown opens above the day and week views (#1049)
Contacts: Contacts with calendar, scheduling or free/busy links save, and cleared fields are cleared on the server
Contacts: vCard import no longer sends fields Stalwart rejects and writes addresses in the RFC 9553 form
Contacts: Deleting an address book that still holds contacts works
Files: Every file is listed, even when the account has more than maxObjectsInGet (#1069)
Files: Copying a folder copies its contents, and changes inside a shared drive go to the drive's account
Files: An upload or new folder whose name is taken becomes "name (2)" instead of failing
Files: Sharing works on Stalwart versions before 0.16.6
Files: Names Stalwart refuses are caught before sending, uploads store an accepted variant, and Office files keep their MIME type on Stalwart 0.16.6 and later
Account: You stay signed in after changing your password in settings
Account: Users who are not admins see their name, and changing the password or turning TOTP off asks for the current code
Auth: OAuth endpoints on the configured issuer's own host are accepted when they resolve to a private address, so split-DNS setups no longer need OAUTH_ALLOW_PRIVATE_ENDPOINTS (#1028)
Auth: Linking the mobile app re-authenticates against the account's own identity provider when OAuth is configured per server
Push: Push subscriptions are renewed before Stalwart's 7-day expiry, so a tab or app left open for over a week keeps getting notifications
Sharing: Principals are listed in directories with more than 500 users
Lite: The login page hides the server field once config.json sets jmapServerUrl (#1087)
Plugins: The plugin sandbox follows the app's "Automatic" language (#976, thanks @bartfaizoli76)