The following modules have been removed in this release:
   gcr-3, gnome-keyring, evince, gtksourceview-4

The following modules have a new version:
- at-spi2-core (2.60.0 => 2.61.0)
- blueprint-compiler (0.20.0 => 0.20.4)
- decibels (49.0 => 49.6.1)
- epiphany (50.0 => 51.alpha)
- evolution-data-server (3.60.0 => 3.61.1)
- foundry (1.1.1 => 1.2.alpha)
- gdk-pixbuf (2.44.5 => 2.44.7)
- gdm (50.0 => 51.alpha)
- gexiv2 (0.16.0 => 0.16.1)
- gjs (1.88.0 => 1.89.1)
- glib (2.88.0 => 2.89.1)
- glib-networking (2.80.1 => 2.90.alpha)
- glibmm (2.86.0 => 2.88.1)
- glycin (2.1.0 => 2.2.alpha.5)
- gnome-backgrounds (50.0 => 51.alpha.0)
- gnome-bluetooth (47.1 => 47.2)
- gnome-builder (50.rc.1 => 50.0)
- gnome-calculator (50.0 => 51.alpha)
- gnome-calendar (50.0 => 51.alpha)
- gnome-control-center (50.0 => 51.alpha)
- gnome-desktop (44.5 => 51.alpha)
- gnome-initial-setup (50.rc => 51.alpha)
- gnome-maps (50.0 => 51.alpha)
- gnome-music (49.1 => 50.0)
- gnome-online-accounts (3.58.0 => 3.58.1)
- gnome-remote-desktop (50.0 => 51.alpha)
- gnome-session (50.0 => 51.alpha)
- gnome-settings-daemon (50.0 => 51.alpha)
- gnome-shell (50.0 => 51.alpha)
- gnome-software (50.0 => 51.alpha)
- gnome-text-editor (50.0 => 50.1)
- gnome-tour (50.rc => 50.0)
- gnome-user-docs (50.0 => 51.alpha)
- gnome-user-share (48.2 => 48.3)
- gsettings-desktop-schemas (50.0 => 51.alpha)
- gssdp (1.6.4 => 1.6.6)
- gst-thumbnailers (1.0.0 => 1.1.alpha)
- gtk (4.22.1 => 4.23.2)
- gtk+-3 (3.24.51 => 3.24.52)
- gtk-doc (1.36.0 => 1.36.1)
- gtkmm (4.22.0 => 4.23.0)
- gupnp (1.6.9 => 1.6.10)
- gupnp-av (0.14.4 => 0.14.5)
- gvfs (1.60.0 => 1.61.1)
- libadwaita (1.9.0 => 1.10.alpha)
- libdex (1.1.0 => 1.2.alpha)
- libgsf (1.14.56 => 1.14.58)
- librsvg (2.62.0 => 2.62.90)
- libshumate (1.6.0 => 1.7.alpha)
- libsoup (3.6.6 => 3.7.1)
- localsearch (3.11.0 => 3.12.alpha)
- loupe (50.0 => 51.alpha)
- mm-common (1.0.7 => 1.0.8)
- mutter (50.0 => 51.alpha)
- nautilus (50.0 => 51.alpha)
- orca (50.0.7 => 50.2)
- pango (1.57.0 => 1.58.0)
- pangomm (2.56.1 => 2.56.2)
- papers (50.0 => 50.2)
- pyatspi (2.58.1 => 2.58.2)
- pygobject (3.56.1 => 3.56.3)
- rygel (45.1 => 46.alpha)
- simple-scan (49.1 => 50.0)
- snapshot (50.0 => 51.alpha)
- sushi (50.rc.1 => 51.alpha)
- sysprof (50.0 => 51.alpha)
- tinysparql (3.11.0 => 3.12.alpha)
- totem-pl-parser (3.26.6 => 3.26.7)
- vala (0.56.18 => 0.56.19)
- xdg-desktop-portal-gnome (50.0 => 51.alpha)
- yelp (49.0 => 49.1)
- zenity (4.2.1 => 4.2.2)

The following modules weren't upgraded in this release:
   adwaita-fonts, adwaita-icon-theme, baobab, calls, cantarell-fonts, d-spy, dconf, dconf-editor, folks, gcab, gcr, geocode-glib, gi-docgen, gnome-app-list, gnome-autoar, gnome-boxes, gnome-characters, gnome-clocks, gnome-color-manager, gnome-connections, gnome-console, gnome-contacts, gnome-disk-utility, gnome-font-viewer, gnome-logs, gnome-menus, gnome-system-monitor, gnome-weather, gobject-introspection, gom, grilo, grilo-plugins, gsound, gtk-vnc, gtksourceview, gupnp-dlna, gweather-locations, json-glib, jsonrpc-glib, libcloudproviders, libgee, libgit2-glib, libgtop, libgweather, libgxps, libhandy, libmanette, libmanette-0.2, libmediaart, libnma, libnotify, libpanel, libpeas, librest, libsecret, libspelling, manuals, mobile-broadband-provider-info, msgraph, phodav, showtime, startup-notification, tecla, template-glib, vte, xdg-user-dirs-gtk, yelp-tools, yelp-xsl

========================================
  at-spi2-core
========================================

What's new in at-spi2-core 2.61.0:

* Add atspi_set_g_main_loop_reentrancy. If this is enabled, then
  libatspi will use a GMainLoop when waiting for replies from DBus calls.
  This is off by default but can be enabled in cases where reentrancy is
  needed.

* at-spi-bus-launcher: Rework the way org.a11y.Status.IsEnabled is
  handled. At-spi-bus-launcher now listens for ATs registering events and
  assumes that accessibility is enabled if events are registered, rather
  than relying on the value of a gsettings key.

* meson: Build dbind with -DG_LOG_DOMAIN=atspi.

* libatspi: Disable direct DBus connections if ATSPI_DISABLE_P2P is set.

* Do not call GetItems if ATSPI_NO_CACHE is set.

What's new in at-spi2-core 2.60.5:

* Fix a possible crash in atk_bridge_adaptor_cleanup.

* Attempt to fix event listeners still being wrongly deregistered in some
  cases.

What's new in at-spi2-core 2.60.4:

* AtspiDeviceA11yManager: Make use of pid when returned by queryPointer

* Fix deregistering application-specific event listeners

What's new in at-spi2-core 2.60.3:

* libatspi: Fix another NULL pointer dereference.

What's new in at-spi2-core 2.60.2:

* atspi-device-legacy: add null checks for when x11 isnt available.

* python: Fix __getitem__ with a negative offset.

* Fix a NULL pointer dereference when sending an event.

* device-x11: Fall back on raw key events if there is no focus.

What's new in at-spi2-core 2.60.1:

* Detect unresponsive applications, and do not expose them as children
  of the desktop.

* Attempt to fix a crash when opening a group chat in pidgin that contains
  new messages.


========================================
  decibels
========================================

49.6
---

* Bugs fixed:
  - #140 Decibels doesn't set audio stream metadata (pretty name, icon and
    current playback title) for other PipeWire apps (DaPigGuy)
  - #147 Volume Meter shows incorrect default value (50%) after starting the
    application
  - !169 metainfo: Change component type to "desktop-application"
  - !171 fix(mpris): SetPosition and OpenUri
  - !175 metainfo: Use supports for controls

* Translation updates:
  - Basque (Asier Saratsua Garmendia)
  - Bulgarian (twlvnn kraftwerk)
  - Catalan (Victor Dargallo)
  - Chinese (China) (luming zh)
  - Cornish (Flynn Peck)
  - Czech (Daniel Rusek)
  - Danish (Alan Mortensen)
  - English (United Kingdom) (Bruce Cowan)
  - Esperanto (Kristjan SCHMIDT)
  - Finnish (Jiri Grönroos)
  - French (Lucien)
  - Galician (Fran Diéguez)
  - Georgian (Ekaterine Papava)
  - German (Jürgen Benvenuti)
  - Greek, Modern (1453-) (Efstathios Iosifidis)
  - Hebrew (Yaron Shahrabani)
  - Hungarian (Balázs Úr)
  - Icelandic (Sveinn í Felli)
  - Japanese (小山田 純 - Oyamada Jun)
  - Kazakh (Baurzhan Muftakhidinov)
  - Korean (Seong-ho Cho)
  - Lithuanian (Aurimas Aurimas Černius)
  - Nepali (Pawan Chitrakar)
  - Occitan (post 1500) (Quentin PAGÈS)
  - Persian (Danial Behzadi)
  - Polish (Adam Lewicki)
  - Portuguese (Hugo Carvalho)
  - Portuguese (Brazil) (Rafael Fontenelle)
  - Romanian (Antonio Marin)
  - Russian (Artur S0)
  - Serbian (Марко Костић)
  - Serbian (Latin script) (Милош Поповић)
  - Slovenian (Martin)
  - Spanish (Daniel Mustieles)
  - Swedish (Anders Jonsson)
  - Thai (Aefgh Threenine)
  - Turkish (Sabri Ünal)
  - Uighur (Abduqadir Abliz)
  - Ukrainian (Yuri Chornoivan)


========================================
  epiphany
========================================

51.alpha - June 25, 2026
========================

* Bugs fixed:
  - #2712 Crash when opening preferences dialog after deleting default search
    engine (Michael Catanzaro)
  - #2769 [Feature Request] Keyboard shortcut to copy the current page URL
    (Aygyun)
  - #2834 Search engine suggestions in addressbar autocompletion dropdown are
    visually overloading due to their URLs being shown (ARAKHNID)
  - #2868 Addressbar URL prettification does not understand IPv6 addresses
    (Achu94)
  - #2875 Editing password username creates duplicate entries (Michael
    Catanzaro)
  - !1987 webextension: Replace EphyWebExtension with WebKitWebExtension (Jamie
    Murphy)
  - !2052 Firefox sync OAuth token flow (Dyego Aurélio)
  - !2077 Use libportal API to detect sandbox (ARAKHNID)
  - !2082 window-commands: improve notification when failing to install (Simon
    Pena)
  - !2085 Change default adblock filters back to bnema (Michael Catanzaro)
  - !2086 window: Set devel CSS also for Canary builds (Philippe Normand)
  - !2089 canary: Disable Vulkan support (Philippe Normand)
  - !2090 site-menu-button: add rudimentary debug logging (Michael Catanzaro)
  - !2091 password-manager: fix crash when deleting password record (Michael
    Catanzaro)
  - !2094 Quote command line input before passing to shell (Michael Catanzaro)
  - !2098 password-manager: avoid duplicate record when changing username
    (Michael Catanzaro)
  - !2099 Fix crash when opening preferences dialog after deleting a search
    engine (Michael Catanzaro)
  - !2100 bookmark-props: Save bookmark on Ctrl + Enter (Zoey Ahmed)
  - !2101 bookmark-props: Select tag when row is clicked on (Zoey Ahmed)
  - !2102 web-view: fix memory corruption caused by previous memory corruption
    fix (Michael Catanzaro)
  - !2103 docs: clarify HiDPI snapshot sizing requirements and refactor
    about.css for readability (IGS_GIT)
  - !2104 Fix crash after adding a new OpenSearch engine (Michael Catanzaro)
  - !2105 feat: add undo functionality to overview item removal via toast
    notifications (IGS_GIT)
  - !2106 site-menu-button: remove unused function (Michael Catanzaro)
  - !2107 shortcuts: document F6 shortcut (YukiCodepth)
  - !2108 Allow user to generate secure passwords with libpwquality (Michael
    Catanzaro, IGS_GIT, John Cardullo)

* Translation updates:
  - Belarusian (Vasil Pupkin)
  - Czech (Patrik Sivek)
  - Lao (Saikeo Kavhanxay)
  - Persian (Danial Behzadi)
  - Polish (Victoria Niedzielska)
  - Romanian (Antonio Marin)
  - Slovak (Jose Riha)
  - Slovenian (Martin)
  - Thai (Aefgh Threenine)

50.4 - April 23, 2026
=====================

* Bugs fixed:
  - #2851 No way to "not" quit a webapp through keyboard shortcuts when "Run in
    background" is enabled (ARAKHNID)
  - #2857 adw_tab_view_get_page: assertion 'child_belongs_to_this_view (self,
    child)' failed (Michael Catanzaro)
  - #2858 Crash when passing invalid command line option (Michael Catanzaro)
  - #2859 URLs containing various characters cannot be deleted from history
    (Michael Catanzaro)
  - #2862 ephy_site_menu_button_update_search_engine_item crash on 32 bit
    (Michael Catanzaro)
  - #2863 Epiphany 49.7 crashes at launch (Michael Catanzaro)
  - !2073 Fix failure to delete URLs from history (Michael Catanzaro)
  - !2076 shell: keep going until all windows are destroyed (Michael Catanzaro)
  - !2083 Fix more problems in the filters manager, including crash on startup
    (Michael Catanzaro)

* Translation updates:
  - Dutch (Reinout van Schouwen)
  - German (Christian Kirbach)
  - Polish (Victoria Niedzielska)
  - Slovak (Jose Riha)
  - Turkish (Emin Tufan Çetin)

50.3 - March 24, 2026
=====================

This release reverts back to the original adblock filters used before 50.rc.

* Bugs fixed:
  - #2848 Regression in site compatibility due to adblocking (Michael Catanzaro)
  - !2065 ci: Remove workflow:rules (Jordan Petridis)
  - !2067 filters-manager: fix disabling adblocker (Michael Catanzaro)
  - !2068 Switch back to easylist-downloads.adblockplus.org (Michael Catanzaro)

50.2 - March 20, 2026
=====================

* Bugs fixed:
  - #2847 Crash in ephy_window_set_active_tab() (ARAKHNID)
  - !2059 Add 15 second timeout when fetching adblock filters (Michael
    Catanzaro)
  - !2063 shell: fix crash when invalid URL passed on command line (Michael
    Catanzaro)
  - !2064 Many fixes for the adblocker (Michael Catanzaro)

* Translation updates:
  - Occitan (post 1500) (Quentin PAGÈS)

50.1 - March 18, 2026
=====================

* Bugs fixed:
  - !2060 Remove ublock filter rules (Michael Catanzaro)

* Translation updates:
  - Italian (Davide Ferracin)
  - Occitan (post 1500) (Quentin PAGÈS)
  - Serbian (Марко Костић)


========================================
  evolution-data-server
========================================

Evolution-Data-Server 3.61.1 2026-06-26
---------------------------------------

Bug Fixes:
	I#143 - WebDAV: Implement sync-collection (RFC 6578)
	I#220 - Allow message body indexing for local accounts again
	I#510 - goa: Fix a race when reading accounts after start
	I#630 - nntp: Chunk OVER requests with adaptive retry and auto-reconnect (Mikhail Gavrilov)
	I#632 - nntp: Fix GSocket ref leak in stream timeout helpers (Mikhail Gavrilov)
	I#634 - Maildir: Prevent creating folders of a similar name
	I#637 - IMAPx: Sent folder reverts to default with iCloud email and Quick Resync
	I#643 - Camel: Clean up provider conf entries definitions
	I#644 - Maildir: Prefer flags from the file name (externally modified)
	I#645 - OAuth2: Correct when using collection ESource for child sources
	I#647 - Calendar: Atomic write breaks .ics file change monitoring
	M!207 - camel: Use XDG_DATA_HOME for nssdb path (André)
	M!222 - Make CMAKE_BUILD_TYPE enumeration for cmake-gui (Дилян Палаузов)
	M!223 - CI: Avoid extra path in cmake invocation (Дилян Палаузов)
	M!224 - Remove unneeded GLIB_CHECK_VERSION macros (Дилян Палаузов)
	evo-I#538 - GOA: Change how GOA accounts have set OAuth2 support
	evo-I#2624 - Add per-account composer mode property to ESourceMailComposition
	evo-I#3302 - Truncated file stored in the (mail) cache
	evo-I#3322 - IMAP: Add "Manage subscriptions" into "Receiving options"
	evo-I#3344 - ECredentialsPrompter: Inherit modality from the parent window

Miscellaneous:
	nntp: Rename nntp_get_stream_socket() to nntp_ref_stream_socket()
	ESoupSession: Correct e_soup_session_get_authentication_requires_credentials()
	Remove function declarations with no implementation (Corentin Noël)
	e-gdata-session: Ensure soup message body is filled on retry
	CamelStoreSearch: Remove dead code (Corentin Noël)
	CamelStreamProcess: Handle the errno before doing other system calls (Corentin Noël)
	CamelSmtpTransport: Fix a potential double-free error (Corentin Noël)
	camel: Add documentation (Corentin Noël)
	camel: Fix DIGEST-MD5 setting authenticated on rspauth mismatch
	camel: Fix off-by-one OOB read in RFC 2047 quoted_decode
	e-oauth2-service: Do not log secret contents on JSON parse failure
	camel: Fix shell command injection in NTLM SASL authentication
	pop3: Add maximum line buffer size to prevent unbounded memory growth
	smtp: Sanitize ENVID parameter to prevent SMTP command injection
	pop3: Reject credentials containing CRLF to prevent command injection
	smtp: Fix heap out-of-bounds read in smtp_decode_status_code
	ESoupSession: Reject HTTPS-to-HTTP redirects
	camel: Add MIME nesting depth limit to prevent stack exhaustion
	e-oauth2-service: Add state parameter to OAuth2 authorization requests
	camel: Add size limits on MIME header blocks and body parts
	carddav: Validate photo/logo URI origin to prevent SSRF
	e-ms-oapxbc: Simplify error handling in MS-OAPXBC OIDC extension (Felix Moessbauer)
	e-ms-oapxbc: Fix error handling of broker response (Felix Moessbauer)
	e-ms-oapxbc: Align D-Bus parameters with sso-mib (Felix Moessbauer)
	e-ms-oapxbc: Add support for broker versions > 2.0.1 (Felix Moessbauer)
	Fix some compiler warnings
	docs: Remove all "Contains only private data…" from structure comments (Corentin Noël)
	docs: Put Camel documentation into a subfolder (Corentin Noël)
	Do not lock SExp object in data book/cal views start
	e-book-meta-backend: Handle data: URI-s in PHOTO/LOGO
	Calendar: Use icaldurationtype_as_utc_seconds() for libical 4.x (Antonio Rojas)
	Convert license/copyright comments into SPDX notation
	OAuth2: Use its own error domain and add camel_util_is_network_error()
	camel: Add atomic write API to CamelDataCache and convert all providers
	POP3: Remove sentinel bytes and migrate existing cache files
	camel: Recognize all G_TLS_ERROR codes as network errors
	camel: Clean up test files and convert them to glib test API
	CI: Add a job to produce a test coverage report (Federico Mena Quintero)
	CI: add a job for static analysis with scan-build (Federico Mena Quintero)
	CI: Add a job to run the tests with address and undefined-behavior sanitizers (Federico Mena Quintero)
	camel: Test substring body search with and without index
	Camel: Move search with index from the store search to a common place
	camel: Fix CamelCertDB leak in camel_shutdown()
	Camel: Add GSETTINGS_SCHEMA_DIR into the tests
	Camel: Reorganize tests directories
	Use "--output-on-failure" for ctest in "make test"
	docs/index.html: Provide links to the coverage and static analysis reports (Federico Mena Quintero)
	Make the scan-build page's title prettier (Federico Mena Quintero)
	Calendar: Do not use persistent refresh thread in the 'file' backend
	tests: Flush main context when finishing server tests
	Drop optional gtk+ code from background processes

