feature: Multi-platform release automation and macOS app bundle
Add per-OS GitHub Actions release workflows (replacing the single combined
workflow), a self-contained macOS .app bundle with a regenerated icon set,
a dependency-free icon generator, a Windows Inno Setup installer, and a
unit test for the tag field input dialogs.
Release workflows
- .github/workflows/release-linux.yml: build linux_bin tarball, emit
sha256 checksum, attach both to the shared draft release via gh CLI
- .github/workflows/release-macos.yml: build macos_bin tarball, verify the
NTag.app bundle (Info.plist, executable launcher, bundled jar/jre/libs),
run a headless ntag.Batch smoke test, attach assets + checksum
- .github/workflows/release-windows.yml: build win_bin archive, compile the
Inno Setup installer with ISCC, install/uninstall silently, verify files,
start menu shortcuts and uninstall registry entry, run a headless smoke
test, attach installer + checksums
- All three run on v* tag pushes, coordinate on a single draft release
(create --draft || true, upload --clobber)
macOS support
- assembly/ntag_macos_bin.xml: assembly descriptor laying out NTag.app
(jlink JRE, dependencies, logging config, launcher, icon, Info.plist)
- etc/macos/Info.plist: bundle metadata (id com.github.nrittsti.NTag,
category public.app-category.music, min macOS 11)
- etc/macos/ntag: bash launcher running the bundled JRE with the modular
module-path/add-modules set
- etc/NTag.icns: macOS icon (regenerated)
Icon regeneration
- tools/icon/IconGenerator.java: dependency-free java.awt generator for the
new rounded-square price-tag/eighth-note design; emits PNG, multi-size
ICO and SVG in addition to the iconset consumed by iconutil
- etc/ntag.svg: vector source of the new design
Windows packaging
- win/ntag.iss: Inno Setup script (x64, admin install, modern wizard,
uninstall entry + shortcuts)
Tests
- src/test/java/ntag/fx/util/TagFieldInputDialogsTest.java: unit coverage
for resolveEditor across ID3v2/MP4 frame types
Docs
- AGENTS.md: developer onboarding notes (build, testing gotchas,
architecture, conventions)