❌

Normale weergave

OBS Studio 33.0.0 Release Candidate 2

17 Oktober 2026 om 01:31

Release Candidate 2 Changes

  • Fixed a crash in the browser migration code on Windows when the plugin path contained unicode characters [Warchamp7] (#552)
  • Fixed incorrect paths in the virtual camera install scripts [Fenrir] (#14028)
  • Hid the warning icon in the plugin manager for Legacy plugins [Warchamp7] (#14030)
  • Fixed leftover Replay Buffer hotkey code that was causing errors when switching profiles [prgmitchell] (#14014)
  • Fixed an issue where the browser local file handler could be invoked from a remote page served over an insecure context [Warchamp7] (#552)
  • Developer Info: Fixed an issue where building libobs with core modules disabled would fail [PatTheMav] (#14035)

Release Candidate 1 Changes

  • Fixed audio monitoring on browser sources briefly being enabled every time in Beta 1-6 [prgmitchell] (#14003)
  • Fixed browser sources appearing blank on refresh in Beta 1-6 [WizardCM] (#14003)
  • Fixed local network requests failing in browser sources in Beta 1-6 [WizardCM] (#14009)
  • Fixed Plugin Manager showing third-party plugins as missing when OBS is launched in Safe Mode in Beta 1-6 [Warchamp7] (#14001)
  • Fixed Plugin Manager removal button sometimes not removing missing plugins from the Plugin Manager in Beta 1-6 [Warchamp7] (#14008)
  • Fixed the Missing Encoders popup not showing in taskbar [Warchamp7] (#14010)
  • Fixed profile import failing on paths with a trailing slash [Ushkalovk] (#13863)
  • Developer Info: Added obs_canvas_video_active() to check if the video of a canvas is active [exeldro] (#13110)
  • Developer Info: Changed obs_canvas_reset_video() to allow resetting a canvas's video when any other canvas's video is active, but not its own video [exeldro] (#13110)

Beta 6 Changes

  • Fixed a crash during certain actions involving groups in Beta 1-5 [prgmitchell] (#13978)
  • Fixed scripting not working on macOS in Beta 1-5 [PatTheMav] (#13976)
  • Fixed game capture hooks not updating in Beta 1-5 [Warchamp7] (#13968)
  • Fixed clock Lua script not working in Beta 1-5 [RytoEX] (#13974)
  • Changed Safe Mode to not start WebSocket Server [FiniteSingularity/RytoEX] (#13984)
  • Removed support for FFmpeg 6.x and 7.x [RytoEX] (#13964)
  • Removed support for Qt 6.4-6.9 [RytoEX] (#13969)

Beta 5 Changes

  • Fixed duplicate "Save Replay" hotkey entries when switching profiles in Beta 1-4 [xtfo] (#13943)
  • Fixed warning dialogs on macOS not rendering rich text in Beta 1-4 [Warchamp7] (#13949)
  • Fixed source icon state appearing inverted in Beta 1-4 [Warchamp7] (#13953)
  • Fixed audio monitoring settings not saving in Beta 1-4 [Warchamp7] (#13951)
  • Fixed missing encoder check showing missing encoders in an output mode that is not currently selected in Beta 1-4 [Warchamp7] (#13950)
  • Fixed Windows updater not updating game capture and virtual camera in some cases in Beta 1-4 [Warchamp7] (#13939)

Beta 4 Changes

  • 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
    • 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)
  • Added obs_canvas_video_active() to check if the video of a canvas is active [exeldro] (#13110)
  • The minimum supported versions of Visual Studio, Windows SDK, and clang-format have been increased. Previous versions may continue to work, but will no longer be tested/supported. It is recommended that build environments are kept up-to-date with the project's toolchain.
    • Changed Windows builds to use Visual Studio 2026 and SDK 26100 [RytoEX] (#13543)
    • Changed clang-format version used to 22.1.3 [PatTheMav] (#13549)
  • Changed obs_canvas_reset_video() to allow resetting a canvas's video when any other canvas's video is active, but not its own video [exeldro] (#13110)
  • 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)
  • Removed support for FFmpeg 6.x and 7.x [RytoEX] (#13964)
  • Removed support for Qt 6.4-6.9 [RytoEX] (#13969)
  • 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

Checksums

OBS-Studio-33.0.0-rc2-Sources.tar.gz: eb0e7a3e7de80c8287e8f79f17e9668b1b442166ec83e98be3189de0658e734e
OBS-Studio-33.0.0-rc2-Ubuntu-26.04-x86_64-dbsym.ddeb: d841e42f585fd0342cc6fe43c61b81da1b99a32022a3f7ebc43b33ac370b0cd5
OBS-Studio-33.0.0-rc2-Ubuntu-26.04-x86_64.deb: 192cedf133fdff0aab69b25fc1352a2b70bbfbcd3c8bfe402299cdd2b3d54c5c
OBS-Studio-33.0.0-rc2-Windows-arm64-PDBs.zip: 01e7c384fdfca68da782dfe7ef6b0ebea23b478bade23b43a45f970960ea9ea3
OBS-Studio-33.0.0-rc2-Windows-arm64.zip: af0260b5a54bfe76c227735eab30f37e7d71951320188f618ad15bc9327e2a2a
OBS-Studio-33.0.0-rc2-Windows-x64-Installer.exe: b69aa721a77c22768fa13a2a44b0e878fc8a908ecc9d6e643fe8581dd745b008
OBS-Studio-33.0.0-rc2-Windows-x64-PDBs.zip: 31b1bea2b3ecfa124e87ec77be25564a214bfcfafcd23ced6d1ddcad74f09fdc
OBS-Studio-33.0.0-rc2-Windows-x64.zip: 33d5fab2e23ffbcd0e32a4a33ee11c26ebe7b99276a2e550445b27feb75a4127
OBS-Studio-33.0.0-rc2-macOS-Apple-dSYMs.tar.xz: d65ef9b09b253ae36dd376e4380143725e0cc31d8c63c18274425bf2765fe2c1
OBS-Studio-33.0.0-rc2-macOS-Apple.dmg: ba72fcdd79dcb1f15dbc20cd22d8e540c92fc7a4a0cee048d0e1db74145d393e
OBS-Studio-33.0.0-rc2-macOS-Intel-dSYMs.tar.xz: 86c61cefe7d95a1094ae365f64e30489608b8de9d82c7104aaa44196de973509
OBS-Studio-33.0.0-rc2-macOS-Intel.dmg: 36865933190a18cd67f6dd83946dba32e06956b2499695674408e24ef9a87523

  •  

v0.8.14

15 Oktober 2026 om 11:26

What's Changed

  • fix(gui): prefer the Buttons panel over Keys when kind resolution is wrong by @4ni1ak in #1702
  • docs(readme): add Spanish translation by @eibidia in #1314
  • fix(gui): let the theme card name shrink so the badge fits by @4ni1ak in #1435
  • fix(hook): carry the mouse's vendor/product ID onto its uinput mirror by @4ni1ak in #1453
  • fix(cli): let macOS prompt for Input Monitoring before diag opens a device by @4ni1ak in #1256
  • fix(gui): draw the client-side titlebar only where the compositor declines one by @4ni1ak in #945
  • fix(inject): distinguish Linux Capture Region from Screenshot by @4ni1ak in #1433
  • fix(hook): preserve low-res wheel events during Linux pass-through by @nathan-fontenele in #1693
  • fix(i18n): use Spain's Spanish terms in the es catalog by @eibidia in #1326
  • docs(i18n): add Portuguese README translation by @obrenoalvim in #1371
  • fix(windows): enable HID++ side-button gestures by @c1m-Chenym in #1635
  • fix(agent): emit scroll input queued across a smoothing toggle instead of dropping it by @isleofgreg in #1721
  • fix(agent): honor an overflow cancel from a generation the scroll worker has not seen by @isleofgreg in #1720
  • feat(device): Detect Logitech G735 headset dongle by @xvilo in #1040
  • fix(i18n): translate the custom-action input error in Czech by @Imbecile6197 in #1728
  • fix(overlay): set the macOS activation policy before gpui_platform starts by @4ni1ak in #1692
  • fix(hid): capture alternate gesture controls by @4dux in #1561
  • feat(camera): expose pan, tilt, gain and backlight compensation by @yuzi-co in #1020
  • feat(gui): add precise camera control entry by @vinayaksodar in #1047
  • fix(device): omit raw-xy flags when diverting or restoring keyboard controls by @henius98 in #1726
  • fix(inject): send hi-res wheel events for Linux scroll actions (by @RisenID) by @Fede2782 in #1719
  • fix(assets): resolve variants for depots whose manifests key on depot name or stem by @felipecadal in #1295
  • fix(gui): render camera depots that ship no hotspot metadata by @MattijsE in #1265
  • fix(inject): give App Expose/Mission Control/Show Desktop/Launchpad a GNOME implementation by @4ni1ak in #1446
  • fix(gui): open the config folder from the fail-closed config screen by @yuzi-co in #942
  • fix(gui): give MenuRow-based list rows an accessible name by @4ni1ak in #1448
  • fix(camera): collapse a Brio's IR node into one Linux camera entry by @4ni1ak in #1234
  • docs: add Turkish README translation by @4ni1ak in #1734
  • feat(hook): reverse the wheel in software for devices without 0x2121 by @4ni1ak in #847
  • feat(gui): add custom-shortcut Tap/Hold recorder to the button picker by @fahadjibransheikh in #1396
  • fix(agent): reapply volatile settings on device reconnection and retry disagreeing DPI writes by @isleofgreg in #1270
  • fix(overlay): properly position and scale Actions Ring on Windows mixed-DPI displays by @c1m-Chenym in #1745
  • fix(camera): pass the pan/tilt payload by value by @SMRehan in #1740
  • feat(core): add an action that holds modifiers and taps the key once by @Rick0525 in #1161
  • feat(gui): update macOS through Sparkle by @AprilNEA in #1744
  • docs(ipc): move PROTOCOL_VERSION once per release by @AprilNEA in #1760
  • fix(hidpp): write 0x1990 non-linear level tables whole by @AprilNEA in #1765
  • fix(hidpp): read the 0x4530 platform with function 0 by @AprilNEA in #1766
  • fix(hidpp): write each 0x0007 name chunk at its own offset by @AprilNEA in #1767
  • fix(hidpp): preserve device state OpenLogi does not own on writes by @AprilNEA in #1753
  • fix(device): encode 0x8080 tail frames and 0x8070 fixed colour per device by @AprilNEA in #1758
  • fix(device): write SmartShift torque and DPI only as the device advertises by @AprilNEA in #1759
  • fix(device): give the Litra Beam its own brightness range by @AprilNEA in #1763
  • fix(device): stop misreading 0x1000 and 0x1001 battery states by @AprilNEA in #1768
  • fix(device): stop committing 0x8080 frames the keyboard rejected by @AprilNEA in #1764
  • fix(device): own RGB software control for the agent session by @AprilNEA in #1769
  • fix(hidpp): require the 0x8081 zone echo before reporting a write by @AprilNEA in #1771
  • fix(hidpp): refuse short 0x1990 info and level replies by @AprilNEA in #1772
  • fix(device): confirm the haptic repair from the device's reply by @AprilNEA in #1773
  • fix(device): confirm SmartShift writes from the device's reply by @AprilNEA in #1775
  • fix(agent-core): close the RGB release races left by #1769 by @AprilNEA in #1770
  • fix(hidpp): require the sensor echo in DPI replies by @AprilNEA in #1776
  • fix(device): end a thumb-wheel roll whose Stop never arrives by @AprilNEA in #1777
  • docs(hidpp): say that a None remap keeps the current mapping by @AprilNEA in #1778
  • fix(hidpp): hold 0x8060 and 0x8061 rates to what the features define by @AprilNEA in #1779
  • fix(hidpp): decode every 0x2121 capability flag and the horizontal delta by @AprilNEA in #1780
  • fix(hidpp): decode 0x1c00 empty actions and status, and 0x4531 OS bits by @AprilNEA in #1781
  • fix(hidpp): keep 0x0003 firmware entity types without a name by @AprilNEA in #1783
  • fix(hidpp): refuse a short 0x40A3 reply instead of zero-filling it by @AprilNEA in #1782
  • fix(hidpp): treat a Bolt protocol byte in 0x41 as an encrypted link by @AprilNEA in #1784
  • fix(device): reconcile inventory on 0x1000/0x1001 battery broadcasts by @AprilNEA in #1787
  • fix(device): wait for the Unifying lock to open before searching by @AprilNEA in #1785
  • fix(device): report no percentage for a 0x1004 battery without a gauge by @AprilNEA in #1788
  • fix(hidpp): check the echoed index in 0x8070/0x8071 info and 0x0007 name reads by @AprilNEA in #1789
  • fix(hidpp): read a non-BCD 0x0003 firmware version as binary by @AprilNEA in #1790
  • fix(device): re-read settings the device changes itself by @AprilNEA in #1791
  • fix(device): drive Fn-lock on keyboards that only have 0x40a0 by @AprilNEA in #1792
  • fix(device): play only the haptic waveforms the device advertises by @AprilNEA in #1796
  • feat(camera): name webcams that report no USB product string by @DonovanMontoya in #1793
  • chore(deps): bump rustls to 0.23.46 by @AprilNEA in #1805
  • feat(device): keep multi-platform keyboards on the host OS layout by @AprilNEA in #1806
  • feat(device): adjust the report rate of mice with 0x8060 or 0x8061 by @AprilNEA in #1808
  • feat(device): set keyboard backlight automatic brightness, level and battery saving by @AprilNEA in #1811
  • feat(desktop): control the keyboard backlight from the Device tab by @AprilNEA in #1812
  • fix(device): refuse haptic plays while 0x19b0 reports a non-zero status by @AprilNEA in #1817
  • fix(linux): settle the uinput action device before its first emit by @4ni1ak in #1810
  • fix(device): don't let a stuck Empty host-slot status refuse a real pairing by @4ni1ak in #1813
  • fix(agent): divert a keyboard key explicitly bound to Action::None by @4ni1ak in #1819
  • fix(device): discard the stale first raw-XY report of every gesture hold by @DonovanMontoya in #1786
  • fix(scroll): post phaseless continuous scroll events on macOS by @isleofgreg in #1157
  • fix(gui): gate debug diagnostics imports in release builds by @gitsacha in #1815
  • fix(agent): anchor the recovery-scan timer to scan start, not scan end by @4ni1ak in #1809
  • fix(agent): queue HID requests before response timeout by @sh3ll3x3c in #936
  • fix(linux): open the Actions Ring at the cursor on Wayland by @AalmanSadath in #1004
  • fix(agent): hand off capture across receiver routes by @justinechang39 in #1198
  • Horizontal Scroll Reversed #1120 by @romanr in #1140
  • feat(device): read Easy-Switch host names and OS, and rename hosts (0x1815) by @AprilNEA in #1824
  • fix(overlay): configure accessory policy after GPUI initialization by @gitsacha in #1814
  • fix(hook): keep software scroll inversion applied when the agent intercepts the wheel by @4ni1ak in #1749
  • feat(desktop): show Easy-Switch hosts on the Device tab and rename them by @AprilNEA in #1825
  • fix(hook): keep the pixel delta when inverting a macOS wheel event by @AprilNEA in #1827
  • chore: release v0.8.14 by @AprilNEA[bot] in #1718

New Contributors

Full Changelog: v0.8.13...v0.8.14

  •  

Bitfocus Companion v5.1.0

11 Oktober 2026 om 20:49

πŸ“¦ Downloads available at

πŸ’΅ Donate to the project at

Companion v5.1.0 - Release Notes

πŸ“£ CORE FEATURES AND IMPROVEMENTS

  • Graphics improvements

    • pinned properties for quicker access to commonly used properties in the style editor #4324 (#4442)
    • wysiwyg toolbar for basic edits to a button's style (#4341)
    • better custom preview aspect ratios (#4450)
    • surface gauge leds (#4314)
    • show expression value previews for elements and style overrides
    • add fill width setting and alpha support for fill colors #4359
    • allow value feedbacks as layered-button style overrides (#4379)
    • make button preview aspect entry more robust and more flexible
    • text style properties (#4337)
    • smooth text autosizing
    • support corner radius for box elements #4359
    • allow rotating composite elements
  • Misc UX

    • rework button grid interactions (#4434)
    • support alt+click on CollapsibleTree nodes to expand all at that level
    • make split panel layouts resizable #2781
    • Show local variable value when collapsed (#4386)
    • configurable default export format #4349
    • make module deprecation more visible to users (#4495)
  • APIs

    • Prototype of new full system REST API (#4259)
    • REST API to list surfaces and set brightness (#4405)
    • REST API token management (#4453)
  • Expressions

    • new maths functions (#4388)
    • expression oscillator function (#4328)
  • Variables

    • Local Variables on pages (#4332)
    • expose $(this:delta) for rotary actions and carry rotation amount (#4387)
  • Controls

    • reference/mirror control type (#4339)
    • linked presets (#4284)
  • Misc

    • lazily evaluate internal feedbacks that are children of an action (#4378)
    • Add milliseconds to log entries #2891
    • add COMPANION_INSTALL_NAME env var to set the installation name
    • prometheus metrics for monitoring (#4304)
    • streaming json parsing/generation (#4390)
    • report collection-disabled connections as disabled, add connection collection status variables #4479
    • add 'Surface: When connected' feedback #4124
    • randomInt() is not re-evaluated in Trigger conditions #3297
    • Add duration to press and release internal action #3389
    • add $(internal:date_monthname) variable #3819

🐞 BUG FIXES

  • module versions refresh button not indicating progress
  • keep unicode glyphs together when breaking a line #3671
  • rework line breaking to work as is was long ago (#4372)
  • font size scaling not always consider whether topbar is visible
  • keep preset definition ids stable across re-conversion
  • surface page-change defer condition and rescanUsb error reporting
  • propagate image import errors #4438
  • better report import progress to the ui
  • sort to the connection selection dropdown (#4402)
  • backup file renaming failing #4394
  • try to ensure module are shutdown cleanly when companion exits
  • adjust line draw bounds to not hide the line #4359
  • measure font ascent/descent for better positioning #4359
  • avoid excessive button-drawn events upon a cache hit
  • colors when downscaling oversampled images
  • dropdown freezing when selecting from a large list #4494
  • expose pressed state to surfaces
  • don't recreate desktop shortcut when updating
  • static-text fields should not show expression toggles
  • draw a placeholder for missing or cyclic composite elements
  • update bonjour lib to limit query answer rate #4499
  • logging stopping entirely after a non-string message is logged #4509

Full Changelog: v5.0.7...v5.1.0

  •  

v0.16.26

11 Oktober 2026 om 19:33

[0.16.26] - 2026-10-11

If you are upgrading from v0.16.x, replace the binary (or run docker pull). If you are upgrading from v0.15.x and below, please read the upgrading documentation for more information on how to upgrade from previous versions.

Added

  • sd_notify support.
  • JMAP: Mailbox/set allows moving a mailbox under a parent that already has a child with the same name, and rejects renames that only change the case of a mailbox name with alreadyExists.

Changed

Fixed

  • DNSSEC: Use hickory-resolver patched fork at https://github.com/stalwartlabs/hickory-dns.
  • RocksDB: Blob garbage collection rewrites every stored blob on each compaction of the blobs column family, about once per 128MB of new mail.
  • Milter: End-of-headers is not sent to milters that negotiate SMFIP_NOHDRS without SMFIP_NOEOH, so the transaction stalls until it times out.
  • OIDC: When the access token lacks the claimUsername claim but has an email claim, the account is built from email without consulting the userinfo endpoint.
  • JMAP:
    • onSuccessUpdateEmail and onSuccessDestroyEmail entries in EmailSubmission/set that name an existing submission by id update or destroy the Email with the same id instead of the submission's own Email.
    • A VacationResponse/set that only sets isEnabled on an account without a vacation response activates an empty Sieve script.

Check binary attestation here

  •  

v0.21.2

11 Oktober 2026 om 14:16

Highlights

  • Fix Windows sidebar and tab path handling, and add Copy Path to the sidebar context menu.
  • Preserve literal $< in HTML export and align rectangular task-list markers with text.
  • Repair macOS arm64 ad-hoc signing after changing Electron fuses.
  • Preserve both x64 and arm64 installers in Windows and macOS automatic-update manifests.
  • Upgrade workspace dependencies and CI tooling.

⚠️ Note for macOS users

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

xattr -d com.apple.quarantine /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

  • Release tracking: v0.20.0 by @Jocs in #4664
  • docs: fix broken relative links in translated READMEs by @xThreeh in #5616
  • feat(desktop): move sidebar selection to trash with Delete key by @Jocs in #5609
  • Update Japanese localization strings for consistency by @coolvitto in #5630
  • fix(desktop): remove applied custom CSS when the preference is cleared by @woahwhattheheck in #5633
  • fix(muya): restore inline HTML tag marker style and hide bare
    markers by @Jocs in #5636
  • feat(desktop): rename sidebar selection with F2 / Enter (#1618) by @Jocs in #5638
  • feat(muya): preserve caret column on cross-block arrow navigation (#3412) by @Jocs in #5644
  • fix: #3203 make the trailing soft-break line navigable with the arrow keys by @Jocs in #5645
  • fix: #3207 #3385 commit sidebar rename/create when clicking away by @Jocs in #5646
  • feat: support ==highlight== markdown syntax (#2552) by @Jocs in #5647
  • feat: render inline markdown in the TOC (#3110) by @Jocs in #5648
  • feat: support GitLab inline diff and multiline blockquote (#954) by @Jocs in #5649
  • fix(desktop): let the --debug flag reach MarkText in packaged builds by @xThreeh in #5643
  • fix(muya): highlight regexp newline search matches (#3261) by @Jocs in #5650
  • fix(muya): keep the search highlight across a full re-render (#5651) by @Jocs in #5652
  • fix(desktop): persist sidebar folder collapse state across view switches (#5631) by @VictorVow in #5632
  • feat(desktop): reveal the active file in the sidebar file tree (#528) by @Jocs in #5654
  • fix(desktop): keep Latin-1 and Shift-JIS files byte-exact on save (#5577) by @ycyc0421 in #5567
  • chore(ci): remove Claude Code workflow by @Jocs in #5655
  • docs: remove StarDesk sponsor from README and website by @Jocs in #5656
  • Follow-up to #5379: move Pandoc conversion out of Export, gate it behind a preference, and report which binary was found by @dimbc in #5513
  • fix: #5239 let Ctrl+Backspace delete a word at the end of a line by @johannesroth-coreproduction in #5657
  • fix(muya): correct the caret after a native word/line delete, and defer in code blocks (#5239) by @Jocs in #5658
  • feat(muya): text & background colour in the inline format toolbar by @Jocs in #5661
  • Release tracking: v0.21.0 by @Jocs in #5663
  • chore: bump develop to 0.22.0-dev by @Jocs in #5662
  • fix(desktop): wait for the typed find query before Escape in e2e by @Jocs in #5665
  • fix(build): re-sign macOS arm64 builds after flipping the nodeCliInspect fuse by @Jocs in #5664
  • docs: fix broken links in the muya and website package READMEs by @xThreeh in #5668
  • chore(ci): move the workflows to the Node 24 action runtime by @Jocs in #5670
  • chore: remove the retired packages/muyajs engine by @Jocs in #5675
  • test: run the desktop unit tests on Node 25 by @Zane-0x5a in #5666
  • chore(deps): drop dependencies the desktop app no longer uses by @Jocs in #5681
  • chore(deps): bump the postcss override to 8.5.29 by @Jocs in #5674
  • chore(deps): upgrade the workspace dependencies to their latest releases by @Jocs in #5687
  • fix(desktop): compare sidebar and tab paths across separator styles (#5683) by @Jocs in #5689
  • feat(desktop): add Copy Path to the sidebar tree context menu by @witseko in #5692
  • fix(website): restore Cloudflare Worker after the Next.js upgrade by @Jocs in #5698
  • feat(website): load release and community stats dynamically from GitHub by @Jocs in #5699
  • fix: align rectangular task markers with text by @Jocs in #5700
  • fix(desktop): give the renderer a platform-native path bridge (#5683, #5669) by @Jocs in #5691
  • fix: preserve literal $< in HTML export by @Polyacetone in #5701

New Contributors

Full Changelog: v0.20.0...v0.21.2

  •  

v0.5.6 - β€œWe want... a shrubbery!”

10 Oktober 2026 om 14:32

0.5.6 (2026-10-10)

  • Feature: [#16014] Land surfaces and edges can now be recoloured.
  • Feature: [#26894] Added 18 additional colours, including 5 from the base version of RCT1 (which were removed in later versions).
  • Feature: [#27153] [Plugin] Add guestsEntertained to Entertainer interface.
  • Feature: [#27184] [Plugin] Double limit of miscellaneous entities (e.g. crash particles, steam plumes and balloons) to 6400.
  • Feature: [#27254] New title sequence (see https://github.com/OpenRCT2/title-sequences/releases/tag/v0.5.6 for credits).
  • Feature: [objects#447] Track designer grid can now be used outside the Track Designer.
  • Improved: [#21400] The selector for setting staff patrol areas is now drawn on the water as well as on the surface under water.
  • Improved: [#22933] You can now toggle between long and short base flat-to-steep pieces if the ride has both available.
  • Improved: [#26947] Rain is now drawn next to the bottom info panels (in RCT2 style).
  • Improved: [#27097] On Linux, Flatpak Steam RCTC/RCT2 paths are now auto-detected.
  • Improved: [#27110] The option to automatically open shops after construction now also closes them before construction.
  • Change: [#27071] The gamepad deadzone has been raised from 11% to 25% by default to compensate for stick drift.
  • Change: [#27100] Negative G-forces no longer turn red in the stats window and graph when below -2.50.
  • Fix: [#1514] Wrong capitalisation for strings in the Guest List window.
  • Fix: [#12516] Sprites past 65,536 pixels are drawn in the wrong place by the software renderer, most visibly in long scenario lists.
  • Fix: [#15423] Crash when a guest or handyman uses a bin whose path addition object is not loaded.
  • Fix: [#17409] When reading system settings, non-US dollar currencies are not recognised correctly.
  • Fix: [#18151] Park value and company value are out of date after loading a save.
  • Fix: [#19754, #27109] Some rides in RCT1 saves have a wrong number of cars per train.
  • Fix: [#19755, #21320] RCT1 allows more cars per train on some rides than OpenRCT2.
  • Fix: [#20882] When setting rides with preservation status in the Scenario Editor, some rides are not shown.
  • Fix: [#21576] RCT1 Wooden wild mouse track designs with 2-car trains are not imported correctly.
  • Fix: [#22298] [Plugin] Crash when changing a large scenery element whose object is not loaded.
  • Fix: [#24457] Yellow is always rendered as third remap in Ride window.
  • Fix: [#25400] The Inverted Flying RollerCoaster draws upright Twister track pieces for pieces it doesn’t have.
  • Fix: [#26222] β€˜Follow this on Main View’ follows the invisible first car on ride types that have one, making the view turn too early.
  • Fix: [#26754] Switching window tabs by touch could crash the game on some Linux builds.
  • Fix: [#26998] Crash when generating a Simplex Height Map with a higher width than height.
  • Fix: [#27052] Unnamed rides in RCT2 base and Wacky Worlds scenarios have hardcoded English names.
  • Fix: [#27056] [Plugin] Loading water palettes from plugin does not update the palette correctly.
  • Fix: [#27070] The game keeps responding to input while the window is not focused (primarily gamepads).
  • Fix: [#27084] [Plugin] PermissionType for drag_path_area is missing.
  • Fix: [#27087] The β€˜Update available’ widget is offset incorrectly.
  • Fix: [#27093] Pause and fast forward buttons are shown in multiplayer.
  • Fix: [#27113] Chat button is shown in editor mode.
  • Fix: [#27133] [Plugin] Dropdown and spinner are not fully hidden with isVisible on creation.
  • Fix: [#27134] Viewing track designs may cause network desyncs.
  • Fix: [#27136] Guests keep waiting at a level crossing after the train has passed, due to faulty iteration over the track the train has vacated.
  • Fix: [#27212] Chain lifts are blue in screenshots taken from the command line.
  • Fix: [#27218] Tile inspector coordinate spinners are too short for coordinate 1000.
  • Fix: [#27233] openrct2 parkinfo objects crashes when called with a scenario instead of save.
  • Fix: [#27234] [Plugin] Setting TrackElement.seatRotation fails on every ride except mazes, where it does not apply.

Release created in https://github.com/OpenRCT2/OpenRCT2/actions/runs/38050382779

SHA256 checksums:

eaa68d775d108b86128971eed9a16f2a8a06a0e12c8613b0c8378db1f015dca7  ./OpenRCT2-v0.5.6-windows-symbols-x64.zip
597a85c2d6bfd0f462d9bfbcc3c0d27d0f437b81e56f52dab64409b474b25e4d  ./OpenRCT2-v0.5.6-sha256sums.txt
5f57e48dbe438fd6fd5059954afe521a01365a36c11085b190067ea3204b6565  ./OpenRCT2-v0.5.6-macos-universal.zip
8909f8e87ccb8fd08840952101028a6d879b159d78a7c168148bf2c9ac0e2795  ./OpenRCT2-v0.5.6-windows-portable-win32.zip
8198b5ef8b9b07685fc860f3f04ce88a5f07ce6c1e5a9e2badffa811ed0f2eba  ./OpenRCT2-v0.5.6-linux-x86_64.AppImage
10fb9aa612bb18d629cd27fc707a89714a481c96b023bbfa89e4c4aad334094c  ./OpenRCT2-v0.5.6-windows-installer-win32.exe
cd52a20793a854ddd4c42275ad7ebd7776e5bac931d802638f95a654b66df989  ./OpenRCT2-v0.5.6-Linux-resolute-x86_64.tar.gz
49705d0c3f89fd729254edeece0e43c620396ee0ddbfd50eb59a4ae4ea6df5db  ./OpenRCT2-v0.5.6-android.apk
2220407872ed9aba2c7c67dbf46bb321bb7b88b4b526123d8f075938cc4c6c02  ./OpenRCT2-v0.5.6-Linux-noble-x86_64.tar.gz
0e128e3c0293ce18f3244989dfe6e04b21fc3f85e02d904eb531fb404f1b90d9  ./OpenRCT2-v0.5.6-windows-portable-arm64.zip
180fa9e562289af6ee25c738d04d8c872d0a91b9cef2d7d8e949d75aec6c6f58  ./OpenRCT2-v0.5.6-windows-symbols-win32.zip
d439ad72b5206f8ad5b75f7419c13a2dd93743f6636bd37987cc1292375e6e42  ./OpenRCT2-v0.5.6-Linux-bookworm-x86_64.tar.gz
d26c44b12fbb54dd0a436568c328230cd9d80d84e4e8ebe534e842e7470b0147  ./OpenRCT2-v0.5.6-windows-symbols-arm64.zip
af2f9c76c4b56441eb6c4cda3cd009865df56b147497e86d410668ccf5d48da6  ./OpenRCT2-v0.5.6-Linux-trixie-x86_64.tar.gz
64d88e94c4b926e77ec9738255050f8003583a8a13947dec8bc36e26020cca88  ./OpenRCT2-v0.5.6-windows-installer-arm64.exe
b7c56919f82e0d8edde5437fa0e344b9e2b47a17e94a5b79739c17f308f22f3e  ./OpenRCT2-v0.5.6-windows-installer-x64.exe
6c07393312a828f845c71c9c18cefe2da5b759fe2b17ee02fbb9e4540b396280  ./OpenRCT2-v0.5.6-windows-portable-x64.zip

  •  

v0.8.13

9 Oktober 2026 om 19:49

What's Changed

  • fix(linux): add a Spanish comment to the desktop entry by @eibidia in #1468
  • fix(agent): let a thumb-wheel swipe fire Volume Up/Down more than once by @4ni1ak in #1455
  • feat(hid): recognise Powerplay receiver 046d:c53a by @FelipeIzui in #1267
  • feat(hid): add G733 battery and power-state support by @d-tatianin in #1601
  • fix(i18n): improve Turkish catalog wording by @volkanncicek in #1415
  • docs(core): clarify persisted device identifier scope by @yuzi-co in #670
  • fix(macos): respect the selected Apple developer directory by @4ni1ak in #1457
  • fix(gui): restore the config-error folder action by @4ni1ak in #1458
  • fix(core): resolve connection transport from live routes by @4ni1ak in #1367
  • feat(gui): add custom actions to the mouse picker by @4ni1ak in #1452
  • fix(gui): show friendly names for Windows app profiles by @4ni1ak in #1463
  • feat(hidpp): implement pointer motion scaling by @Chernicharo in #1347
  • fix(inject): restore macos 27 space swipes by @4ni1ak in #1703
  • fix(hook): identify unbundled macos applications by @4ni1ak in #1469
  • chore: release v0.8.13 by @AprilNEA[bot] in #1716

New Contributors

Full Changelog: v0.8.12...v0.8.13

  •  

v0.8.12

9 Oktober 2026 om 16:13

What's Changed

  • test(agent): cover a BLE mouse that wakes as a new node by @kohjunhao in #1649
  • fix(gui): seed the DPI editor from config while the live read is pending by @4ni1ak in #1628
  • fix(hid): recognize Lightspeed receiver 046d:c541 by @hamfield-eu in #1679
  • fix(gui): truncate the function-row key callout's name instead of overflowing by @4ni1ak in #1691
  • fix(gui): wrap the device-enabled caption so the switch stays in the card by @Imbecile6197 in #1670
  • feat(fixture): add an MX Ergo Unifying fixture by @Chernicharo in #1374
  • fix(gui): set text color on mouse pairing passkey click icons by @ZOZiBoi in #1640
  • fix(hidpp): tell another protocol's reports apart from malformed HID++ by @Chernicharo in #1373
  • fix(macos): log the candidate displays when Space state has no match by @4ni1ak in #1694
  • fix(agent): phase horizontal thumb-wheel scroll when smoothing is off by @nredd in #1689
  • feat(i18n): add Czech locale by @Imbecile6197 in #1669
  • fix(core): write config through symlinks instead of replacing them by @FunJim in #1642
  • fix(hook): keep the short budget for tap teardown after a probe break by @TheMedpreneur in #1600
  • fix(i18n): name the real update-check host in the consent dialog by @4ni1ak in #1629
  • fix(agent): restore ring toggle and publish expired sessions by @isleofgreg in #1665
  • fix(gui): scale configuration labels with interface text by @4ni1ak in #1627
  • fix(agent): fall back to focus when the pointer target is unidentified by @kohjunhao in #1648
  • fix(gui): anchor scrollbar overlays in action ring editor and app picker by @lynicis in #1360
  • fix(i18n): track the locale catalogs as build inputs by @zmingxie in #1327
  • fix(gui): wrap the About page's link row instead of clipping it by @crnst8 in #885
  • fix(cli): replace the stale receiver note with a Linux udev hint by @Chernicharo in #1348
  • fix(gui): show wheel controls without adjustable dpi by @minatoaquaMK2 in #1369
  • fix(gui): recognize MX Ergo's DPI slot name for the mouse diagram by @armandodollia in #1391
  • fix(macos): write the scroll point delta last so pixel precision survives by @isleofgreg in #1156
  • chore: release v0.8.12 by @AprilNEA[bot] in #1646

New Contributors

Full Changelog: v0.8.11...v0.8.12

  •  

Release 2026.10.09

9 Oktober 2026 om 10:08

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.10.09

GitHub Container Registry:

  • ghcr.io/alexta69/metube:latest
  • ghcr.io/alexta69/metube:2026.10.09

Changes

  • feat: ask before Clear failed removes the failed rows (closes #1094) (2f9c10f)
  • fix: say why MeTube's own UI is refused behind a Host-rewriting proxy (46a9572)
  • feat: define the download options once, in a catalog the UI and API share (closes #1093) (69a5ef0)
  • fix: ship ffmpeg 8.1 so clip downloads keep their video (closes #1092) (ed6af48)
  • feat: browse a playlist and pick entries before queuing (closes #1030) (4723d14)

  •  

v1.21.2

8 Oktober 2026 om 23:46

Fixes and improvements

General

  • fix dropping UDP packets during connection close (#6278) UDP packets were dropped in case of errors regardless of their size. Now they are dropped only if they are empty and there's an error.
  • docs: fix youtube rtmps URL (#6286) The rtmps URL for Youtube was wrong. The fingerprint is not required anymore.
  • prevent free access to playback server in case of legacy credentials (#6311) When legacy credentials are in use (readUser, readPass, publishUser, publishPass), access to the playback server is granted to anyone. Prevent this by granting access only to users using readUser, readPass.
  • auth: skip JWKS fetch when no JWT is provided (#6274) authenticateJWT fetched the JWKS before checking whether the request carried a token at all. Every anonymous request, such as the first unauthenticatedRTSP DESCRIBE or HLS request that precedes a 401, caused an outbound request to the JWKS server while holding the manager's write lock. An unauthenticated client could therefore make the server contact the identity provider at will and, while that endpoint was slow or unreachable, stall JWT authentication for everybody. Return "JWT not provided" before touching the JWKS. Also check the JWKS response status code. A non-2xx reply was fed straight to the JSON decoder, so an error page surfaced as a confusing parse error,and an error reply that happened to hold valid JSON was cached as the key set for an hour. Reject it with the status code, as authenticateHTTP already does. Behavior for requests that carry a token against a healthy JWKS server is unchanged.
  • rewindablereader: fix possible OOM (bluenviron/mediacommon#383) empty datagram packets might cause the allocation of unnecessary entries. Fix that.
  • h264: revert bluenviron/mediacommon#142 (bluenviron/mediacommon#384) supporting standalone SEI units should not be necessary anymore since these are filtered out at the root (bluenviron/gortsplib#1184). In case of any issue that should arise after this change, open a bug report and we'll adjust things accordingly.
  • h264: support SEI recovery point in DTS extractor (bluenviron/mediacommon#341) Treat a SEI recovery point message (payload type 6) as a random access point, similarly to a CRA in H265, so the DTS extractor can (re)initialize its state from the first coded frame that follows the recovery point.

API

  • fix race condition when kicking RTSP sessions (#6260) (#6275)
  • do not change passwords when their value is "" (#6141) (https://github.com/bluenviron/mediamtx/issues/6287) (#6292) some users call /config/global/get and passits content to /config/global/patch. Since the former now redacts passwords and replaces their value with "", this string is used as an effective password, breaking authentication. Now password values equal to "" are ignored by /config/global/patch, and the original password value is kept unchanged.
  • fix deadlock when reloading the API (#6280) (#6279) (#6310) When the API is closing, a /config endpoint might be waiting on the server to reply, but the server is busy waiting on all API endpoints to return, causing a deadlock. Fix this by canceling requests from API endpoints to the server when the API is closing.

Media-Over-QUIC

  • use "catalog" as catalog track name (#6268) Previously, the catalog track name was ".catalog" which is non-standard.

RTSP

  • stop forwarding in case of read errors (#6266)
  • apply path-level rtspUDPReadBufferSize to the first connection (#6291) The RTSP static source built its client before reading the path-level rtspUDPReadBufferSize, so the value only reached the client after a reconnection. Compute it before creating the client, as the MPEG-TS and RTP sources do and as this source did before #5488.
  • server: change error return code of some methods (bluenviron/gortsplib#1091) (bluenviron/gortsplib#1174)
  • drop standalone H264/H265 trailing SEIs (bluenviron/gortsplib#1184) #3614 bluenviron/mediacommon#142 #6257 bluenviron/mediacommon#382 H264/H265 access units containing a single SEI only, trailing other units, generated by someTP-Link/Tapo cameras, are non-standard and cause several issues in downstream components, including the DTS extractor and the recorder. Previously, the H265 DTS extractor was adjusted to support such units (bluenviron/gortsplib#142) but the problem represented itself with H265. Filter these units out at the root.
  • make all decoders return at least 1 byte (bluenviron/gortsplib#1185)
  • complete RTP/JPEG implementation (bluenviron/gortsplib#1187) add support for restart headers, limit support to JPEG types 0 and 1.

RTMP

  • detect read errors even when the server is writing (#6267) Until now we relied exclusively on write errors to detect broken RTMP connections. Now read errors are checked too.
  • make rawmessage.Write thread-safe (bluenviron/gortmplib#136)
  • writer: drain inbound messages (#5776) (bluenviron/gortmplib#132) Some servers periodically send messages even when we're publishing. If they are not read, they fill an internal connectionbuffer and cause periodic disconnections. Now the Writer also drains inbound messages.
  • reader: support FLV video command frames and skip empty audio messages (bluenviron/gortmplib#128) Someservers (e.g. Wowza Streaming Engine) send a video info/command frame before the first frame: a 2-byte message with frame type 5 and a single command byte (start of seek / end of seek). Video.unmarshal rejected it on length, aborting the whole connection. Add Video.FrameType (key frame, inter frame, command) and Video.Command, deprecate Video.IsKeyFrame in favour of FrameType, and skip command frames in Reader since they carry no data. Some servers (e.g. Wowza Streaming Engine) send an audio message with an empty bodybefore the first frame. allocateMessage rejected it with "not enough bytes", aborting the whole connection. Parse an empty body into an Audio with Codec = 0 and no other field, marshal it back to an empty body, and skip such messages in Reader since they carry no data, like FFmpeg does.
  • rename message.Video.Type into message.Video.PacketType (bluenviron/gortmplib#138) This is to avoid confusion with the new message.Video.FrameType field.

HLS

  • muxer: keep EXT-X-MAP in delta updates (bluenviron/gohlslib#397) Delta updates were generated without EXT-X-MAP, although all tags that are not skipped must remain in them. Apple clients stop playback (MoofManifold -16046) at the first delta update that skips a segment after delta updates without skipped segments.

WebRTC

  • fix panic with specially-crafted WHEP requests (#6301) (#6309) this happened in case of WHEP requests with no media descriptions in the SDP.

Dependencies

  • Go updated from 1.26 to 1.27
  • code.cloudfoundry.org/bytefmt updated from v0.90.0 to v0.92.0
  • github.com/bluenviron/gohlslib/v2 updated from v2.4.5 to v2.4.6
  • github.com/bluenviron/gortmplib updated from v1.0.3 to v1.0.4
  • github.com/bluenviron/gortsplib/v5 updated from v5.6.6 to v5.6.7
  • github.com/bluenviron/mediacommon/v2 updated from v2.9.5 to v2.9.6
  • github.com/datarhei/gosrt updated from v0.11.1-0.20260812091715-a77b40bb4b76 to v0.12.0
  • github.com/gin-contrib/pprof updated from v1.5.5 to v1.5.6
  • github.com/go-git/go-billy/v5 updated from v5.9.1 to v5.9.2
  • github.com/go-git/go-git/v5 updated from v5.19.2 to v5.19.3
  • github.com/pion/ice/v4 updated from v4.4.2 to v4.4.5
  • github.com/pion/interceptor updated from v0.1.48 to v0.1.49
  • github.com/pion/rtcp updated from v1.2.17 to v1.2.19
  • github.com/pion/transport/v4 removed
  • github.com/pion/webrtc/v4 updated from v4.2.20 to v4.2.22
  • github.com/quic-go/quic-go updated from v0.62.0 to v0.63.0
  • github.com/pion/datachannel updated from v1.6.2 to v1.6.3
  • github.com/pion/dtls/v3 updated from v3.1.8 to v3.1.9
  • github.com/pion/mdns/v2 updated from v2.2.0 to v2.2.2
  • github.com/pion/sctp updated from v1.11.1 to v1.11.3
  • github.com/pion/srtp/v3 updated from v3.0.15 to v3.1.3
  • github.com/pion/stun/v4 updated from v4.0.0 to v4.0.1
  • github.com/pion/turn/v5 updated from v5.1.0 to v5.1.2
  • github.com/pjbgf/sha1cd updated from v0.6.0 to v0.7.0
  • github.com/pion/transport/v5 v5.1.1 added

Security

Binaries are compiled from source code by the Release workflow, which is a fully-visible process that prevents any change or external interference in produced artifacts.

Checksums of binaries are also published in a public blockchain by using GitHub Attestations, and they can be verified by running:

ls mediamtx_* | xargs -L1 gh attestation verify --repo bluenviron/mediamtx

You can verify checksums of binaries by downloading checksums.sha256 and running:

cat checksums.sha256 | grep "$(ls mediamtx_*)" | sha256sum --check

  •  

OBS Studio 33.0.0 Release Candidate 1

9 Oktober 2026 om 04:15

Release Candidate 1 Changes

  • Fixed audio monitoring on browser sources briefly being enabled every time in Beta 1-6 [prgmitchell] (#14003)
  • Fixed browser sources appearing blank on refresh in Beta 1-6 [WizardCM] (#14003)
  • Fixed local network requests failing in browser sources in Beta 1-6 [WizardCM] (#14009)
  • Fixed Plugin Manager showing third-party plugins as missing when OBS is launched in Safe Mode in Beta 1-6 [Warchamp7] (#14001)
  • Fixed Plugin Manager removal button sometimes not removing missing plugins from the Plugin Manager in Beta 1-6 [Warchamp7] (#14008)
  • Fixed the Missing Encoders popup not showing in taskbar [Warchamp7] (#14010)
  • Fixed profile import failing on paths with a trailing slash [Ushkalovk] (#13863)
  • Developer Info: Added obs_canvas_video_active() to check if the video of a canvas is active [exeldro] (#13110)
  • Developer Info: Changed obs_canvas_reset_video() to allow resetting a canvas's video when any other canvas's video is active, but not its own video [exeldro] (#13110)

Beta 6 Changes

  • Fixed a crash during certain actions involving groups in Beta 1-5 [prgmitchell] (#13978)
  • Fixed scripting not working on macOS in Beta 1-5 [PatTheMav] (#13976)
  • Fixed game capture hooks not updating in Beta 1-5 [Warchamp7] (#13968)
  • Fixed clock Lua script not working in Beta 1-5 [RytoEX] (#13974)
  • Changed Safe Mode to not start WebSocket Server [FiniteSingularity/RytoEX] (#13984)
  • Removed support for FFmpeg 6.x and 7.x [RytoEX] (#13964)
  • Removed support for Qt 6.4-6.9 [RytoEX] (#13969)

Beta 5 Changes

  • Fixed duplicate "Save Replay" hotkey entries when switching profiles in Beta 1-4 [xtfo] (#13943)
  • Fixed warning dialogs on macOS not rendering rich text in Beta 1-4 [Warchamp7] (#13949)
  • Fixed source icon state appearing inverted in Beta 1-4 [Warchamp7] (#13953)
  • Fixed audio monitoring settings not saving in Beta 1-4 [Warchamp7] (#13951)
  • Fixed missing encoder check showing missing encoders in an output mode that is not currently selected in Beta 1-4 [Warchamp7] (#13950)
  • Fixed Windows updater not updating game capture and virtual camera in some cases in Beta 1-4 [Warchamp7] (#13939)

Beta 4 Changes

  • 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
    • 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)
  • Added obs_canvas_video_active() to check if the video of a canvas is active [exeldro] (#13110)
  • The minimum supported versions of Visual Studio, Windows SDK, and clang-format have been increased. Previous versions may continue to work, but will no longer be tested/supported. It is recommended that build environments are kept up-to-date with the project's toolchain.
    • Changed Windows builds to use Visual Studio 2026 and SDK 26100 [RytoEX] (#13543)
    • Changed clang-format version used to 22.1.3 [PatTheMav] (#13549)
  • Changed obs_canvas_reset_video() to allow resetting a canvas's video when any other canvas's video is active, but not its own video [exeldro] (#13110)
  • 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)
  • Removed support for FFmpeg 6.x and 7.x [RytoEX] (#13964)
  • Removed support for Qt 6.4-6.9 [RytoEX] (#13969)
  • 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

Checksums

OBS-Studio-33.0.0-rc1-Sources.tar.gz: 1a73e95b5ad8addd79aeb5b48e5292b982dd2ffa69744294930a7c474c958fe0
OBS-Studio-33.0.0-rc1-Ubuntu-26.04-x86_64-dbsym.ddeb: d85dc2bdd26a21f29ea0a3dee8a6a31ae0a2a142df48fc56d41df9fb3571711e
OBS-Studio-33.0.0-rc1-Ubuntu-26.04-x86_64.deb: 7f2264131413b8b0d49b74c5693c044c4884f5ca923f08cb07c3ffd2b7369024
OBS-Studio-33.0.0-rc1-Windows-arm64-PDBs.zip: b855ec251576313f6de129213f0b57ece8d3b5970b6fb402f528b5791feeea0b
OBS-Studio-33.0.0-rc1-Windows-arm64.zip: 7205f9c3acb048c167c7fc38b2c3efd11d534f0f42242caa496a036785471a3c
OBS-Studio-33.0.0-rc1-Windows-x64-Installer.exe: 89cda9af39aaa0c6bbdae4d5db3bbfed127c82a6ef57b79acc6a745a872fa85c
OBS-Studio-33.0.0-rc1-Windows-x64-PDBs.zip: e7be732e7d61a59418cfdbdbe4790424ed8d3441676bd03c70710f4baef4f386
OBS-Studio-33.0.0-rc1-Windows-x64.zip: 2934bda03b5288378ca32a51dfe1003d4a557531a6af2ba105d7671d7557ad1f
OBS-Studio-33.0.0-rc1-macOS-Apple-dSYMs.tar.xz: 30e35c09bbbe7bed0d203cdd7439b1a239d9c4f9ef5c32570c5e1a0596ad5e67
OBS-Studio-33.0.0-rc1-macOS-Apple.dmg: 9322e6266140c0b82378848ded76d22cb721de550282c525d57b05590c94bbf6
OBS-Studio-33.0.0-rc1-macOS-Intel-dSYMs.tar.xz: dbe0dc36f8f064ccda4ec835ffcb279349efa88583b315336b576fa8e41b8737
OBS-Studio-33.0.0-rc1-macOS-Intel.dmg: fd0fd30ad54c4c18a4849fdfe2a3c8c7bd5e8f49325cb2861fc10b65c7aef683

  •  

v0.21.1

8 Oktober 2026 om 18:18

⚠️ Note for macOS users

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

xattr -d com.apple.quarantine /Applications/MarkText.app

Verifying downloads

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

sha256sum -c SHA256SUMS.txt --ignore-missing

Full Changelog: v0.21.0...v0.21.1

  •  

v0.21.0

8 Oktober 2026 om 18:18

πŸ›‘ macOS Apple Silicon (arm64): this build is broken β€” use v0.21.1

The macOS arm64 assets below crash immediately on launch with EXC_BAD_ACCESS (Code Signature Invalid). A newly added Electron fuse rewrote the Electron Framework binary, which invalidated its ad-hoc signature, and the build was not re-signed afterwards.

Two ways to get a working app:

  1. Download v0.21.1 (recommended) β€” it ships the fix.
  2. Repair this build in place β€” after installing, run:
    sudo codesign --force --deep --sign - /Applications/MarkText.app
    

xattr -cr does not fix this crash. The macOS Intel (x64) and the Windows/Linux builds are unaffected.

⚠️ Note for macOS users

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

xattr -d com.apple.quarantine /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

  • Release tracking: v0.20.0 by @Jocs in #4664
  • docs: fix broken relative links in translated READMEs by @xThreeh in #5616
  • feat(desktop): move sidebar selection to trash with Delete key by @Jocs in #5609
  • Update Japanese localization strings for consistency by @coolvitto in #5630
  • fix(desktop): remove applied custom CSS when the preference is cleared by @woahwhattheheck in #5633
  • fix(muya): restore inline HTML tag marker style and hide bare
    markers by @Jocs in #5636
  • feat(desktop): rename sidebar selection with F2 / Enter (#1618) by @Jocs in #5638
  • feat(muya): preserve caret column on cross-block arrow navigation (#3412) by @Jocs in #5644
  • fix: #3203 make the trailing soft-break line navigable with the arrow keys by @Jocs in #5645
  • fix: #3207 #3385 commit sidebar rename/create when clicking away by @Jocs in #5646
  • feat: support ==highlight== markdown syntax (#2552) by @Jocs in #5647
  • feat: render inline markdown in the TOC (#3110) by @Jocs in #5648
  • feat: support GitLab inline diff and multiline blockquote (#954) by @Jocs in #5649
  • fix(desktop): let the --debug flag reach MarkText in packaged builds by @xThreeh in #5643
  • fix(muya): highlight regexp newline search matches (#3261) by @Jocs in #5650
  • fix(muya): keep the search highlight across a full re-render (#5651) by @Jocs in #5652
  • fix(desktop): persist sidebar folder collapse state across view switches (#5631) by @VictorVow in #5632
  • feat(desktop): reveal the active file in the sidebar file tree (#528) by @Jocs in #5654
  • fix(desktop): keep Latin-1 and Shift-JIS files byte-exact on save (#5577) by @ycyc0421 in #5567
  • chore(ci): remove Claude Code workflow by @Jocs in #5655
  • docs: remove StarDesk sponsor from README and website by @Jocs in #5656
  • Follow-up to #5379: move Pandoc conversion out of Export, gate it behind a preference, and report which binary was found by @dimbc in #5513
  • fix: #5239 let Ctrl+Backspace delete a word at the end of a line by @johannesroth-coreproduction in #5657
  • fix(muya): correct the caret after a native word/line delete, and defer in code blocks (#5239) by @Jocs in #5658
  • feat(muya): text & background colour in the inline format toolbar by @Jocs in #5661

New Contributors

Full Changelog: v0.20.0...v0.21.0

  •  

v12.5.0

7 Oktober 2026 om 20:54

⚠️ Potential Breaking Changes

Fixed TFA enforcement to use effective permissions (#28176)
Policies with an IP allow list are now accounted for when enforcing TFA within the allowed range.

Improved license handling so a failed license request keeps the current license in effect and is retried by a scheduled license check, with a warning in the app showing why the license could not be renewed and when it lapses (#28331)
The /server/license response no longer includes downgrade_reason. Read invalid_reason instead, which also reports why a license that is still in effect could not be renewed.

@directus/errors no longer exports LicenseManagedByEnvError, LicenseOfflineUnsupportedError, LicenseResolveIncompleteError or LicenseServiceUnavailableError, or their error codes. License request failures now surface as LICENSE_INVALID with a failure extension, or as the standard FORBIDDEN, INVALID_PAYLOAD, REQUESTS_EXCEEDED and SERVICE_UNAVAILABLE errors.

Removed the ip-matching dependency (#28243)
Policy ip_access and IMPORT_IP_DENY_LIST values are now more strictly validated. Subnets with a malformed prefix such as 10.0.0.0/ 24 or 10.0.0.0/+24, are no longer accepted.

Existing policies that already store such a value will fail every request for users with that policy.

Fixed requests failing after a process was stopped during schema building (#28316)
CACHE_SCHEMA_MAX_ITERATIONS has been removed. CACHE_SCHEMA_SYNC_TIMEOUT now also limits the schema build itself and defaults to 60000 ms.

If you have configured a lower value, make sure it is long enough for your schema to finish building.

Updated outdated type definitions for directus_notifications, directus_permissions, directus_extensions, directus_fields, directus_activity, directus_collections, and directus_revisions (#28072)
Breaking changes in @directus/sdk:

  • DirectusNotification.id is now correctly typed as number.
  • DirectusField.schema is now nullable.
  • FieldMetaConditionOptionType has been removed; condition options is now Record<string, any>.
  • FieldMetaConditionType.hidden, readonly, required, and options are now optional, and rule is typed as a filter.
  • All ExtensionSchema properties are now optional, and DirectusExtension.schema can also be an ExtensionSchemaEntry.

Breaking changes in @directus/types:

  • Notification.id is now correctly typed as number.

  • Notification.status and timestamp are now nullable.

  • @directus/api

    • Improved license handling so a failed license request keeps the current license in effect and is retried by a scheduled license check, with a warning in the app showing why the license could not be renewed and when it lapses (#28331 by @ComfortablyCoding)
    • Removed the ip-matching dependency (#28243 by @Nitwel)
    • Fixed requests failing after a process was stopped during schema building (#28316 by @Nitwel)
  • @directus/errors

    • Improved license handling so a failed license request keeps the current license in effect and is retried by a scheduled license check, with a warning in the app showing why the license could not be renewed and when it lapses (#28331 by @ComfortablyCoding)
  • @directus/utils

  • @directus/types

    • Updated outdated type definitions for directus_notifications, directus_permissions, directus_extensions, directus_fields, directus_activity, directus_collections, and directus_revisions (#28072 by @kheiner)
  • @directus/sdk

    • Updated outdated type definitions for directus_notifications, directus_permissions, directus_extensions, directus_fields, directus_activity, directus_collections, and directus_revisions (#28072 by @kheiner)

✨ New Features & Improvements

  • @directus/app
    • Added a Preview Base URL project setting, selectable as a variable in a collection's Preview URL (#28227 by @robluton)
    • Added header bar buttons to set multiple selected Flows to active or inactive (#28321 by @robluton)
    • Added a confirmation dialog when saving Public policy permission changes on system collections (#28311 by @robluton)
    • Added a persistent warning notice when editing the Public policy (#28310 by @robluton)
    • Added support for linking images in the WYSIWYG editor: select an image and use the link toolbar button (or Mod+K) to wrap it in an anchor; stored <a href><img></a> markup now survives loading without triggering the normalization warning (#28289 by @alvarosabu)
  • @directus/api
    • Added a Preview Base URL project setting, selectable as a variable in a collection's Preview URL (#28227 by @robluton)
  • @directus/memory
    • Added opt-in hash option to redis memory, improving cache clear performance (#28214 by @Nitwel)
    • Added optional lock settings to usingLock to override the lock's duration and retry count. A signal is now passed to the callback that aborts if the lock is lost before it finishes (#28331 by @ComfortablyCoding)
  • @directus/system-data
    • Added a Preview Base URL project setting, selectable as a variable in a collection's Preview URL (#28227 by @robluton)
  • @directus/types
    • Added a Preview Base URL project setting, selectable as a variable in a collection's Preview URL (#28227 by @robluton)
  • @directus/sdk
    • Added a Preview Base URL project setting, selectable as a variable in a collection's Preview URL (#28227 by @robluton)
  • @directus/constants
    • Added a persistent warning notice when editing the Public policy (#28310 by @robluton)
  • @directus/env

πŸ› Bug Fixes & Optimizations

  • @directus/app
    • Updated proxy-addr, braintrust, MCP SDK, sharp, vue, dompurify, source-map-js and serialize-javascript to address CVEs (#28334 by @br41nslug)
    • Update license validation to only accept Directus keys and tokens (#28331 by @ComfortablyCoding)
    • Updated undici, axios, nodemailer, basic-ftp, ip-address, and fast-uri to address CVEs (#28330 by @br41nslug)
    • Improved license handling so a failed license request keeps the current license in effect and is retried by a scheduled license check, with a warning in the app showing why the license could not be renewed and when it lapses (#28331 by @ComfortablyCoding)
    • Fixed tooltips not appearing on keyboard focus (#28263 by @robluton)
    • Fixed Norwegian time format patterns that displayed raw timestamps instead of times in datetime fields (#28332 by @u12206050)
    • Fixed the module navigation scrolling back to the top when navigating to another page (#28269 by @khanahmad4527)
    • Fixed AI translations creating duplicate target language rows when streaming multiple fields. (#28074 by @xmflsct)
    • Updated outdated type definitions for directus_notifications, directus_permissions, directus_extensions, directus_fields, directus_activity, directus_collections, and directus_revisions (#28072 by @kheiner)
    • Cleaned unsupported markup from pasted content in the WYSIWYG editor and flagged it inline, with a view of what was removed and the choice to undo the paste or redo it raw in the raw HTML editor (#28238 by @alvarosabu)
  • @directus/api
    • Updated proxy-addr, braintrust, MCP SDK, sharp, vue, dompurify, source-map-js and serialize-javascript to address CVEs (#28334 by @br41nslug)
    • Update license validation to only accept Directus keys and tokens (#28331 by @ComfortablyCoding)
    • Fixed OpenAPI spec version to only change when the generated spec does (#28109 by @kheiner)
    • Fixed creating a collection with neither schema nor meta returning a misleading 403 instead of a 400 validation error (#28258 by @kheiner)
    • Fixed filtering and GraphQL typing of geometry subtype fields (e.g. geometry.Point) (#28308 by @PINYOPATTANAWASANPORN)
    • Fixed license boot holding a lock for the entirety of startup (#28331 by @ComfortablyCoding)
    • Fixed GraphQL marking not-null fields with a default value as nullable in queries and fields with falsey default values as required in create mutations (#28280 by @Dextheking1)
    • Added opt-in hash option to redis memory, improving cache clear performance (#28214 by @Nitwel)
    • Fixed TFA enforcement to use effective permissions (#28176 by @psang39)
    • Updated undici, axios, nodemailer, basic-ftp, ip-address, and fast-uri to address CVEs (#28330 by @br41nslug)
    • Fixed GraphQL fragments on the union type of one M2A field returning no data when spread into another M2A field (#28305 by @Nitwel)
    • Unified related collection lookups to use getRelationInfo (#28246 by @Nitwel)
    • Fixed a GraphQL query with a __proto__ field alias being able to write a property onto Object.prototype. (#28211 by @datrixlab)
    • Improved validation of storage locations and paths for files (#28077 by @br41nslug)
  • @directus/extensions-sdk
    • Fixed directus-extension validate passing or crashing on missing extension paths (#28320 by @PINYOPATTANAWASANPORN)
    • Updated proxy-addr, braintrust, MCP SDK, sharp, vue, dompurify, source-map-js and serialize-javascript to address CVEs (#28334 by @br41nslug)
  • @directus/composables
    • Updated proxy-addr, braintrust, MCP SDK, sharp, vue, dompurify, source-map-js and serialize-javascript to address CVEs (#28334 by @br41nslug)
    • Updated undici, axios, nodemailer, basic-ftp, ip-address, and fast-uri to address CVEs (#28330 by @br41nslug)
  • @directus/extensions
    • Updated proxy-addr, braintrust, MCP SDK, sharp, vue, dompurify, source-map-js and serialize-javascript to address CVEs (#28334 by @br41nslug)
  • @directus/stores
    • Updated proxy-addr, braintrust, MCP SDK, sharp, vue, dompurify, source-map-js and serialize-javascript to address CVEs (#28334 by @br41nslug)
  • @directus/themes
    • Updated proxy-addr, braintrust, MCP SDK, sharp, vue, dompurify, source-map-js and serialize-javascript to address CVEs (#28334 by @br41nslug)
  • @directus/types
    • Updated proxy-addr, braintrust, MCP SDK, sharp, vue, dompurify, source-map-js and serialize-javascript to address CVEs (#28334 by @br41nslug)
    • Updated undici, axios, nodemailer, basic-ftp, ip-address, and fast-uri to address CVEs (#28330 by @br41nslug)
  • @directus/utils
    • Updated proxy-addr, braintrust, MCP SDK, sharp, vue, dompurify, source-map-js and serialize-javascript to address CVEs (#28334 by @br41nslug)
    • Fixed filtering and GraphQL typing of geometry subtype fields (e.g. geometry.Point) (#28308 by @PINYOPATTANAWASANPORN)
    • Unified related collection lookups to use getRelationInfo (#28246 by @Nitwel)
  • @directus/specs
    • Fixed creating a collection with neither schema nor meta returning a misleading 403 instead of a 400 validation error (#28258 by @kheiner)
  • @directus/cli
    • Updated undici, axios, nodemailer, basic-ftp, ip-address, and fast-uri to address CVEs (#28330 by @br41nslug)
  • @directus/storage-driver-cloudinary
    • Updated undici, axios, nodemailer, basic-ftp, ip-address, and fast-uri to address CVEs (#28330 by @br41nslug)
  • @directus/storage-driver-supabase
    • Updated undici, axios, nodemailer, basic-ftp, ip-address, and fast-uri to address CVEs (#28330 by @br41nslug)
  • @directus/update-check
    • Updated undici, axios, nodemailer, basic-ftp, ip-address, and fast-uri to address CVEs (#28330 by @br41nslug)
  • @directus/env
    • Fixed requests failing after a process was stopped during schema building (#28316 by @Nitwel)
  • @directus/sdk
    • Fixed readActivity, deletePermission, readPermission, updatePermission, readItemPermissions, readNotification, and readRevision not rejecting a null or undefined key or collection (#28072 by @kheiner)

πŸ“¦ Published Versions

  • @directus/app@18.1.0
  • @directus/api@40.0.0
  • @directus/cli@12.3.1
  • @directus/composables@11.6.4
  • @directus/constants@14.5.0
  • create-directus-extension@12.1.6
  • @directus/env@6.4.0
  • @directus/errors@3.0.0
  • @directus/extensions@4.0.6
  • @directus/extensions-registry@4.0.5
  • @directus/extensions-sdk@18.0.6
  • @directus/memory@4.1.0
  • @directus/pressure@4.0.6
  • @directus/schema-builder@1.0.4
  • @directus/specs@15.2.1
  • @directus/storage-driver-azure@13.0.6
  • @directus/storage-driver-cloudinary@14.0.3
  • @directus/storage-driver-gcs@13.0.6
  • @directus/storage-driver-s3@14.0.3
  • @directus/storage-driver-supabase@5.0.3
  • @directus/stores@3.0.2
  • @directus/system-data@4.8.0
  • @directus/themes@3.0.1
  • @directus/types@18.0.0
  • @directus/update-check@14.0.1
  • @directus/utils@14.0.0
  • @directus/validation@3.0.6
  • @directus/sdk@27.0.0

  •  

v0.16.25

5 Oktober 2026 om 08:57

[0.16.25] - 2026-10-05

If you are upgrading from v0.16.x, replace the binary (or run docker pull). If you are upgrading from v0.15.x and below, please read the upgrading documentation for more information on how to upgrade from previous versions.

Added

Changed

Fixed

  • JMAP: Creating a MaskedEmail with emailDomain fails with forbidden for every domain when the account has addresses on more than one domain.
  • Autodiscover: Requests for a response schema other than Outlook's, such as ActiveSync (mobilesync), are answered with the Outlook settings instead of error 601.
  • IMAP:
    • LOGIN and AUTHENTICATE with a wrong, expired or unknown app password or API key are answered with an untagged NO, so clients keep waiting for the command to complete until the connection times out.
    • The failed login that exceeds the maximum number of authentication failures is answered with an untagged NO before the connection is closed.
  • DKIM:
    • A rotation moves the active key to retiring even when its successor fails to publish or propagate, so outgoing mail is sent unsigned until a retry publishes the new key. The DNS write failure is also not logged and the task reports success.
    • Keys created while DNS management was manual, or before DKIM was added to the published records, are never rotated after DNS management becomes automatic. Domains already affected start rotating once a DkimManagement task is created for them.
    • After switching DNS management from automatic to manual, a due rotation activates a new key that was never published in DNS, so signatures fail verification, and retiring the old key is retried forever.
  • Spam filter:
    • Messages with no text line long enough for a Pyzor digest are checked with the digest of empty input and tagged PYZOR.
    • DNSBL answers with several return codes, such as a Spamhaus ZEN listing in both SBL and PBL, are scored for only the first code returned.
    • DNSBL lookups that return "not listed" are cached for 24 hours regardless of the zone's negative TTL.
    • Removing a duplicate training sample of a message reclassified on the same day clears the blob link of the sample that is kept.
  • MTA: Queue quotas with an empty match expression are never enforced, including the global queue quota created on first start.
  • RocksDB: The info log (LOG, LOG.old.*) grows without limit because log rotation and retention are left at RocksDB defaults.
  • WebUI: A blob store read error at startup, such as an S3 authentication failure, stops the web interface from being downloaded.

Check binary attestation here

  •  

OBS Studio 33.0.0 Beta 6

3 Oktober 2026 om 01:27

Beta 6 Changes

  • Fixed a crash during certain actions involving groups in Beta 1-5 [prgmitchell] (#13978)
  • Fixed scripting not working on macOS in Beta 1-5 [PatTheMav] (#13976)
  • Fixed game capture hooks not updating in Beta 1-5 [Warchamp7] (#13968)
  • Fixed clock Lua script not working in Beta 1-5 [RytoEX] (#13974)
  • Changed Safe Mode to not start WebSocket Server [FiniteSingularity/RytoEX] (#13984)
  • Removed support for FFmpeg 6.x and 7.x [RytoEX] (#13964)
  • Removed support for Qt 6.4-6.9 [RytoEX] (#13969)

Beta 5 Changes

  • Fixed duplicate "Save Replay" hotkey entries when switching profiles in Beta 1-4 [xtfo] (#13943)
  • Fixed warning dialogs on macOS not rendering rich text in Beta 1-4 [Warchamp7] (#13949)
  • Fixed source icon state appearing inverted in Beta 1-4 [Warchamp7] (#13953)
  • Fixed audio monitoring settings not saving in Beta 1-4 [Warchamp7] (#13951)
  • Fixed missing encoder check showing missing encoders in an output mode that is not currently selected in Beta 1-4 [Warchamp7] (#13950)
  • Fixed Windows updater not updating game capture and virtual camera in some cases in Beta 1-4 [Warchamp7] (#13939)

Beta 4 Changes

  • 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
    • 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)
  • The minimum supported versions of Visual Studio, Windows SDK, and clang-format have been increased. Previous versions may continue to work, but will no longer be tested/supported. It is recommended that build environments are kept up-to-date with the project's toolchain.
    • Changed Windows builds to use Visual Studio 2026 and SDK 26100 [RytoEX] (#13543)
    • Changed clang-format version used to 22.1.3 [PatTheMav] (#13549)
  • 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

Checksums

OBS-Studio-33.0.0-beta6-Sources.tar.gz: c0774b6d3d44b4ceeac9640ba752493c5e038e594f2f75fe45902352a896fdc1
OBS-Studio-33.0.0-beta6-Ubuntu-26.04-x86_64-dbsym.ddeb: 13954f91f15d18a91ac9fc1d37b397f53c511eaf7a319337a6fc461678981bcc
OBS-Studio-33.0.0-beta6-Ubuntu-26.04-x86_64.deb: 743d9d45f24e3206c382ebf15325f57e241655ee2b3d0e04119da2399cd12528
OBS-Studio-33.0.0-beta6-Windows-arm64-PDBs.zip: 905d01dbc84655176d8bea82a98793b36ee8cdd41ff2ec14b87ded8ac87fd6a3
OBS-Studio-33.0.0-beta6-Windows-arm64.zip: 51d411d19f11d5c1d54119677ec55aa6af8a1773edc4893d9753eb6cb60728d7
OBS-Studio-33.0.0-beta6-Windows-x64-Installer.exe: 2718bb13120cae63da3ad8c7c6da97d5dca72453c04aca710a1c43f052aeffa9
OBS-Studio-33.0.0-beta6-Windows-x64-PDBs.zip: 8a636784183fcf7151bf8a6878019c2754107e358759fc3c0a6b5db0218b092b
OBS-Studio-33.0.0-beta6-Windows-x64.zip: e132c58934a5b0755fff0fc92a49d665a592e323ce0871618738721e20d0ebb3
OBS-Studio-33.0.0-beta6-macOS-Apple-dSYMs.tar.xz: e1b4b66245179fdc59e391ad8f455e7216d7eaef23fac61fc93e6bbe8da5a533
OBS-Studio-33.0.0-beta6-macOS-Apple.dmg: 06fe6deaf96645f88593dbc2085c2195714584df3989f4c1aba1a3bfe0be4c40
OBS-Studio-33.0.0-beta6-macOS-Intel-dSYMs.tar.xz: 707ad42c7eaa7a0d6bca419aca11a06f785275306eb683dfdfeb9356b5fc55b2
OBS-Studio-33.0.0-beta6-macOS-Intel.dmg: 80351ba0c886ab8d7c0f32ab782fadf335e5c644c8483f43ced994756cfda3c9

  •  

v0.8.11

2 Oktober 2026 om 14:05

What's Changed

  • fix(macos): press Back and Forward as the frontmost app's menu item by @AprilNEA in #1622
  • chore(nix): update flake.lock by @AprilNEA[bot] in #1217
  • fix(agent): recognize an overlay tenant by any image we ever shipped by @AprilNEA in #871
  • feat(linux): add verified release installer by @AprilNEA in #1109
  • ci(nix): only run Nix CI on flake and packaging changes by @davidbudnick in #1250
  • fix(macos): confirm desktop switches with private space APIs by @AprilNEA in #1586
  • fix(macos): drive the device-I/O gate from powerd instead of workspace notifications by @AprilNEA in #1323
  • fix(core): match Actions Ring layouts with the per-app selector by @AprilNEA in #643
  • chore: release v0.8.11 by @AprilNEA[bot] in #1637
  • fix: clear the lints rustc 1.99 raises on untouched code by @AprilNEA in #1638
  • chore: release v0.8.11 by @AprilNEA in #1643
  • chore: release v0.8.11 by @AprilNEA in #1644

Full Changelog: v0.8.10...v0.8.11

  •  

v0.20.0

2 Oktober 2026 om 08:02

⚠️ 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

New Contributors

Full Changelog: v0.19.0...v0.20.0

  •  

Bitfocus Companion v5.0.7

1 Oktober 2026 om 21:28

πŸ“¦ Downloads available at

πŸ’΅ Donate to the project at

Companion v5.0.7 - Release Notes

🐞 BUG FIXES

  • only add imageBuffers layer to simple presets when a feedback declares imageBuffer #4490
  • limit preset advanced-feedback style overrides to affectedProperties #4410 #4490
  • some surface open race conditions
  • update elgato-stream-deck surface module
  • layered presets lose all feedbacks when style overrides use plain values (#4477)
  • late closeSurface closing a reopened plugin surface
  • abort signal not being propagated into module action callback
  • move expression stream re-evaluation log to silly level #4489

Full Changelog: v5.0.6...v5.0.7

  •  

OBS Studio 33.0.0 Beta 5

3 Oktober 2026 om 01:25

Beta 5 Changes

  • Fixed duplicate "Save Replay" hotkey entries when switching profiles [xtfo] (#13943)
  • Fixed warning dialogs on macOS not rendering rich text [Warchamp7] (#13949)
  • Fixed source icon state appearing inverted [Warchamp7] (#13953)
  • Fixed audio monitoring settings not saving [Warchamp7] (#13951)
  • Fixed missing encoder check showing missing encoders in an output mode that is not currently selected [Warchamp7] (#13950)
  • Fixed Windows updater not updating game capture and virtual camera in some cases [Warchamp7] (#13939)

Beta 4 Changes

  • 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
    • 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

Checksums

OBS-Studio-33.0.0-beta5-Sources.tar.gz: 5b8d65c0b2981aa779eaf5bae9739ba5681290f03025b9eddd40cf5da2eb566a
OBS-Studio-33.0.0-beta5-Ubuntu-26.04-x86_64-dbsym.ddeb: 6fd06d0ee256f560875622da516880b119083b725e9280a7105221d589128952
OBS-Studio-33.0.0-beta5-Ubuntu-26.04-x86_64.deb: db1fdfad893d4d20adb3f899bd8ee24cf26b6088e23764c5ffbfe3eef6ca6153
OBS-Studio-33.0.0-beta5-Windows-arm64-PDBs.zip: 8b5860e48349a7d90794ab61e8b42458f270ccc4aeb53c4aa6d1f0469335b9af
OBS-Studio-33.0.0-beta5-Windows-arm64.zip: 7a7b3c3759dfc49df65d1b4e14cc23ad6092f4f36d83e44ea2978ec9f54a3c9f
OBS-Studio-33.0.0-beta5-Windows-x64-Installer.exe: 7ee61670a7e8738b4753487d3c3e75f30c35ddbe2937cdb75eb31b86054c3cf9
OBS-Studio-33.0.0-beta5-Windows-x64-PDBs.zip: 643c1b735da59b40052887ec0b891bd2852d2bd47c87227f268e3da026a0a86f
OBS-Studio-33.0.0-beta5-Windows-x64.zip: 8de0d330582083bc3b429e7dbe01d1fbc995dfdeeb3229eedf454a2f931c6481
OBS-Studio-33.0.0-beta5-macOS-Apple-dSYMs.tar.xz: 5b0545a3724c2920b02aa3df07c76f39bec73b1b814fcf78d1cb53dbae52393f
OBS-Studio-33.0.0-beta5-macOS-Apple.dmg: e7d289a68ee27e0d21900f380fd3d0c2c4c5c48ec0e1661fe6b093258b07eaa5
OBS-Studio-33.0.0-beta5-macOS-Intel-dSYMs.tar.xz: f4192371f6bc9ab92f2403893eb3c945fda37585185b3bce31a6d4fdef7a7229
OBS-Studio-33.0.0-beta5-macOS-Intel.dmg: 33b5a80275eaa7331cb39a71d530e63d3937672c62d6c9fb5c48039490b255df

  •  

v0.8.10

30 September 2026 om 14:11

What's Changed

  • feat(keyboard): key controls by HID++ control ID, fix Keys tab and Fn-lock by @AprilNEA in #1604
  • fix(macos): keep the hook from hearing the keys OpenLogi posts by @AprilNEA in #1618
  • fix(gui): unpair a forgotten receiver device so it stays deleted by @AprilNEA in #1617
  • fix(macos): press shortcut keys where the active layout types them by @guslipkin in #948
  • feat(core): add a Super modifier and make Win/Meta name it by @sungyongcho in #1387
  • fix(agent): re-arm a crash respawn instead of going dormant by @AprilNEA in #1619
  • fix(hook): give the macOS tap's capability probes their own watchdog budget by @hyspacex in #1282
  • fix(hook): give the callback watchdog the same watched-time rule by @AprilNEA in #1624
  • chore: release v0.8.10 by @AprilNEA[bot] in #1616

New Contributors

Full Changelog: v0.8.9...v0.8.10

  •  

Release 2026.09.29

29 September 2026 om 19:26

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.09.29

GitHub Container Registry:

  • ghcr.io/alexta69/metube:latest
  • ghcr.io/alexta69/metube:2026.09.29

Changes

  • fix: apply the connect-time address guard to playlist/channel metadata files (a389660)

  •  

v0.20.0-rc.7

29 September 2026 om 13:54

❗ 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: restore code block legibility and text crispness (#5539) by @Jocs in #5553
  • test: fold the two #5539 specs into one by @Jocs in #5557
  • fix(muya): keep a hard line break's glyph on the line it ends (#2094) by @Jocs in #5556
  • revert: keep grayscale antialiasing on editor text (#5539) by @Jocs in #5558
  • fix(muya): keep sequence diagram arrowheads in exported PDFs (#2423) by @Jocs in #5561
  • fix(muya): pair emphasis delimiters the way CommonMark does (#2086) by @Jocs in #5555
  • fix(muya): parse link destinations the way CommonMark does (#2377) by @Jocs in #5562
  • Add a zoom/pan viewer and image export for rendered diagrams by @Jocs in #5554
  • fix: give the editor and Preferences windows their own menu bar (#2245) by @Jocs in #5560
  • perf(muya): re-render only the two affected blocks when stepping through search (#5580) by @ycyc0421 in #5569

New Contributors

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

  •  

hMailServer 5.7.1, build 3116

29 September 2026 om 08:55

Security:

  • Fixed script injection in event scripts. With JScript, untrusted values passed to event handlers (such as the logon password in OnClientValidatePassword, or error text and UIDs sent by remote servers) could break out of their string. With either script language, a rule's "Run function" name could carry code. This would allow an attacker to run arbitrary code in the hMailServer process. Values are now escaped, and rule function names may only contain letters, digits and underscores.

If you are unable to install this version, disable JScript execution and do not give end-users access to the hMailServer COM API.

  •  

Release 2026.09.28

28 September 2026 om 19:22

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.09.28

GitHub Container Registry:

  • ghcr.io/alexta69/metube:latest
  • ghcr.io/alexta69/metube:2026.09.28

Changes

  • fix: confine playlist/channel metadata files to the download directory (098cba4)
  • fix: also prompt in ask mode when only chapter files remain on disk (b2b4908)
  • feat: add an ask mode to DELETE_FILE_ON_TRASHCAN that prompts before deleting files (closes #1012) (52638fa)

  •  

Release 2026.09.27

27 September 2026 om 18:50

Docker Images

Docker images have been built and pushed:

Docker Hub:

  • alexta69/metube:latest
  • alexta69/metube:2026.09.27

GitHub Container Registry:

  • ghcr.io/alexta69/metube:latest
  • ghcr.io/alexta69/metube:2026.09.27

Changes

  • feat: pair the video password with presets, give custom yt-dlp options a full row (345b8ae)
  • feat: add per-download video password for protected videos (closes #670) (080dcea)
  • ci: install corepack instead of relying on the copy bundled with Node (47553e8)
  • build: ship Python 3.14 in the image (be1d349)
  • build: move the frontend to pnpm 12 (2ffb718)
  • fix: let a cancel's SIGINT actually stop the download (c86f351)
  • ci: sync the Docker Hub description with a maintained action (aecd86d)

  •  

v0.16.24

27 September 2026 om 20:28

[0.16.24] - 2026-09-27

If you are upgrading from v0.16.x, replace the binary (or run docker pull). If you are upgrading from v0.15.x and below, please read the upgrading documentation for more information on how to upgrade from previous versions.

Added

  • DNS: PowerDNS Authoritative provider for automatic DNS record management.

Changed

Fixed

  • Troubleshoot tool: TLSA records are looked up for every MX host, including hosts whose zone is not DNSSEC signed.
  • Spam filter:
    • OpenPhish and PhishTank entries containing uppercase characters never match, since message URLs are lowercased while HTTP lookup entries keep their original case. HTTP lookups now match keys case-insensitively.
    • URL shortener links are followed using the lowercased URL, so case-sensitive short links resolve to the wrong destination or not at all.
    • Incremental training never advances its position past the first run, so every retained sample added since then is trained again, and counted again in the reservoir, on each run until it expires.
    • Updating the rules only adds new objects, so upstream changes to existing rules, DNSBL servers, HTTP lookups, lookup keys and file extensions never reach an existing installation.
    • Updating the rules reports success when objects fail to import, or when a configuration error stops the updated settings from being activated.
  • JMAP:
    • A PushSubscription created within the verification rate limit window of another one on the same account never receives its PushVerification, since the blocked verification is dropped instead of being sent once the window expires.
    • A push notification retried after a failed delivery can report an older state than a change queued during the failed attempt, since the older state changes are merged last and overwrite the newer ones.
    • Changes made while a push request is in flight are not delivered until the next change reaches the same subscription, since a successful delivery cancels the pending retry.
    • The VAPID aud claim is derived from a hand-written parse of the push URL, so a crafted push URL can make the server sign a token for a push service other than the one the request is sent to.
    • Email/import rejects a blobId that refers to a Blob/upload creation id in the same request ("#u0") with Invalid blob id..
    • Email/set with a full mailboxIds object identical to the current mailboxes, together with a keyword change, stores the message with IMAP UID 0, so IMAP clients stop seeing it.
  • MTA:
    • A node without the outboundMta role stops replying to DATA and to JMAP submissions once about 1024 messages have been queued on it.
    • MX records are resolved through the DNSSEC-validating resolver even when DANE is disabled.
    • A DATA stage Sieve script does not see headers added by milters or MTA hooks, and discards every milter and MTA hook change when it edits the message.
  • MySQL: Range deletions and search index removals start with a single unbounded DELETE and switch to chunks only after a timeout.
  • IMAP: COPY and MOVE fail with NO [CONTACTADMIN] when another session changes the same message at the same time.
  • Autodiscover: Implicit TLS ports (993, 995, 465) are advertised with <Encryption>TLS</Encryption>, which Outlook reads as STARTTLS.
  • HTTP: Idle keep-alive connections are never closed.

Check binary attestation here

  •  

v0.8.9

27 September 2026 om 15:23

What's Changed

  • fix(gui): swap the thumb-wheel volume preset labels onto the pairing they describe by @4ni1ak in #1436
  • fix(hook): stop the GNOME frontmost observer leaking a socket per renewal by @sungyongcho in #1418
  • fix(gui): rebuild the agent's launchd registration when its job is gone by @raphaeljostan in #1303
  • fix(hook): hit-test the window under the pointer through AppKit by @pseudoseed in #1568
  • chore: release v0.8.9 by @AprilNEA[bot] in #1599

New Contributors

Full Changelog: v0.8.8...v0.8.9

  •  
❌