Translations:
	Aurimas Aurimas Černius (lt)
	Ekaterine Papava (ka)
	Emin Tufan Çetin (tr)
	Juliano de Souza Camargo (pt_BR)
	Kjartan Maraas (nb)
	Kristjan ESPERANTO (eo)
	Марко Костић (sr)
	Martin (sl)
	Yuri Chornoivan (uk)


========================================
  foundry
========================================

Foundry 1.2.alpha
=================

**Version Control**
 * Add FoundryVcsGraph and FoundryVcsGraphEntry abstractions for repository
   graph rendering
 * Add Git-backed graph generation and helper APIs
 * Add FoundryGitLanes GTK widget for drawing git-style commit lanes
 * Move git blame updates and clone operations onto worker threads
 * Existing git thread use has been condensed to DexThreadPool
 * Add Sysprof trace marks around git operations

**Tracing and Diagnostics**
 * Add a private Foundry tracing abstraction backed by sysprof-capture when
   available
 * Add optional sysprof build support
 * Add tracing around Flatpak manifest loading and libflatpak integration
 * Give fibers more useful names across the codebase

**API**
 * Add FoundryFutureItem for presenting a future-backed object in model APIs
 * Add foundry_file_canonicalize() DexFuture wrapper
 * Add JSON-RPC await helper for completion notifications
 * Add FoundryContext helpers for per-context local state
 * Add foundry_git_oid_dup_string() helper

**GTK and Editor Integration**
 * Implement apply_edit() for GtkSourceBuffer
 * Fix source-buffer property names and documentation typos
 * Fix Clang warnings in libfoundry-gtk

**Bug fixes**
 * foundry: call dex_init() at startup
 * libfoundry/jsonrpc: fix read_upto() return type and inverted error check
 * libfoundry/build: check optional vfuncs before calling them
 * libfoundry/git: fix an erroneous NULL check
 * plugins/devhelp: deduplicate .devhelp2 files by realpath()
 * plugins/gitlab: improve request error handling
 * testsuite: properly gate ACP tests
 * subprojects: use an older Gom revision for compatibility
 * CI: disable goblint

**Translations**
 * New: French, Hebrew, Kabyle, Lao, Norwegian Bokmal, Persian, Slovak, Thai
 * Updated: Chinese (China), Persian, Slovenian, Thai


========================================
  gdk-pixbuf
========================================

2.44.7
===
- xpm: Fix loading the xpm module if built-in
- glycin: Fix the build on 32bit
- glycin: Use fwrite to avoid problems with saving
- glycin: Add signature for webp
- glycin: Make filename tricks work in pid namespaces
- Translation updates

2.44.6
===

- build: Add a legacy_xpm option to build the old xpm loader
- xpm: Rename the old xpm loader to legacy-xpm, and use it
  for gdk_pixbuf_new_from_xpm_data if it is available.
  Note that the old loader will only be used for this purpose.
  xpm files still get loaded with glycin
- jpeg: Reject data with an unsupported number of components
- Update contribution guidelines
- glycin: Fix an issue with looping animations
- Do not accidentally query loaders from the host

- glycin: Add support for xpm and xbm.
  Note that xpm+xbm support is new in glycin 2.1
- Translation updates

========================================
  gdm
========================================

51.alpha
========

* Compatibility with kmsconvt
* Add checks to make sure PAM plugins don't drop fsuid privilges and break GDM
* CI improvements
* Reworked the way GDM constructs XDG_DATA_DIRS for its launch environment, so
  that it will no longer hard-code /usr/share at a higher priority than
  /usr/local/share. This behavior would prevent people from locally hacking
  on gnome-shell with --prefix=/usr/local without also having to rebuild GDM
  with the same prefix
* Reworked conflicting session logic to use logind for enumeration. Previously,
  GDM would only look for sessions it started itself, but that would cause it
  to miss conflicting sessions started externally, such as those from ThinLinc
  or TigerVNC
* Fixed bug where plymouth never quit on headless or no-monitor systems, which
  would prevent the system from ever reaching graphical.target
* Added setting to change the fallback session. This is the session that gets
  used whenever a user doesn't have a preferred session selected, or their
  preferred session is unusable. Sysadmins can use this setting to change the
  selected session for users that have never logged into the system before
* Fixed bug where GDM would start X11 sessions with XDG_SESSION_TYPE=wayland
* Fixed PAM handling code to notify PAM modules when we've switched user and
  are about to exec the session leader. This fixes PAM modules like pam_cap.so
  in its `defer` mode
* Removed unnecessary `SetRemoteId` method from the remote display DBus API
* Added setting to turn off local greeter sessions, for headless-only systems
* Removed unused settings
* Documented remote display DBus API
* Documented GDM's settings
* Dropped dconf override of org.gnome.desktop.session.session-name, and instead
  gnome-session is now explicitly told to launch the GDM login screen UI even if
  dconf overrides fail to get applied
* Addressed warnings from Fedora's static analyzer
* Fixed bug where the kernel's VT cursor may flicker during the transition
  between graphical sessions (i.e. at log out)
* Dropped ancient GDM docs, which have been out of date for a very long time and
  are entirely inaccurate now.
* Fixed some more misc. bugs: memory leaks, crashes, etc
* Translation updates

NOTE: In the previous 50.X release series, we removed GDM's ability to execute
the various PreSession/PostSession/etc scripts as part of the X11 removal.
However, it turned out that some people were using these hook points on Wayland,
despite their limited functionality there. Still, the feature is gone for good,
and I wanted to make sure it's listed in the changelog. See the issue for more
details and context: https://gitlab.gnome.org/GNOME/gdm/-/work_items/1059


========================================
  gexiv2
========================================

gexiv2 0.16.1 - 27 Jun 2026 (stable)

 * Fix issue with GIR missing correct package name
 * Fix memory leak in regression test
 * Add missing assert in GPS test

All contributors to this release:
 - Jens Georg <mail@jensge.org>
 - correctmost <136447-correctmost@users.noreply.gitlab.gnome.org>
 - Daniel P. Berrangé <berrange@redhat.com>


========================================
  gjs
========================================

Version 1.89.1
--------------

- This is the alpha release for the GNOME 51 cycle.

- Cairo.Context has gained a fontExtents() method, which returns a property bag
  with properties corresponding to the fields of `cairo_font_extents_t`, and a
  textPath() method, which renders text as a path. Also, getFontMatrix() and
  setFontMatrix() which return and accept property bags corresponding to the
  fields of `cairo_matrix_t`. All of these are thanks to Daniel Wood.

- Gtk.Widget has gained static methods add_binding(), add_binding_action(), and
  add_binding_signal() (GTK 4 only), for conveniently adding keyboard shortcuts
  to call a function, invoke a Gtk.ShortcutAction, or emit a signal. Florian
  Müllner added these.

- Some work-in-progress has been merged, making GNOME platform objects more
  transparent to the JS garbage collector so that it can make better choices
  about when to collect. This has the additional bonus of making the info from
  System.dumpMemoryInfo (visible in Sysprof or dumped to a JSON file) more
  accurate.
  Tim Chevalier implemented this work, which is being sponsored by Igalia and is
  a prerequisite for removing the Big Hammer workaround.

- Backwards-incompatible change: Creating a GObject.Interface no longer installs
  its methods as unbound static methods on the constructor. This was based on an
  old, nonstandard custom of "generic methods" from the old Mozilla days and
  modern JS doesn't work like that.
  Additionally, this never worked as you might expect: `Interface.method(obj)`
  would not call obj's implementation of the interface method, but Interface's
  default implementation, which might do nothing or throw NotImplementedError.
  The only thing it was good for was slightly shorter syntax when chaining up to
  the default implementation. If you were using it that way, here's how to
  migrate your code:

      class MyClass extends GObject.Object {
          static [GObject.Implements] = [MyInterface];
          static { GObject.registerClass(MyClass); }
          myMethod() {
              return MyInterface.myMethod(this);  // OLD
              return MyInterface.prototype.myMethod.call(this);  // NEW
          }
      }

