❌

Lees weergave

OBS Studio 33.0.0 Release Candidate 1

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

  •  

Euro Truck Simulator 2 - 1.62 Update: New Garages

Today, we bring you news from the upcoming 1.62 update for Euro Truck Simulator 2. As part of this update, we will be introducing new truck garage models across the map!

We already gave the truck garages in American Truck Simulator a refresh with the 1.58 update, and now it is time to give them the same treatment in Euro Truck Simulator 2. As you know, we are gradually reworking older areas of the base map, with the Benelux rework being the latest addition, while the rework for United Kingdom is currently underway. Garages are an important part of the map as well, so after many years, we felt it was time to bring them up to date and better align them with the newer areas of the game.

With the release of 1.62, these new garage models will be introduced across the entire base map as well as all of the map DLCs. This means that wherever your journeys take you, you can look forward to seeing these refreshed garages along the way.

Garages are also an important part of the truck driving experience. They are not only where you store your trucks and manage your drivers, but also a reflection of your growing company. From the smaller garages to the larger ones, we wanted to make them feel like places you would be happy to return to as your business grows.

The new garages feature updated visuals both inside and out, with greater attention to detail throughout. Our goal was to make them feel more modern and immersive, which should make the process of upgrading your garage feel more rewarding.

Of course, we also had to keep performance in mind. Bringing these new garages to the game while keeping their performance cost in check compared to the older models created many years ago was no small task, but we hope to have found the right balance between improving visuals and not increasing the toll on performance.

With these changes, we hope the reworked garages will feel like a more natural and enjoyable part of your journeys. They are another step in bringing older parts of the game up to today's standards, and we look forward to continuing to refine the world of Euro Truck Simulator 2 in future updates.

Remember to give our X/Twitter, Instagram, Facebook, Bluesky, and TikTok a follow so you won't miss out on any updates from Euro Truck Simulator 2. Or subscribe to our newsletter to stay informed. Until next time, we wish you safe travels!

  •  

v0.21.1

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

πŸ›‘ 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

  •  

v4.4.3

