What's Changed
- [Python] Call Py_Initialize from main thread by @sundermann in #27395
- [depends][webOS] Don't build libinput by @sundermann in #27382
- [webOS] Bundle gst-plugin-scanner by @sundermann in #27377
- webOS: remove extradata from aac, set profile as per spec by @cscd98 in #27368
- [win] get_formed enable supplying alternate source url for individual package by @fuzzard in #27375
- [cmake] Modulehelper BUILD_DEP_TARGET set _FOUND variable for caller by @fuzzard in #27374
- [cmake] add meson cross generation macros and add cmake binary to meson.cross by @fuzzard in #27373
- [Video][Bluray] Improvement to episode recognition logic. by @78andyp in #27394
- Bump Python to 3.13.9 by @thexai in #27367
- [Android] Catch NameNotFoundException when returns the application's Resources by @joseluismarti in #27384
- [Android] Refactor CFileAndroidApp::ReadIcon function by @joseluismarti in #27388
- [tools/depends][target] Bump libudfread, libbluray by @fuzzard in #27376
- [webOS] Raise -mcpu to cortex-a53 by @sundermann in #27383
- Update libxkbcommon to v1.12.3 by @garbear in #27407
- [Video][Library] Local artwork rarely not found when importing a bluray:// movie. by @78andyp in #27393
- [cmake] FindBrotli cleanup and fix pkgconfig search by @fuzzard in #27408
- [cmake] FindPCRE2 cleanup logging, support cmake alias for PCRE2::8BIT by @fuzzard in #27414
- [Cmake] Enable FontConfig for libass on Darwin platforms by @fuzzard in #27410
- [VideoPlayer] Return main title stream details for discs played through menus, and manage log verbosity. by @78andyp in #27176
- [Video] Code optimisations (Sonarqube etc..) following #27176. by @78andyp in #27417
- [xbmc] Add missing include by @heitbaum in #27428
- [Video][Bluray] Remaining Sonarqube tweaks in M2TS parser. by @78andyp in #27429
- [CURL] Refactored archive CURL parsing by @damienruscoe in #26871
- [NFO] File parsing refactor by @damienruscoe in #27321
- [AESinkAUDIOTRACK] Fix crash if audio device is not available by @thexai in #27436
- [guilib] Optimize text layout rendering by reducing font width calculation by @sundermann in #27403
- [Application] Refactor CApplicationPlayer::OnPlayerCloseFile(). by @78andyp in #27406
- [URLUtils] Reduce dependency on
fmtlibrary by @damienruscoe in #27317 - [depends][addons] Add platform deps by @sundermann in #27416
- [tools/depends][native] Update gas-preprocessor by @fuzzard in #27440
- [cmake] Remove explicit dav1d search for core by @fuzzard in #27442
- [Application] Refactor CApplication::PlayFile(). by @78andyp in #27401
- Translations update from Kodi Weblate by @weblate in #27446
- [CURL] Access CURL object via
CFileItem::GetURLandCFileItem::GetDynURL. by @damienruscoe in #27085 - [cmake] Find modules unset patches variable after use by @fuzzard in #27445
- [webOS] Packaging: Explicitly make gst-plugin-scanner executable by @sundermann in #27425
- Introduce a constexpr set class, similar to
CMapby @neo1973 in #27261 - URIUtils: Fix
GetFileOrFolderNamewith empty input by @neo1973 in #27455 - [windows] download-msys2 call vswhere to setup env by @fuzzard in #27441
- [cmake] FindFFMPEG set env var for UWP, meson cross typo fix by @fuzzard in #27459
- [Cmake] Remove (some) of find_package_handle_standard_args by @fuzzard in #26847
- [URIUtils] Modernize GetFileOrFolderName by @CrystalP in #27458
- [PVR] Add missing default values to advancedsettings.xml for pvrrecordings by @emveepee in #27285
- [application] Refactor CApplicationPlay. by @ksooo in #27454
- [cmake] Fix Bluetooth/lcms2 pkgconfig search name by @fuzzard in #27462
- [cmake] Safety check VERSION variables, fix case sensitive issues for flatbuffers search nane by @fuzzard in #27465
- [cmake] FindCrossGUID respect cmake config target by @fuzzard in #27463
- [URIUtils][CURL] Refactor URLParsing tests as parametrized tests by @CrystalP in #27461
- [cmake] FindLibDovi use correct library name by @vpeter4 in #27472
- fix: prevent Claude code reviewer from creating accidental GitHub issue links by @keithah in #27470
- changed: put application message handling in separate class by @notspiff in #27475
- [webOS] Add iconColor to appinfo.json and update Kodi largeIcon by @OfficerKD637 in #27450
- Address a couple C++17 TODOs by @CrystalP in #27477
- [test] Disable tests which have recently been enabled on Win64. by @damienruscoe in #27481
- [tools/depends][target] Bump harfbuzz 12.1.0 by @fuzzard in #27476
- [addons] Remove default c++ version from toolchain file by @sundermann in #27398
- [DVDDemuxFFmpeg] Handle WebVTT ISOBMFF with COverlayCodecWebVTT decoder by @CastagnaIT in #27432
- [OverlayCodecWebVTT] Handle D_WEBVTT/SUBTITLES format by @CastagnaIT in #27433
- [cmake] FindFFMPEG partial revert 77d79c1 by @fuzzard in #27495
- [cmake][darwin] blank a number of xcode environment variables by @fuzzard in #27496
- [tools/depends][target] Bump mariadb-c-connector 3.3.17 by @fuzzard in #27501
- Revert "[ffmpeg][darwin_embedded] Enable yadif_videotoolbox" by @fuzzard in #27497
- [ActiveAE] Use 48000 as a default sample rate by @stigger in #27249
- [swig] disable cast-function-type warnings for Clang as well by @fuzzard in #27508
- [video][music] Fix playback of items with no video/music info tag. by @ksooo in #27510
- Fix random SonarQube findings introduced since September 1 2025 by @ksooo in #27509
- [CC] fix compile warnings in get_char_override function by @vpeter4 in #27486
- [cmake] FindFFMPEG handle version/rebuild requirements better by @fuzzard in #27512
- [cmake] windows arch use CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE by @fuzzard in #27505
- [cmake] ModuleHelpers meson cross generation improvements by @fuzzard in #27494
- [Cmake] FindFFMPEG build logging, fixes unix ffmpeg link wrapper by @fuzzard in #27498
- [docs] Remove "-T host=x64" from Windows README by @garbear in #27507
- [GUI] Switch font releated APIs to
std::spanby @neo1973 in #27452 - [weather] Implement queueing for weather update requests. by @ksooo in #27511
- [GUIWindowSettingsProfile] Highlight selected profile by @CastagnaIT in #27515
- [depends][target] Update to ffmpeg 8.0.1 by @sundermann in #27503
- GraphicContext: Use
std::stackwith astd::vectorby @neo1973 in #27460 - [tools/depends][target] Bump libpng 1.6.51 by @fuzzard in #27506
- [Android] [webOS] Add Dolby Vision setting to set zero L5 metadata by @quietvoid in #27431
- Apply clang-format to BitstreamConverter by @cscd98 in #27453
- [weather] Fix deadlocks: … by @ksooo in #27522
- [depends][native] Heimdal and autoconf bump by @sundermann in #27528
- Revert "[depends][native] TEMP: Change BASE_URL" by @fuzzard in #27531
- [GUITextLayout] Fix vector iterator incremented past end by @CastagnaIT in #27527
- [tools/depends] bootstrap check minimum version of m4 pre-depends by @fuzzard in #27534
- [cmake] FindFstrcmp remove incorrect *_DISABLE_VERSION log internal build by @fuzzard in #27540
- Translations update from Kodi Weblate by @weblate in #27548
- [i18n] Fix LangCodeExpander Bugs by @CrystalP in #27530
- [Android][libass] Enable fontconfig for libass to support all language scripts in subtitles by @naseef in #27517
- [cmake] Fix double installation of TexturePacker by @chewi in #27545
- [cmake] FindFFMPEG by @fuzzard in #27550
- [tools/depends][native] assorted (mostly gnu) lib bumps by @fuzzard in #27535
- [GUIDialogProfileSettings] Dialog to ask for custom profile directory by @CastagnaIT in #27524
- [application][pvr] Re-implement 'delete after watching' using an event based approach. by @ksooo in #27555
- [addons/interfaces] Fix: allow setting set_setting_bool to false by @flubshi in #27559
- [Encoder] Remove usage of resampler by @sundermann in #27058
- [cmake] Enable internal build of libmicrohttpd by @fuzzard in #27558
- [VideoPlayer] Close PGS/VobSub subtitles when audio language dont match by @CastagnaIT in #27467
- Fix wayland keymapping is not possible when the key id is unconventional by @hbiyik in #27563
- [Cmake] Bump dav1d 1.5.2 by @fuzzard in #27447
- interfaces/python: remove use of deprecated method '_Py_fopen_obj' by @lrusak in #27567
- AESinkAudiotrack: Stop potential leakage by @fritsch in #27464
- [Windows] Fix the ability to detect dav1d version changes to rebuild FFmpeg by @thexai in #27573
- [Video] Folder Stacks by @78andyp in #27048
- Translations update from Kodi Weblate by @weblate in #27574
- [Video] Preserve streamdetails derived from an nfo when bluray playlist is selected through the simple menu. by @78andyp in #27568
- [Windows][CURL] Fix URL parsing of zip and apk for Windows by @CrystalP in #27488
- Replace incorrect check of
resultwith a direct validation ofsockets[1]againstINVALID_SOCKETafter theacceptcall. by @Dave-Lowndes in #27562 - Translations update from Kodi Weblate by @weblate in #27577
- webOS: transcode to DD+ instead of DD if eARC supported and enabled by @cscd98 in #27541
- [VideoThumbLoader] Refactor by @damienruscoe in #27316
- [Windows] BuildSetup.bat: enable build in parallel by @thexai in #27578
- Move VideoDatabase migration code to a separate file by @CrystalP in #27529
- Fix
ValidateFieldto correctly detect invalid characters as per issue #26044. by @Dave-Lowndes in #27561 - [Cmake] windows globals/linker cleanup/improvements by @fuzzard in #27565
- JSON RPC : added Player.GetChapters method by @albaintor in #27560
- [linux] Implement custom PowerSyscall class. by @aanderse in #27556
- [webOS] Add allow passthrough setting by @sundermann in #27551
- [Depends] Bump cec 7.1.1 by @fuzzard in #27585
- Translations update from Kodi Weblate by @weblate in #27591
- Support Tag Line for TV Shows in core - DB Bump by @CrystalP in #27566
- [python] Update to Python 3.14.2 by @sundermann in #27391
- [Windows] Bump Python to 3.14.2 / Pillow to 12.0.0 by @thexai in #27554
- [cmake] Fix internal brotli with ninja, remove FHPSA from nghttp by @fuzzard in #27597
- [Depends] Bump spdlog 1.16.0 and fmt 12.1 by @fuzzard in #27596
- [depends][target] Fix fmt version by @sundermann in #27603
- [Video] Fix #27121 broke Bluray menus. by @78andyp in #27595
- Skin resources and enable resource:// paths in skin includes by @garbear in #27525
- [playlists][video] Fix browse for subtitles for items contained in playlists and strm files. by @ksooo in #27593
- [webOS] Set fontconfig environment variables by @sundermann in #27602
- Translations update from Kodi Weblate by @weblate in #27610
- [Cmake] Enable internal build mariadb-c-connector by @fuzzard in #27504
- GUIFontTTF: Fix crash in a edge case by @thexai in #27608
- Visual Studio 2026 support. Minimum version Visual Studio 2022. by @78andyp in #27473
- [cmake] Fix build version checks for webOS by @sundermann in #27605
- Move video database cXX columns definitions to a separate file - Fix episode air date filter by @CrystalP in #27587
- [Build][Windows] Restore VS 2022 UWP and ARM64 build instructions by @CrystalP in #27618
- [i18n] Add BCP47 Language Tags Parsing by @CrystalP in #27532
- UPnP AV bug fixes by @enen92 in #27614
- JSON RPC : added notifications (Player.OnPropertyChanged) when video… by @albaintor in #27449
- [Depends] Update Harfbuzz to v12.3.0 by @enen92 in #27631
- [macOS] Nuke XBMCHelper by @enen92 in #23580
- [tools/depends][target] Bump libiconv 1.18 by @fuzzard in #27634
- [JobManager] Add support for multiple callbacks per job by @enen92 in #27624
- AEStreamInfo: fix AC3 duration when sample rate is different from 48 KHz by @thexai in #27635
- AESinkAudioTrack: Simplify RAW - buffer did not work anyways by @fritsch in #27621
- Fix playback of tcp:// streams by @enen92 in #27616
- [GUI] GUIWindowManager: Use shared_ptr for window ownership by @enen92 in #27620
- [EDL] Reorganize EDL by @enen92 in #27629
- [Addons] Implement equals for CAddonInstallJob by @enen92 in #27647
- MySQL/MariaDB Settings Refactor and new setting for MYSQL_OPT_SSL_ENFORCE option by @CrystalP in #27649
- Fix Missing Sound on Return from FF/RW to Tempo Play / Remove Tempo Play to Normal Play Unneeded Flush by @CrystalP in #27644
- Translations update from Kodi Weblate by @weblate in #27648
- MusicGUIInfo: use streamUrlData as coverURL when its an image (e.g. radio paradise) by @glic3rinu in #27651
- [dialogs] Fix crash on install add-on from zip file. by @ksooo in #27654
- [GUIDialogFileBrowser] Use Delete instead of Remove for proper window… by @enen92 in #27659
- [Addons] Avoid delete since window ownership belongs to CGUIWindowMan… by @enen92 in #27656
- [macOS] Only disable GUI rendering if the window is not visible by @enen92 in #27658
- [macOS] improve storage info display by @kambala-decapitator in #27598
- AESinkAudiotrack: Implement GetLatency API by @fritsch in #27638
- [webOS] Implement audio volume settings in non-passthrough mode by @sundermann in #27600
- GUIDialogFileBrowser: Show busy dialog while fetching directory listing by @neo1973 in #27627
- Translations update from Kodi Weblate by @weblate in #27665
- [webOS] Change visibility of passthrough settings by @sundermann in #27643
- [Windows] Fix Execution on Windows 8.1 by @CrystalP in #27661
- [Video] Fix repetitive calls to UpdateFileItemStreamDetails(). by @78andyp in #27543
- [Video] Streamdetails are not saved for blurays played through the menu selected via the simple menu. by @78andyp in #27676
- AESinkPulse: Use also 48 khz for testing by @fritsch in #27681
- ActiveAE: Fix missing initial ~200 ms of audio at playback start by @thexai in #27652
- [PipeWire] Fix deadlock in format enumeration by @neo1973 in #27615
- [Wayland] InputProcessorKeyboard: Support long-press by @neo1973 in #27677
- ModuleHelpers.cmake: handle empty options as [] not [''] by @glic3rinu in #27668
- [Windows] WASAPI rework by @thexai in #27675
- [Windows][Settings] Change the default audio devices to XAUDIO and WASAPI by @thexai in #27682
- [WASAPI] Improve code formatting, comments and const variables by @thexai in #27688
- [GUIInfoManager] Announce Info.OnChanged on SetCurrentSongTag/SetCurrentVideoTag by @glic3rinu in #27697
- [Games] Refactor handling of video shader textures by @KOPRajs in #27694
- Translations update from Kodi Weblate by @weblate in #27705
- [LocalizeStrings] Remove unused g_localizeStringsTemp by @enen92 in #27709
- [ActiveAE] Improve "Low latency mode" by @thexai in #27701
- [guilib] GUIScrollBarControl Fix SetInvalid() by @pannal in #27711
- [webOS] Relax holding locks inside processing threads by @sundermann in #27678
- Prefer constrained algorithms by @notspiff in #27708
- VideoPlayer: Reset PTS offset on flush by @neo1973 in #27662
- [GUI] Kill g_SkinInfo global, move to CGUIComponent by @enen92 in #27707
- [Subtitles][CC] Add support for H264 AVCC to bitstream parser by @enen92 in #27672
- [Skin] Check GUI in reloadskin by @enen92 in #27723
- Translations update from Kodi Weblate by @weblate in #27721
- SetInfoTag: clean up includes by @notspiff in #27725
- (Program)ThumbLoader: Some cleanup by @notspiff in #27726
- [LocalizedStrings] Remove special handling for skins by @enen92 in #27712
- [Windows] Updates Microsoft Visual C++ runtime to be compatible with VS2017 to VS2026 by @thexai in #27623
- [MySQL/MariaDB] Fix build by @CrystalP in #27724
- [ActiveAE] Allow configure "Low latency mode" during playback by @thexai in #27729
- [Stacks] Fix playback of a regular stack does not automatically advance to the next item in the stack. by @78andyp in #27713
- [Art][VideoInfoScanner] Local movie and season art may not be found on library (re)scan. by @78andyp in #27717
- [GUI] Fix culling issues with smart redraw by @neo1973 in #27674
- [Windows] Remove dead code IsUSBDevice() by @thexai in #27731
- ContextMenus: some cleanups by @notspiff in #27730
- [GHA] Make Claude Code Review comments collapsed by default by @keithah in #27734
- [ZipManager] Add ZIP64 (files > 4GB) support. by @78andyp in #27692
- Addons: Clear addon strings on addon removal by @enen92 in #27728
- Use bullet (U+2022) instead of math dot as UI separator by @qzydustin in #27742
- DatabaseQuery: Fix translation for
OPERATOR_BETWEENby @neo1973 in #27663 - [GHA] Improve Claude Code workflow feedback quality by @keithah in #27749
- [FreeBSD][Zip] Change temporary directory location from RAM to disc to avoid issues decompressing large compressed files. by @78andyp in #27744
- [Windows] Bump Pillow to 12.1.0 by @thexai in #27639
- target/depends: Update libxkbcommon to v1.13.1 by @garbear in #27716
- [PVR] PVR components power management improvements by @ksooo in #27746
- [GHA] Allow Claude to access gh issue and gh pr list commands by @keithah in #27756
- [GHA] SECURITY FIX: Fix overly permissive issue permissions + add missing commands by @keithah in #27757
- [GHA] CRITICAL: Fix security issue + add git commands for code review by @keithah in #27759
- [GUI] Fix some regressions regarding skin strings by @enen92 in #27755
- [guilib] Optimize GUIBaseContainer page control message caching by @pannal in #27735
- [guilib] Optimize GUIControlGroupList page control message caching by @pannal in #27736
- [guilib] Optimize GUIButtonControl focus pulse alpha updates by @pannal in #27737
- [guilib] Optimize GUIScrollBarControl to reduce constant dirty region marking by @pannal in #27739
- [guilib] Optimize CGUITexture to only mark dirty on ready state transitions by @pannal in #27740
- [guilib] Optimize GUIBorderedImage border position recalculation by @pannal in #27741
- [GHA] Strengthen zero-positive-feedback rule for Claude reviews by @keithah in #27761
- [Subtitles] Fix WebVTT subtitles that make use of persistent overlay not shown after seek. by @78andyp in #27714
- Android: Fix display mode matching with padded hardware decoder surfaces by @jahutchi in #27754
- [VideoPlayer] Fix hardcoded value of 8s is not correct due is currently a variable time by @thexai in #27774
- Fix interference between unit tests and portable mode by @CrystalP in #27626
- Move video database DDL code to a separate file by @CrystalP in #27592
- [WASAPI] Remove initialized but not used variables by @thexai in #27773
- EventClient: move implementation to TU by @notspiff in #27777
- [Windows] WASAPI Sink Buffer Size Improvements by @CrystalP in #27719
- Fix Claude not posting when no issues found + enable debug logging by @keithah in #27781
- avoid ServiceBroker.h include in header by @notspiff in #27778
- GraphicContext: avoid RenderSystem.h include by @notspiff in #27784
- GraphicContext: avoid include of WinSystem.h by @notspiff in #27786
- Fix Claude workflows: prevent validation issues + add acknowledgment by @keithah in #27790
- [Windows] FromW/ToW Improvements by @CrystalP in #27789
- Convert RENDER_STEREO_VIEW to enum class by @notspiff in #27792
- [Windows] D3D11 Implementation of Front to Back Rendering by @CrystalP in #27751
- [Windows] Fix build / Conflict on RenderStereoView Changes by @CrystalP in #27798
- [Threading][Windows] Log app/thread priorities and use MMCSS for AE Sink by @CrystalP in #27748
- Render stereo mode enum class and rename by @notspiff in #27797
- C++23 fixes by @sundermann in #27801
- [WASAPI] Improve Drain() - Allow write pending frames in m_buffer by @thexai in #27722
- [Games] Improvements for libretro shader presets support by @KOPRajs in #27768
- CMusicRole::operator==: move to TU by @notspiff in #27807
- [System] Fixes for path manipulation with tests. by @78andyp in #27580
- Fix Claude Code workflow: resolve all critical issues by @keithah in #27814
- [Datacachecore] do reset audio cache only on format change by @Portisch in #27808
- [guilib] Remove redundant IsScrolling() dirty marking in GUIBaseContainer by @pannal in #27762
- [guilib] Consolidate GUIFadeLabelControl dirty marking during scroll/fade by @pannal in #27763
- Update to cmake v3.31.10 - fix compile error: assigning to 'curl_proxytype' from incompatible type 'long' by @cscd98 in #27657
- [guilib] Use binary search for letter navigation in GUIBaseContainer by @pannal in #27766
- [LocalizeStrings] Introduce ResourcesComponent, move localized string… by @enen92 in #27752
- [Python] Look for skin string ids in xbmc.getLocalizedstring by @enen92 in #27804
- [PVR] Fix range lookup for channel group by @enen92 in #27824
- Optimize emplace_back calls by @CrystalP in #27795
- [JSON-RPC] Add bitspersample enum to currentaudiostream and bump api to 13.9.0 by @scott967 in #27404
- chore(ci): remove Claude GitHub Actions workflows by @keithah in #27833
- [Settings] Add Advanced Settings Reload Notification + Use in FileExtensionsProvider and Renderers by @CrystalP in #27772
- [Android] Fix Pillow is broken since the bump to 12.0.0 by @joseluismarti in #27715
- Don't return const values by @notspiff in #27806
- Fix crash of addon install from 0 byte .zip by @CrystalP in #27803
- Drop some typedefs by @notspiff in #27848
- [webOS] Fix stream closing logic by @sundermann in #27817
- CDDARipJob: some cleanups by @notspiff in #27811
- gitignore: add tools/android/packaging/build by @cscd98 in #27823
- [Windows] Bump dnssd to 2881.60.4 by @thexai in #27835
- CArtist: drop related typedefs by @notspiff in #27856
- [Windows] Bump harfbuzz to 12.3.2 / freetype to 2.14.1 by @thexai in #27829
- LibInputKeyboard: trim newlines from [xkb] debug log messages by @chewitt in #27826
- [Windows] Bump libxml2 to 2.15.1 / libplist to 2.7.0 by @thexai in #27839
- [Games] RetroPlayer OpenGL rendering cleanup by @KOPRajs in #27843
- LocalizeStrings: drop typedefs by @notspiff in #27857
- Update metadata addons by @garbear in #27793
- VECALBUMS: drop typedef by @notspiff in #27861
- [MediaDrm] Code changes for libandroidjni dep modifications by @CastagnaIT in #27812
- drop unused CMusicDatabase::GetSongsByWhere by @notspiff in #27873
- Use forwarding by @notspiff in #27878
- WinSystemGbm: Fix direct-to-plane video tearing by @Kwiboo in #27809
- DVDVideoCodecDRMPRIME: Fix AV1 playback using v4l2request hwaccel by @Kwiboo in #27579
- Reorder parameters and drop default value by @notspiff in #27879
- Translations update from Kodi Weblate by @weblate in #27881
- SortOrder: convert to enum class by @notspiff in #27883
- [JobManager] Prevent deadlock in
OnJobComplete()by @neo1973 in #27780 - Revert "[tools/depends][target] Pythonmodule-pil set install location" by @joseluismarti in #27869
- [Video][Art] Fix art without the movie name is skipped in movie folders. by @78andyp in #27880
- SortSpecial: convert to enum class by @notspiff in #27885
- [Windows] use https in mirrors url by @CrystalP in #27872
- Update controller addons by @garbear in #27886
- [depends][target] Bump font libraries by @sundermann in #27854
- [depends][target] Bump libxml2 to 2.15.1 / libplist to 2.7.0 by @sundermann in #27855
- [Games] Make LUTs not pass specific by @KOPRajs in #27863
- [RetroPlayer] Add a frame-ended callback for FBO plumbing (needed for GL support) by @garbear in #27007
- [Windows][doc] Add download link for Visual Studio 2022 by @thexai in #27871
- [PVR] Parse daily wake-up time as a local time by @hughmcmaster in #27851
- guilib: Split up GUIMessage.h header by @garbear in #27888
- [Video][Library] Check for parsing nfos to ensure episode grouping respected when adding additional episodes. by @78andyp in #27877
- [Build] Use https for mirrors URL by @thexai in #27898
- [Windows] Remove unsupported platforms by @thexai in #27841
- SortUtils: various cleanup by @notspiff in #27887
- [addons] Fix typo in add-on function name by @Rainer-Keller in #26395
- [windows] PlatformDefs.h update typedef for ssize_t by @fuzzard in #27372
- RetroPlayer: Fix crash on stream close/re-open by @garbear in #27791
- Add IANA language subtag registry support by @CrystalP in #27893
- CGUIDialogNetworkSetup: fix missing folder label by @Portisch in #27908
- [ActiveAE] Fix audio stall and infinite loop during tempo seek by @linzack in #27911
- SortBy: convert to enum class by @notspiff in #27909
- Fix black screen for some games with non-256-byte-aligned stride by @garbear in #27895
- Linux: Respect
CORE_PLATFORM_NAMEfor depends builds by @garbear in #27896 - Remove unused variable and method from CAndroidStorageProvider by @joseluismarti in #27905
- [Windows] Bump libbdplus to 0.2.0 by @thexai in #27819
- [Windows] Bump libcdio to 2.3.0 by @thexai in #27858
- [depends][target] Bump libcdio to 2.3.0 by @sundermann in #27860
- [Windows] Bump Python to 3.14.3 / OpenSSL to 3.0.19 by @thexai in #27813
- [depends] Bump openssl to 3.0.19 / python3 to 3.14.3 by @sundermann in #27818
- [Windows] Bump libaacs to 0.11.1 by @thexai in #27822
- [depends] Bump zlib 1.3.2 by @sundermann in #27900
- [GUI][DV] Prefer first video stream found for thumbnail extraction by @graham8 in #27889
- Replace PRETTY_FUNCTION with FUNCTION when logging on Android by @joseluismarti in #27859
- [Windows] Refresh fstrcmp 0.7 by @thexai in #27870
- [Windows] Bump Detours to 9764ceb by @thexai in #27865
- [pictures] catch exiv2 exceptions by @enen92 in #27933
- [Android] Fix AFR not working after standby/wake cycle by @fritsch in #27928
- [Windows] Refresh tinyxml 2.6.2 by @thexai in #27866
- Fix build for libfmt < 10.0 by @CrystalP in #27927
- [Estuary] Change the display of tagline in DialogVideoInfo by @jjd-uk in #27867
- cmake: accept crossguid2 for CrossGUID by @jdieter in #27820
- [cmake] Enable building Lzo2 by @fuzzard in #27641
- [libUPnP] drop unused sources by @Portisch in #27846
- [libUPnP] Restore removed source by @garbear in #27942
- [Android] add XBMCMediaDrmOnKeyStatusChangeListener.java by @CastagnaIT in #27923
- Input: remove legacy "Hardy keycode" fallback by @HiassofT in #27946
- dbwrappers: support Fedora MariaDB header layout by @jdieter in #27821
- [Dependencies] Bump Libbluray/libudfread by @fuzzard in #27369
- chore: add .kodiai.yml to enable kodiai write mode by @keithah in #27955
- [filesystem] Log additional details for unsupported zip compression method by @CrystalP in #27957
- [database][mysql] Change MySQL/MariaDB charset/collation to utf8mb4/utf8mb4_general_ci by @CrystalP in #27952
- [Video] Adjust getting movie names from archives. by @78andyp in #27921
- LibInputKeyboard: log xkb keysym and name by @HiassofT in #27953
- [Android] Use relative class name path by @CastagnaIT in #27944
- [Database] Fix existing zip:// and rar:// paths in database following recent paths PR. by @78andyp in #27849
- [Video] Fix unable to set episode bookmarks. by @78andyp in #27910
- Clean up .gitignore files related to Android by @joseluismarti in #27967
- [cmake] Fix FetchContent re-download on each build by @thexai in #27966
- [dbwrappers] Remove Database class member last_err by @CrystalP in #27962
- [guilib] Fix heap corruption from sws_scale SIMD buffer overrun in texture allocation by @MikeSiLVO in #27970
- [Android] Remove legacy storage mount parsing by @joseluismarti in #27934
- [i18n] Fix pcre2 assert/crash in BCP47 full parser by @CrystalP in #27977
- VideoPlayer Chapter Change Accuracy by @CrystalP in #27969
- [webOS] VideoPlayer: Allow tempo by @sundermann in #27919
- Field: convert to enum class by @notspiff in #27920
- Fix loading savestate when starting Mupen64Plus-NX by @garbear in #27948
- cmake/linux: Fix building for VDPAU without GLX by @garbear in #27950
- [application] Fix video info not available when playing strm files. by @ksooo in #27980
- [PVR] CPVRGUIInfo::Start(): Ensure worker thread is stopped before creating it. by @ksooo in #27979
- [Piers] Release 22.0 Alpha 3 by @garbear in #27981
New Contributors
- @OfficerKD637 made their first contribution in #27450
- @Dave-Lowndes made their first contribution in #27562
- @albaintor made their first contribution in #27560
- @aanderse made their first contribution in #27556
- @glic3rinu made their first contribution in #27651
- @qzydustin made their first contribution in #27742
- @hughmcmaster made their first contribution in #27851
- @linzack made their first contribution in #27911
Full Changelog: 22.0a2-Piers...22.0a3-Piers