- Closed bugs and merge requests:
  * Track memory usage for object prototypes [!1072, Tim Chevalier]
  * Add Cairo font extents [!1073, Daniel Wood]
  * More accurate memory usage statistics for Cairo and GdkPixbuf types [!1075,
    Tim Chevalier]
  * Various maintenance [!1076, !1077, !1084, !1085, !1086, !1087, !1090, !1091,
    Philip Chimento]
  * Cairo/text path [!1080, Daniel Wood]
  * profiler: Write last value of memory counters [!1081, Philip Chimento]
  * testCommandLine's non UTF8 file names test fails on ZFS with utf8only=on
    [#733, !1088, Marisa]
  * Cairo/fontMatrix [!1089, Daniel Wood]
  * overrides/Gtk: Support add_binding*() class methods [!1092, Florian Müllner]
  * More accurate memory usage statistics for GBytes type [!1093, Tim Chevalier]
  * function: Avoid heap-allocating small argument arrays [!1094, Andre Nijman]
  * Arguments to `Gio.Application.run()` dropped by `runAsync()` wrapper [#738,
    !1096, Philip Chimento]

Version 1.88.1
--------------

- Closed bugs and merge requests:
  * Breaking change introduced in 1.87.1 [#730, !1082, Philip Chimento]
  * maint: Check for NULL before dereferencing error_out pointer [!1083, Daniel
    van Vugt]


========================================
  glib
========================================

Overview of changes in GLib 2.89.1, 2026-06-25
==============================================

* Bugs fixed:
  - #3972 g_thread_yield() may not yield control to another thread as expected
    on Linux.
  - !5086 gio: gmemorymonitordbus: Fix fallback backends can't be properly
    loaded when...
  - !5184 gregex: Remove "array length" annotations
  - !5190 win32-build.md: Update Visual Studio build info
  - !5191 Don't use slow content type for icons when only fast content is
    queried
  - !5192 Update Romanian translation
  - !5195 Update Slovenian translation
  - !5196 Performance improvements to GVariant/GDBusMessage
  - !5197 docs: fix wrong reference to gint16 for gint32 types in glib/types.md
  - !5198 Add missing finish-func annotations
  - !5199 gregex: g_match_info_fetch_pos() and g_match_info_fetch_all() will now
    work after partial matches as well
  - !5200 gdatetime: Clarify docs around comparisons across time zones
  - !5201 docs: GI annotation fixes for GCancellable
  - !5202 Update Slovenian translation
  - !5205 tests: Fix various leaks spotted by ASAN
  - !5206 docs + tests: fix docs and add unit test about g_try_new with zero
    n_structs
  - !5207 Update Romanian translation
  - !5209 CI: Set msys2-clang64 as default job for merges
  - !5210 docs: add missing reference to g_rc_box_new0 and g_atomic_rc_box_new0
    and others in Reference Counting page
  - !5211 gutf8: Eliminate redundant double-traversal in g_utf8_substring
  - !5213 gsocket: Improve docs for g_socket_get_fd()
  - !5214 gerror: Add missing introspection annotations
  - !5216 Use dlopen to access environ on FreeBSD
  - !5218 gvariant: Check for overflow in g_variant_new_fixed_array()
  - !5221 meson: Override girepository-2.0 when glib is used as subproject

* Translation updates:
  - Romanian (Antonio Marin)
  - Slovenian (Martin)


Overview of changes in GLib 2.89.0, 2026-05-20
==============================================

* Fix miscompilation with GCC 16 due to GLib’s use of the wrong function
  attribute (!5145, work by Sam James)

* Integrate better with the System Trash on macOS (#1161, work by Byoungchan Lee)

* Add `g_set_strv()`, `g_set_strv_take()` and `g_set_str_take()` convenience
  functions (#3907, !5118, work by Christian Hergert and Philip Withnall)

* Fix flag confusion security issue when using `GRegex` with `G_REGEX_RAW` which
  can result in unbounded out-of-bounds heap reads off the start of a regex
  input string (#3919, work by linhlhq)

* Fix various minor (low severity) security issues, typically one-to-five-byte
  out-of-bounds reads (#3915, #3916, #3917, #3918, #3930) or ones relying on
  very specific (and unlikely) API calls (#3925) or ones relying on
  discouraged P2P D-Bus configurations (#3931, #3933) (work by linhlhq)

* Add support for `GTypeInstance`-derived types in generic marshaller (#3954,
  work by Christian Hergert)

* Change `g_get_num_processors()` to report number of performance cores, rather
  than number of performance+low-power cores on macOS (!5153, work by John Cupitt)

* Add support for `XDG_PROJECTS_DIR` special directory (!5141, work by
  Emmanuele Bassi and Jakub Steiner)

* Bugs fixed:
  - #1161 g_file_trash() Files not moved to System Trash on Mac OSX
  - #1853 DBus activated GApplications and G_APPLICATION_HANDLES_OPEN (Guido
    Günther)
  - #2173 g_ascii_strtod() spec doesn't match C99/C11 standard for underflow
    behavior (depuc8)
  - #3069 gio/trash test fails on macOS
  - #3791 g_error causes -Wanalyzer-infinite-loop warnings in downstream code
    (correctmost)
  - #3854 GRegex uses int for string length (Philip Withnall)
  - #3907 Add g_set_strv() helper similar to g_set_str() (Christian Hergert)
  - #3911 GMarkup chokes on BOM
  - #3915 (#YWH-PGM9867-190) Buffer Over-read on GLib through glib/gvariant-
    serialiser.c:1253 via gvs_tuple_is_normal() (Philip Withnall)
  - #3916 (#YWH-PGM9867-187) OOB Read on GLib through
    glib/gmarkup.c:g_markup_escape_text() via
    glib/gmarkup.c:append_escaped_text() (Philip Withnall)
  - #3917 (#YWH-PGM9867-191) OOB Read on GLib through
    glib/gdatetime.c:g_date_time_get_ymd via invalid `GDateTime` (Philip
    Withnall)
  - #3918 (#YWH-PGM9867-193) Buffer Over-read on GLib's g_regex_replace()
    through glib/gregex.c:string_append() via g_utf8_next_char() (Philip
    Withnall)
  - #3919 (#YWH-PGM9867-194) Buffer Over-read on GLib through
    glib/gregex.c:g_regex_split_full() via glib/gutf8.c:g_utf8_prev_char()
    (Philip Withnall)
  - #3925 (#YWH-PGM9867-199) Buffer Over-read on GLib through glib/giochannel.c
    via "g_io_channel_read_line_backend" (Philip Withnall)
  - #3930 (#YWH-PGM9867-200) Off-by-one Error on GLib through glib/gkeyfile.c
    via "g_key_file_get_locale_string_list" (Philip Withnall)
  - #3931 (#YWH-PGM9867-203)  Path Traversal on GLib DBus through
    glib/gio/gdbusauthmechanismsha1.c via keyring_lookup_entry,
    mechanism_client_data_receive (COOKIE_SHA1 Client Authentication) leads to
    Arbitrary File Read (Philip Withnall)
  - #3932 (#YWH-PGM9867-204) Integer Underflow (CWE-191) on GLib through
    gio/gdbusintrospection.c via "g_dbus_node_info_new_for_xml" (Philip
    Withnall)
  - #3933 Integer overflow in g_dbus_message_bytes_needed() bypasses 128 MiB
    size check (pre-auth DoS on P2P connections) (Philip Withnall)
  - #3954 Generic marshaller lacks support for GTypeInstance derived types
    (Christian Hergert)
  - #3958 FTBFS for vs2019-arm64 in libcharset due to undefined _CountOneBits64
  - !4990 gdbusauthmechanismsha1: Ignore G_DBUS_COOKIE_SHA1_KEYRING_DIR when
    suid
  - !5094 gtestdbus: Keep config file around until bus daemon exits
  - !5099 liststore: Micro-optimize no-op bulk operations
  - !5101 Update Serbian translation
  - !5102 g_base64_decode_step: fix documented type of in
  - !5103 gdbusmessage: Documentation improvements
  - !5105 docs: Expand docs for GLIB_VERSION_MAX_ALLOWED
  - !5106 gmarkup: Add api to get attribute locations
  - !5107 gmessages: Remove incorrect callback annotations
  - !5110 gmarkup: fix type of length parameter of text_validate()
  - !5111 Update Russian translation
  - !5112 docs: Clarify default/user signal handlers
  - !5113 Update Polish translation
  - !5114 docs: Remove myself from CODEOWNERS
  - !5115 build: Post-release version bump
  - !5116 Update Slovenian translation
  - !5117 fuzzing: Add a fuzz test for g_markup_escape_text()
  - !5118 gstrfuncs: Add g_set_str_take() helper function
  - !5119 tests: Check that g_markup_escape_text() returns something parseable
  - !5120 Update Chinese (China) translation
  - !5121 gio: Apply property accessor annotations to GDBus types
  - !5123 Update Romanian translation
  - !5124 gvariant: Tweak GVariantIter heap allocation casting
  - !5125 gregex: Fix some missing Markdown formatting in docs
  - !5126 Add missing annotations
  - !5127 libffi: don't build testsuite when building as subproject
  - !5128 gmarkup: Swap the argument order for g_realloc_n()
  - !5136 docs: Clarify UTF-8 validity for functions which accept a length
  - !5138 Update Slovenian translation
  - !5140 Update Romanian translation
  - !5141 Support XDG_PROJECTS_DIR
  - !5142 gsocketconnection: Fix annotations for get_socket()
  - !5145 gvarianttype: use pure attribute, not inappropriate const
  - !5146 gmessages: Add missing stdlib.h include for abort()
  - !5148 registrysettingsbackend: Chain up vfuncs
  - !5149 gtype: Improve G_DEFINE and G_DECLARE docs
  - !5153 g_get_num_processors(): on macOS, report n_pcore
  - !5155 Update German translation
  - !5157 Update Dutch translation
  - !5158 gsocket: Fix g_socket_new_from_fd() on unbound sockets on windows
  - !5159 gvariant: Tweak GVariantIter heap allocation size
  - !5161 [docs] Gio.MenuModel: Fix bulleted list
  - !5162 gvariant: Match allocation size of g_slice_new to g_slice_free
  - !5163 gvariant test: Fix a leak
  - !5164 tests: Avoid undefined signed left-shift in bitlock test
  - !5167 docs: Add docs for G_GNUC_FLAG_ENUM
  - !5176 gnulib: Fix unused flags variable warning
  - !5177 gio/tests/pollable.c: Fix test on FreeBSD
  - !5180 meson: Add valgrind suppression file to VALGRIND_OPTS in devenv
  - !5182 Meson: Don't hardcode FFI_STATIC_BUILD / G_INTL_STATIC_COMPILATION
  - !5183 gio/tests/pollable.c: Conditionalize on FreeBSD version in the
    /dev/null test case
  - !5185 gio/gdesktopappinfo: Add precondition assertions
  - !5187 Add safety documentation regarding use of g_shell_quote()
  - !5188 Improve performance of g_array_maybe_expand()

* Translation updates:
  - Chinese (China) (luming zh)
  - Dutch (Nathan Follens)
  - German (Christian Kirbach)
  - Polish (Victoria Niedzielska)
  - Romanian (Antonio Marin)
  - Russian (Artur S0)
  - Serbian (Марко Костић)
  - Slovenian (Martin)



========================================
  glib-networking
========================================

2.90.alpha - June 25, 2026
==========================

* Bugs fixed:
  - #222 test fails with openssl 3.4.x (Michael Catanzaro)
  - #226 (CVE-2025-60018) (#YWH-PGM9867-106) Out of Bond Reads on glib-
    networking through tls/openssl/gtlscertificate-openssl.c via
    "g_tls_certificate_openssl_get_property()" due to Incorrect BIO_write Return
    Value Validation in Certificate PEM Export (Michael Catanzaro)
  - #228 (CVE-2026-2574) (#YWH-PGM9867-150) OOB Read on glib-networking through
    tls/openssl/gtlsclientconnection-openssl.c via
    g_tls_client_connection_openssl_get_property() (Michael Catanzaro)
  - #231 (CVE-2026-10028) (#YWH-PGM9867-278) Infinite loop in certification path
    building (Michael Catanzaro)
  - !261 meson: Introduce option for enable/disable tests (Leonid Zaburunov)
  - !263 openssl: check return value of g_tls_bio_alloc() and BIO_new() (Michael
    Catanzaro)
  - !265 openssl: delete support for OCSP stapling (Michael Catanzaro)
  - !268 Fix file database and PKCS11 test failures and update CI! (Michael
    Catanzaro)
  - !270 Fix miscellaneous safety issues reported by bug hunters (Michael
    Catanzaro)
  - !271 Delete gtlshttp (Michael Catanzaro)
  - !272 Fix connection test reusing a GError (Michael Catanzaro)
  - !273 openssl: fix error code confusion (Michael Catanzaro)
  - !274 ci: add catch for reporting stack traces (Michael Catanzaro)
  - !277 Require OpenSSL 1.1.1 or newer (Michael Catanzaro)
  - !280 Some fixes found with kiro (Ignacio Casal Quinteiro)
  - !281 Fix various memory leaks (Michael Catanzaro)
  - !283 openssl: refactor error handling code (Michael Catanzaro)
  - !284 openssl: use ERR_clear_error() all over the place (Michael Catanzaro)
  - !285 gnutls: always notify accepted-cas property after handshake (Michael
    Catanzaro)

* Translation updates:
  - Arabic (Ahmed Najmawi)
  - Basque (Asier Saratsua Garmendia)
  - Belarusian (Vasil Pupkin)
  - Cornish (Flynn Peck)
  - Esperanto (Kristjan SCHMIDT)
  - Greek, Modern (1453-) (Efstathios Iosifidis)
  - Japanese (Takayuki Kusano)
  - Lao (Saikeo Kavhanxay)
  - Romanian (Antonio Marin)
  - Slovak (Jose Riha)
  - Slovenian (Martin)
  - Thai (Aefgh Threenine)
  - Uighur (Abduqadir Abliz)
  - Uzbek (Baxrom Raxmatov)


========================================
  glibmm
========================================

2.88.1 (stable) 2026-06-28

Documentation:
* NMake Makefiles: Update build info again
  (Chun-wei Fan) Merge request !73
* README.win32.md: Update info and use UNIX line endings
  (Chun-wei Fan) Merge request !76

gmmproc:
* Add mmgir, which generates .defs files from GIR files
  generated by GObject-introspection
  (Daniel Gao) Merge request !71
* Add scripts that generate .defs files with mmgir
* Small fixes here and there to adapt to .defs files generated by mmgir
  (Kjell Ahlstedt)
* mmgir: Fix compiling parse_gir.cc on Windows
  (Chun-wei Fan) Merge request !72
* Improve detection of enum and flags in documentation
  (Kjell Ahlstedt)

Build:
* Meson build: Add the build-mmgir option
* Autotools build: Distribute tools/mmgir
  (Kjell Ahlstedt)
* meson.build: Ignore C4018 warnings
  (Chun-wei Fan) Merge request !72
* NMake Makefiles:
  - More consolidations
  - Update gmmproc install location
  (Chun-wei Fan) Merge request !73
* NMake Makefiles:
  - Build the mmgir tool if requested
  - Build generate_defs_[glib|gio]
  (Chun-wei Fan) Merge request !76


2.88.0 (stable) 2026-03-18:

Glib:
* Markup::ParseContext: Add get_offset() and get_tag_start().
  (Kjell Ahlstedt)

Gio:
* Application: Handle empty description in add_main_option_entry().
  (Kjell Ahlstedt) Issue #124 (Tobias)

Documentation:
* Gio::File: Note where g_free() shall be called.
  (Kjell Ahlstedt)
* README.win32.md: Mention Visual Studio 2026, update build info
  (Chun-wei Fan) Merge request !69

gmmproc:
* tools/defs_gen/docextract: Improve extraction of enum enumerators.
  Fix the case when no enumerator is documented the old way
  in the enum block.
* tools/defs_gen/enumextract.py, h2def.py: Ignore G_GNUC_FLAG_ENUM
  before the name of an enum definition.
  (Kjell Ahlstedt)

Build:
* Require glib >= 2.87.3
* Meson build: Don't require the 'dot' command when creating
  documentation with Doxygen.
  (Kjell Ahlstedt)
* Meson build: Make Visual Studio 2026 builds distinct
* NMake Makefiles:
  - Make Visual Studio 2026 builds distinct
  - Reorganize, fix, and clean up a bit
  - Make m4 detection more flexible and robust
  - Make build process more robust
  (Chun-wei Fan) Merge request !69



========================================
  glycin
========================================

## 2.2.alpha.5 (2026-06-30)

### Fixed

- Let distribution script update the Cargo.lock file.

## 2.2.alpha.4 (2026-06-26)

This release contains the following new component versions:

- glycin-common 2.0.0-alpha
- glycin-core 4.0.0-alpha
- glycin-heif 2.2.0-alpha
- glycin-image-rs 2.2.0-alpha
- glycin-jxl 2.2.0-alpha
- glycin-raw 2.2.0-alpha
- glycin-svg 2.2.0-alpha.2
- glycin-test 2.2.0-alpha
- glycin-thumbnailer 2.2.0-alpha
- glycin-utils 5.0.0-alpha
- glycin 4.0.0-alpha
- glycin-builtin 4.0.0-alpha
- glycin-external 4.0.0-alpha
- libglycin 2.2.0-alpha.4
- libglycin-gtk4 2.2.0-alpha.4

### Added

- Added support for specifying in configs how to detect the images of a type
  instead of relying on global mime-type database. This is faster, more
  reliable, and works on systems like Windows out of the box.
- Give proper error messages when processors panic instead of waiting for
  results forever.
- Glycin can now be built with compiled-in (builtin) processors. In that case,
  loaders don't have to be available as separate binaries. While this mode
  doesn't provide sandboxing and extendability, it supports non-Linux systems
  like macOS and Windows. This mode will be used automatically when not built on
  Linux.
- heif: Add animation support for AVIF and HEIC files
- image-rs: The loaders and editors now use gufo 0.5. This brings support for
  more metadata extraction like key-value medata from PNGs and `<metadata>`
  entries from SVGs. For editing, this now supports changing the orientation of
  images with a broken Exif orientation tag.
- svg: Load XMP metadata

### Changed

- svg: Don't limit the size of elements in the SVG #279

## 2.1.5 (2026-06-25)

This release contains the following new component versions:

- glycin-image-rs 2.1.5

### Fixed

- image-rs/jpeg: Support RGB for editing. There are actually images that don't
  use ycbcr. #274

## 2.1.1 (2026-03-23)

This release contains the following new component versions:

- glycin-image-rs 2.1.1

### Fixed

- Bump gufo to 4.0.1. This fixes optaining key-value pairs potentially
  containing nul-characters, which is not allowed per PNG standard and can't be
  transmitted as String via D-Bus. Fixes #276


========================================
  gnome-backgrounds
========================================

====================
 Version 51.alpha.0
====================
- updated default, 'Roundhex' -- emphasized edges, saturation
- Glass Stripes -- refraction, stripes, what's not to love?
- Tubes - minor shading / shape tweaks


========================================
  gnome-bluetooth
========================================

ver 47.2:
This version adds mnemonics to some buttons, fixes a couple memory leaks, makes
it possible to run the tests with pygobject >= 3.52, and updates translations.



========================================
  gnome-builder
========================================

# GNOME Builder 50.0

 * Translation updates


========================================
  gnome-calculator
========================================

Overview of changes in gnome-calculator 51.alpha
    * Updated translations
    * Improve search provider (Christian Hergert)
    * Style fixes (fcusr)
    * Set imaginary component to +0*i when inverting a real number (Weijia Wang)
    * Fixed help not opening #534 (Robert Roth)
    * Fixed compile issues #520 (Tete17)


========================================
  gnome-calendar
========================================

Major changes in 51.alpha:
* Completely rework the internals of GNOME Calendar to be based on GListModel.
  Notably, GcalTimeline and GcalTimelineSubscriber all operate on GListModels,
  and so do the views (week, month, and agenda).
* A number of performance improvements and rendering optimizations to the Month
  view and to event widgets
* Vastly reduce amount of data exchanged by Calendar and Evolution Data Server
* Support the maps URI for opening locations
* Use a better month name formatting in various places
* Make the Week view work with the high-contrast setting
* Cleanup and improve the event editor dialog
* Adapt CSS to the latest libadwaita and GTK standards
* Don't change the refresh interval during startup. This avoids changing values
  set by the user in Evolution.
* Explicitly state when app is not contained inside Flatpak in the About dialog
* Cleanup the Flatpak manifest
* Add support for Teams links
* Visual improvements to the Notes section of the event editor dialog
* Updated translations


========================================
  gnome-control-center
========================================

================
Version 51.alpha
================

- Various translation updates
- Remove Flatpak build support
- Merge all panels CSS files into a single global stylesheet
- Apply clang-format globally and update coding style
- Drop "development" profile

Build
- Post-release version bump
- Make style check mandatory in CI
- Switch CI to GNOME OS

Accessibility
- Add description to the screen reader settings button
- Add semantic accessible names to cursor sizes
- Fix keyboard navigation between cursor sizes
- Give CcSplitRow's radio group a label and role

About (System Details)
- Remove Windowing System field
- Reorder "Software/Hardware" information groups
- Merge system details into toplevel about page
- Port "Copy" button to AdwButtonRow

Applications
- Call GNOME Software via D-Bus instead of CLI
- Define GNOME Software desktop id only once

Color
- Avoid dead nested assignment

Date & Time
- Use GtkEnumList

Display
- Add "Auto Rotate" row for devices with accelerometer
- Add center-aligned snapping for horizontal edges
- Don't allow disabling if it's the last display available
- Update cursor styles for hover and drag interactions

Keyboard
- Fix compose key 'á' example
- Don't update shortcuts when closing dialog
- Improve "Press Esc to cancel [...]" hint
- Drop only the colliding combo when rebinding shortcuts
- Turn CcKeyboardShortcutDialog into a subpage
- Drop nested navigation view in shortcuts page
- Port GtkShortcutLabel to AdwShortcutLabel

Mouse
- Add ability to disable a touchpad while a mouse is plugged in
- Remove superfluous "Touchpad" string from Disable While Typing

Network
- Add DNS domain search settings
- Use GNOME QR Code Widget for WiFi sharing
- Drop WEP support
- Fix confusing proxy descriptions
- Fix WireGuard peer reference ownership
- Fix "Wired" section appearing broken when empty
- Cache the VPN plugin list
- Port WiFi Hotspot dialog to AdwDialog and AdwToolbarView
- Always recreate hotspot dialog

Power
- Use @bg_color in battery levels
- Remove dead nested assignment for time string

Printers
- Make "samba" dependency optional
- Use AdwPreferencesPage/Group

Privacy
- Fix adding location sub page
- Fit Device Security in mobile view
- Port Device Dialog to AdwToolbarView and AdwDialog
- Add mnemonics to device dialog action buttons
- Allow device dialog height to expand
- Do not leak AppInfo and time in location/camera pages
- Manage reference counts properly in light of duplicates

Region
- Initialize locale variables

Remote Desktop
- Set page description on AdwPreferencesPage
- Correctly handle nullable error from secret_collection_for_alias_sync

Remote Login
- Support both sshd service and socket systemd units
- Add option to support SSH socket servers

Sharing
- Port Media Sharing dialog to a subpage
- Port File Sharing dialog to a subpage
- Save media sharing folder list whenever they change
- Add tooltip to the remove button in sharing-networks
- Use a GtkListBox placeholder widget

Global Shortcuts Provider
- Relax app-id validation
- Adjust to libgxdp init API change

Sound
- Set pa_stream sink monitor for input rows
- Order device name and origin correctly for RTL locales
- Expose selected device name to accessibility
- Improve accessibility label of volume slider

Users
- Ensure newly added user have set an avatar
- Remove nested navigation view
- Justify title label of fingerprint empty state
- Set wrapping of fingerprint empty state title label
- Make select fingerprint popup scroll

Wacom
- Append the serial number to the tool description
- Remove an xf86-input-wacom-specific hack
- Fix -Wcast-align errors with clang

Wellbeing
- Fit into mobile width

WWAN
- Use early returns in APN data and EPS bearer getters


========================================
  gnome-desktop
========================================

================
Version 51.alpha
================

* New API to generate qr codes. See gnome-qr.h and gnome-qr-gtk.h
  for details of the api. The new apis are installed as separate
  shared libraries (libgnome-qr-4.so and libgnome-qr-gtk-4.so).
  To use in your code, use the pkg-config files gnome-qr-4.pc
  and gnome-qr-gtk-4.pc.

* Bugs fixed:
  - !185 Introduce gnome-qr library (Joan Torres Lopez, Marco Trevisan
    (Treviño))
  - !188 build: Enable tests again (Marco Trevisan (Treviño))
  - !193 thumbnail: Fix overly broad path check in can_thumbnail (Arecsu)

* Translation updates:
  - Bulgarian (Alexander Alexandrov Shopov)
  - Catalan (Victor Dargallo)
  - Chinese (China) (luming zh)
  - Cornish (Flynn Peck)
  - Czech (Daniel Rusek)
  - French (Julien Humbert)
  - Georgian (Ekaterine Papava)
  - German (Christian Kirbach)
  - Kazakh (Baurzhan Muftakhidinov)
  - Lithuanian (Aurimas Aurimas Černius)
  - Norwegian Bokmål (Kjartan Maraas)
  - Norwegian Nynorsk (Bjørn Mørkedal)
  - Occitan (post 1500) (Quentin PAGÈS)
  - Polish (hoek)
  - Portuguese (Hugo Carvalho)
  - Portuguese (Brazil) (Juliano de Souza Camargo)
  - Romanian (Antonio Marin)
  - Russian (Julia Dronova, Artur S0, Антон Афонин)
  - Serbian (Марко Костић)
  - Slovak (Jose Riha)
  - Slovenian (Martin)
  - Turkish (Emin Tufan Çetin)
  - Uighur (Abduqadir Abliz)
  - Ukrainian (Yuri Chornoivan)
  - Uzbek (Baxrom Raxmatov)

========================================
  gnome-initial-setup
========================================

51.alpha
--------

* network: Prevent crash when object-paths are gone [Felipe; !331]
* account: Port error dialog to AdwAlertDialog [nmontero; !328]
* account: Port full name and username entries to AdwEntryRows [Felipe; !317]
* summary: Quit when there's no GDM connection [Guido; !296]
* Make header buttons width match [nmontero; !319]
* account: Fall back to g_str_to_ascii when iconv TRANSLIT is unavailable [Clayton, 310]
* Fix Keyboard page search not showing matching layouts immediately [nmontero; !314]
* Get distro logo from os-release [nmontero, !320]
* Various goblint (gobject linter) fixes [Jordan, !326]

Contributors:
  Clayton Craft, Felipe Borges, Guido Günther, Jordan Petridis, Lukáš Tyrychtr,
  Michael Catanzaro, nmontero

Translators:
  Abduqadir Abliz [ug], 小山田 純 - Oyamada Jun [ja], Victoria Niedzielska [pl],
  Ask Hjorth Larsen [da], Bruce Cowan [en_GB], Flynn Peck [kw], Miika Brenna Jarsve [nn, nb],
  Nathan Follens [nl], Jose Riha [sk], Aefgh Threenine [th], Vasil Pupkin [be],
  Марко Костић [sr]

50.0
----

Translators:
  Abduqadir Abliz [ug], 小山田 純 - Oyamada Jun [ja], Victoria [pl],
  Ask Hjorth Larsen [da], Bruce Cowan [en_GB], Марко Костић [sr]


========================================
  gnome-maps
========================================

51.alpha
=========================

Changes since 50.0
 - Add offline map download support
 - Add custom overrides for German Autobahn and Bundesstrße highway shields
 - Show departures and arrivals in the place information for public transit
   places (stations and stops) when available from Transitious
 - Show delays and track information for public transit itineraries (when available from provider)
 - Avoid focus route start entry when selecting a place (avoids show OSK on
   touch)
 - Use star icon for favorites menu
 - Move goto current location button to overlay zoom buttons ground and re-arrange
   headerbar buttons (move route button to the left and layers button to the right)
 - Add bicycle shops category to POI search interface

Added/updated/fixed translations
 - Belarusian
 - Cornish
 - Romanian
 - Slovenian
 - Norwegian Bokmål
 - Persian
 - Dutch
 - Slovak
 - Russian

All contributors to this release
Antonio Marin <gnmer.6qxyg@slmail.me>
Artur S0 <arturios05@bk.ru>
Danial Behzadi <dani.behzi@ubuntu.com>
Flynn Peck <cirilla@tuta.io>
James Westman <james@jwestman.net>
Jose Riha <jose1711@gmail.com>
Kjartan Maraas <kjartan.maraas@gmail.com>
Luiggi R. Cardoso <luiggicardoso@outlook.com>
Martin <miles@filmsi.net>
Nathan Follens <nfollens@gnome.org>
Rein Fernhout <me@levitati.ng>
Timuçin Boldt <git@tboldt.de>
Vasil Pupkin <3abac@3a.by>
Victoria Niedzielska <victorian@gnome.org>
Марко Костић <marko.m.kostic@gmail.com>

========================================
  gnome-music
========================================

Overview of changes in 50.0
• Drop Grilo and use LocalSearch directly
• Add volume controls accelerators
• Refactor Repeat Mode Button into a separate class
• Misc gstplayer refactoring
 Icon is missing in «Add to Playlist» dialog (#668)

Thanks to our contributors this release:
 Gabriele Ricciardi
 Marinus Schraal
 Tau Gärtli

========================================
  gnome-online-accounts
========================================

Overview of changes in 3.58.1
=============================
* Bugs fixed:
  - !391 google: Use #ifdef for GOA_GOOGLE_FILES_ENABLED

* Translation updates:
  - Serbian (Марко Костић)
  - Slovak (Jose Riha)


========================================
  gnome-remote-desktop
========================================

51.alpha
========
* Simplify GDM remote display handling [Joan; !400]
* Fix and enable hardware acceleration for amdgpu [Pascal; !401]
* Fix failure to reconnect [Jonas; !402]

Contributors:
  Joan Torres Lopez, Pascal Nowack, Jonas Ådahl

Translators:
  Nathan Follens [nl], Jose Riha [sk], Danial Behzadi [fa], Vasil Pupkin [be],
  Antonio Marin [ro], Flynn Peck [kw], Christian Kirbach [de],
  Victoria Niedzielska [pl]

50.1
====
* Test improvements [akallabeth, Pascal; !391, !392]
* Misc bug fixes & cleanups [Pascal; !395, !397]
* Fix black screen on some NVIDIA GPUs [Pascal; !394]

Contributors:
  akallabeth, Pascal Nowack

Translators:
  Flynn Peck [kw], Марко Костић [sr], Artur S0 [ru], Sveinn í Felli [is],
  Victoria Niedzielska [pl], Andika Triwidada [id], Salvatore Cocuzza [it]


========================================
  gnome-session
========================================

================
Version 51.alpha
================

- Enabled use of oo7-portal as the implementation of the Secret portal
- Updated mimeapps.list for removal of gcr3, and expansion of Loupe's supported
  mime types
- Applied various code cleanups from gobject linter
- Fixed a double-free bug
- Translation updates


========================================
  gnome-settings-daemon
========================================

================
Version 51.alpha
================
- Translation updates
- Update gnome-volume-control dependency

Housekeeping:
- Fix launching baobab
- Fix use-after free

Power:
- Make temporary unidle play well with inhibitors

============
Version 50.1
============
- Build improvements for systemd-less systems


========================================
  gnome-shell
========================================

51.alpha
========
* Fix extending screenshot area selection to monitor edges [Ramez; !4158]
* Fix faulty German translations of several date/time formats
  [Andre K.; Translation/de#88]
* Don't notify dash elements twice to screen reader [Sergio; !4182]
* Add rate control to VA-API H.264 screencast pipelines [Mikhail; !4171]
* Fix showing “Install Updates” checkbox in power-off/restart dialog
  [Milan; !4185, !4188]
* Fix autorun notification for connected USB drives Sebastian K.; !4187]
* Fix spinner resetting on each key press in overview search [Vicente; !4191]
* Fix reapplying layout on `xkb-options` changes [Sebastian K.; !4205]
* Fix wiggle feedback on non-password auth failures [Joan; !4209]
* Expose slow-down-factor in looking glass [Florian; !4211]
* Improve app grid accessibility [Sergio; !4110, !4111]
* Support touch scrolling in ScrollView [Lorenzo; !4138]
* Use custom sound effects instead of sound theme [Jakub; !4154]
* Open session/a11y menu on login screen on either button [Florian; !4225]
* Use more readable St.ButtonMask values [Florian; !4224]
* Save and restore monitor brightness [Sebastian W.; !4006]
* Only show audio input icon when actually recording [Herman; !4218]
* Support elogind as libsystemd provider [Swagtoy; !4233]
* Prevent workspaces from being removed mid-animation [Tony; !4014]
* Support version 2 of text_input_v3 protocol [Carlos; !4008]
* Improve UI for conflicting sessions on login screen [Joan; !4081]
* Announce search result description to screen readers [Lukáš; !4251]
* Improve animation when expanding app grid label [Daniel; !4247]
* Replace GLSLEffect with ClutterShaderEffect [Bilal; !4241]
* Fix spacing in lock screen media notifications [Florian; !4217]
* Add support for start/end text-align [Florian; !4204]
* Pass params object to popupMenu open()/close() methods [Florian; !4240]
* Split extensions-app into its own repository [Florian; !4267]
* Plugged leak [Alessandro; !4258]
* Misc. bug fixes and cleanups [Bilal, fthx, Marco, Florian, Bilal,
  Sebastian K., Liam, Monster, Achill, Andre N., Alessandro; !4176, !4077,
  !4183, !4184, !4180, !4135, !4194, !4197, !4201, !4198, !4210, !4220, !4195,
  !3255, !3257, !4163, !4222, !4226, !4228, !4221, !4234, !4243, !4250, !4253,
  !4260, !4133, !4266]

Contributors:
  Vicente Bertolotti, Alessandro Bono, Tony Chen, Sergio Costas Rodriguez,
  Milan Crha, Bilal Elmoussaoui, Herman Fries, fthx, Carlos Garnacho,
  Mikhail Gavrilov, Achill Gilgenast, Lorenzo Ianotto, Saikeo Kavhanxay,
  Sebastian Keller, Ramez Medhat, Monster, Florian Müllner, Andre Nijman,
  Liam Rust, Jakub Steiner, Swagtoy, Joan Torres Lopez,
  Marco Trevisan (Treviño), Lukáš Tyrychtr, Daniel van Vugt, Sebastian Wick

Translators:
  Andre Klapper [de], Kjartan Maraas [nb], Nathan Follens [nl], Jose Riha [sk],
  Saikeo Kavhanxay [lo], luming zh [zh_CN], Bjørn Mørkedal [nn],
  Flynn Peck [kw], Vasil Pupkin [be], Yuri Chornoivan [uk], Martin [sl],
  Emin Tufan Çetin [tr], Antonio Marin [ro], Kristjan ESPERANTO [de],
  Ryo Nakano [ja], Davide Ferracin [it], Artur S0 [ru], Cas Pascal [vi],
  Victoria Niedzielska [pl], Luiggi R. Cardoso [pt_BR]

50.1
====
* Use triangular noise shape for dithering lightbox vignette [Michel; !4137]
* Fix glitch in quick settings with wrapped text in menu [Sebastian; !4136]
* Fit on-screen keyboard better on very small screens [Sebastian; !4156]
* Enable network agent on lock screen [Mitchell; !4160]
* Add basic zoom support to captive portal [Florian; !4159]
* Plugged leak [Sebastian; !4168]
* Misc. bug fixes and cleanups [Daniel, Florian, DaPigGuy, Sebastian, Peter,
  rayjonesjay, Jonas, Bilal, Mohamed; !4139, !4141, !4142, !4143, !4146, !4148,
  !4151, !4152, !4155, !4148, !4151, !4150, !4162, !4165, !4169, !4153]

Contributors:
  Mohamed Abdulla, Mitchell Augustin, DaPigGuy, Michel Dänzer,
  Bilal Elmoussaoui, Peter Hutterer, Sebastian Keller, Florian Müllner,
  rayjonesjay, Daniel van Vugt, Jonas Ådahl

Translators:
  Марко Костић [sr], Flynn Peck [kw], Antonio Marin [ro],
  Victoria Niedzielska [pl], Ryo Nakano [ja], Jordi Mas [ca], Jose Riha [sk]


========================================
  gnome-software
========================================


Version 51~alpha
~~~~~~~~~~~~~~~~
Released: 2026-06-26

This is an unstable release with the following changes:
 * Extend Flatpak file permissions list
 * Warn before installing end-of-life apps
 * Add tooltips to icon-only buttons in narrow mode
 * Reuse cached AppStream data on start-up to improve performance
 * Fixed few memory leaks

This release also updates translations:
 * Belarusian (Vasil Pupkin)
 * Czech (Daniel Rusek)
 * Dutch (Nathan Follens)
 * Kabyle (BoF ButterflyOfFire)
 * Lao (Saikeo Kavhanxay)
 * Norwegian Bokmål (Brage Fuglseth, Kjartan Maraas)
 * Persian (Danial Behzadi)
 * Polish (Victoria Niedzielska, Łukasz Horodecki)
 * Romanian (Antonio Marin)
 * Russian (Artur S0)
 * Serbian (Марко Костић)
 * Slovenian (Martin)
 * Thai (Aefgh Threenine)
 * Turkish (Emin Tufan Çetin)
 * Uzbek (Muhammad Ganiyev)
 * Vietnamese (phmqXPD)

========================================
  gnome-text-editor
========================================

# Text Editor 50.1

 * Build/CI updates
 * Fix high-contrast CSS properties
 * Accessibility fix for preferences switch
 * Translation updates


========================================
  gnome-tour
========================================

gnome-tour 50.0
===============
* Translations updates


========================================
  gnome-user-docs
========================================

51.alpha
====
* Port to Meson, and remove Autotools
* Updated translations:
  ba        (Asier Saratsua Garmendia)
  eo        (Kristjan ESPERANTO)
  it        (Davide Ferracin)
  pt_BR     (Samuel Schlemper)
  se        (Марко Костић)


========================================
  gnome-user-share
========================================

This is gnome-user-share 48.3, a system for easy sharing of user files.

Major changes since 48.2:
- Removed the translatable string of realm that caused client authentication errors with passwords
- A translation update

========================================
  gsettings-desktop-schemas
========================================

Major changes in 51.alpha
=========================
- Translation updates
- Add scroll speed setting for touchpads
- Add the ability to enable button scrolling on a mouse
- Increase default maximum thumbnail cache from 512MB to 2GB

Major changes in 50.1
=====================
- Translation updates


========================================
  gssdp
========================================

1.6.6 (stable)
==============

 - Fix binding to unicast sockets (Regression introduced by 1.6.5)

All contributors to this release:
 - Jens Georg <mail@jensge.org>

1.6.5 (stable)
=============
 - Block corresponding TCP socket when allocating UDP socket

Bugs fixed in this release:
 - https://gitlab.gnome.org/GNOME/gssdp/issues/31

All contributors to this release:
 - Jens Georg <mail@jensge.org>


========================================
  gst-thumbnailers
========================================

## 1.1.alpha

- Update dependencies


========================================
  gtk
========================================

Overview of Changes in 4.23.2, 27-06-2026
* GTK now respects the reduced motion setting in various places
  and avoids animations (GtkSpinner, GtkStack, GtkRevealer)

* New GtkShortcutTrigger functions it easier to handle synonymous
  keys (in particular keypad keys). The new functions are
  gtk_alternative_trigger_newv,
  gtk_shortcut_trigger_create_with_aliases and
  gtk_shortcut_trigger_create_for_menu

* Type-to-search (in particular interaction with input methods)
  has been redone, switching from a "pull" to a "push" approach.
  See gtk_editable_set_input_interceptor for more details.
  As part of this, gtk_event_controller_key_forward has been
  deprecated.

* The first part of ongoing frameclock work has landed, improving
  our ability to deliver frames on time

* A number of GtkList/Grid/ColumnView size allocation issues
  have been addressed. Please let us know if you spot any remaining
  or new problems.

* GtkSvg:
 - Support feTurbulence
 - Improved text handling, including baseline-shift, whitespace
   handling, text-decoration, proper fill+stroke, and more

* Build:
 - The pango dependency has been bumped to 1.58.0

  - #8230 GtkMenuButton with an autohide=false popover does not focus the
    popover when showing
  - !9906 Fix Gtk.ListView/Gtk.GridView measure with for_size != -1 (Vladimir
    Romanov)
  - !9958 Logically focus IM context in type-to-search (Carlos Garnacho)
  - !10001 columnview layout (Sergey Bugaev)
  - !10023 gtkpopover: Always set focus to a child during show (Lukáš Tyrychtr)
  - #8075 Tooltips unminimize windows unexpectedly
  - #8187 EventControllerLegacy macos: one-pixel difference between position of
    button press and release events
  - #8194 Blurry text regression in 4.23.0
  - #8223 New svg spinner rendering issues
  - #8229 The accessible parent of the application should not be null
  - #8235 Inspector crashes with CSS with malformed inline svg effects (Matthias
    Clasen)
  - #8241 Shaper: wrong tooltip for created icon (Matthias Clasen)
  - #8244 Shaper: Weight now only affects the active icon (Matthias Clasen)
  - #8246 Shaper: crash on changing visibility for states
  - #8248 Shaper: Changing the state from "Display Settings" does not change it
    in the sidebar (Matthias Clasen)
  - #8249 Shaper: Problem with "Overlaps" icon (Matthias Clasen)
  - #8250 Shaper: Doesn't ask for saving changes when loadinga file or an
    example (Matthias Clasen)
  - #8258 Shaper: cannot add states (Matthias Clasen)
  - #8259 Crash when transitioning between filter: none and filter: url()
    (Matthias Clasen)
  - #8262 svg: animateTransform doesn't work for specific file (Matthias Clasen)
  - #8264 svg: fractional values for repeatCount don't work (Matthias Clasen)
  - #8265 Coordinates for turbulence seem computed wrong (Matthias Clasen)
  - #8268 Shaper: XML changes reset the state to 0 (Matthias Clasen)
  - #8270 Shaper: Invalid changes to XML, related to shape geometry, crash it
    (Matthias Clasen)
  - #8278 GtkRevealer uses too much space (g.willems, Matthias Clasen)
  - #8279 Shaper: 'empty' state doesn't get saved (Matthias Clasen)
  - #8280 Shaper: state management issues (Matthias Clasen)
  - !9569 macos: unmap window when minimized (Arjan Molenaar)
  - !9890 gdk/macos: Convert mouse event coordinates consistently (Dario Marino
    Saccavino)
  - !9990 Add GtkActivateTrigger (Matthias Clasen)
  - !9991 Improvements for the filebrowser demo (g.willems)
  - !9992 spinner: Debug things (Matthias Clasen)
  - !9993 doc: input-handling: fix link to event controllers (Peter Shkenev)
  - !9995 Fix the build with tracker (Matthias Clasen)
  - !9996 Fix parsing of conic-gradient() CSS (Benjamin Otte)
  - !9998 Fix various issues with svg animations (Matthias Clasen)
  - !9999 Update Romanian translation
  - !10000 svg: Fix handling of transform-origin (Matthias Clasen)
  - !10002 Update Slovenian translation
  - !10003 spinner: Respect reduced motion (Matthias Clasen)
  - !10004 various cleanups (Benjamin Otte)
  - !10005 frameclock: Rename (un)inhibit_freeze to start/stop and clean up
    (Benjamin Otte)
  - !10006 gdk/wayland: Make clipboard and primary selection updates less racy
    (Vlad Zahorodnii)
  - !10007 gtk4-demo: Tweak the error states demo (Matthias Clasen)
  - !10009 gtkatspiroot: Return the desktop as its parent (Lukáš Tyrychtr)
  - !10015 shortcuttrigger: Expand docs a little (Matthias Clasen)
  - !10016 inspector: Be robust against far out errors (Matthias Clasen)
  - !10017 css: Fix a thinko (Matthias Clasen)
  - !10018 svg: Allow file:// urls in hrefs (Matthias Clasen)
  - !10019 Fix another few crashes in GtkSvg (Matthias Clasen)
  - !10020 svg: Fix rendering of some wikipedia examples (Matthias Clasen)
  - !10021 svg: Use correct namespace (Guido Günther)
  - !10024 Cosmetic fixes (Matthias Clasen)
  - !10025 Support turbulence (Matthias Clasen)
  - !10027 gtk: Fix shortcuts regressions (g.willems)
  - !10028 entry: Avoid blank leftovers when removing icons (g.willems)
  - !10029 frameclock: More cleanup (Christian Hergert, Benjamin Otte)
  - !10031 docs: Add missing nodes to the node format docs (Matthias Clasen)
  - !10032 Assorted svg fixes (Matthias Clasen)
  - !10033 Some icon editor fixes (Matthias Clasen)
  - !10035 Next FrameClock refactoring step (Benjamin Otte)
  - !10040 icon editor: Clean up one example (Matthias Clasen)
  - !10042 Drop an erroneous file (Matthias Clasen)
  - !10046 display: Add gdk_display_get/set_prefer_vulkan() (Benjamin Otte)
  - !10048 gsk: fix GskTransform leak in gsk_gpu_render_pass_push_transform
    (Ampernic)
  - !10052 svg: Add a missing turbulence test (Matthias Clasen)
  - !10058 rendernode-tool: Make info tool deal better with recursive nodes
    (Benjamin Otte)
  - !10059 testsuite: Add a test that causes lots of globals (Benjamin Otte)
  - !10061 docs: fix typo in node-format.md (John Bampton)
  - !10062 Fix mipmap sampling for dmabufs (Benjamin Otte)
  - !10064 icon editor: Preserve state when swapping svgs (Matthias Clasen)
  - !10065 memoryformat: Add missing GDK_MEMORY_ABGR2101010_PREMULTIPLIED docs
    (Sebastian Dröge)
  - !10067 Update Slovenian translation
  - !10070 revealer: Respect the reduced motion setting (Matthias Clasen)
  - !10072 Shaper: Set foreground color for demo5 (Jakub Steiner)
  - !10074 svg: Handle details for text decoration (Matthias Clasen)
  - !10075 svg: Rework text rendering (Matthias Clasen)
  - !10079 Revert "filechooserutils: Stop using pixbufs"
  - !10082 Update Polish translation (Victoria Niedzielska)
  - !10083 Fix the build against pango main (Matthias Clasen)
  - !10084 icon editor: Handle states a bit better (Matthias Clasen)
  - !10085 Center state names in state editor (Urtsi Santsi)
  - !10087 stack: Avoid resizing animation in reduce-motion mode (g.willems)
  - !10090 gl: Actually report partial damage (Benjamin Otte)
  - !10091 gsk: Account for render offset when snapping glyphs (Alessandro
    Astone)
  - !10093 android: Fix timestamp unit (Benjamin Otte)
  - !10094 svg: Redo whitespace handling (Matthias Clasen)
  - !10096 application-x11: Fix saved state ownership (Alessandro Astone)
  - !10097 svg: More whitespace handling (Matthias Clasen)

* Translation updates:
  - Polish (Victoria Niedzielska)
  - Romanian (Antonio Marin)
  - Slovenian (Martin)

Overview of Changes in 4.23.1, 29-05-2026
=========================================

* Snapping: GTK can now snap contents to device pixel boundaries,
  for better control of rendering with fractional scales

* SVG:
 - Support the dominant-baseline attribute for text
 - Support media queries in CSS
 - Fix priority order of styles and animations

* Touch:
 - Long press on entries opens the touch menu

* Android:
 - Frame timing is now aligned with vsync

* Bugs fixed:
  - #3542 Window dragging doesn't work with touch on X11 (Alessandro Astone)
  - #4529 Popover cannot be closed after opening a child popover (Carlos
    Garnacho)
  - #5610 Unable to move windows by dragging the title bar on GTK4 Xorg with
    touchscreens (Alessandro Astone)
  - #5890 X11 drag-and-drop failure not communicated to source, unlike Wayland
    (Will Warner)
  - #7508 In X11, touchscreen double tap requires very precise input (Alessandro
    Astone)
  - #7515 X11 touchscreen events are handled as mouse events (Alessandro Astone)
  - #7657 Nautilus and other GTK4 applications crash when writing in a text box
    using the on-screen keyboard (Carlos Garnacho)
  - #8034 MacOS: Clipboard: Pasting url from safari cannot be decoded with
    text/uri-list
  - #8138 android: use Choreographer for vsync-aligned frame timing
  - #8140 Accessibility: GTK4 TextView reports wrappet lines incorrectly to Orca
  - #8142 svg: Shadow dom issues (Matthias Clasen)
  - #8146 Snapshot with too small an angle shift freezes (Matthias Clasen)
  - #8153 android: Text handles within popups are wrongly positioned (Florian
    "sp1rit"​)
  - #8156 svg: Fix priority order of animations and styles (Matthias Clasen)
  - #8159 Properties never installed
  - #8168 Application looses focus after selecton of GtkComboBoxText (Carlos
    Garnacho)
  - #8170 wayland: Don't send v2 text_input content hints when v1 is bound
    (Matthias Clasen)
  - #8175 Android builder needs meson 1.11 (Florian "sp1rit"​)
  - #8177 Shaper: crash on load (Matthias Clasen)
  - #8178 Symbolic icons rendering in wrong style (Matthias Clasen)
  - #8179 Shaper: UI for fill/stroke doesn't seem to have any effect
  - #8184 Zoomed image in Loupe makes hardware renderer glitch (Benjamin Otte)
  - #8186 GTK4 TextView doesn't emit object:text-selection-changed events when
    it should (and does when it shouldn't)
  - #8189 GskGpuCache causing FD exhausting for HDR video playback on lavapipe
    (Benjamin Otte)
  - #8191 DragSource race condition leads to corrupted memory (Khalid Abu
    Shawarib)
  - #8193 Conditional jump on uninitialized value in SVG parser (Matthias
    Clasen)
  - #8196 Shaper: launches light when in dark mode. (Matthias Clasen)
  - #8203 GtkConstraintVflParser parser doesn't allow underscores in VFL view
    identifiers (Emmanuele Bassi)
  - #8210 non-Linux build fix
  - #8216 Add a way to dump the inspector info for bug reports into a text file
    (Matthias Clasen)
  - !6480 gtklabel: Queue a draw after changing the focused link (Philip
    Withnall)
  - !8827 fontdialog: update font-dialog-set-language API to set an initial
    language filter (Sudip Shil)
  - !8906 Add GdkAppLaunchContextWin32 (Luca Bacci)
  - !8951 X11 backend touchscreen fixes (Alessandro Astone)
  - !9523 macos: Add support for pasting url's as text/uri-list (Arjan Molenaar)
  - !9579 Report mnemonic shortcuts through a11y (Lukáš Tyrychtr)
  - !9614 gtk: unrealize window if backing surface got destroyed (Florian
    "sp1rit"​)
  - !9715 fix incorrect baseline calculation for vertical boxes (Max Bachmann)
  - !9760 widget: Handle coordinate translation failure (Sergey Bugaev)
  - !9784 popover: Don't set GDK_ANCHOR_RESIZE_{X,Y} when we can't be resized
    (Sergey Bugaev)
  - !9790 Use named enum values instead of 0 (Maximiliano Sandoval)
  - !9798 Use G_PARAM_STATIC_NAME on properties
  - !9799 win32: Fix public symbol not being exported (Sergey Bugaev)
  - !9802 Stop exporting various private symbols (Sergey Bugaev)
  - !9807 svg: Fix use of alternative views (Matthias Clasen)
  - !9808 svg: Move the renderer to a separate file (Matthias Clasen)
  - !9809 gtkfilelauncher/android: Pass correct pointer as URL (Florian
    "sp1rit"​)
  - !9810 glsl: Add snapping APIs to GLSL (Benjamin Otte)
  - !9812 Fix copy-pasted doc blocks in GtkSvgWidget (Emmanuele Bassi)
  - !9813 gtkpango: Don't land on a single char of a wrapped line twice (Lukáš
    Tyrychtr)
  - !9814 svg: Avoid a compiler warning (Matthias Clasen)
  - !9815 wayland: Fix underlining of preedit (Matthias Clasen)
  - !9818 gtk-demo: Fix the images demo (Matthias Clasen)
  - !9819 android: use Choreographer for vsync-aligned frame timing (Kristjan
    ESPERANTO)
  - !9822 Small misc fixes (Theo de Raadt, Florian "sp1rit"​)
  - !9823 Update German translation (Christian Kirbach)
  - !9825 print dialog: Fix GTask lifecycle management (Matthias Clasen)
  - !9829 svg: Make shadow trees work properly (Matthias Clasen)
  - !9830 gtk: Rework text handles (Florian "sp1rit"​)
  - !9831 theme: Fix context menus in grid views (Alice Mikhaylenko)
  - !9832 testsuite: Change the font in a compare test (Benjamin Otte)
  - !9835 add language filtering to font picker (Sudip Shil)
  - !9838 android: Expose accent-color property in Gdk.AndroidDisplay (Florian
    "sp1rit"​)
  - !9839 Misc fixes (Matthias Clasen)
  - !9842 icons: Sync with icon devkit (Jakub Steiner)
  - !9843 Only activate osk on touch (Matthias Clasen)
  - !9844 API: Add snapping (Matthias Clasen, Benjamin Otte)
  - !9845 android/popup: fix position of cascaded popups (Florian "sp1rit"​)
  - !9846 application: Fix a memory leak (Matthias Clasen)
  - !9849 gdk/event: Document timestamp being in milliseconds (Florian
    "sp1rit"​)
  - !9850 android: attempt to restore toplevel identifier from save-state
    (Florian "sp1rit"​)
  - !9857 selectionmodel: Amend the docs (Matthias Clasen)
  - !9858 gpu: Don't double-clip gradients (Benjamin Otte)
  - !9859 colormatrixnode: Make the bounds explicit (Benjamin Otte)
  - !9860 win32: Convert GetSystemMetrics results to logical units (Sergey
    Bugaev)
  - !9861 svgwidget: Fix activate signal parameter count (Liu Jinchang)
  - !9863 popoverbin: Point to the center of the widget when popping up (Hari
    Rana)
  - !9864 printdialog: Fix a crash (Matthias Clasen)
  - !9865 popoverbin: Improve keyboard placement (Matthias Clasen)
  - !9868 svg: support dominant-baseline (Florian "sp1rit"​)
  - !9870 icons: Fix up media-record-symbolic (Matthias Clasen)
  - !9871 gsk: Avoid cache explosion in 3D
  - !9872 icons: Remove compat classes (Matthias Clasen)
  - !9873 Add a some details about MRs (Matthias Clasen)
  - !9874 gpu: Don't override fields already marked as modified (Benjamin Otte)
  - !9875 android: drop explicit fontconfig master dependency (Florian
    "sp1rit"​)
  - !9878 Revert !9875 & ci: bump meson to 1.11.1 (Florian "sp1rit"​)
  - !9879 Update Persian translation
  - !9881 widgets: Add missing GDK_KEY_KP_Space for activation (Sergio Costas
    Rodriguez)
  - !9882 svg: Clean up some private apis (Matthias Clasen)
  - !9883 Redo the transform demo (Matthias Clasen)
  - !9884 Various snapshot & rendernodeparser fixes (Benjamin Otte)
  - !9885 tools: Add a "cut" rendernode filter (Benjamin Otte)
  - !9887 Update Romanian translation
  - !9888 tools: Add simplify filter (Benjamin Otte)
  - !9889 Add more content to the rotating sphere benchmarks (Matthias Clasen)
  - !9894 Update Slovenian translation
  - !9895 Rework GDK grabs (Carlos Garnacho)
  - !9896 Fix memory leak when focused widget is hidden before being unparented.
    (Ben Mather)
  - !9897 text: Open touch menu on long press
  - !9899 editable: Fix typo in example (Guido Günther)
  - !9900 android: Scale bounds of AndroidMonitor (Florian "sp1rit"​)
  - !9903 gpu: Trigger cache GC from dmabuf downloading code (Benjamin Otte)
  - !9907 various fixes (Benjamin Otte)
  - !9908 textview: Sync touch behavior (Matthias Clasen)
  - !9909 docs: Fix CSS examples (Evangelos Paterakis)
  - !9910 svg: Cosmetics (Matthias Clasen)
  - !9911 inspector: Handle Unicode more carefully (Matthias Clasen)
  - !9914 gtk-demo: No session saving in special modes (Matthias Clasen)
  - !9915 svg: Fix a compiler warning (Matthias Clasen)
  - !9920 Clarify how to acquire environment information in `Bug.md`. (Mr.
    Beedell, Roke Julian Lockhart (RJLB))
  - !9921 android/ime: get surface when needed instead in set_client_widget
    (Florian "sp1rit"​)
  - !9923 icon editor: Avoid a crash (Matthias Clasen)
  - !9924 Add a gobject-linter job (Jordan Petridis, Benjamin Otte)
  - !9925 gi: Various since annotations fixes (Bilal Elmoussaoui)
  - !9926 svg: Handle media queries (Matthias Clasen)
  - !9927 Complete pspec fixes from previous MRs (Benjamin Otte)
  - !9930 miscellaneous fixes and cleanups (Matthias Clasen)
  - !9931 Remove GTK_PARAM_READABLE/WRITABLE/READWRITE (Benjamin Otte)
  - !9932 Move private functions into private header (Benjamin Otte)
  - !9933 docs: Make docs for GtkAlign match reality (Matthias Clasen)
  - !9936 gtktextview: Send selection changed signal when we should (Lukáš
    Tyrychtr)
  - !9937 constraint: Fix VFL parsing of view names (Emmanuele Bassi)
  - !9938 widget: Move ::has-default notify into set_has_default() (Benjamin
    Otte)
  - !9939 examples: fix bloatpad missing icons (g.willems)
  - !9940 dropdown: Add missing a11y control relation (g.willems)
  - !9943 More paramspec improvements (Benjamin Otte)
  - !9944 icon editor: Remove some leftover code (Matthias Clasen)
  - !9946 gdk: Fix checking NULL portal usage (Peter Eisenmann)
  - !9947 Lots of simple fixes (Benjamin Otte)
  - !9948 Fix issues with G_BEGIN/END_DECLS (Benjamin Otte)
  - !9949 Use g_clear_*() (Benjamin Otte)
  - !9952 Header renaming and autoptr addition (Benjamin Otte)
  - !9953 win32: Remove gdkwin32cursor.h from the public API (Benjamin Otte)
  - !9954 icon editor: More catching up (Matthias Clasen)
  - !9957 testsuite: fix non-Linux wayland build. (Thomas Klausner)
  - !9959 icon editor improvements (Matthias Clasen)
  - !9960 Add a way to dump general info (Matthias Clasen)
  - !9961 Update Romanian translation
  - !9962 treednd: use a proper flexible array member (Alyssa Ross)
  - !9963 vulkan: fix descriptor sets for masks (Benjamin Otte)
  - !9964 macos: don't show test processes in the dock (Johan Dahlin)
  - !9966 macos: fix URL encoding regression in pasteboard file URIs (Roberto
    Moura)
  - !9967 icon editor: stylesheet editing (Matthias Clasen)
  - !9969 Update Georgian translation
  - !9971 Various fixes (Benjamin Otte)
  - !9974 svg: Don't write out gpa attributes if not doing gpa (Matthias Clasen)
  - !9975 ci: Save the ASAN testsuite artifacts (Benjamin Otte)
  - !9976 svg: Work on test coverage (Matthias Clasen)
  - !9977 inspector: Avoid a needless roundtrip (Matthias Clasen)
  - !9978 icon editor: Handle <style> media attributes (Matthias Clasen)
  - !9979 Fix sporadic svg crashes (Matthias Clasen)
  - !9981 gsk: Tweak some doc images (Matthias Clasen)
  - !9983 Update Slovenian translation
  - !9986 Unify GTK native rendering code in gtknative.c (Benjamin Otte)
  - !9987 svgwidget: Add a private paintable getter (Matthias Clasen)

* Translation updates:
  - Georgian (Ekaterine Papava)
  - German (Christian Kirbach)
  - Persian (Danial Behzadi)
  - Romanian (Antonio Marin)
  - Slovenian (Martin)


Overview of Changes in 4.23.0, 14-04-2026
=========================================

* SVG:
 - GtkSvgWidget is a widget to display SVG, with some support
    for interactive aspects of SVG
 - We now handle <a>, <view>, <title> and <desc>
 - Problems with recoloring of symbolic icons have been fixed
 - GtkSvg is now used for all SVG icons
 - GtkSpinner is using GtkSvg

* Wayland:
 - Version 3.2 of the text protocol is supported
 - xdg-session-management-v1 is used

* Session saving:
 - The session saving support is back

* GSK:
 - A number of 10bit image formats are supported
 - The cache allocator has been rewritten
 - We are now using clip masks to reduce the number of offscreens

* The Android backend has been ported to SDK 36

* The gtk4-encode-symbolic tool for producing symbolic
  png icons has been dropped. If you were using it,
  just ship the symbolic svg icons instead

* Bugs fixed:
  - #6071 FileDialog filter becomes (None) when navigating via top bar
  - #7567 Black borders around windows in Windows (Dan Yeaw)
  - #7833 Input panel misplaced when typing with an input method in a GTKPopover
    widget (cdbg)
  - #8090 Gtk.IconPaintable SVG fallback wrong color (Matthias Clasen)
  - #8094 Devel style class is broken by SVG changes (Matthias Clasen)
  - #8096 Shaper: don't add countless states
  - #8098 Crashes with SIGSEGV in `gdk_wayland_toplevel_remove_from_session()`
    (Philip Withnall)
  - #8099 Documentation: Gtk Switch page is missing switch-state.png image
    (Matthias Clasen)
  - #8100 GtkSvg: Switching states quickly in Shaper doesn't work (Matthias
    Clasen)
  - #8101 Shaper: issue with weight (Matthias Clasen)
  - #8103 gtk3 refresh_rate calculation overflows on 32-bit targets (Alberto
    Garcia)
  - #8105 Shaper: Inkscape to Shaper breaks format (Matthias Clasen)
  - #8106 Some symbolic icons seems to not be recolored correctly (Matthias
    Clasen)
  - #8107 Unbalanced Snapshot.{save,restore} calls in libadwaita (Florian
    "sp1rit"​)
  - #8108 Shaper: cannot set stroke color to Foreground (Matthias Clasen)
  - #8111 a11y: PreferencesGroup isn't being described as container of
    ActionRows
  - #8125 svg: Animating hrefs does not work (Matthias Clasen)
  - #8139 A layout manager invoking a Cairo bug (Benjamin Otte)
  - !6922 Implement version 2 of text_input_v3 protocol (Carlos Garnacho)
  - !9016 spinner: Use an animated icon (Matthias Clasen)
  - !9184 filechooser: Fix filters being removed when navigating via the bar
    path (Jules Maselbas)
  - !9380 Iterate on save/restore support (Adrian Vovk)
  - !9411 text: Add option to include preedit as part of text (Florian
    "sp1rit"​)
  - !9437 The big renderer refactor (Benjamin Otte)
  - !9459 Use GtkSvg for all icons (Matthias Clasen)
  - !9505 Add clip masks (Benjamin Otte)
  - !9533 Add a new atlas allocator and rework caching APIs (Benjamin Otte)
  - !9545 memoryformat: Add packed 10bit formats (Benjamin Otte)
  - !9552 A bunch of fixes and speedups for 4.24 (Benjamin Otte)
  - !9557 CI: use native git in msys2 + remove base-devel (Christoph Reiter)
  - !9582 Update Polish translation
  - !9583 Update Polish translation
  - !9584 Update Chinese (China) translation
  - !9586 Fix typo (Urtsi Santsi)
  - !9588 Drop the gtk4-encode-symbolic tool (Matthias Clasen)
  - !9589 Drop po/README.translators (Matthias Clasen)
  - !9590 vulkan: fix GDK_VULKAN_FEATURE_SWAPCHAIN_MAINTENANCE check (Christoph
    Reiter)
  - !9591 icon paintable: Don't load unsupported SVG (Matthias Clasen)
  - !9597 Update macOS runner (René de Hesselle)
  - !9602 svg: parse `<style>` (Matthias Clasen)
  - !9605 icons: Fix process-working (Jakub Steiner)
  - !9609 Avoid a critical (Matthias Clasen)
  - !9611 Update French translation
  - !9616 Small svg cleanups (Matthias Clasen)
  - !9617 svg: Some refactoring (Matthias Clasen)
  - !9619 svg: Add a workaround for traditional symbolics (Matthias Clasen)
  - !9621 Update Hungarian translation
  - !9622 svg: Make get_state_names() more robust (Alice Mikhaylenko)
  - !9623 Revert save/restore API removal (Adrian Vovk)
  - !9624 reftests: Fix an icon (Matthias Clasen)
  - !9625 svg: Small optimization (Matthias Clasen)
  - !9626 icon editor: Various grouping-related fixes (Matthias Clasen)
  - !9629 Update French translation
  - !9630 Update Hungarian translation
  - !9632 svg: Add a testcase for units (Matthias Clasen)
  - !9634 Update Turkish translation
  - !9635 icon editor: Some comfort (Matthias Clasen)
  - !9636 Update Romanian translation
  - !9638 renderpass: Fix wrong clip mask opacity tracking (Benjamin Otte)
  - !9640 vulkan: Fix invalid read by requerying variable (Benjamin Otte)
  - !9641 print portal: Plug leak of backend modules (Alessandro Astone)
  - !9644 Add a test for the color-matrix optimization (Matthias Clasen)
  - !9645 icon editor: Add a compat class checkbox (Matthias Clasen)
  - !9650 Some icon editor improvements (Matthias Clasen)
  - !9651 roaring: remove/merge bswap_64() guard for FreeBSD (Charlie Li)
  - !9652 gesturestylus: Output empty backlog when there is none (Sergey Bugaev)
  - !9654 Make clip paths work in shaper (Matthias Clasen)
  - !9655 hlg: Convert from scene-referred to display light (Kenny Levinsen)
  - !9657 Update Slovenian translation
  - !9659 Various Vulkan fixes (Benjamin Otte)
  - !9661 icon editor: Small cleanup (Matthias Clasen)
  - !9662 fontchooser: Cosmetics (Matthias Clasen)
  - !9663 vulkan: Generate new SPIRV for shaders with clip mask (Benjamin Otte)
  - !9664 inspector: Display more information about GStreamer (Benjamin Otte)
  - !9666 svg: Update the docs (Matthias Clasen)
  - !9668 gdk: Remove GDK_MEMORY_U8_SRGB (Benjamin Otte)
  - !9672 svg: Support the `<a>` element (Matthias Clasen)
  - !9673 testsuite: Add dmabuf compare tests to needs-udmabuf suite (Benjamin
    Otte)
  - !9674 gtkgstsink.c: Fix build on Visual Studio (Chun-wei Fan)
  - !9675 demos: Make build reproducible. (Maxim Cournoyer)
  - !9679 dmabuf: Support dmabufs with fewer fds than planes (Benjamin Otte)
  - !9680 Rewrite the svg renderer test (Matthias Clasen)
  - !9683 Update Galician translation
  - !9684 Replace outdated freedesktop.org Window Manager spec links (balooii
    balooii)
  - !9686 Update Romanian translation
  - !9687 icon editor: Restore metadata (Matthias Clasen)
  - !9688 Update Kabyle translation
  - !9689 icon editor: Restore metadata (Matthias Clasen)
  - !9690 svg: Fix quick state changes (Matthias Clasen)
  - !9692 gtk/emojichooser: Select first result on Enter (Zoey Ahmed)
  - !9693 gtk/emojichooser: Fix typos in docs (Zoey Ahmed)
  - !9694 Write down AI contribution guidelines (Matthias Clasen)
  - !9695 renderer: Render clip mask in device grid (Benjamin Otte)
  - !9696 print: Fix listing printers with synchronous backends (Alessandro
    Astone)
  - !9697 svg: Handle color a bit better (Matthias Clasen)
  - !9698 Properly apply reduced-motion portal setting (stupidduos)
  - !9702 Update Turkish translation
  - !9703 icon editor: Add an xml view (Matthias Clasen)
  - !9705 Clean  up error handling in GtkSvg (Matthias Clasen)
  - !9714 Add font rendering tests (Matthias Clasen)
  - !9717 Tweak the movingtext demo (Matthias Clasen)
  - !9720 inspector: Add an svg page (Matthias Clasen)
  - !9722 accessibility: Fix regression (Sergio Costas Rodriguez)
  - !9723 ci: Fix msys2-clang64 errors (Sergio Costas Rodriguez)
  - !9724 media: Don't leak URI (Guido Günther)
  - !9725 widget: Explain minimum and natural size in the docs (Logan Rathbone)
  - !9727 svg: The big split, part one (Matthias Clasen)
  - !9728 bookmarklist: Document `standard::file` attribute (Arun Mani J)
  - !9730 New syntax for state change conditions (Matthias Clasen)
  - !9731 Janitorial (Matthias Clasen)
  - !9733 svg: More splitting (Matthias Clasen)
  - !9735 svg: Fix invalidation (Matthias Clasen)
  - !9737 wayland/toplevel: Set fallback wm capabilities on old xdg_wm_base
    (Jonas Ådahl)
  - !9738 Fix the build (Matthias Clasen)
  - !9740 Misc warnings fixes (g.willems)
  - !9742 wayland: Accept cursor-shape v1 (Matthias Clasen)
  - !9745 gskvulkanimage: fix building on 32-bit (oreo639)
  - !9746 atcontext: remove unneeded signal definition (Sergio Costas Rodriguez)
  - !9747 gtkcheckbutton: Recalculate a11y label on use-underline change (Lukáš
    Tyrychtr)
  - !9749 Update Polish translation
  - !9750 icon editor: Avoid a crash (Matthias Clasen)
  - !9751 Update Czech translation
  - !9752 svg: Improve error reporting (Matthias Clasen)
  - !9753 gtk-demo: Make --autoquit work again (Benjamin Otte)
  - !9756 application-wayland: Add NULL check on gtk_accessible_get_at_context
    (Alessandro Astone)
  - !9757 Update Georgian translation
  - !9758 Add GtkEnumList (Matthias Clasen)
  - !9759 android: Target SDK 36 (Florian "sp1rit"​)
  - !9761 cssprovider: Fix gtk-application-prefer-dark-theme setting (Florian
    "sp1rit"​)
  - !9762 inspector: update keyboard device layouts on property notify (Juan
    Pablo Ugarte)
  - !9764 Add gtk_svg_set_stylesheet (Matthias Clasen)
  - !9765 build: Require wayland-protocols 1.48 (Matthias Clasen)
  - !9766 Wayland: Port to xdg-session-management-v1 (Matthias Clasen)
  - !9767 css: Make this code easier to manage (Matthias Clasen)
  - !9769 icon editor: Drop some wrappers (Matthias Clasen)
  - !9771 Update Romanian translation
  - !9772 accessiblehypertext: Remove non-ISO C semicolon (Stuart Hayhurst)
  - !9773 svg: Support 3D transforms (Matthias Clasen)
  - !9774 Add a GtkSvgWidget (Matthias Clasen)
  - !9776 Update Slovenian translation
  - !9777 svgutils: Plug bytes leak at parser_new_for_string (Maximiliano
    Sandoval)
  - !9779 android: expose gtk-interface-color-scheme XSetting (Florian
    "sp1rit"​)
  - !9782 gpu: Add GSK_GPU_DISABLE=damage (Benjamin Otte)
  - !9783 Assorted small fixes and cleanup (Matthias Clasen)
  - !9785 svg: Move serialization code to a separate file (Matthias Clasen)
  - !9786 surface: Adjust how we decide whether to flip popups (Sergey Bugaev)
  - !9787 Small refactoring (Matthias Clasen)
  - !9788 svg: Misc fixes (Matthias Clasen)
  - !9789 Fix missing dispose and finalize chain-ups (Maximiliano Sandoval)
  - !9792 Some memory leak fixes (Matthias Clasen)
  - !9793 testsuite/diff: fix memory leak in diffreg (Florian "sp1rit"​)
  - !9795 Misc svg fixes (Matthias Clasen)
  - !9796 Add a demo for GtkSvgWidget (Matthias Clasen)
  - !9800 gtkatspitext: Correct for inclusivity differences (Lukáš Tyrychtr)
  - !9801 gpu: Handle scale being too small (Benjamin Otte)
  - !9804 svg: Detect circular \<use\> again (Matthias Clasen)
  - Czech (Patrik Sivek)
  - Georgian (Ekaterine Papava)
  - Hungarian (Balázs Úr)
  - Kabyle (BoF ButterflyOfFire)
  - Polish (Victoria, Victoria Niedzielska)
  - Slovenian (Martin)

