Release notes

Mir 2.29.0

  • New upstream release 2.29.0~dev

    • ABI summary:

      • miral ABI bumped to 8

      • mircommon ABI bumped to 13

      • mircore ABI bumped to 3

      • miroil ABI bumped to 10

      • mirplatform ABI bumped to 35

      • mirserver ABI bumped to 68

      • mirwayland ABI bumped to 7

      • mirplatformgraphics ABI bumped to 24

      • mirinputplatform ABI bumped to 11

    • Enhancements:

      • [Wayland] Implement xdg-dialog-v1 Wayland protocol #4790, #5122

      • [Wayland] Add support for the ext_foreign_toplevel_image_capture_source_manager_v1 extension #5002

      • [Wayland] Add support for taking a screenshot of a single surface #4936

      • [Wayland] Implement wl_region::subtract and tidy wl_region::add #5003

      • Add a touch emulator to map mouse clicks and drags to touch events #5091

      • Add command-line logging configuration #4928

      • [miral] Add register_log_filtering_config convenience helper #4937

      • [live config] Support for override directory #4781

      • [graphics] Add bytes-per-pixel to DRMFormat and use it for SHM stride validation #5000

      • [evdev-rs] Remove the blocking future await when grabbing a device file descriptor #4960

    • Renovations:

      • Migrate to C++26 #5028

      • Rebase on newest distro releases #4738

      • [miral] Use std::span in interfaces where possible #5078

      • [miral] Ref qualify WindowSpecification properties #5081

      • [miral] Tidy up the WindowManagementPolicy hierarchy #5072

      • Remove prompt sessions #5045

      • Remove EGLStream support #5044

      • Remove wl-drm support in favour of DMA-BUF #5061

      • Remove deprecated APIs #5018, #5021, #5057

      • Drop obsolete WindowManager::{add,remove}_display() methods #5023

      • Drop ServerConfiguration::the_screen_shooter() #5085

      • Drop AutoJoinThread #5066 and assorted dead code #5058, #5076, #5084

      • Update DecorationProvider to xdg-shell #4939

    • Bugs fixed:

      • wayland platform: two fixes for running Mir nested under another compositor #5020 (thanks @Azkali!)

      • miral: fix constrain resizes of windows without a size #4979 (thanks @muhammad23012009!)

      • Validate all inputs to wl_shm_pool::create_buffer #4885

      • frontend_wayland: raise invalid_fd when an SHM pool fd cannot be mapped #5010

      • frontend_wayland: reject xdg_toplevel max size smaller than min size #5008

      • Raise invalid_offset for non-zero wl_surface.attach offset (v5+) #5004

      • Raise invalid_size from xdg_surface.set_window_geometry #5006

      • Validate the serial in xdg_surface.ack_configure #5007

      • Track what type of data offer is being provided and validate requests #4935

      • Ensure no loops in toplevel parents #4894

      • [miral] ApplicationSwitcher: use whatever identity we have rather than treating a window as a “ghost” #5083. Fix late toplevel identity #5131

      • Return early from {add,drop}_input_trigger_event to avoid logging incorrectly #5082

      • ShmBacking: fix ignored std::expected return values #5024 and switch current_mapping to std::atomic #5026

      • [miral] add missing PhysicalSizeMM::operator== #5037 and constructor #5035 symbols

      • Fix FTBFS on amd64v3 #5060, #5127

      • refactor(x11): isolate the xcb XKB include workaround #5121

    • Documentation:

      • doc: update to Sphinx Stack 2 #5050

      • docs: update documentation for configuring screencasting via ext-image-copy-capture #5036

      • Document the Mir config override mechanism #5077

      • How to test Mir for a release #4992

      • Fix documentation errors in input trigger protocols #5070

      • doc: fix “Release notes” title and links #5062

      • doc: use -dev version outside of release branches #5056

      • Spelling fixes and skill #5011

      • Expand copilot instructions with build, CI, ABI and protocol integration guides #4913, and commenting/review guidance #5094

