Releases: beeware/briefcase
Releases · beeware/briefcase
0.3.26
Features
- When a project specifies a dependency using a local file path,
briefcase devnow 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
buildandruncommands for Windows, macOS and iOS now have a--debugoption 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 devno 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_launchersetting. (#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 devandbriefcase runnow 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
toxnow 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 javato 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
- #2381, #2384, #2457, #2459, #2460, #2461, #2462, #2466, #2467, #2468, #2469, #2470, #2471, #2478, #2479, #2481, #2482, #2484, #2485, #2487, #2492, #2493, #2499, #2500, #2504, #2505, #2506, #2507, #2508, #2509, #2511, #2512, #2517, #2518, #2519, #2520, #2520, #2521, #2523, #2524, #2526, #2528, #2533, #2535, #2536, #2537, #2538, #2539, #2540, #2541, #2542, #2544, #2548, #2549, #2550, #2551, #2552, #2555, #2556, #2557, #2558, #2564, #2565, #2566, #2568, #2568, #2569, #2570, #2571, #2572, #2576, #2577, #2585, #2586, #2589, #2590
0.3.26rc5
Release candidate 5 of Briefcase 0.3.26.
0.3.25
Features
- Android apps can now pass
--forward-portand--reverse-portto 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
.sofiles 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
VERSIONSfile 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
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_VIRTUALENVenvironment 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
Features
- Cookiecutter filters for escaping XML content and attributes have been added. (#2103)
- Briefcase now supports the use of
HISTORY,NEWSandRELEASESas filenames for the change log of a project (in addition toCHANGELOG). It also supports the use of.md,.rstand.txtextensions on those files. (#2116) - It is now possible to ask boolean question using the Console Interface. (#2128)
- The
create,build,packageandupdatecommands can now be run on a single app within a multi-app project by using the-a/--appoption. (#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_versionconfiguration 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.Platformwill now default to 47; andorg.kde.Platformwill 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 withbriefcase convert, Briefcase will now try to infer the author's name and email address from the git configuration. (#2269)
Bugfixes
.pthfiles 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_rthat 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 thesystem_requiresandsystem_runtime_requiresdefinitions. 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.gzfile published on PyPI). If a package is pure Python, it must be provided as apy3-none-anywheel. Briefcase's macOS platform documentation contains details on how to provide apy3-none-anywheel when PyPI does not provide one. (#2163) - The
app_packagesfolder now occurs after theappfolder 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 yoursourcesthat have the same name as packages installed from yourrequires. (#2204) - The iOS app template no longer uses the
iphoneos_deployment_targetsetting 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_versionsetting. (#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 additionalmin_os_versionconfiguration 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 javato update your Briefcase-installed JDK instance to this version. (#2259) - The
newcommand now uses SPDX identifiers when referring to licenses. If you have been using the-Q license=XXXoption to automate application creation, you will need to modify the value provided to match the SPDX specifier for that license (e.g.,MITinstead ofMIT license, andBSD-3-Clauseinstead ofBSD). (#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
- #1696, #2153, #2155, #2158, #2159, #2160, #2168, #2169, #2170, #2171, #2172, #2174, #2175, #2176, #2177, #2178, #2179, #2184, #2185, #2186, #2196, #2205, #2206, #2207, #2208, #2209, #2210, #2215, #2217, #2218, #2219, #2220, #2221, #2222, #2223, #2237, #2247, #2248, #2249, #2262, #2263, #2264, #2265, #2266, #2267, #2276, #2277, #2278
0.3.22
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-warningoption 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 javato update your Briefcase-installed JDK instance to this version. (#2133)
Misc
0.3.21
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 installcommand line arguments usingrequirement_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
convertwizard to add a Briefcase configuration, the updatedpyproject.tomlnow includes a stub configuration for all platforms. (#1899) - The
briefcase convertcommand 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.tomlthat 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
-Qoptions 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
dittoto archive apps for submission to the notarization service, rather than standardziptooling. 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-pythonchecks. (#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-shrepository, rather than theindygregrepository. This reflect the recent transfer of ownership of the project. (#2087) - A Debian-based system that does not have
build-essentialinstalled, but does have the constituent packages ofbuild-essentialinstalled, can now build Briefcase system packages. (#2096) - The arguments passed to
xcodebuildwhen 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
bundledefinition in your app configuration, and the way the app describes its bundle ID at runtime. If you do require D-Bus access, addingfinish_arg."socket=session-bus" = trueto 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.gzfile published on PyPI). If a package is pure Python, it must be provided as apy3-none-anywheel. Briefcase's iOS platform documentation contains details on how to provide apy3-none-anywheel 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 aproject_overridesargument. (#2114)
Misc
0.3.20
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.Platformwill now default to 24.08;org.gnome.Platformwill now default to 46; andorg.kde.Platformwill now default to 6.7. (#1987) - Briefcase will now validate that the running Python interpreter meets requirements specified by the PEP 621
requires-pythonsetting. Ifrequires-pythonis not set, there is no change in behavior. Briefcase will also validate thatrequires-pythonis 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-infocontent 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
AppContextin GUI toolkit bootstraps for creating new projects have been corrected. (#1988) - The
--testflag now works for console apps for macOS. (#1992) - Python 3.12.7 introduced an incompatibility with the handling of
-C,-dand 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 javato 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
- #1877, #1878, #1884, #1885, #1886, #1892, #1901, #1902, #1903, #1904, #1911, #1912, #1913, #1923, #1924, #1925, #1926, #1931, #1932, #1936, #1937, #1938, #1939, #1940, #1951, #1952, #1953, #1954, #1955, #1967, #1971, #1977, #1978, #1979, #1983, #1984, #1985, #1989, #1990, #1991, #1994, #1995, #2001, #2002, #2003, #2009, #2012, #2013, #2014, #2015, #2017, #2020, #2021, #2022, #2023, #2024, #2025, #2031
0.3.19
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
.pkginstallers 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
licensesetting. (#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
runis executed directly after acreatewhen using anapptemplate on macOS or Windows, the impliedbuildstep 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.plistentries for camera, photo library and microphone permissions. (#1820)
Backward Incompatible Changes
- Briefcase now uses a private cache of Cookiecutter templates, rather than the shared
~/.cookiecuttersdirectory. You can reclaim disk space by deleting~/.cookiecutters/briefcase-*and~/.cookiecutter_replay/briefcase-*(or the entire~/.cookiecuttersand~/.cookiecutter_replayfolders if you are not using Cookiecutter for any other purposes). (#933) - The macOS
apppackaging format has been renamedzipfor consistency with Windows, and to reflect the format of the output artefact. (#1781) - The format for the
licensefield has been converted to PEP 621 format. Existing projects that specifylicenseas a string should update their configurations to point at the generated license file usinglicense.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
Features
- Existing projects with a
pyproject.tomlconfiguration can now be converted into Briefcase apps using thebriefcase convertcommand. (#1202) - Apps packaged as AppImages are no longer dependent on
libcrypt.so.1. (#1383) - The
briefcase runcommand now supports the--targetoption 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 buildcommand for building native Linux packages and AppImages via the--Xdocker-buildargument. (#1661) - The contents of
pyproject.tomlis 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,pipnow 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.1instead ofgir1.2-webkit2-4.0forWebViewsupport. (#1748)
Bugfixes
- When Briefcase can't find
rpmbuildon 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
@INFOwill 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-requirementsfor 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-moduleinstead oflibcanberra-gtk3-0. (#1774)
Backward Incompatible Changes
- WiX v3.14.1 is now used to package Windows apps. Run
briefcase upgrade wixto start using this version. (#1707) - Java JDK 17.0.11+9 is now used to package Android apps. Use
briefcase upgrade javato update your Briefcase-installed JDK instance to this version. (#1736) - The
splashconfiguration 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
adaptivevariant for icons. This requires 108px, 162px, 216px, 324px and 432px images with a transparent background. The Androidsquareicon 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
- #1428, #1495, #1637, #1639, #1642, #1643, #1644, #1645, #1646, #1652, #1653, #1656, #1657, #1658, #1659, #1660, #1666, #1671, #1672, #1679, #1683, #1684, #1686, #1689, #1690, #1691, #1692, #1694, #1699, #1700, #1701, #1702, #1710, #1711, #1712, #1716, #1717, #1722, #1723, #1725, #1730, #1731, #1732, #1741, #1742, #1743, #1744, #1745, #1752, #1753, #1754, #1756, #1757, #1758, #1759, #1760, #1761, #1766, #1769, #1775, #1776