feat: add platform installers (MSIX, DMG, AppImage) and fix iOS IPA#10
Conversation
…iOS IPA Desktop releases now produce proper installer formats alongside existing archives: MSIX for Windows, DMG for macOS, and AppImage for Linux. iOS unsigned builds now always produce an IPA instead of silently skipping artifact creation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a18f7a1417
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| wget -q -O /usr/local/bin/appimagetool \ | ||
| https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage | ||
| chmod +x /usr/local/bin/appimagetool |
There was a problem hiding this comment.
Install appimagetool with elevated permissions
In the Linux workflow (.github/workflows/build-packages.yml), this step writes directly to /usr/local/bin without sudo. GitHub-hosted Ubuntu jobs run as a non-root user, so this can fail with Permission denied before packaging starts, which breaks the Linux job instead of producing artifacts. Use sudo for the write/chmod or install into a user-writable directory on PATH.
Useful? React with 👍 / 👎.
| --app-drop-link 450 190 \ | ||
| $volicon \ | ||
| "$dmg_path" \ | ||
| "$app_bundle" \ |
There was a problem hiding this comment.
Pass app container directory to create-dmg
create-dmg expects <output_name.dmg> <source_folder> and copies the contents of source_folder; passing "$app_bundle" (the .app itself) makes the DMG contain Contents/... instead of Toxee.app, and also conflicts with --icon "$(basename "$app_bundle")" because that file is not at the DMG root. Point the source argument at the parent directory of the app bundle so the installer contains a draggable .app.
Useful? React with 👍 / 👎.
…e-dmg - Add sudo to appimagetool wget/chmod since GitHub runners are non-root - Use a staging directory for create-dmg so the DMG contains a draggable Toxee.app instead of its raw Contents/ Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0b5d9b2235
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if [[ -d "$appdir/usr/bin/lib" ]]; then | ||
| cp -a "$appdir/usr/bin/lib"/. "$appdir/usr/lib/" | ||
| rm -rf "$appdir/usr/bin/lib" |
There was a problem hiding this comment.
Preserve Flutter lib directory beside AppImage executable
Moving usr/bin/lib into usr/lib makes the generated AppImage layout incompatible with Flutter Linux defaults: fl_dart_project_new() resolves the AOT library as lib/libapp.so relative to the executable directory, but this block deletes that path for usr/bin/toxee. As a result, release AppImages can fail to start even though LD_LIBRARY_PATH is set, because the engine still looks for usr/bin/lib/libapp.so unless the project explicitly overrides the AOT path (which this runner does not).
Useful? React with 👍 / 👎.
Summary
.msixinstaller alongside existing.zipviadart run msix:create.dmgdisk image alongside existing.zipviacreate-dmg.AppImageportable binary alongside existing.tar.gzviaappimagetool.ipafor unsigned builds (previously skipped entirely)Changes
linux/toxee.desktop.desktopentry for AppImagepubspec.yamlmsixdev dep +msix_configsectiontool/ci/package_artifacts.sh.github/workflows/build-packages.ymlappimagetool,create-dmg,libfuse2tool/ci/publish_release.sh*.AppImageto release asset filterTest plan
.tar.gzand.AppImage.zipand.msix.zipand.dmg.ipa(unsigned)bash -nsyntax checks pass for both shell scripts🤖 Generated with Claude Code