Mir 2.28.0

  • New upstream release 2.28.0

    • ABI summary:

      • miral ABI unchanged at 7

      • mircommon ABI unchanged at 12

      • mircore ABI unchanged at 2

      • miroil ABI unchanged at 8

      • mirplatform ABI unchanged at 34

      • mirserver ABI unchanged at 67

      • mirwayland ABI bumped to 6

      • mirplatformgraphics ABI unchanged at 23

      • mirinputplatform ABI unchanged at 10

    • Enhancements:

      • Implement org_kde_kwin_server_decoration #4956 (thanks @tsimonq2!)

      • Accept EGL_TEXTURE_EXTERNAL_WL #4888 (thanks @Azkali!)

      • use std::format* instead of C string formatting in xwayland_spawner.cpp #4793 (thanks @yotam-medini!)

      • Fixes TICS violations in wayland_connector.cpp #4804 (thanks @DigraJatin!)

      • Eliminate use of insecure temporary filename APIs #4813 (thanks @yotam-medini!)

      • Fix TICS violation of pointer arithmetic on polymorphic object, Use void* as map key #4827 (thanks @DigraJatin!)

      • correct include paths for pkg-config #4907 (thanks @sfalken!)

      • improve Ctrl+Shift+Numlock toggle shortcut #4812 (thanks @deepakshirkem!)

      • [wayland-rs] Generating implementations for Wayland events so that they can be sent from C++ to Rust to Wayland clients #4785

      • [wayland-rs] Generating global registration methods for wayland-rs #4825

      • [wayland-rs] Adding the ability to post an error on any object #4843

      • [wayland-rs] Implement a C++ friendly Wayland client and WaylandServerNotificationHandler for receiving notifications about new clients (and beyond) #4848

      • [live config] Re-implement array clearing in BasicStore and IniFile #4914

      • [live config] Apply live configuration in start_callback() #4978

      • [live config] Add tests for IniFile failure modes #4847

      • [graphics] Add MIR_PIN_COMPOSITING_TO to allow pinning a certain provider for display #4958

      • Initial implementation of the new logging API #4895

      • Add support for WLCS keyboard #4716

      • workshop: initial definition #4965

    • Bugs fixed:

      • [evdev] Fix file descriptors being removed by libinput #4853 (thanks @muhammad23012009!)

      • fix(console): restore previously active VT on LinuxVirtualTerminal cleanup #4842 (thanks @AristoChen!)

      • Fix - #4552, UTC time conversion was not thread safe #4972 (thanks @DigraJatin!)

      • [evdev-input-rs] Fix input lockup after VT switch #4791

      • Fix copy-paste error with setting positioner constraint adjustment #4869

      • graphics: fix leak in DisplayInfo #4877

      • Fix boolean logic checking for DnD actions #4892

      • fix-wrong-foreign-toplevel-logic #4957

      • Apply live touch pad config at startup and correct disable-with-external-mouse mapping #4943

      • Fix environment variables being overwritten when they match on prefix #4966

      • Upstream fixes to application switcher #4945

    • Documentation:

      • server: fix misspelling of occurred in shm_backing.h doc comments #4854 (thanks @SAY-5!)

      • Fix misspelling of occurred in toolkit event headers and hover click #4861 (thanks @SAY-5!)

      • Document XDG Portals support #4868

      • doc: add “Release a new Mir version” page #4906

    • New Contributors