========================================
  gtk+-3
========================================

Overview of Changes in GTK+ 3.24.52, 22-03-2026
===============================================

Note: We are going to decrease the frequency of GTK3
releases and limit changes to important bug and crash
fixes, going forward. The next GTK3 release is expected
in March 2027.

* Bugs fixed:
  - #6306 [GTK3] Zlib required when broadway is enabled. (Dmytro Meleshko)
  - #7796 [GTK 3] Invalid a11y events when calling `gtk_tree_view_set_cursor` on
    an unfocused GtkTreeView (Michael Weghorn)
  - #7976 Firefox crashes at gdk_wayland_drag_context_manage_dnd() when missing
    toplevel wl_surface (Matthias Clasen)
  - #8103 gtk3 refresh_rate calculation overflows on 32-bit targets (Alberto
    Garcia)
  - #8114 Images for recolored icons are constantly being reloaded (Sebastian
    Keller)
  - GNOME/gimp#14901 Wild strobing in multi window mode (Lukas Oberhuber)
  - GNOME/gimp#15480 GIMP does not focus on dialogue boxes on Mac (Lukas
    Oberhuber)
  - !7332 quartz: add automagic uti<->mime conversion for clipboard (Friedrich
    Beckmann)
  - !8216 Fix position of child tooltips in GTK3 custom windows (Ingo Brückl)
  - !9005 a11y: Don't send focus-related events for unfocused treeview
  - !9012 quartz: gtkwindow - fix windows fighting focus (Lukas Oberhuber)
  - !9022 gtkmenu: Await more motion events before deactivating on release
    (Carlos Garnacho)
  - !9044 wayland: Handle XKB initialization failures gracefully
  - !9067 gdk/win32: Add missing EGL conditional compilation guard (Dan Yeaw)
  - !9098 gdk: do not run gdk_wayland_window_export_handle() callback when
    window is already destroyed. (Jehan)
  - !9119 Declare an explicit dependency on zlib when broadway is enabled
    (Dmytro Meleshko)
  - !9141 [GTK 3] wayland: Try to open the display even if XDG_RUNTIME_DIR is
    unset (Ludovico de Nittis)
  - !9155 [gtk3] emoji: Update data to CLDR 48 (Jeremy Bícha)
  - !9214 display/wayland: Gracefully handle dispose being called twice (Jonas
    Ådahl)
  - !9284 gdk/wayland: Map stylus buttons for BTN_BACK and BTN_FORWARD (Peter
    Hutterer)
  - !9322 [Quartz] Fix dialog keyboard focus while preventing focus fighting
    (Lukas Oberhuber)
  - !9344 Fix a couple of leaks (Jonas Ådahl)
  - !9394 gdk/wayland: Map stylus buttons for BTN_BACK and BTN_FORWARD
  - !9397 wayland: Avoid a crash (Matthias Clasen)
  - !9600 Replace outdated freedesktop.org Window Manager spec links (balooii
    balooii)
  - !9676 x11: fix overflow in refresh_rate calculation on 32-bit systems
    (Alberto Garcia)
  - !9706 cssimage: Store and reuse icon info for recolored images (Sebastian
    Keller)
  - !9707 wayland: Fix uninitialized value when no cursor (Robert Ancell)
  - !9708 fontchooser: Fix signedness of axes count (Robert Ancell)
  - !9709 fontchooser: Remove const on float return values (Robert Ancell)
  - !9710 print: Remove unused variable (Robert Ancell)

