release_kit 0.1.31
release_kit: ^0.1.31 copied to clipboard
Flutter release toolkit - automatic version bump + multi-platform packaging with a unified config.
Changelog #
0.1.31 #
- Fix:
--installerflag was documented and normalized but never parsed/forwarded by the CLI, sorelease-kit publish windows --installersilently skipped the Inno Setup build. The flag is now wired through bothlib/src/cli.dartandrelease-kit.ps1.
0.1.30 #
- Feature: Windows
--installerflag. Generates a proper.exeinstaller via Inno Setup (desktop shortcut, Start Menu group, uninstaller). Requires Inno Setup installed (iscc.exein PATH orC:\Program Files (x86)\Inno Setup 6). Config keys:windows.installerPublisher,windows.installerPrivileges.
0.1.29 #
- Docs: added full macOS publishing workflow to GUIDE.md / GUIDE.zh.md (prerequisites, one-time setup, sandbox decision, step-by-step flow). README now links to the macOS guide and lists the new
--no-codesign/--no-notarize/--notarizeflags.
0.1.28 #
- Fix: macOS Developer ID re-signing now preserves entitlements (uses
macos/Runner/Release.entitlementswhen present, otherwise extracts whatflutter buildembedded). Previously re-signing without--entitlementssilently droppedapp-sandbox/network.client/etc. - Fix: macOS signing is now inside-out (nested frameworks/dylibs first, then the app bundle) instead of
codesign --deep, which Apple recommends against.
0.1.27 #
- Feature: macOS publish now supports distribution outside the Mac App Store via Developer ID.
publish_macos.shsigns the.appwith a Developer ID Application identity + hardened runtime (codesign --options runtime), notarizes it (xcrun notarytool), staples the ticket, and packages a notarized drag-to-install.dmgplus an auto-update.zip. Notarization credentials come from env vars (APPLE_NOTARY_PROFILE, orAPPLE_ID+APPLE_TEAM_ID+APPLE_APP_SPECIFIC_PASSWORD); the signing identity is read frommacos.signIdentityor auto-detected from the keychain. New flags:--no-codesign,--no-notarize,--notarize.
0.1.26 #
- Fix: Windows publish could fail with
Remove-Item ... CascadiaMonoPL.ttf ... access is deniedwhen a previous publish's smoke test (or a manually launched copy) left the collectedZShell.exerunning, holding the font file open. Before clearing the output dir, release-kit now stops any process still running from that dir (matched by executable path). The smoke test also kills the full process tree (taskkill /T /F) for reliability.
0.1.25 #
- Change: in Windows
--clean-flutter, plugin DLLs moved intolib\now keep a readable name by stripping the trailing_pluginsuffix instead of truncating the tail (desktop_drop_plugin.dll→lib\desktop_drop.dll,window_manager_plugin.dll→lib\window_manager.dll). Truncation is still used only as a fallback when stripping doesn't fit the import-table reference or collides. - Fix:
--clean-flutterno longer renames package asset paths. The compiled app ships the original strings (packages/lucide_icons_flutter,AssetManifest.bin,FontManifest.json), so renaming them broke runtime asset/font loading (e.g. lucide icons not rendering). Package assets are now left at their original values; only safe text/licensing metadata (NOTICES,NOTICES.Z) is scrubbed. The text scrub also skips occurrences that are asset path segments.
0.1.24 #
- Fix: in Windows
--clean-flutter, theAssetManifest.binrebuild (introduced in 0.1.23) failed at runtime ("decode consumed 6119/0") because a nested function referenced the original$sbvariable (renamed to$bytes) and used a local$rd/$rd.pinstead of the script-scoped$script:rd. The StandardMessageCodec helpers are now defined at script scope (no nested function definitions) and use$script:rd/$script:wbconsistently. This also removes the PowerShell-5.1 nested-function definitions that could corrupt subsequent cmdlet resolution in the same run.
0.1.23 #
- BREAKING CHANGE in
--clean-flutterpackage-asset scrub: package directories/files now get readable names (flutter→bundle,dart→kit), e.g.packages\lucide_icons_flutter→packages\lucide_icons_bundle.AssetManifest.binis fully re-encoded (Flutter StandardMessageCodec decoder/encoder with correct length prefixes) instead of the previous fragile equal-length byte patch, so paths stay valid even when the renamed word changes length.FontManifest.jsonand all other text metadata also use the readablebundle/kittokens.
0.1.22 #
- Fix: the binary manifest patch in
--clean-flutternow uses a same-length token for thedartbrand (dart->drrt, matching the text/rename scrub) soAssetManifest.binreferences stay byte-consistent with the renamed on-disk package paths for any package (e.g.packages\net_flutter->packages\net_fluttr,packages\my_dart_kit->packages\my_drrt_kit). Also applies to theDart/DARTand all-capsFLUTTERcase variants.
0.1.21 #
- Windows
--clean-flutternow scrubsflutter/dartthat leak into package asset paths underdata\resources: folders/files whose names contain the brand words (e.g.packages\lucide_icons_flutter) are renamed with the same length-preserving transform (...fluttr,...drrt), and the binaryAssetManifest.binis equal-length patched so the manifests (FontManifest.json,AssetManifest.bin) and the filesystem stay consistent. Runtime binaries and asset media are still untouched.
0.1.20 #
- Windows
--clean-flutternow also scrubsflutter/dartbranding from the licensing resources indata\resourcesthat were previously missed: the extension-lessNOTICESand the gzip-compressedNOTICES.Z(decompressed, scrubbed, recompressed in place). Runtime binaries (AOT kernel,icudtl.dat, asset media) are detected by the presence of NUL/control bytes and left untouched.
0.1.19 #
- Windows
--clean-flutternow also:- reorganizes every
*.dllinto alib\subfolder, repointing all references (exe+ plugin DLLs) tolib\xxx.dllvia a length-aware, overflow-safe patch (names are shortened automatically so they always fit; the exe stays runnable) - scrubs
flutter/dartbranding from the text metadata underdata\resources(equal-length neutral replacement; binary blobs like the AOT kernel are left untouched)
- reorganizes every
0.1.18 #
- Fix
.deb/.rpmpackages shipping only the launcher binary (missinglib/+data/, so the installed app could not run). They now bundle the full release bundle under/usr/lib/<id>/and expose the binary via a/usr/binsymlink.
0.1.17 #
- Fix
--appimage:linuxdeployrequires a.desktopfile and anAppRuninside the AppDir, but the raw Flutter bundle has neither, so AppImage packaging failed withDesktop file not found. The AppImage path now stages the bundle, injects the desktop entry +AppRun(the binary stays at the AppDir root so it can still locatelib//data/), bundles the icon, and copies the resulting.AppImagetodist/.
0.1.16 #
- Linux
publishnow always emits a portable.zip(dist/<app>-<version>+<build>-linux.zip, single top-level<app>/dir) as the default artifact — the same shape the Windows/macOS packs and in-app auto-update use. The previous.tar.gzdefault is removed;--deb/--rpm/--appimagestill produce the distro install packages on top of the zip.
0.1.15 #
- Fix garbled non-ASCII text in the generated
dist/CHANGELOG-<version>+<build>.mdon Windows: read the projectCHANGELOG.mdas UTF-8, decodegit logoutput as UTF-8, and write the result as UTF-8 without BOM.
0.1.14 #
- Every
publishnow emits a standard, versioned changelog alongside the artifacts:dist/CHANGELOG-<version>+<build>.md. The content is extracted from the project'sCHANGELOG.md(the Keep-a-Changelog section matching the current version); when there is noCHANGELOG.md(or no section for the version), it falls back to grouping thegit logsince the last tag by conventional-commit type (feat:→ Added,fix:→ Fixed, everything else → Changed).
0.1.13 #
- macOS and Linux package filenames now include the build number, matching the Windows convention:
dist/<app>-<version>+<build>-macos.dmg/.zip,dist/<app>-<version>+<build>-linux-x64.tar.gz/.deb/.rpm(e.g.ZShell-1.41.2+79-macos.zip).read_versionnow also exportsVERSION_FULL(x.y.z+build).
0.1.12 #
- Windows installer zip now includes the build number:
dist/<app>-<version>+<build>-win64.zip(e.g.ZShell-1.41.2+79-win64.zip).
0.1.11 #
- macOS
publishnow also emits an auto-update.zipnext to the.dmg, built from the very same signed.app(ditto -c -k --sequesterRsrc --keepParentkeeps<AppName>.appas the sole top-level entry so in-app updaters that strip one directory can replace the running app'sContents). Output:dist/<app>-<version>-macos.dmg+dist/<app>-<version>-macos.zip.
0.1.10 #
- Every
publishbuild now auto-injects--dart-define=APP_VERSION=<x.y.z>and--dart-define=APP_BUILD=<build>frompubspec.yaml(all platforms: Windows, Android, macOS, Linux, iOS). Apps can show their real version at runtime viaString.fromEnvironment('APP_VERSION')/('APP_BUILD'); an explicitbuild.dartDefine.APP_VERSION/APP_BUILDoverrides the auto value.
0.1.9 #
publish <platform>flag matching is now case/hyphen tolerant:--CleanFlutter,--SKIP_BUILDetc. are accepted and mapped to their canonical form (--clean-flutter,--skip-build) on every entry point (Dart CLI,release-kit.ps1,publish_windows.ps1).
0.1.8 #
- Fix
release_kit publish windows: the Dart CLI invokedpublish_windows.ps1with-Obfuscate:truestyle switches, which PowerShell-Filecannot bind (error:Cannot process argument transformation on parameter 'Obfuscate'). It now passes bare double-dash flags (--obfuscate,--clean-flutter, ...), which bind correctly.
0.1.7 #
- All
publish <platform>flags now use the same double-dash long-flag spelling on every platform (--obfuscate,--skip-build,--no-rename,--harden,--clean-flutter,--skip-verify,--output-dir). The old Windows single-dash spellings (-Obfuscateetc.) are no longer accepted.
0.1.6 #
- Docs: detailed per-flag reference for every platform in GUIDE (common flags
-p/--no-icons+ windows/android/ios/macos/linux tables).
0.1.5 #
- Docs: add pub.dev badge/link to README; document
release-kit bumpand Windows-NoRenamein README/GUIDE.
0.1.4 #
- Linux publish implemented end-to-end:
--obfuscate,--deb(dpkg-deb),--rpm(rpmbuild),--appimage; desktop entry + hi-color icon fromlinux/runner/my_icon.png;linux.desktopCategoriesconfig key. - Linux window icon generation: resize
app.logo→linux/runner/my_icon.png(ImageMagick when available). - Smoke test for the Linux path:
test/publish_linux_test.sh.
0.1.3 #
- Fix iOS/macOS flag parsing infinite loop (missing
shift). - iOS
--no-codesign: collect the.xcarchive(Flutter skips.ipageneration when unsigned). - macOS: drop the unsupported
--no-codesignflag. - Verified iOS and macOS publishing on a real macOS host.
0.1.2 #
- iOS publish: add
--obfuscate,--export-method,--no-codesign; robust.ipadiscovery. - macOS publish: add
--obfuscate,--no-codesign; robust.appdiscovery. - Docs: document iOS/macOS flags in README and GUIDE.
0.1.1 #
- Docs: restructure README and add an English usage guide (
docs/GUIDE.md); make pub.dev install the primary quick start, with git-clone as an alternative.
0.1.0 #
- Initial release as a Dart CLI package.
release-kit init— copy the config template + install the pre-commit hook.release-kit publish <platform>— build & package (windows / android / macos / linux / ios).release-kit bump— auto-increment the version inpubspec.yamlfrom staged changes.