Mir 2.26.0

  • New upstream release 2.26.0

    • ABI summary:

      • miral ABI unchanged at 7

      • mircommon ABI bumped to 12

      • mircore ABI unchanged at 2

      • miroil ABI unchanged at 8

      • mirplatform ABI unchanged at 34

      • mirserver ABI bumped to 67

      • mirwayland ABI unchanged at 5

      • mirplatformgraphics ABI unchanged at 23

      • mirinputplatform ABI unchanged at 10

    • Enhancements:

      • [evdev-rs] Implementing touch events in the evdev-rs platform #4671

      • [evdev-rs] Fix missing initial events in evdev-rs #4780

      • [evdev-rs] Add input event reporting to the evdev-rs input platform #4769

      • [evdev-rs] Cleanup of the device module in evdev-rs #4722

      • [evdev-rs] Fix evdev-rs pointer events by moving button state to per-device storage #4680

      • [evdev-rs] Refactor the event processing logic in evdev-rs to increase clarity #4740

      • [wayland-rs] Started implementing Wayland frontend in Rust

      • Allow CursorObservers to monitor when the cursor image changes #4579

      • Add requires clauses to libmiral templates #4764

      • [Wayland] ext-input-triggers - MVP (V1) #4328

      • [Wayland] Implement ext-input-triggers #4410

      • [Wayland] Update ext-input-trigger-action-v1.xml to add more details about token validity and availability #4770

      • [Wayland] Partial implementation of ext_image_copy_capture_v1 cursor sessions #4632

      • [Wayland] Send the cursor image via ext_image_copy_capture_v1 #4685

      • feature: replace strerror() with thread safe version(strerror_r()) #4590

      • feature: Move logging APIs (and defaults) to mircore #4644

      • CursorObserverMultiplexer sends the initial state to newly registered CursorObservers #4662

      • Refactor MinimalWindowManager for better specialization #4666

      • Add the ability to set the alpha of a Window and retrieve it via WindowInfo #4704

    • Bugs fixed:

      • BasicXCBConnection::destroy_window calls xcb_map_window instead of xcb_destroy_window #4560

      • XCB replies not always freed #4559

      • Making videos fullscreen in Google Chrome fails if the window isn’t already fullscreen #4688

      • [X11] Set _NET_CLIENT_LIST_STACKING #2023

      • Fatal signal handling is wildly unsafe #2658

      • DRM_CLIENT_CAP_ATOMIC check is performed with wrong ioctl call #4774

      • Clean up and improve mgk::find_crtc_with_primary_plane #3972

      • If a surface has an opaque region BUT the alpha is not 1.0, then we shouldn’t use it as an occlusion #4696

    • New Contributors

Mir 2.25.2

  • Bugs fixed:

    • PkgConf isn’t finding xkbcommon.h on openSUSE Tumbleweed #4544

    • libmirplatform-dev does not upgrade if mir-renderer-gl-dev is installed #4563

Mir 2.25.1

  • Bug fix for PkgConf files missing versions #4544

Mir 2.25.0

  • New upstream release 2.25.0

    • ABI summary:

      • miral ABI unchanged at 7

      • mircommon ABI unchanged at 11

      • mircore ABI unchanged at 2

      • miroil ABI unchanged at 8

      • mirplatform ABI bumped to 34

      • mirserver ABI bumped to 66

      • mirwayland ABI unchanged at 5

      • mirplatformgraphics ABI unchanged at 23

      • mirinputplatform ABI unchanged at 10

    • Enhancements:

      • [Wayland] Add support for the ext_foreign_toplevel_list_v1 extension

      • [Wayland] Implement ext-data-control

      • [Wayland] Partial implementation of ext-image-capture-source and ext-image-copy-capture Wayland extensions

      • Rework wayland extension management so that connections originating from the server can always use the required extensions

      • Implementation of an evdev platform in rust

      • Added copilot instructions

      • Roll mir-renderer-gl (et alia) into mirplatform

      • Publish the mirplatform headers used outside mirplatform

      • Improve Cursor Scale animation

      • Implement LocatePointer

      • Implement ApplicationSwitcher

      • Implement the StandardApplicationSwitcher for ease of use

      • New FloatingWindowManager and deprecate MinimalWindowManager

      • Handle opaque regions of transparent surfaces

      • Log security events according to OWASP format

      • Add geometry::Value generic accessors for type-safe value conversion

      • Move mir::report_exception() to mircore

    • Bugs fixed:

      • Cursor icons don’t change with XTerm (#4134)

      • Fix magnifier filter not consuming events when magnifications is greater/less than the max/min (#4386)

      • If no specified cursor theme loads, then internal theme (#439)

      • Renderer: Ensure current EGL context when destroying GL resources (#4460)

      • Fix XWayland menu positioning by initializing spec from cached geometry (#4512)

      • [Wayland] Implement wl_subsurface.place_above and place_below with parent z-ordering (#4332)

      • WindowInfo::clip_area is incorrect if the output is scaled (#4484)

      • Check DRM_CAP_SYNCOBJ_TIMELINE in platform layer before providing DRMRenderingProvider

      • Fix cursor size getting truncated after scaling leading to crash (#4377)

      • Intermittent crash (#4323)

    • Documentation:

      • Add Release Notes template

      • Update the input platform explanation to include information about threading

      • Refresh some links