You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Toga's Textual backend now has an automated test harness. Coverage is not yet complete, but automated testing of Textual widgets is now possible. (#2663)
On macOS, the logic in the app delegate's native lifecycle notification methods has been moved to cocoa_-prefixed methods on the toga_cocoa App implementation class. Every native app lifecycle notification now has a corresponding method, most defaulting to a no-op, that can be overridden to add custom platform-specific behavior in the absence of a cross-platform lifecycle API. (#4478)
The binary DLLs needed to support WebView2 usage on Windows have been split into a standalone PyPI package (dotnet-WebView2.WinForms). (#4582)
App paths now provide anchors for common user-space folders - the user's Desktop, Documents, Downloads and Pictures folders. (#4645)
Software keyboards from iOS TextInput widgets can now be dismissed by clicking on any other widget outside its bounds. (#1236)
Desktop backends now respect user and system environment configuration (XDG base directories on Linux; %LOCALAPPDATA% on Windows) for application storage paths. (#2867)
On macOS, space is no longer allocated for separators in a toolbar, matching recent style changes in macOS. (#3786)
On macOS Tahoe, toolbar icons are now correctly sized. (#3786)
WinForms DPI resizing, including font, content, and window sizes, have been made significantly more reliable. (#4486)
The WinForms event loop has become more resilient in the presence of long running repetitive tasks. (#4532)
When a WinForms window with a divider undergoes a DPI change, the current length of the divider is no longer permanently imposed as a minimum. (#4566)
WinForms now properly scales the contents of a Canvas in HiDPI. (#4583)
The equality operator now works with the GTK implementation of Icon. (#4602)
Boolean checks on an AsyncResult now raise the same helpful error as comparisons, instead of a confusing TypeError. (#4630)
The Dummy backend now correctly declares all dependencies it requires for operation, instead of relying on testing dependencies from Toga's core library. (#4675)
On macOS, app.paths.config is now a Config folder inside the app's ~/Library/Application Support folder, rather than a folder in ~/Library/Preferences. Apple's guidelines reserve the Preferences folder for the system preferences API; apps should not create files there themselves. (#4682)
The Static Positron bootstrap no longer fails to generate a new project when using Briefcase 0.4.5 or newer. (#4691)
The iOS 27 SDK can now be used to run Toga applications with a switch from ApplicationDelegate to SceneDelegate. (#4695)
The Testbed app is now able to run on iOS 26. (#4720)
Compatibility with Windows Server 2016 was restored. (#4735)
On Android, the content of an OptionContainer that is added to a window that is already visible is no longer hidden behind the tab bar. (#4729)
On Qt, the content of an OptionContainer tab is now laid out when the tab is selected. (#4738)
On Qt, the width of a flexible Selection widget is now applied correctly. (#4739)
The Cocoa, GTK, Qt, WinForms and Textual backends now use platformdirs to determine the base location of app-specific paths. Path locations are unchanged on Windows and Linux; on macOS, app.paths.config has moved from ~/Library/Preferences/<app id> to ~/Library/Application Support/<app id>/Config, and app.paths.data has moved from ~/Library/Application Support/<app id> to a Data sub-folder of that location, so that app paths cannot collide. Toga does not move any existing files; an app that needs to preserve files stored at an old location must migrate them on first run.