github beeware/toga v0.5.7
0.5.7

5 hours ago

Features

  • 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)
  • Support for Python 3.15 was added. (#4683)

Bugfixes

  • 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)

Backward Incompatible Changes

  • Python 3.10 is no longer supported. (#4683)
  • 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.

Misc

Don't miss a new toga release

NewReleases is sending notifications on new releases.