* Translation updates:
  - Basque (Asier Saratsua Garmendia)
  - Bokmål, Norwegian (Kjartan Maraas)
  - Occitan (post 1500) (Quentin PAGÈS)
  - Uighur (Abduqadir Abliz)



========================================
  gtk-doc
========================================

GTK-Doc 1.36.1, 2026-04-10
==========================
- scangobj: fix compilation warnings.
- Some documentation updates.
- Translation updates.


========================================
  gtkmm
========================================

4.23.0 (unstable) 2026-06-09

Gdk:
* contentformats.[ccg|hg]: Add Glib::Value wrapper for GdkFileList.
  Add Value<std::vector<Glib::RefPtr<Gio::File>>> specialization.
  (Zephyr Lykos) Merge request !100

Gtk:
* Gtk::AccelKey: include <gdk/gdk.h>.
  Since gtk 4.23.0 it's not possible to include only gdk/gdkkeysyms.h.
* Application: Add save(), forget(), property_support_save(),
  property_autosave_interval(), signal_restore_winodw(), signal_save_state(),
  signal_restore_state().
* Editable: Add get/property_complete_text().
* Add enum RestoreReason
* Settings: Deprecate property_gtk_application_prefer_dark_theme(),
  property_gtk_shell_shows_app_menu(), property_gtk_shell_shows_menubar(),
  property_gtk_shell_shows_desktop().