Fixes

  • Fixed static-site pull request previews that failed with a missing Dockerfile error. (#8238)
  • Fixed the empty terminal container picker for resources with multiple containers. (#12110)
  • Fixed nested Base64 custom labels in API updates and deployments. (PR #11473, #11435)
  • Prevented DNS polling from filling the queue with duplicate file-sync jobs and delaying DNS checks and deployments. (#12098)
  • Fixed the runtime log viewer failing to load with invalid saved filters. (#12101)
  • Fixed missing Caddy traffic analytics after enabling analytics and redeploying applications with managed labels. (#12117)
  • Preserved previously recorded commit messages when redeployments skipped cloning the repository. (#12116)
  • Fixed card title alignment when descriptions were empty. (#12102)

Improvements

  • Removed the truncated page-search hint from the navigation search button.
  • Made dropdown controls more compact.
  • Updated default example repository URLs in development mode to use the main branch.
  • Added AMD64 and ARM64 development images from release branches, with versioned and commit-specific tags.

What's Changed

Full Changelog: v4.4.2...v4.4.3

  •  

2.8.3

Changes from 2.8.2 to 2.8.3:

Updates:

  • Updated MPC Video Renderer to version 0.10.8.2600
  • Updated MediaInfo DLL to version 26.10

Changes/additions:

  • Added a new modern theme variant for options dialogs and menus that is based on Windows 11 UI design. The existing one was based on Windows 10. You can choose preferred theme here (regardless of which Windows version you use): Options > Advanced > ModernThemeStyle. The main interface is same for both modern variants.
  • Added advanced option to use native Windows 11 menus (with rounded corners).
  • EVR-CP/Sync now support HLG tonemapping.
  • Improved CUE file parsing.
  • Some internal improvements to further enhance stability.

Fixes:

  • Lots of small fixes and improvements.

  •  

Asterisk Release 24.0.0-rc2

The Asterisk Development Team would like to announce
release candidate 2 of asterisk-24.0.0.

The release artifacts are available for immediate download at
https://github.com/asterisk/asterisk/releases/tag/24.0.0-rc2
and
https://downloads.asterisk.org/pub/telephony/asterisk

Repository: https://github.com/asterisk/asterisk
Tag: 24.0.0-rc2

This release resolves issues reported by the community
and would have not been possible without your participation.

Thank You!

Change Log for Release asterisk-24.0.0-rc2

Links:

Summary:

  • Commits: 3
  • Commit Authors: 2
  • Issues Resolved: 3
  • Security Advisories Resolved: 0

User Notes:

Upgrade Notes:

Developer Notes:

  • Audiohooks: Fix whisper framehook timer leak and masquerade handling

    ast_channel_fd_add() now returns -1 if it fails to allocate
    space for the descriptor.

Commit Authors:

  • Joshua C. Colp: (2)
  • Mike Bradeen: (1)

Issue and Commit Detail:

Closed Issues:

  • #2134: [bug]: Bridging channels which have been spied on with ChanSpy fails
  • #2179: [bug]: No initial NOTIFY for dialog subscriptions when hint references CustomPresence without AstDB entry (regression in 22.11.0)
  • #2186: [bug]: dialog-info NOTIFY for ringing extension no longer contains identity (caller ID) since 22.11.0

Commits By Author:

  • Joshua C. Colp (2):

    • extstate/pjsip: Handle lack of or late loading of presence state.
    • extstate: Include causing device channel details in legacy callbacks.
  • Mike Bradeen (1):

    • Audiohooks: Fix whisper framehook timer leak and masquerade handling

Commit List:

  • Audiohooks: Fix whisper framehook timer leak and masquerade handling
  • extstate/pjsip: Handle lack of or late loading of presence state.
  • extstate: Include causing device channel details in legacy callbacks.

Commit Details:

Audiohooks: Fix whisper framehook timer leak and masquerade handling
Author: Mike Bradeen
Date: 2026-09-25

Resolves several issues with the framehook added to allow whispering without
an underlying stream.

The timer is now owned by the audiohook list rather than the framehook. It is
retired on both channels during a masquerade and recreated when the audiohook(s)
are moved.

If the timer cannot be started, whisper audio is still mixed into the outbound
media as it was previously (requiring an underlying stream.)

An audiohook that cannot be moved to the new channel is now left DONE so that
its owner does not wait on it forever.

Resolves: #2134

DeveloperNote: ast_channel_fd_add() now returns -1 if it fails to allocate
space for the descriptor.

extstate/pjsip: Handle lack of or late loading of presence state.
Author: Joshua C. Colp
Date: 2026-09-25

The extension state implementation is stateful resulting in state
not being updated if a presence state provider does not publish an
update after loading. To handle providers which don't do this we
query for updated state if we are asked for it and the existing
state is invalid. This ensures that if the presence state provider
is loaded later we will get the updated state when asked.

The func_presencestate module is written to publish the persisted
custom presence states at load time. This failed for entries with
a not_set state as this resulted in querying the presence provider
that was not yet registered. The provider is now registered before
this ensuring the update can be published.

This change also fixes an issue in PJSIP where a SUBSCRIBE for a
hint that had an invalid presence state configuration would not
send an initial NOTIFY. We now treat an invalid presence state as
not set instead.

Fixes: #2179

extstate: Include causing device channel details in legacy callbacks.
Author: Joshua C. Colp
Date: 2026-09-29

When a legacy extension state callback registers it can optionally
do so in a way that it will receive the channel(s) that have caused
a device to ring. This is used in PJSIP for the dialog-info+xml
support so that phones can display who is calling the monitored
extension.

An issue was introduced in the extension state rewrite where this
did not occur for the actual device that caused the extension state
update. It was only being done for additional devices that could be
involved. This has been fixed so that it is now done for the causing
device.

Fixes: #2186

  •  

Asterisk Release 23.6.0-rc2

The Asterisk Development Team would like to announce
release candidate 2 of asterisk-23.6.0.

The release artifacts are available for immediate download at
https://github.com/asterisk/asterisk/releases/tag/23.6.0-rc2
and
https://downloads.asterisk.org/pub/telephony/asterisk

Repository: https://github.com/asterisk/asterisk
Tag: 23.6.0-rc2

This release resolves issues reported by the community
and would have not been possible without your participation.

Thank You!

Change Log for Release asterisk-23.6.0-rc2

Links:

Summary:

  • Commits: 3
  • Commit Authors: 2
  • Issues Resolved: 3
  • Security Advisories Resolved: 0

User Notes:

Upgrade Notes:

Developer Notes:

  • Audiohooks: Fix whisper framehook timer leak and masquerade handling

    ast_channel_fd_add() now returns -1 if it fails to allocate
    space for the descriptor.

Commit Authors:

  • Joshua C. Colp: (2)
  • Mike Bradeen: (1)

Issue and Commit Detail:

Closed Issues:

  • #2134: [bug]: Bridging channels which have been spied on with ChanSpy fails
  • #2179: [bug]: No initial NOTIFY for dialog subscriptions when hint references CustomPresence without AstDB entry (regression in 22.11.0)
  • #2186: [bug]: dialog-info NOTIFY for ringing extension no longer contains identity (caller ID) since 22.11.0

Commits By Author:

  • Joshua C. Colp (2):

    • extstate/pjsip: Handle lack of or late loading of presence state.
    • extstate: Include causing device channel details in legacy callbacks.
  • Mike Bradeen (1):

    • Audiohooks: Fix whisper framehook timer leak and masquerade handling

Commit List:

  • Audiohooks: Fix whisper framehook timer leak and masquerade handling
  • extstate/pjsip: Handle lack of or late loading of presence state.
  • extstate: Include causing device channel details in legacy callbacks.

Commit Details:

Audiohooks: Fix whisper framehook timer leak and masquerade handling
Author: Mike Bradeen
Date: 2026-09-25

Resolves several issues with the framehook added to allow whispering without
an underlying stream.

The timer is now owned by the audiohook list rather than the framehook. It is
retired on both channels during a masquerade and recreated when the audiohook(s)
are moved.

If the timer cannot be started, whisper audio is still mixed into the outbound
media as it was previously (requiring an underlying stream.)

An audiohook that cannot be moved to the new channel is now left DONE so that
its owner does not wait on it forever.

Resolves: #2134

DeveloperNote: ast_channel_fd_add() now returns -1 if it fails to allocate
space for the descriptor.

extstate/pjsip: Handle lack of or late loading of presence state.
Author: Joshua C. Colp
Date: 2026-09-25

The extension state implementation is stateful resulting in state
not being updated if a presence state provider does not publish an
update after loading. To handle providers which don't do this we
query for updated state if we are asked for it and the existing
state is invalid. This ensures that if the presence state provider
is loaded later we will get the updated state when asked.

The func_presencestate module is written to publish the persisted
custom presence states at load time. This failed for entries with
a not_set state as this resulted in querying the presence provider
that was not yet registered. The provider is now registered before
this ensuring the update can be published.

This change also fixes an issue in PJSIP where a SUBSCRIBE for a
hint that had an invalid presence state configuration would not
send an initial NOTIFY. We now treat an invalid presence state as
not set instead.

Fixes: #2179

extstate: Include causing device channel details in legacy callbacks.
Author: Joshua C. Colp
Date: 2026-09-29

When a legacy extension state callback registers it can optionally
do so in a way that it will receive the channel(s) that have caused
a device to ring. This is used in PJSIP for the dialog-info+xml
support so that phones can display who is calling the monitored
extension.

An issue was introduced in the extension state rewrite where this
did not occur for the actual device that caused the extension state
update. It was only being done for additional devices that could be
involved. This has been fixed so that it is now done for the causing
device.

Fixes: #2186

  •  

Asterisk Release 22.12.0-rc2

The Asterisk Development Team would like to announce
release candidate 2 of asterisk-22.12.0.

The release artifacts are available for immediate download at
https://github.com/asterisk/asterisk/releases/tag/22.12.0-rc2
and
https://downloads.asterisk.org/pub/telephony/asterisk

Repository: https://github.com/asterisk/asterisk
Tag: 22.12.0-rc2

This release resolves issues reported by the community
and would have not been possible without your participation.

Thank You!

Change Log for Release asterisk-22.12.0-rc2

Links:

Summary:

  • Commits: 3
  • Commit Authors: 2
  • Issues Resolved: 3
  • Security Advisories Resolved: 0

User Notes:

Upgrade Notes:

Developer Notes:

  • Audiohooks: Fix whisper framehook timer leak and masquerade handling

    ast_channel_fd_add() now returns -1 if it fails to allocate
    space for the descriptor.

Commit Authors:

  • Joshua C. Colp: (2)
  • Mike Bradeen: (1)

Issue and Commit Detail:

Closed Issues:

  • #2134: [bug]: Bridging channels which have been spied on with ChanSpy fails
  • #2179: [bug]: No initial NOTIFY for dialog subscriptions when hint references CustomPresence without AstDB entry (regression in 22.11.0)
  • #2186: [bug]: dialog-info NOTIFY for ringing extension no longer contains identity (caller ID) since 22.11.0

Commits By Author:

  • Joshua C. Colp (2):

    • extstate/pjsip: Handle lack of or late loading of presence state.
    • extstate: Include causing device channel details in legacy callbacks.
  • Mike Bradeen (1):

    • Audiohooks: Fix whisper framehook timer leak and masquerade handling

Commit List:

  • Audiohooks: Fix whisper framehook timer leak and masquerade handling
  • extstate/pjsip: Handle lack of or late loading of presence state.
  • extstate: Include causing device channel details in legacy callbacks.

Commit Details:

Audiohooks: Fix whisper framehook timer leak and masquerade handling
Author: Mike Bradeen
Date: 2026-09-25

Resolves several issues with the framehook added to allow whispering without
an underlying stream.

The timer is now owned by the audiohook list rather than the framehook. It is
retired on both channels during a masquerade and recreated when the audiohook(s)
are moved.

If the timer cannot be started, whisper audio is still mixed into the outbound
media as it was previously (requiring an underlying stream.)

An audiohook that cannot be moved to the new channel is now left DONE so that
its owner does not wait on it forever.

Resolves: #2134

DeveloperNote: ast_channel_fd_add() now returns -1 if it fails to allocate
space for the descriptor.

extstate/pjsip: Handle lack of or late loading of presence state.
Author: Joshua C. Colp
Date: 2026-09-25

The extension state implementation is stateful resulting in state
not being updated if a presence state provider does not publish an
update after loading. To handle providers which don't do this we
query for updated state if we are asked for it and the existing
state is invalid. This ensures that if the presence state provider
is loaded later we will get the updated state when asked.

The func_presencestate module is written to publish the persisted
custom presence states at load time. This failed for entries with
a not_set state as this resulted in querying the presence provider
that was not yet registered. The provider is now registered before
this ensuring the update can be published.

This change also fixes an issue in PJSIP where a SUBSCRIBE for a
hint that had an invalid presence state configuration would not
send an initial NOTIFY. We now treat an invalid presence state as
not set instead.

Fixes: #2179

extstate: Include causing device channel details in legacy callbacks.
Author: Joshua C. Colp
Date: 2026-09-29

When a legacy extension state callback registers it can optionally
do so in a way that it will receive the channel(s) that have caused
a device to ring. This is used in PJSIP for the dialog-info+xml
support so that phones can display who is calling the monitored
extension.

An issue was introduced in the extension state rewrite where this
did not occur for the actual device that caused the extension state
update. It was only being done for additional devices that could be
involved. This has been fixed so that it is now done for the causing
device.

Fixes: #2186

  •  

Asterisk Release 20.22.0-rc2

The Asterisk Development Team would like to announce
release candidate 2 of asterisk-20.22.0.

The release artifacts are available for immediate download at
https://github.com/asterisk/asterisk/releases/tag/20.22.0-rc2
and
https://downloads.asterisk.org/pub/telephony/asterisk

Repository: https://github.com/asterisk/asterisk
Tag: 20.22.0-rc2

This release resolves issues reported by the community
and would have not been possible without your participation.

Thank You!

Change Log for Release asterisk-20.22.0-rc2

Links:

Summary:

  • Commits: 3
  • Commit Authors: 2
  • Issues Resolved: 3
  • Security Advisories Resolved: 0

User Notes:

Upgrade Notes:

Developer Notes:

  • Audiohooks: Fix whisper framehook timer leak and masquerade handling

    ast_channel_fd_add() now returns -1 if it fails to allocate
    space for the descriptor.

Commit Authors:

  • Joshua C. Colp: (2)
  • Mike Bradeen: (1)

Issue and Commit Detail:

Closed Issues:

  • #2134: [bug]: Bridging channels which have been spied on with ChanSpy fails
  • #2179: [bug]: No initial NOTIFY for dialog subscriptions when hint references CustomPresence without AstDB entry (regression in 22.11.0)
  • #2186: [bug]: dialog-info NOTIFY for ringing extension no longer contains identity (caller ID) since 22.11.0

Commits By Author:

  • Joshua C. Colp (2):

    • extstate/pjsip: Handle lack of or late loading of presence state.
    • extstate: Include causing device channel details in legacy callbacks.
  • Mike Bradeen (1):

    • Audiohooks: Fix whisper framehook timer leak and masquerade handling

Commit List:

  • Audiohooks: Fix whisper framehook timer leak and masquerade handling
  • extstate/pjsip: Handle lack of or late loading of presence state.
  • extstate: Include causing device channel details in legacy callbacks.

Commit Details:

Audiohooks: Fix whisper framehook timer leak and masquerade handling
Author: Mike Bradeen
Date: 2026-09-25

Resolves several issues with the framehook added to allow whispering without
an underlying stream.

The timer is now owned by the audiohook list rather than the framehook. It is
retired on both channels during a masquerade and recreated when the audiohook(s)
are moved.

If the timer cannot be started, whisper audio is still mixed into the outbound
media as it was previously (requiring an underlying stream.)

An audiohook that cannot be moved to the new channel is now left DONE so that
its owner does not wait on it forever.

Resolves: #2134

DeveloperNote: ast_channel_fd_add() now returns -1 if it fails to allocate
space for the descriptor.

extstate/pjsip: Handle lack of or late loading of presence state.
Author: Joshua C. Colp
Date: 2026-09-25

The extension state implementation is stateful resulting in state
not being updated if a presence state provider does not publish an
update after loading. To handle providers which don't do this we
query for updated state if we are asked for it and the existing
state is invalid. This ensures that if the presence state provider
is loaded later we will get the updated state when asked.

The func_presencestate module is written to publish the persisted
custom presence states at load time. This failed for entries with
a not_set state as this resulted in querying the presence provider
that was not yet registered. The provider is now registered before
this ensuring the update can be published.

This change also fixes an issue in PJSIP where a SUBSCRIBE for a
hint that had an invalid presence state configuration would not
send an initial NOTIFY. We now treat an invalid presence state as
not set instead.

Fixes: #2179

extstate: Include causing device channel details in legacy callbacks.
Author: Joshua C. Colp
Date: 2026-09-29

When a legacy extension state callback registers it can optionally
do so in a way that it will receive the channel(s) that have caused
a device to ring. This is used in PJSIP for the dialog-info+xml
support so that phones can display who is calling the monitored
extension.

An issue was introduced in the extension state rewrite where this
did not occur for the actual device that caused the extension state
update. It was only being done for additional devices that could be
involved. This has been fixed so that it is now done for the causing
device.

Fixes: #2186

  •  
❌