BeeWare has had an exciting start to the new year, with a couple of significant releases
What we've done
We had two big releases in January.
Firstly, we released Briefcase 0.3.12. This is the first Briefcase release in 3 months, so it includes a lot of improvements, but the most notable improvements are the new "Testing mode", a major improvement to the Android build process, and a huge number of bug fixes and improvements - especially on Windows.
Secondly - and more importantly - we released Toga 0.3.0! No more dev releases or --pre flags for pip - the stable release of Toga on PyPI is now closely tracking actual development. It's been over 5 years since we last released an official stable Toga version, even though we've been recommending the dev releases for most of that time. However, as a result of a number of changes that landed this month, we're finally committing to the 0.3.0 branch properly.
These releases incorporate changes going back months (and years); but we made some very specific progress during January:
- Chaquopy had a new release., significantly improving build times on Android, improving the rendering of stdout content in the Android logs, adding some features that make it easier to expose the original project source code in the running app bundle, and enabling PEP517 builds of project dependencies.
- Briefcase is now able to reference local source packages when building Linux AppImage binaries.
- Some errors caused by the way the Windows Store version of Python handles local application data have been corrected.
- Briefcase's help text now shows the list of platforms and output formats, rather than requiring an additional help call to retrieve that information.
- Some issues with thread and asyncio safety in Rubicon ObjC were identified and resolved, along with an issue associated with the way some Objective C classes (such as NSWindow) are renamed at runtime.
- Initial GUI testing backends for macOS, iOS and GTK were added.
- A long standing issue with the replacement of root window content on GTK and iOS has been resolved.
- Coverage testing was added to the Toga Android GUI test backend.
- An API was added to allow scrolling MultilineTextInput widgets to the top and bottom of the widget content.
- The work moving Toga to use Setuptools-SCM was completed. Development versions of Toga will now report a specific version control commit; release versions have their version determined by the git tag used to produce the release.
- We completed a major review of the way we're using Github issue labels, and modified those labels to be consistent across all repositories.
Much of the last 3 months have been spent getting a GUI testing framework in place for Toga. That work is now in place, so now we'll be working full time on writing GUI tests for Toga, with the aim of getting Toga to 100% coverage. Along the way, we'll discover all the edge cases, bugs, and partially missing implementations that are lurking in the individual Toga widgets.
Want to get involved?
Want to get involved? Here are some open issues that would be a great place to get started with contributing to a BeeWare project. They're all relatively minor changes, but would provide a big improvement to the lives of BeeWare users:
- Modify the handling of app signing options
- Filter out a message generated after Xcode updates
- Add the ability to refresh the support package in a project
- Provide protection against creating projects with "semi-reserved" names
- Add the ability to configure the ABIs built by an Android project
- Add support for the ANDROID_HOME environment variable
- Purge cache folders when installing app code in Briefcase
- Add a template branch option when creating a new project
- Improve validation of project names in the Briefcase wizard
Pick one of these tickets, drop a comment on the ticket to let others know you're looking at it, and try your hand at a PR! We have a guide on setting up a Briefcase development environment; but if you need any additional assistance or guidance, you can ask on the ticket, or join us on the BeeWare Discord server.