* Svg: Add set/get/property_overflow(), set/get/property_stylesheet(),
  set_settings().
* SvgErrorExtra: Add get_input().
* Window: Add signal_force_close().
* New classes: EnumList, EnumListItem, SvgWidget
  (Kjell Ahlstedt)

Documentation:
* Gtk::Application: Update the class description.
  (Kjell Ahlstedt)

gmmproc:
* Add scripts that generate defs files with mmgir
* Small fixes here and there to adapt to defs files generated by mmgir
* The .defs files have been generated with glibmm/tools/mmgir.
  (Kjell Ahlstedt)

Build:
* Require gtk4 >= 4.23.1
  (Kjell Ahlstedt)


* Fix build with build-deprecated-api=false.

========================================
  gupnp
========================================

1.6.10 (stable)

Require GSSDP >= 1.6.5

- Context: Reuse allocated TCP socket from GSSDP Client
  for web server
- Context: Do not leak GError in ACL handler
- Fix IPv6 host header validation

Bugs fixed in this release:
 - https://gitlab.gnome.org/GNOME/gupnp/issues/91

All contributors to this release:
 - Jens Georg <mail@jensge.org>
 - Valeria <valeria.petrov@spinetix.com>


========================================
  gupnp-av
========================================

0.14.5 (stable)

- Fix missing chain-up in SearchCriteriaParser

All contributors to this release:
 - Jens Georg <mail@jensge.org>


========================================
  gvfs
========================================

