Skip to content

build: Update desktop app icons, versioning, and packaging configuration#4789

Merged
jamesarich merged 2 commits intomainfrom
fix/release-alignment
Mar 14, 2026
Merged

build: Update desktop app icons, versioning, and packaging configuration#4789
jamesarich merged 2 commits intomainfrom
fix/release-alignment

Conversation

@jamesarich
Copy link
Copy Markdown
Collaborator

This pull request updates the desktop build configuration to improve packaging, compatibility, and distribution readiness for the Meshtastic Desktop application. The changes focus on ensuring all necessary JVM modules are included, improving OS-specific packaging, and clarifying ProGuard usage and versioning.

Packaging and JVM configuration improvements:

  • Added explicit inclusion of critical JVM modules (such as jdk.crypto.ec, jdk.unsupported, java.sql, and java.naming) in the custom JRE to ensure compatibility with dependencies like Ktor and SQLite, especially when modules are loaded via reflection or JNI.
  • Set default JVM arguments to increase the maximum heap size to 2GB, helping prevent out-of-memory issues during intensive operations.

OS-specific packaging enhancements:

  • Updated app icon handling to use appropriate formats for each OS (.icns for macOS, .ico for Windows, .png for Linux), and added placeholders for future macOS signing/notarization and Windows upgrade UUIDs.
  • Added menu group settings for Windows and Linux installers for better system integration.

Build and distribution notes:

  • Improved versioning logic to read from CI-provided properties or environment variables, defaulting to 1.0.0 if unavailable, and enforced strict semantic versioning for native installers.
  • Added comments clarifying the impact and requirements of enabling ProGuard, recommending thorough testing before activation.

- Update macOS and Windows packaging configurations to use platform-native `.icns` and `.ico` icon files.
- Add `icon.icns` and `icon.ico` to desktop resources and update the existing `icon.png`.
- Refine version resolution logic to prioritize `android.injected.version.name` and the `VERSION_NAME` environment variable.
- Update the default fallback version from `0.1.0` to `1.0.0`.

Signed-off-by: James Rich <[email protected]>
This commit enhances the Compose Multiplatform desktop packaging configuration to improve runtime stability, performance, and cross-platform metadata.

Specific changes include:
- **JVM Runtime**: Expanded the list of bundled modules (e.g., `jdk.crypto.ec`, `java.sql`, `java.naming`) to ensure compatibility with Ktor, SSL/TLS, and SQLite.
- **Resource Management**: Increased the default maximum heap size to 2GB (`-Xmx2G`) to prevent OOM issues.
- **Platform Metadata**:
    - Added `menuGroup` configurations for Windows and Linux.
    - Updated the default fallback version from `0.1.0` to `1.0.0`.
    - Added placeholders and documentation for macOS signing/notarization and Windows upgrade UUIDs.
- **Build Optimization**: Added a commented-out ProGuard configuration with a warning regarding testing requirements for serialization and JNI.

Signed-off-by: James Rich <[email protected]>
@github-actions github-actions bot added the bugfix PR tag label Mar 14, 2026
@jamesarich jamesarich merged commit 2bfd225 into main Mar 14, 2026
6 checks passed
@jamesarich jamesarich deleted the fix/release-alignment branch March 14, 2026 01:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugfix PR tag

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant