Skip to content

Releases: beeware/briefcase

0.3.26

04 Dec 08:06
f064dc7

Choose a tag to compare

Features

  • When a project specifies a dependency using a local file path, briefcase dev now installs that dependency in editable mode. This means changes in the local project will be immediately reflected in the development environment, without needing to reinstall the package. (#2334)
  • The build and run commands for Windows, macOS and iOS now have a --debug option for integration with PDB and Visual Studio Code. (#2147, #2352)
  • Windows MSI installers can now include post-install and pre-uninstall scripts, including selection of optional features as part of the install and uninstall process. (#2191, #2573)
  • Windows MSI installers now display and ask for acceptance of the project's license as part of the install process. (#2191)
  • Briefcase's web backend now gives full control of the PyScript and GUI toolkit configuration to the Python packages that are installed in the app. (#2337)
  • briefcase dev no longer overwrites explicitly set environment variables. (#2497)
  • Briefcase now has a cross-platform representation of Bluetooth permissions. (#2522)
  • When packaging an app in MSI format, creation of Start menu shortcuts can now be disabled with the install_launcher setting. (#2534)
  • Windows MSI installers now provide the option for users to configure the install directory for apps. (#2553)
  • When a project defines multiple applications, briefcase devand briefcase run now display an interactive menu allowing the user to select which application to start. (#2574)
  • Briefcase now has the ability to manage virtual environments as part of a development environment. This feature is only used as part of the in-progress dev command for the web environment, but opens up opportunities for better environment isolation in the future. (#2334)

Bugfixes

  • The docs checks in tox now work if there are spaces in the path. (#2477)
  • The system Python version check now works on Gentoo Linux. (#2490)
  • Developer mode is now able to track the need to install requirements on a per-environment basis. (#2495)
  • Permission disabling is now handled correctly (#2522)

Backward Incompatible Changes

  • Java JDK 17.0.17+10 is now used to package Android apps. Use briefcase upgrade java to update your Briefcase-installed JDK instance to this version. (#2529)

Documentation

  • Briefcase's documentation was migrated to Markdown format. (#2502)
  • The obligations of a "well behaved" MSI-packaged application in ensuring a clean registry have been documented. (#2554)

Misc

0.3.26rc5

04 Dec 06:51
067ffc7

Choose a tag to compare

0.3.26rc5 Pre-release
Pre-release

Release candidate 5 of Briefcase 0.3.26.

0.3.25

26 Aug 00:54
1af2f8a

Choose a tag to compare

Features

  • Android apps can now pass --forward-port and --reverse-port to connect ports in the emulated device to the host environment (#2369)
  • Support for Python 3.14 has been added. (#2431)
  • Windows apps and Visual Studio projects can now reference pre-release Python versions as a support revision. (#2432)
  • If an iOS or macOS app doesn't specify a minimum OS version, the minimum OS version is now derived from the support package, rather than being hard coded. (#2443)
  • Android applications now target Android SDK 35 by default. (#2393)

Bugfixes

  • Apps that contain file paths longer than 260 characters can now be included in MSI installers. (#948)
  • Windows builds now have improved hints when a virus checker interrupts a build. (#1530)
  • Wheels that contain Linux .so files are now usable on macOS. (#2429)
  • iOS and macOS apps now read the minimum supported OS version from the Python framework's metadata, rather than requiring a VERSIONS file as part of the support package. (#2443)

Backward Incompatible Changes

  • Support for Python 3.9 has been dropped. (#2431)

Documentation

  • Details on usage of iOS and Android third-party wheels have been updated to reflect recent changes in the Python packaging ecosystem. (#2423)

Misc

0.3.24

10 Jul 08:49
235bf13

Choose a tag to compare

Features

  • When an iOS or macOS binary wheel cannot be found, the error message now provides more useful hints regarding the possible cause. (#2230)
  • Document type and file associations have been improved on macOS. (#2284)
  • Briefcase can now be used to sign, package and notarize apps that Briefcase didn't create. You can now use another tool to create a macOS, Windows or Linux application, and then use Briefcase to complete the process of turning that app into a signed and notarized release artefact. (#2326)

Bugfixes

  • A redundant signing phase has been removed when packaging an apps for macOS. (#1099)
  • An error is now raised on macOS if Briefcase is used on an iCloud mounted drive. iCloud synchronization adds metadata to some folders, which is incompatible with the signing process. (#1808)
  • An app's formal name can now include a . character. (#2151)
  • Distribution-specific cumulative settings (such as requires) now correctly accumulate, rather than overwriting more general values. (#2188)
  • Briefcase will now default to using the system certificate store when performing HTTPS downloads. (#2296)
  • Briefcase now provides richer error information when it is unable to complete a download. In particular, issues associated with SSL verification are now reported as such, rather than as a generic "are you offline?" message. (#2296)
  • The presence of a PIP_REQUIRE_VIRTUALENV environment marker no longer influences the operation of dependency installation on iOS. The iOS installation environments is inherently isolated, so this flag is redundant; but in some circumstances, it would prevent the installation of dependencies into a project. (#2325)

Backward Incompatible Changes

  • Briefcase now uses WiX version 5.0.2 to generate MSI installers on Windows. Any Windows apps created with previous versions of Briefcase will need to be re-generated by running briefcase create. (#1185)

Documentation

  • Documentation about deploying to physical iOS devices has been added. (#1190)
  • References to Briefcase's settings are now hyperlinked for ease of cross-referencing. (#2341)
  • A guide for publishing apps to the macOS App Store has been added. (#2360)
  • Briefcase's documentation now uses a header and style consistent with the BeeWare website. (#2375)

Misc

0.3.23

08 May 05:53
1dd0d0e

Choose a tag to compare

Features

  • Cookiecutter filters for escaping XML content and attributes have been added. (#2103)
  • Briefcase now supports the use of HISTORY, NEWS and RELEASES as filenames for the change log of a project (in addition to CHANGELOG). It also supports the use of .md, .rst and .txt extensions on those files. (#2116)
  • It is now possible to ask boolean question using the Console Interface. (#2128)
  • The create, build, package and update commands can now be run on a single app within a multi-app project by using the -a / --app option. (#2148)
  • The Toga app bootstrap now generates apps that use Toga 0.5. (#2193)
  • An app can now enforce a minimum supported OS version by defining a min_os_version configuration item on a per-platform basis. This minimum value will be used on macOS, iOS and Android deployments. (#2233)
  • The Flatpak runtimes for new projects were updated. org.gnome.Platform will now default to 47; and org.kde.Platform will now default to 6.9. (#2258)
  • Android packages are now built using version 19.0 of Android's Command-line Tools; this version will be automatically installed at first use. (#2260)
  • When creating a new project with briefcase new, or converting an existing project with briefcase convert, Briefcase will now try to infer the author's name and email address from the git configuration. (#2269)

Bugfixes

  • .pth files created by packages installed as dependencies are now correctly processed during application startup on macOS, Windows, Linux and iOS. (#381)
  • Error handling during JDK upgrades has been improved. (#1520)
  • The iOS log filter was improved to hide an message about getpwuid_r that can be ignored. (#2163)
  • New apps using Toga on Linux will impose an upper version pin on PyGObject, limiting that package to < 3.52.1. This is required to ensure that older Debian-based distributions are supported by default. This pin can be removed if these support for these distributions is not required, as long as some additional changes are made to the system_requires and system_runtime_requires definitions. The required changes are included (commented out) as part of the new project template. (#2190)
  • License names now follow the SPDX License List. (#2270)

Backward Incompatible Changes

  • Briefcase can no longer install pure Python macOS packages from a source archive (i.e., a .tar.gz file published on PyPI). If a package is pure Python, it must be provided as a py3-none-any wheel. Briefcase's macOS platform documentation contains details on how to provide a py3-none-any wheel when PyPI does not provide one. (#2163)
  • The app_packages folder now occurs after the app folder in the package resolution path on Windows, Linux, macOS and iOS. This will result in subtle changes in behavior if you have packages defined in your sources that have the same name as packages installed from your requires. (#2204)
  • The iOS app template no longer uses the iphoneos_deployment_target setting to configure the minimum OS version. This variable was undocumented; you should modify any usage of this variable to the newly added (and documented) min_os_version setting. (#2233)
  • If you have a PySide6 app deployed to macOS, you must add min_os_version = "12.0" to your macOS project configuration. As of PySide 6.8.0, PySide6 macOS wheels are tagged with a minimum supported macOS version of 12.0. Previously, Briefcase would install the macOS 12 wheel, but the Briefcase app would declare itself as supporting macOS 11. This would cause errors if the app was run on macOS 11. Briefcase will no longer install macOS wheels that are incompatible with the minimum OS version declared by the app (11.0 by default). The additional min_os_version configuration option is now required to allow Briefcase to resolve the installation of PySide6 wheels. (#2240)
  • Java JDK 17.0.15+6 is now used to package Android apps. Use briefcase upgrade java to update your Briefcase-installed JDK instance to this version. (#2259)
  • The new command now uses SPDX identifiers when referring to licenses. If you have been using the -Q license=XXX option to automate application creation, you will need to modify the value provided to match the SPDX specifier for that license (e.g., MIT instead of MIT license, and BSD-3-Clause instead of BSD). (#2270)

Documentation

  • A how to guide for command-line apps was added. (#1947)
  • Platform notes were added on removing static binary content from iOS and macOS apps. (#2161)
  • The macOS and Windows platform documentation has been simplified to remove duplication of content between output formats. (#2162)

Misc

0.3.22

07 Feb 01:36
135e22b

Choose a tag to compare

Bugfixes

  • Some error messages that are an expected part of the macOS notarization process are now hidden from default verbosity. (#2149)
  • Briefcase no longer uses the --no-python-version-warning option when invoking pip. This option has been deprecated, is currently a no-op, and will be removed soon. (#2149)

Backward Incompatible Changes

  • Java JDK 17.0.14+7 is now used to package Android apps. Use briefcase upgrade java to update your Briefcase-installed JDK instance to this version. (#2133)

Misc

0.3.21

24 Jan 00:43
280fdcd

Choose a tag to compare

Features

  • Briefcase will now surface git's error messages if an error occurs when cloning a template repository. (#1118)
  • Briefcase now supports per-app configuration of pip install command line arguments using requirement_installer_args. (#1270)
  • If macOS app notarization is interrupted, the notarization attempt can now be resumed. (#1472)
  • When a macOS notarization attempt fails, Briefcase now displays the cause of the notarization failure. (#1472)
  • When an existing project uses the convert wizard to add a Briefcase configuration, the updated pyproject.toml now includes a stub configuration for all platforms. (#1899)
  • The briefcase convert command can now be used to configure a console-based applications. (#1900)
  • If Briefcase receives an error invoking a system tool, it will now surface the raw error message to the user in addition to logging the error. (#1907)
  • The project wizard now generates a more complete configuration file when no GUI framework is selected. (#2006)
  • The web template now targets PyScript version 2024.11.1. In addition, the web template can provide a base pyscript.toml that Briefcase will update as required during the build process. (#2080)
  • Briefcase now uses native pip handling for iOS installs. (#2101)
  • When a verbosity level of 3 (i.e., -vvv) is selected, any tasks that would normally be performed in parallel will now be performed serially. (#2110)
  • Linux on arm64 is now a fully supported platform. (#2113)
  • Project bootstraps now have access to the Briefcase console and the overrides specified with -Q options at the command line. (#2114)
  • Project bootstraps can now define a post_generate() extension point. This will be invoked after the new project template has been generated, providing a way for bootstraps to add additional files to the generated project. (#2119)

Bugfixes

  • Briefcase now uses ditto to archive apps for submission to the notarization service, rather than standard zip tooling. This ensures that UTF-8 encoding and file system resources are preserved. (#1218)
  • The Gradle file generated for Android projects now correctly escapes single quotes. (#1876)
  • Pre-release Python interpreter versions are no longer rejected as matching candidates in PEP 621 requires-python checks. (#2034)
  • Briefcase no longer fails to create projects or builds because it cannot update the Git configuration for the relevant template. (#2077)
  • Support packages for Linux Flatpak and AppImage builds are now downloaded from the astral-sh repository, rather than the indygreg repository. This reflect the recent transfer of ownership of the project. (#2087)
  • A Debian-based system that does not have build-essential installed, but does have the constituent packages of build-essential installed, can now build Briefcase system packages. (#2096)
  • The arguments passed to xcodebuild when compiling an iOS app have been modified to avoid a warning about an ignored argument. (#2102)
  • The hints displayed to the user when an identity has been selected now more accurately reflect the context in which they have been invoked. (#2110)

Backward Incompatible Changes

  • Flatpak apps no longer request D-Bus session access by default. Most apps have no need to access the D-Bus session, unless they're a development tool that is inspecting D-Bus messages at runtime. If you experience errors related to this change, it is likely caused by an inconsistency between the bundle definition in your app configuration, and the way the app describes its bundle ID at runtime. If you do require D-Bus access, adding finish_arg."socket=session-bus" = true to the Flatpak configuration for your app will restore D-Bus session access. (#2074)
  • Briefcase can no longer install pure Python iOS packages from a source archive (i.e., a .tar.gz file published on PyPI). If a package is pure Python, it must be provided as a py3-none-any wheel. Briefcase's iOS platform documentation contains details on how to provide a py3-none-any wheel when PyPI does not provide one. (#2101)
  • The API for project bootstraps has been slightly modified. The constructor for a bootstrap must now accept a console argument; the extra_context() method must now accept a project_overrides argument. (#2114)

Misc

0.3.20

15 Oct 04:25
ad3b335

Choose a tag to compare

Features

  • Support for Python 3.13 has been added.
  • When the available version of Git is older than v2.17.0, an error message now prompts the user to upgrade their install of Git to proceed. (#1915)
  • Apps packaged for Flatpak and AppImage now use a stripped (and smaller) Python support package. (#1929)
  • macOS app templates can now specify what part of the support package should be copied into the final application bundle. (#1933)
  • The Flatpak runtimes for new projects were updated. org.freedesktop.Platform will now default to 24.08; org.gnome.Platform will now default to 46; and org.kde.Platform will now default to 6.7. (#1987)
  • Briefcase will now validate that the running Python interpreter meets requirements specified by the PEP 621 requires-python setting. If requires-python is not set, there is no change in behavior. Briefcase will also validate that requires-python is a valid version specifier as laid out by PEP 621's requirements. (#2016)

Bugfixes

  • Document type declarations are now fully validated. (#1846)
  • The order in which nested frameworks and apps are signed on macOS has been corrected. (#1891)
  • The spacing after the New Project wizard prompts are now consistent. (#1896)
  • The documentation link provided when an app doesn't specify Gradle dependencies in its configuration has been corrected. (#1905)
  • The log filter for iOS has been modified to capture logs generated when using PEP 730-style binary modules. (#1933)
  • Briefcase is now able to remove symbolic links to directories as part of the template cleanup. (#1933)
  • If a macOS support package contains symbolic links, those symbolic links will be preserved when the support package is copied into the app bundle. (#1933)
  • Briefcase will no longer attempt to sign symbolic links in macOS apps. (#1933)
  • Packages that include .dist-info content in vendored dependencies are now ignored as part of the binary widening process on macOS. If a binary package has vendored sub-packages, it is assumed that the top-level package includes the vendored packages' files in its wheel manifest. (#1970)
  • The types used by AppContext in GUI toolkit bootstraps for creating new projects have been corrected. (#1988)
  • The --test flag now works for console apps for macOS. (#1992)
  • Python 3.12.7 introduced an incompatibility with the handling of -C, -d and other flags that accept values. This incompatibility has been corrected. (#2026)

Backward Incompatible Changes

  • Java JDK 17.0.12+7 is now used to package Android apps. Use briefcase upgrade java to update your Briefcase-installed JDK instance to this version. (#1920)
  • Support for Python 3.8 has been dropped. (#1934)
  • macOS and iOS templates have both had an epoch increase. macOS and iOS projects created with previous versions of Briefcase will need to be re-generated. (#1934)
  • Any project using binary modules on iOS will need to be recompiled to use the binary linking format and wheel tag specified by PEP 730 <https://peps.python.org/pep-0730/>__ (#1934)

Documentation

  • A how-to guide for building apps in GitHub Actions CI was added. (#400)
  • Fixed error in example in briefcase run documentation. (#1928)
  • Building Briefcase's documentation now requires the use of Python 3.12. (#1942)

Misc

0.3.19

12 Jun 02:55
20d73d6

Choose a tag to compare

Features

  • Briefcase can now package command line apps. (#556)
  • Templates that use pre-compiled stub binaries can now manage that artefact as an independent resource, rather than needing to include the binary in the template repository. This significantly reduces the size of the macOS and Windows app templates. (#933)
  • Template repositories are now fetched as blobless partial Git clones, reducing the size of initial downloads. (#933)
  • macOS now supports the generation of .pkg installers as a packaging format. (#1184)
  • Android SDK Command Line Tools 12.0 is now used to build Android apps. (#1778)
  • The new project wizard now includes links to known third-party GUI bootstraps. (#1807)
  • The name of the license file can now be specified using a PEP 621-compliant format for the license setting. (#1812)
  • The default Gradle dependencies for a Toga project no longer includes SwipeRefreshLayout. (#1845)

Bugfixes

  • Validation rules for bundle identifiers have been loosened. App IDs that contain country codes or language reserved words are no longer flagged as invalid. (#1212)
  • macOS code signing no longer uses the deprecated "deep signing" option. (#1221)
  • If run is executed directly after a create when using an app template on macOS or Windows, the implied build step is now correctly identified. (#1729)
  • Escaping of quotation marks in TOML templates was corrected. (#1746)
  • The Docker version on OpenSUSE Tumbleweed is now accepted and no longer triggers a warning message. (#1773)
  • The formal name of an app is now validated. (#1810)
  • macOS apps now generate info.plist entries for camera, photo library and microphone permissions. (#1820)

Backward Incompatible Changes

  • Briefcase now uses a private cache of Cookiecutter templates, rather than the shared ~/.cookiecutters directory. You can reclaim disk space by deleting ~/.cookiecutters/briefcase-* and ~/.cookiecutter_replay/briefcase-* (or the entire ~/.cookiecutters and ~/.cookiecutter_replay folders if you are not using Cookiecutter for any other purposes). (#933)
  • The macOS app packaging format has been renamed zip for consistency with Windows, and to reflect the format of the output artefact. (#1781)
  • The format for the license field has been converted to PEP 621 format. Existing projects that specify license as a string should update their configurations to point at the generated license file using license.file = "LICENSE". (#1812)
  • The PursuedPyBear bootstrap has been migrated to be part of the PursuedPyBear project. (#1834)

Documentation

  • Documentation describing manual signing requirement for Android packages has been added. (#1703)
  • Documentation of Briefcase's support for document types has been improved. (#1771)
  • Documentation on Briefcase's plug-in interfaces was added. (#1807)
  • Documentation on the use of passwords in Android publication now encourages users to set non-default passwords. (#1816)

Misc

0.3.18

06 May 05:35
219baef

Choose a tag to compare

Features

  • Existing projects with a pyproject.toml configuration can now be converted into Briefcase apps using the briefcase convert command. (#1202)
  • Apps packaged as AppImages are no longer dependent on libcrypt.so.1. (#1383)
  • The briefcase run command now supports the --target option to run Linux apps from within Docker for other distributions. (#1603)
  • The hints and recommendations that Docker prints in the console are now silenced. (#1635)
  • In non-interactive environments, such as CI, a message is now printed to signify a task has begun where an animated bar would be displayed in interactive console sessions. (#1649)
  • Additional options can now be passed to the docker build command for building native Linux packages and AppImages via the --Xdocker-build argument. (#1661)
  • The contents of pyproject.toml is now included in the log file. (#1674)
  • When an app runs on an Android device or emulator, the logging output is now colored. (#1676)
  • When deep debug is activated via -vv, pip now installs requirements for the app with verbose logging. (#1708)
  • The listing of filenames for updating permissions for building native Linux packages is now only shown when verbose logging is enabled via -v. (#1720)
  • When a platform supports a splash screen, that splash screen will be generated automatically based on the app icon, rather than requiring additional configuration. (#1737)
  • New projects for Toga on GTK3 now recommend using gir1.2-webkit2-4.1 instead of gir1.2-webkit2-4.0 for WebView support. (#1748)

Bugfixes

  • When Briefcase can't find rpmbuild on an RPM-based system, the message giving install instructions now uses the correct package name. (#1638)
  • Creating new projects is now compatible with cookiecutter v2.6.0. (#1663)
  • The minimum version of pip was bumped to 23.1.2 to ensure compatibility with Python 3.12. (#1681)
  • On Windows, the Android emulator will always open without needing to press CTRL-C. (#1687)
  • A spurious Android emulator named @INFO will no longer be included in the list of available emulators. (#1697)
  • The configuration generated for iOS apps declaring geolocation permissions has been corrected. (#1713)
  • When using -r/--update-requirements for building for Android, the app's requirements are always reinstalled now. (#1721)
  • When creating a new project, the validation for App Name now rejects all non-ASCII values. (#1762)
  • Packages created for OpenSUSE now depend on libcanberra-gtk3-module instead of libcanberra-gtk3-0. (#1774)

Backward Incompatible Changes

  • WiX v3.14.1 is now used to package Windows apps. Run briefcase upgrade wix to start using this version. (#1707)
  • Java JDK 17.0.11+9 is now used to package Android apps. Use briefcase upgrade java to update your Briefcase-installed JDK instance to this version. (#1736)
  • The splash configuration option will no longer be honored. Splash screens are now generated based on the icon image. (#1737)
  • iOS apps now require 640px, 1280px and 1920px icon image. (#1737)
  • Android apps now require an adaptive variant for icons. This requires 108px, 162px, 216px, 324px and 432px images with a transparent background. The Android square icon variant requires additional 320px, 480px, 640px, 960px and 1280px images. (#1737)

Documentation

  • The documentation contribution guide was updated to use a more authoritative reStructuredText reference. (#1695)
  • The README badges were updated to display correctly on GitHub. (#1763)

Misc