Major changes in 1.61.1
=======================
* udisks2: Add build option to select busy-processes command (Guido Falsi, Ondrej Holy)
* smb: Fix authentication fallback broken with Samba 4.24 (Ondrej Holy)
* build: Mark AFP and archive backends as deprecated (Ondrej Holy)
* build: Remove burn backend and deprecated apis (Ondrej Holy)
* udisks2: Fix multi-seat drive filtering (Edgar Makarov)
* trash: Various fixes and performance improvements (Ondrej Holy)
* dav: Fix redirect handling to prevent HTTPS downgrade and credential leakage (luxluth)
* Some other fixes (Ondrej Holy, John D. Blair, Maximiliano Sandoval, correctmost, Alynx Zhou)
* Translation updates (GNOME Translation Project contributors)


========================================
  libadwaita
========================================

==================
Version 1.10.alpha
==================

- Add translation comments across the project
- Add AdwCssClassBinding
- Deprecate AdwEnumListModel; switch everything to GtkEnumList
- Build
  - Require GTK 4.23.1
  - Depend on ministream instead of appstream
  - Make it possible to build on Android
  - Include prebuilt styles again
  - Resolve locale directory at runtime on Windows
- Adaptive preview
  - Try to contain window styles within the preview
  - Collapse the sidebar on small sizes
  - Fix casing in a message
  - Don't make device model names and Phosh names translatable
- AdwAboutDialog
  - Add :other-apps-title
- AdwAboutDialog and AdwAboutWindow
  - Speed up adding legal sections
  - Speed up adding credit sections
- AdwAlertDialog
  - Fix a crash when chaining up in response()
  - Fix the Since annotation on get_prefer_wide_layout()
- AdwApplication
  - Speed up initial style loading
- AdwBreakpointBin
  - Fix initial focus
- AdwButtonRow
  - Fix availability annotation
- AdwClampScrollable
  - Implement GtkScrollable.get_border()
- AdwEntryRow
  - Fix clicking edit icon
  - Reduce the number of notify::opacity emissions on children
- AdwNavigationView
  - Fix swipe direction
- AdwOverlaySplitView
  - Add a unique style class to the overlay sidebar
- AdwShortcutLabel
  - Use a more natural modifier ordering
  - Improve key labels on macOS
- AdwSidebar
  - Add :prefix and :suffix
  - Set tab behavior to 'item'
  - Fix adding multiple sections at once
  - Fix a crash when removing multiple items at once
- AdwSpinnerPaintable
  - Support icon weight
- AdwStyleManager
  - Implement Android settings backend
  - Use default timeout when talking to the settings portal
  - Fix gtk-application-prefer-dark-theme warnings with newer GTK
  - Speed up initial loading
- AdwSwipeTracker
  - Ignore mostly orthogonal touchpad scrolls
- AdwTabView
  - Fix a deprecation
- AdwViewSwitcherSidebar
  - Add :prefix and :suffix
  - Fix a leak
- Demo
  - Adjust shortcuts on macOS
- Examples
  - Fix a build error
- Stylesheet
  - Reduce icon weight for large icons
  - Improve popover shadow
  - Fix svg asset rendering with newer GTK
  - Adapt to GtkSpinner changes in newer GTK
  - Fix bottom padding with .navigation-sidebar
  - Fix a copypaste error
- Update internal icons
- Various cleanups
- Translation updates
  - Belarusian
  - Chinese (Taiwan)
  - Cornish
  - Czech
  - Dutch
  - Filipino
  - Kabyle
  - Norwegian Bokmål
  - Persian
  - Polish
  - Romanian
  - Russian
  - Serbian
  - Slovak
  - Slovenian


========================================
  libdex
========================================

libdex 1.2.alpha
================

This is an alpha release for the upcoming GNOME 51.

 * Dropped the gconstructor for `dex_init()` which means applications must
   call `dex_init()` at startup themselves from `main()`.
 * New DexLimiter API for bounded concurrency with explicit
   acquire/release, automatic permit management while running fibers, and
   close/reject behavior for queued work
 * New timeout wrappers for futures: dex_future_with_timeout(),
   dex_future_with_timeout_msec(), dex_future_with_timeout_seconds(), and
   dex_future_with_deadline()
 * Additional GFile async wrappers for temporary directories, copy with
   progress, trash, append, partial content loading, byte loading,
   filesystem info queries, default handler lookup, enclosing mount lookup,
   display-name changes, read/write open/create/replace variants, string
   content replacement, and symbolic link creation
 * Additional GIO async wrappers for GAppInfo, GDataInputStream,
   GOutputStream, GSocketClient, GSocketConnection, GTlsConnection,
   GDtlsConnection, GResolver, GNetworkMonitor, GProxy, GProxyResolver,
   GSubprocess, GTlsDatabase, GTlsInteraction, GPermission, and
   GUnixConnection
 * New DexCoroutine stackless future type with helpers for suspending on
   pending futures, plus dex_scheduler_spawn_coroutine()
 * New DexTaskGroup API for structured concurrency with close, cancel, and
   cancel-on-error behavior
 * New DexThreadPool API for bounded threaded work queues
 * New dex_limiter_run_on_pool(), dex_limiter_run_coroutine(), and
   dex_limiter_close_after_drain()
 * New dex_aio_open() and dex_aio_close()
 * New dex_fiber_yield()
 * New DEX_DEFINE_CLOSURE_TYPE() helper for closure-like state structs
 * New dex_set_object() helper and DexObject property support for DexFuture
   values
 * New dex_promise_resolve_enum()
 * New DexStateMachine API to simplify asynchronous state machines with fibers
   providing a simple API to track state machine transitions.
 * Future debug names are now enabled by default when compiling with GCC and
   fibers emit Sysprof marks for their duration
 * Fix DexObject weak-reference retargeting to avoid a possible lock
   inversion during finalization
 * Fix DexChannel receive_all() to unblock queued senders after draining
   bounded channel capacity
 * Fix DexDelayed chaining so release waits for the wrapped future in the
   correct direction
 * DexPosixAioBackend now delays threadpool startup until the first work item
   is enqueued.
 * Make DexSemaphore user-space only
 * Build system fixes for gio-unix dependency propagation
 * Fix clang testsuite compatibility around atomic addition
 * Documentation additions for limiters, timeout-gated futures, coroutines,
   task groups, thread pools, schedulers, debugging, and GIO wrappers
 * Testsuite additions for limiters, timeout passthrough behavior, delayed
   futures, channel receive_all(), weak-reference retargeting, GIO wrappers,
   AIO, coroutines, fibers, task groups, thread pools, DexObject, and
   DexTest helpers



========================================
  libgsf
========================================

libgsf 1.14.58

Morten:
	* Fix gsf_infile_msole_child_by_index

--------------------------------------------------------------------------
libgsf 1.14.57

Morten:
	* Fix problems with ole files bigger than 4G.  [#45]
	* Document property fix.
	* Introspection fixes.
	* Make gzip, bzip, zip handle 4G+ writes.
	* Make gzip, bzip, zip handle 4G+ reads.
	* Improve testing.
	* Ole performace improvements with loads of children.

--------------------------------------------------------------------------

Morten:

========================================
  librsvg
========================================

Version 2.62.90
===============

librsvg crate version 2.63.0-beta.0

librsvg-rebind crate version 0.3.0

- #1220 and #1224 - Limit the depth of files that reference other
  files, via XML XInclude, inter-document references, and CSS
  includes.  The Rust API has a new
  ImplementationLimit::MaximumFileNestingDepthExceeded error variant
  to surface this to the loading functions.

- #1142: Fix blurry embeded SVG images by rasterizing them at 
  device resolution (Dylan Sechet).

- #1093 - Remove loading limits from image-rs.  This means that raster
  images, when embedded in SVG documents, have no limits for their
  size or memory consumption.  The idea, for now, is that
  security-sensitive applications that use librsvg should do their own
  sandboxing if they want to impose memory limits.

- #1229: Fix build when gobject-introspection is enabled but
  gdk-pixbuf is disabled.

- Fix the logic for whether gdk-pixbuf-query-loaders should be run
  during cross-compilation.  Native builds can of course use it; cross
  builds can use it if they can run host binaries *and* an executable
  wrapper has been set *and* the target sysroot contains the
  corresponding gdk-pixbuf-query-loaders executable (Ross Burton).

- #1231 - Document the crate's feature flags.

- Update the Rust dependencies.


Version 2.62.1
==============

librsvg crate version 2.62.1

librsvg-rebind crate version 0.3.0

- There are no changes from 2.62.0, just an update of the image-rs
  crate to align it with the rest of GNOME 50's versions for
  dependencies.



========================================
  libshumate
========================================

===================
Version 1.7.alpha
===================
 - Added new APIs to refresh and get refresh notifications for map sources
 - Added missing translation text domains


========================================
  libsoup
========================================

Changes in libsoup from 3.6.6 to 3.7.1:

* Add support for the `zstd` content encoding [Patrick Griffis]
* Add `SoupWebsocketConnection:max-total-message-size` to limit incoming WebSocket message sizes [Ignacio Casal Quinteiro, Michael Catanzaro]
* Harden cookie and cookie jar handling:
    * Ignore cookies impersonating prefixed cookies, as well as cookies with empty names and values [Patrick Griffis]
    * Annotate `SoupCookieJar::changed` arguments as nullable [Corentin Noël]
    * Add `SoupCookieJarDB:max-size` to limit the file size of the database [Filipe Norte]
    * Expose `SoupCookieJarDB` construction failures via `GInitable`, and rename `SoupCookieJarDBError` to `SoupCookieJarError` [Patrick Griffis]
    * Avoid sending cookies to HTTP proxies for HTTPS requests [Carlos Garcia Campos]
* Tighten HTTP parsing and validation:
    * Reject multiple `Content-Length` headers and tighten `Content-Length` validation [Carlos Garcia Campos, Samuel Dainard]
* websocket: Fix an out-of-bounds read when reading an unmasked frame, and make `Sec-WebSocket-Protocol` matching case-sensitive [Mike Gorse, Diego Pino Garcia]
* http2: Fix graceful `GOAWAY` handling and several crashes and read/write edge cases [Carlos Alberto Lopez Perez, Eugene Mutavchi, Carlos Garcia Campos, Patrick Griffis, Michael Catanzaro]
* auth: Drop unused automatic NTLM auth and reject excessively long NTLM passwords [Michael Catanzaro, Mike Gorse]
* http1: Improve chunked request parsing [Carlos Garcia Campos]


========================================
  localsearch
========================================

NEW in 3.12.alpha - 2026-06-29
==============================
  * Fix possible crash when deleting a directory recursively
  * Fix `localsearch status --follow` output while extracting metadata
  * Fix potential metadata extractor stalls with many files resulting in
    extraction errors
  * New audio/video metadata extractor based on MediaInfo, it will
    eventually supersede the libav extractor.
  * Drop use of GMarkup for XML parsing, replaced with libxml2
  * Extract `nie:title` for album discs
  * Refactors of indexer internals
  * Fixes to Coverity warnings
  * Improved checks for files remaining to have a pass through the
    metadata extractor
  * Cleanup leftover album/disc/artist metadata
  * Improvements and fixes to XMP metadata extraction
  * Preserve indexed data on unmounts of parent folders, e.g. '/'

Translations: be, de, it, kab, lo, nb, nl, sk, th


========================================
  loupe
========================================

## 51.alpha (2026-06-29)

### Added

- Show creator, copyright information, camera lens, and used software in image metadata.

### Fixed

- Don't accumulate delays during animations. !596
- Don't keep showing saving overlay after error. !597


========================================
  mm-common
========================================

mm-common 1.0.8 (2026-07-01)

* doc-reference.am: Distribute .svg files from the HTML directory
  (Kjell Ahlstedt)

Skeletonmm:
* Add skeletonmm/tools/generate_from_gir.sh
  (Kjell Ahlstedt)

Meson build:
* Allow -Duse-network=if-no-local-tag-file (new default value)
  (Kjell Ahlstedt)

Additions to version 1.0.7 news (added 2026-07-01)

Documentation:
* Replace gtkmm.org by gtkmm.gnome.org.
  (Kjell Ahlstedt)

Skeletonmm and Meson build:
* Require meson >= 0.62.0
  (Kjell Ahlstedt)



========================================
  mutter
========================================

51.alpha
========
* Fix size increases when quickly unmaximizing window by drag [Jonas; !4856]
* Fix cursor position hint for Xwayland if scaling is used [Olivier; !4989]
* Fix fullscreening of edge tiled windows [Jonas; !4960]
* Scale the hotspot location for tablet tool cursors [Olivier; !5026]
* Fix moving maximized windows to another monitor via keyboard [Jonas; !4852]
* Fix alt-tab with sloppy/mouse focus [Jonas; !5036]
* Allow input capture portal to integrate with clipboard [Jonas; !4767]
* Implement support for version 2 of text_input_v3 protocol [Carlos; !3600]
* Fix DND data offers on touch [Alessandro; !5057]
* Ignore repeated events for double click counting [Lukáš; !4883]
* Fix broken switch-monitor mapping on stylus buttons [Peter; !5073]
* Do not unfullscreen fullscreened window on unmaximize [Zhiyi; !5069]
* Add format-aware window_actor_paint_to_content() variant [Christopher; !5077]
* Make DND with tablets work across surfaces [Carlos; !5043]
* Ensure preferred_scale event is sent to clients [Michel; !5103]
* Remove support for legacy NVIDIA drivers [Jonas; !5079]
* De-prioritize focusing desktop windows [Marco; !5016]
* Minimize stage paints and buffer copies in screencasts [Michel; !5046, !5119]
* Remove CoglProgram/Shader API [Bilal; !5094]
* Fix erroneous stack order changes on workspace switches [AnonymouX47; !4992]
* Allow creating Devkit monitors from the command line [Jonas; !4975]
* Fix triggering OSK for text_input_v3 version 1 clients [Sebastian K.; !5117]
* Fixed crashes [Marco, Carlos, Jonas, Michel, Zander; !5038, !5064, !5063,
  !5074, !5072, !5061, !5076, !5097, !5107]
* Misc. bug fixes and cleanups [Jonas, Marco, Gert-dev, Denis, Sebastian K.,
  AnonymouX47, Bilal, Zhiyi, Christian, Michel, Florian, Vasiliy, Sebastian W.,
  Michael, Daniel, Alessandro, Carlos, Andre, Abderrahim, Marius; !5027, !4984,
  !5037, !5025, !5034, !4998, !5015, !5035, !5011, !5054, !5052, !5053, !4963,
  !5060, !5062, !4853, !4866, !5040, !4751, !4814, !5070, !5012, !4875, !4949,
  !5101, !5102, !5080, !5075, !4977, !5096, !4995, !5082, !5108, !5081, !5105,
  !5013, !5112, !5116, !5114, !5058, !5124, !5128, !5127, !5118, !5048, !5085,
  !5139, !5107, !5140, !5126, !5134]

Contributors:
  AnonymouX47, Alessandro Astone, Zander Brown, Michael Catanzaro,
  Marius Cirsta, Michel Dänzer, Bilal Elmoussaoui, Olivier Fourdan,
  Denis Garaev, Carlos Garnacho, Gert-dev, Christian Glombek, Peter Hutterer,
  Saikeo Kavhanxay, Sebastian Keller, Abderrahim Kitouni, Florian Müllner,
  Andre Nijman, Christopher Snowhill, Vasiliy Stelmachenok,
  Marco Trevisan (Treviño), Lukáš Tyrychtr, Daniel van Vugt, Sebastian Wick,
  Zhiyi Zhang, Jonas Ådahl

Translators:
  Nathan Follens [nl], Jose Riha [sk], Danial Behzadi [fa],
  Saikeo Kavhanxay [lo], Christian Kirbach [de], Aefgh Threenine [th],
  Kjartan Maraas [nb], Davide Ferracin [it], Cas Pascal [vi],
  Victoria Niedzielska [pl], Martin [sl], Antonio Marin [ro]

50.1
====
* Allow setting paint debug flags from environment [Jonas; !4973]
* Fix applying pango scale attributes to text [AnonymouX47; !4964]
* Fix moving minimized maximized windows to a different monitor [Jonas; !4958]
* Configure primary GPU in headless mode if it does't support KMS [Vivek; !4561]
* Use fewer buffers for screencast streams [Georges; !4983]
* Only queue clipped redraws when mapped [Sebastian; !4990]
* Fix XReconfigureWMWindow() resizing window when not requested [Robert; !5010]
* Fix DND sometimes failing with reused data sources [Sebastian; !5009]
* Fix performance regression with some nvidia driver versions [Michel; !5018]
* Use modifiers for secondary GPU FBOs [Michel; !5019]
* Fix freeze with nvidia driver [Michel; !5021]
* Fixed crash [Jonas; !4982]
* Misc. bug fixes and cleanups [Carlos, Daniel, Jonas, Florian, Bilal, Naveen,
  Sebastian; !4976, !4985, !4979, !4978, !4987, !5004, !5005, !5006, !5003,
  !5017]

Contributors:
  AnonymouX47, Georges Basile Stavracas Neto, Robert Brown, Michel Dänzer,
  Bilal Elmoussaoui, Carlos Garnacho, Vivek Kasireddy, Sebastian Keller,
  Naveen Kumar, Florian Müllner, Daniel van Vugt, Jonas Ådahl

Translators:
  Марко Костић [sr], Baptiste Darthenay [eo], Artur S0 [ru],
  Christian Kirbach [de]


========================================
  nautilus
========================================

Major Changes in 51.alpha
=========================
* Enhancements:
- Show selected items count badge while dragging multiple files (Aaryan Dadu)
- Combine '.' and '..' name errors in validators (pagarao)
- Hide parent folder for mount root children (Krish)
- Don't show placeholder trashed info for multiple files or the Trash in properties (Khalid Abu Shawarib)
- Add a tooltip to properties detach window button (Lukáš Tyrychtr)
- Show either an unreadable or read-only emblem (Peter Eisenmann)
- Show symbolic link emblem before read-only/unreadable  (Peter Eisenmann)
- Adjust non-indexed search description in info popover (parzival)
- Advertise notification categories for file and mount/unmount operations (Khalid Abu Shawarib)
- Slightly enhance view reloading performance  (Khalid Abu Shawarib)
- Add more tests for bookmarks list, icon-info, image widget, file creation, and thumbnailing (Khalid Abu Shawarib)

* Bugfixes:
- Show the correct starred status and normal features of properties in Recents (Khalid Abu Shawarib)
- Don't unselect when right clicking the view's background (Khalid Abu Shawarib)
- Don't override manual selection with file operation results (Khalid Abu Shawarib)
- Fix a bug where copied files are not selected after the operation has ended (Khalid Abu Shawarib)
- Removed several usages of blocking IO in the main thread (Khalid Abu Shawarib)
- Fixed "Window is ready" notification when other apps call "Open location" instead of raising the window (Khalid Abu Shawarib)
- Fix Escape not closing the app chooser dialog when the entry is focused (Peter Eisenmann)
- Fix accessibility label and description of view mode button (Sergio Costas)
- Fix thumbnail not being updated while loading is some cases (Khalid Abu Shawarib)
- Fixed leaks (Khalid Abu Shawarib)
- Remove redundant bookmark list updates signals (Khalid Abu Shawarib)
- Fix loading getting stuck while thumbnailing in flatpak (Khalid Abu Shawarib)
- CI fixes (Khalid Abu Shawarib, Peter Eisenmann)

* Cleanups:
- Various dead code removals and simplifications (Peter Eisenmann, Khalid Abu Shawarib)
- Reduce the usage of deprecated APIs (Khalid Abu Shawarib, Peter Eisenmann)
- Fix gdbus commands in CONTRIBUTING.md (Lynn)
- Renable compilation of localsearch test but keeep skipping them (Khalid Abu Shawarib)
- Use newer image widget for previews in properties and conflict dialog (Khalid Abu Shawarib)
- Use libgxdp for the file chooser window attachment and remove the local copy (Khalid Abu Shawarib, Peter Eisenmann)
- Moved thumbnails test to display suite (Khalid Abu Shawarib)

* Translation updates (GNOME Translation Project contributors)

Major Changes in 50.2.2
=======================
* Bugfixes:
- Fix app chooser breaking translation domains (Khalid Abu Shawarib)

Major Changes in 50.2
=====================
* Enhancements:
- Add Lao translation (Saikeo Kavhanxay)
- Flush search results based on time instead of file count (Khalid Abu Shawarib)
- Allow opening multiple files with different extensions (pagarao)

* Fixed regressions:
- Added search entry to applicaton chooser (Khalid Abu Shawarib, Peter Eisenmann)

* Bugfixes:
- Fix app staying in the background after properties windows are closed (Khalid Abu Shawarib)
- Fix possible crash with properties window (Khalid Abu Shawarib)
- Fix thumbnails not appearing in remote locations (Khalid Abu Shawarib)
- Fix fallback icons not changing size with zoom level (Khalid Abu Shawarib)
- Fix duplicate conflict dialog when moving files across volumes (Kristóf Széles)
- Handle trailing '.' character for FAT volumes (iwasMateo)
- Fix search recursion for directories with no ID (Khalid Abu Shawarib)
- Fix off-by-one insertion of bookmarks (eric)
- Fix templates unique naming with a file extension (Khalid Abu Shawarib)
- Fix a thin line of checker pattern appearing in thumbnails (Khalid Abu Shawarib)
- Fix opening files with nautilus itself (Khalid Abu Shawarib)
- Avoid potential crash in list view (Khalid Abu Shawarib)

* Cleanups:
- Don't create trash monitor when not needed (Ondrej Holy)
- Correctly clear name-cell callbacks on disposal (Marc Rendiet)

* Translation updates (GNOME Translation Project contributors)

Major Changes in 50.1
=====================
* Bugfixes:
- Fix a crash on empty MIME type (Khalid Abu Shawarib)
- Fix read-only/not accessible emblems (Peter Eisenmann)
- Assure view item deduplication on slow machines (Ondrej Holy)
- Fix error icon size (Khalid Abu Shawarib)
- Restore default focus for permanent delete dialog (Peter Eisenmann)
- Autocomplete folders with trailing slash again (Peter Eisenmann)
- Fix opening folder with many custom icons (Khalid Abu Shawarib)
- Fix showing properties for encrypted partition (Khalid Abu Shawarib)
- Fix image rounding (Khalid Abu Shawarib)

* Cleanups:
- Don't allow editing custom icons for trash or trashed files (Khalid Abu Shawarib)
- Use GIcon for launch context (Khalid Abu Shawarib)

* Translation updates (GNOME Translation Project contributors)


========================================
  orca
========================================

50.2 - 26 May 2026

Web:

* Fix repetition of previous line when leaving blockquotes.

* Handle traceback triggered by Chromium crash.

* Fix double-presentation when flat-reviewing Chromium content.

Preferences:

* Fix table-navigation-enabled state for app settings.

* Fix orphaned key grab.

General:

* Don't present ancestors in basic where am I.

New and updated translations (THANKS EVERYONE!!!):

  fa              Persian                   Danial Behzadi
  nb              Norwegian Bokmål          Kjartan Maraas
  ro              Romanian                  Antonio Marin
  sk              Slovak                    Jose Riha
  th              Thai                      Aefgh Threenine

=========

50.1 - 14 April 2026

Web:

* Fix presentation of multiline-text web combo boxes.

* Fix presentation of link file size.

* Fix double-presentation of "focus mode" when page load completes.

* Fix say all looping in content, and eliminate some chattiness.

Preferences:

* Fix preferences saving to old profile path after rename.

* Fix bug preventing restoration of default voice values.

* Fix left-over JSONism that prevented spiel from being saved as the
  speech server.

* Handle TypeError resulting from speech synthesizer crashing during
  prefs save.

New and updated translations (THANKS EVERYONE!!!):

  de              German                    Christian Kirbach
  eu              Basque                    Asier Saratsua Garmendia
  fr              French                    Guillaume Bernard
  it              Italian                   Davide Ferracin
  pl              Polish                    Victoria Niedzielska
  ru              Russian                   Danil
  ru              Russian                   Sergej A.

=========


========================================
  pango
========================================

Overview of changes in 1.58.0, 26-06-2026
=========================================

* PangoFontDescription has a new width attribute, which
  is like stretch, but allows intermediate values

* PangoRenderer has gained the ability to render only certain
  components of a layout (such overlines, underlines, text,...)

Overview of changes in 1.57.1, 22-03-2026
=========================================

* Bugs fixed:
  - #867 Bad font substitution causes application crashes
  - #869 MacOS: subprojects/cairo/meson.build:1:0: ERROR: Value "gnu11,c11" (of
    type "string") (sid)
  - #870 MacOS: subprojects/pango/utils/viewer-cocoa.m:23:10: fatal error:
    'cairo/cairo.h' file not found (sid)
  - #871 gtk4-widget-factory crashes with pango error on macOS when an emoji is
    entered into a text field
  - #876 Inconsistency between documentation and code in
    pango_context_set_font_description (Matthias Clasen)
  - #882 The hex box characters generated in PDF can not be copied
  - #885 warning: assignment discards 'const' qualifier from pointer target type
    [-Wdiscarded-qualifiers]
  - !884 Revert "meson: Rework introspection handling"
  - !890 Update the code to support Unicode 17.0.0
  - !892 Include fcfreetype.h where needed
  - !893 meson: Update freetype2 wrap to fix ci warnings
  - !894 Respect explicit language attribute when itemizing
  - !895 Fix some subproject woes
  - !896 meson: Add support for cross-compiling using Apple subsystems
  - !897 (break.c) pass sentences to handle_sentences
  - !898 add support for g_autoptr(PangoScriptIter)
  - !900 fontmap: Mark get_family as nullable



