Features
* A MapView widget was added. (727)
* Toga apps can now access details about the screens attached to the computer. Window position APIs have been extended to allow for placement on a specific screen, and positioning relative to a specific screen. (1930)
* Key definitions were added for number pad keys on GTK. (2232)
* Toga can now be extended, via plugins, to create Toga Images from external image classes (and vice-versa). (2387)
* Non-implemented features now raise a formal warning, rather than logging to the console. (2398)
* Support for Python 3.13 was added. (2404)
* Toga's release processes now include automated testing on ARM64. (2404)
* An action for a Toga command can now be easily modified after initial construction. (2433)
* A geolocation service was added for Android, iOS and macOS. (2462)
* When a Toga app is packaged as a binary, and no icon is explicitly configured, Toga will now use the binary's icon as the app icon. This means it is no longer necessary to include the app icon as data in a `resources` folder if you are packaging your app for distribution. (2527)
Bugfixes
* Compatibility with macOS 14 (Sonoma) was added. (2188, 2383)
* Key handling for Insert, Delete, NumLock, ScrollLock, and some other esoteric keys was added for GTK and Winforms. Some uses of bare Shift on GTK were also improved. (2220)
* A crash observed on iOS devices when taking photographs has been resolved. (2381)
* Key shortcuts for punctuation and special keys (like Page Up and Escape) were added for GTK and Winforms. (2414)
* The placement of menu items relative to sub-menus was corrected on GTK. (2418)
* Tree data nodes can now be modified prior to tree expansion. (2439)
* Some memory leaks associated with macOS Icon and Image storage were resolved. (2472)
* The stack trace dialog no longer raises an `asyncio.TimeoutError` when displayed. (2474)
* The integration of the `asyncio` event loop was simplified on Android. As a result, `asyncio.loop.run_in_executor()` now works as expected. (2479)
* Some memory leaks associated with the macOS Table, Tree and DetailedList widgets were resolved. (2482)
* Widget IDs can now be reused after the associated widget's window is closed. (2514)
* :class:`~toga.WebView` is now compatible with Linux GTK environments only providing WebKit2 version 4.1 without version 4.0. (2527)
Backward Incompatible Changes
* The macOS implementations of `Window.as_image()` and `Canvas.as_image()` APIs now return images in native device resolution, not CSS pixel resolution. This will result in images that are double the previous size on Retina displays. (1930)
Documentation
* The camera permission requirements on macOS apps have been clarified. (2381)
* Documentation for the class property `toga.App.app` was added. (2413)
* The documentation landing page and some documentation sections were reorganized. (2463)
* The README badges were updated to display correctly on GitHub. (2491)
* The links to ReadTheDocs were updated to better arbitrate between linking to the stable version or the latest version. (2510)
* An explicit system requirements section was added to the documentation for widgets that require the installation of additional system components. (2544)
* The system requirements were updated to be more explicit and now include details for OpenSUSE Tumbleweed. (2549)
Misc
* 2153, 2372, 2389, 2390, 2391, 2392, 2393, 2394, 2396, 2397, 2400, 2403, 2405, 2406, 2407, 2408, 2409, 2422, 2423, 2427, 2440, 2442, 2445, 2448, 2449, 2450, 2457, 2458, 2459, 2460, 2464, 2465, 2466, 2467, 2470, 2471, 2476, 2487, 2488, 2498, 2501, 2502, 2503, 2504, 2509, 2518, 2519, 2520, 2521, 2522, 2523, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542, 2546, 2552