generated from sarioglu/svelte-tailwindcss-template
-
Notifications
You must be signed in to change notification settings - Fork 8
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Overview
Currently, the Linux build only produces an AppImage artifact (configured in electron-builder-config.js). To improve discoverability and ease of installation for Linux users, we should add Snap and/or Flatpak as additional distribution targets.
Current State
electron-builder-config.jssetslinux.target: "AppImage"only- CI pipelines (
build-matrix.yml,stable-matrix.yml,nightly-matrix.yml) build onubuntu-22.04but only publish the AppImage artifact - No Snap Store or Flathub publishing step exists in any workflow
- The current AppImage is x64 only — the
linuxconfig has noarchfield, soelectron-builderdefaults to the host (x64). ARM Linux users (Raspberry Pi, ARM Chromebooks, etc.) cannot run it. Compare: macOS already setsarch: ["arm64", "x64"]explicitly; Linux does not.
Goals
- Add Snap packaging via
electron-builder(snaptarget) and publish to the Snap Store - Add Flatpak packaging and publish to Flathub (requires a Flatpak manifest)
- Integrate publishing into the
stable-matrix.ymlrelease workflow (triggered on tag) - Optionally include in
nightly-matrix.ymlfor pre-release channels (Snapedge, Flatpak beta repo) - Add
arch: ["x64", "arm64"]to thelinuxsection to produce ARM64 AppImage artifacts
Implementation Notes
ARM64 AppImage
- Add
arch: ["x64", "arm64"]to thelinuxblock inelectron-builder-config.js(mirrors the macOS approach) - CI would need either a GitHub ARM runner (
ubuntu-22.04-arm) or cross-compilation from x64 electron-buildersupports cross-compiling toarm64on Linux, but native modules (USB/serial) may need additional handling- Update the
artifactNameto include${arch}so x64 and arm64 artifacts are distinguishable
Snap
electron-builderhas built-in Snap support — add"snap"tolinux.targetinelectron-builder-config.js- Requires
snapcraftinstalled on the build runner (sudo snap install snapcraft --classic) - Publishing needs a
SNAPCRAFT_STORE_CREDENTIALSsecret added to GitHub Actions - Consider
confinement: classicfor USB/HID device access (Grid hardware uses serial/USB) - Snap supports multi-arch publishing, so ARM64 can be covered here too
Flatpak
electron-builderdoes not have native Flatpak support — requires a separate Flatpak manifest (com.intechstudio.GridEditor.yml)- Use
flatpak-builderin CI or theelectron-packager+flatpak-builderapproach - Flathub submission requires a PR to the flathub/flathub repo
- USB/HID device access requires
--device=allor appropriate portal permissions in the sandbox - Flathub supports multi-arch (x86_64 + aarch64) if build infrastructure is set up
Hardware Access Concern
Grid Editor communicates with hardware over USB/serial. Both Snap (classic confinement or raw-usb interface) and Flatpak (device portal or --device=all) need explicit permission grants — this needs validation before shipping.
Questions to Resolve
- Snap, Flatpak, or both?
- Should nightly builds publish to Snap
edge/ a beta Flatpak repo? - Do we need to create Snap Store / Flathub accounts and register the app name?
- Has USB device access been validated inside a Snap/Flatpak sandbox?
- Should we add an ARM64 AppImage alongside Snap/Flatpak, or rely on those formats for ARM coverage?
References
- electron-builder Snap docs: https://www.electron.build/configuration/snap
- Snapcraft GitHub Actions: https://github.com/snapcore/action-publish
- Flatpak electron packaging guide: https://docs.flatpak.org/en/latest/electron.html
- Flathub submission guide: https://docs.flathub.org/docs/for-app-authors/submission
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Type
Projects
Status
Todo