========================================
  pangomm
========================================

2.56.2 (stable) 2026-06-25

Documentation:
* Remove obsolete FSF (Free Software Foundation) address
  (Kjell Ahlstedt)
* README.win32.md: Mention Visual Studio 2026
* Visual Studio builds: Update build information
  (Chun-wei Fan) Merge request !25

Meson build:
* Use the Python installation that Meson uses.
  See merge request glibmm!67
  (Kjell Ahlstedt)
* Meson and NMake builds: Distinguish Visual Studio 2026 builds
  from Visual Studio 2022 builds
* NMake Makefiles: Consolidate items and improve flexibility
* NMake Makefiles: Make build process more robust
  (Chun-wei Fan) Merge request !25
* NMake Makefiles: Update .m4 installation location
  (Chun-wei Fan) Merge request !28
* Don't require the 'dot' command to build the documentation
  (Kjell Ahlstedt)



========================================
  pyatspi
========================================

What's new in pyatspi 2.58.2:

* Fix building the tests with at-spi2-core 2.60.0.


========================================
  pygobject
========================================

3.56.3 - 2026-05-08
-------------------

* Fix crash when user_data is defined before callback :mr:`554`
* Add missing msg argument to asyncio cancel() :mr:`541`
* Fix potential buffer overflow errors :mr:`540`
* Fix memory leak when initializing GTK templates :mr:`526`

3.56.2 - 2026-03-25
-------------------

* ci: drop obsolete mingw environments, add UCRT64 and clang64 (backport) :mr:`533`
* Leave floating state intact for get/set property (backport) :mr:`534`
* Only call do_dispose if it's implemented on the class (backport) :mr:`531`


========================================
  rygel
========================================

46.alpha
========

New and updated dependencies:
 - pyyaml
 - sphinx + furo theme for building the website
 - meson >= 1.8.0
 - rst2man

All:
 - Remove RUIH implementation

Core:
 - Allow proper boolean settings through environment variables
 - Align list definition through environment with config file
 - Remove BasicManagement and EnergyManagement

Docs:
 - Host website inside repository

Bugs fixed in this release:
 - https://gitlab.gnome.org/GNOME/rygel/issues/83

All contributors to this release:
 - Jens Georg <mail@jensge.org>
 - Jose Riha <jose1711@gmail.com>
 - Baurzhan Muftakhidinov <baurthefirst@gmail.com>
 - Jordan Petridis <jpetridis@gnome.org>
 - Saikeo Kavhanxay <kavhanxay@hotmail.com>
 - Aefgh Threenine <aefgh39622@gmail.com>
 - Davide Ferracin <davide.ferracin@icloud.com>
 - Andi Chandler <andi@gowling.com>
 - Alexander Alexandrov Shopov <ash@kambanaria.org>
 - Andika Triwidada <atriwidada@gnome.org>

Added/updated translations:
 - bg.po, courtesy of twlvnn kraftwerk
 - en_GB.po, courtesy of Andi Chandler
 - id.po, courtesy of Kukuh Syafaat
 - it.po, courtesy of Gianvito Cavasoli
 - kk.po, courtesy of Baurzhan Muftakhidinov
 - lo.po, courtesy of FULL NAME
 - sk.po, courtesy of Dušan Kazik
 - th.po, courtesy of Akom Chotiphantawanon


========================================
  simple-scan
========================================

Overview of changes in simple-scan 50.0
~~~~~~~~~~~~~~
Released: 2026-04-02

  * Update cursor names to be correctly displayed on Wayland.
  * Fix scanner selection disappearing after failed scan
  * Use AdwToggleGroup in preferences dialog
  * Bump minimum libadwaita version
  * Show in-app notification after export with open folder action
  * Fix if multiple pages in book-view the horizontal scroll bar is not shown, except a resize event occurs.

========================================
  snapshot
========================================

## 51.alpha 2026-06-28
- Minor improvements
- Updated translations


========================================
  sushi
========================================

51.alpha
========

Epic:
- Port to GTK 4 (Corey Berla)

UI changes:
- Support auto dark theme for text (Corey Berla)
- Improve audio, error and fallback renderers (Peter Eisenmann, Tau Gärtli, Nokse)
- Allow to fullscreen independent of file type (Peter Eisenmann)
- Animate window size changes (Nokse)
- Keep window size unchanged once scaled by user (Peter Eisenmann)
- Use at most a quarter of the current screen (Peter Eisenmann)
- Show images at their real size (Tau Gärtli)
- Use flat headerbars for some file types (Nokse)
- Rework toolbar overlays (Nokse)
- Modernize media controls with Gtk.MediaControls (Nokse)
- Support custom icons (Tau Gärtli)
- Balance headerbar buttons (Peter Eisenmann)
- Correct window sizing (Tau Gärtli, Peter Eisenmann)

Known regressions:
- LibreOffice documents are rendered into PDFs, as the previous method is not compatible with GTK4

Backend changes:
- Adopt GtkPicture and GtkVideo (Corey Berla)
- Port Evince to Papers (Corey Berla, Tau Gärtli)
- Use libadwaita (Nokse, Corey Berla)
- Replace GdkPixbuf with Glycin (Tau Gärtli)
- Add metadata discoverer (Corey Berla)
- Port to ES Modules (Tau Gärtli)
- Use Blueprint (Peter Eisenmann, Tau Gärtli)
- Add CI checks for meson, Blueprint and potfiles (Tau Gärtli)
- Add editorconfig (Tau Gärtli)
- Use fribidi for text direction (Peter Eisenmann)
- Document how to run Sushi (Tau Gärtli)
- Various code cleanups and simplifications (Corey Berla, Peter Eisenmann, Tau Gärtli)
- Stop renderer when window is closed (Tau Gärtli)

Translations:
- Add Lao translation (Saikeo Kavhanxay)
- Translation updates (GNOME Translation Project contributors)

50.0
====

- Fix a typo (Danial Behzadi)
- Translation updates


========================================
  sysprof
========================================

Overview of changes in Sysprof 50.alpha
=======================================

 * Various optimizations to libsysprof-capture


========================================
  tinysparql
========================================

NEW in 3.12.alpha - 2026-06-29
==============================
  * Performance improvements to ICU full-text search tokenizer
  * Fix potential leaks with malformed ontology definitions
  * Test suite changes to cater for SQLite >= 3.53.1

NEW in 3.11.1 - 2026-04-14
==========================
  * Fixes to memory leaks and issues spotted by ASAN
  * Make lifetime of some mutexes explicit


========================================
  totem-pl-parser
========================================


3.26.7:
- Fix uninitialized variable error in plparser
- Add itunes genre support for podcast RSS feeds
- Split podcast tests
- Fix deprecation warnings
- Fix return value from cancelled plparser calls
- Fix TotemPlParserMetadata in plparser bindings
- Use gitlab.gnome.org for bug-database in doap
- Use apps.gnome.org for homepage in doap
- Update podcast test for server changes
- Fix guard return type in plparser
- Add release CI elements
- Remove duplicate dependency in CI
- New and updated translations

========================================
  vala
========================================

Vala 0.56.19
============
 * Various improvements and bug fixes:
  - codegen: Minor refactoring of TypeRegisterFunction and its subclasses
  - codegen: Use G_TYPE_FLAG_NONE when targetting glib >= 2.74
  - codegen: Use g_once_init_{enter,leave}_pointer when targetting glib >= 2.80
  - codegen: Propagate default_value_on_error from parent struct
  - codegen: Return default_value_on_error on precondition failures
  - gdbus: Avoid unused variables in method call and properties getter/setter
  - gdbus: Allow GLib.VariantDict for a{sv}
  - gdbus: Do not provide unintended read/write access to properties
  - parser: Fix statement error recovery [#1590]
  - vala: Use reference-transfer as needed when transforming
    conditional-expression [#1648]
  - girwriter: Don't use instance-parameter inside function elements [#1606]
  - girwriter: Add the doc:format argument in the .gir file
  - libvaladoc: Do not error-out on doc:format
  - libvaladoc: Add compat layer for gvRenderData to cope with API break [#1621]

 * Bindings:
  - glib-2.0: allow FileUtils.open_tmp's first argument to be null
  - posix: add UTIME_{NOW,OMIT} constants for utimensat
  - gsl: Deprecate gsl_linalg_cholesky_decomp in favour of
    gsl_linalg_cholesky_decomp1 [#1602]
  - libxml-2.0: Add more fields to ParserCtxt
  - gobject-2.0: Set default_value{,_on_error} for GType
  - glib-2.0: Fix *.add_once () callbacks [#1556]
  - gobject-2.0: Fix return type
  - gobject-2.0: Add Type.to_string ()
  - gstreamer-1.0: Fix ownership of Caps.full*() parameters [#1628]
  - glib-2.0: fix a typo in a parameter name
  - gtk4: Update to 4.21.6+83716767
  - gtk4: Make all Gsk.RenderNode and Gsk.Renderer shadow their parent type
  - gtk4: Fix CursorGetTextureCallback declaration


========================================
  xdg-desktop-portal-gnome
========================================

Changes in 51.alpha
=================
- Add support for session persistence in the Input Capture portal
- Use newer GLib APIs to simplify code
- Various small code cleanups
- Translation updates


========================================
  yelp
========================================

49.1
====
* Fixed issue that could allow remoate access to local files
* Updated translations:
  bg    (Alexander Alexandrov Shopov, twlvnn kraftwerk)
  de    (Froschi)
  el    (Efstathios Iosifidis)
  eo    (Kristjan SCHMIDT)
  fr    (Irenee THIRION)
  fur   (Fabio Tomat)
  id    (Andika Triwidada)
  kk    (Baurzhan Muftakhidinov)
  kw    (Flynn Peck)
  nb    (Kjartan Maraas)
  oc    (Quentin PAGÈS)
  ro    (Antonio Marin)
  sk    (Jose Riha)
  sr    (Милош Поповић)
  th    (Aefgh Threenine)
  tr    (Sabri Ünal)
  ug    (Abduqadir Abliz)


========================================
  zenity
========================================

Zenity 4.2.2
  Bugfix release for Zenity 4.2.x.

  Changes and fixes since 4.2.1:
  - colview: Actually hide header via --hide-header when possible (Logan
    Rathbone) (!58)


