Files
artcraft/packaging/linux/README.md
Dylan M. Taylor 79d87b2b54 fix(flatpak): persist data directory, keep accelerated rendering, and enrich metainfo (#2761)
## Summary

Transfers verified improvements and reviewer feedback from the FlatPark
package review to ArtCraft's first-party Flatpak build:

- **Data Persistence:** Adds `--persist=Artcraft` to `finish-args` in
`flatpak.yml` so user settings, credentials, provider tokens, and local
task SQLite queue stored in `~/Artcraft` persist in
`~/.var/app/ai.artcraft.app/Artcraft` across launches instead of being
discarded on exit.
- **Accelerated Rendering:** Adds `artcraft-wrapper` setting
`WEBKIT_DISABLE_DMABUF_RENDERER="${WEBKIT_DISABLE_DMABUF_RENDERER:-0}"`
and
`WEBKIT_DISABLE_COMPOSITING_MODE="${WEBKIT_DISABLE_COMPOSITING_MODE:-0}"`.
Keeping WebKitGTK's accelerated rendering path enabled prevents
rendering glitches on `org.gnome.Platform//51` while preserving user
override capability.
- **Dependency Checking:** Updates the Flatpak build runtime
verification to inspect the real binary (`/app/bin/artcraft.real`).
- **Enriched AppStream Metainfo:** Updates
`ai.artcraft.app.metainfo.xml` with CC0-1.0 metadata license,
bugtracker/vcs-browser/contact URLs, bulleted feature description,
search keywords, branding colors, hardware display requirements, input
controls, and OARS-1.1 content rating.

## Verification

- `actionlint .github/workflows/*.yml` passed.
- `shellcheck packaging/linux/*.sh packaging/linux/artcraft-wrapper`
passed.
- `xmllint --noout packaging/linux/ai.artcraft.app.metainfo.xml` passed.
- `appstreamcli validate packaging/linux/ai.artcraft.app.metainfo.xml`
passed with 0 errors and 0 info notices.
2026-11-06 22:48:03 -05:00

2.7 KiB

ArtCraft Studio Linux releases

The Linux workflow builds every package before the release job signs and uploads them to the existing artcraft-v<version> draft, retaining Windows and macOS assets. The version comes from crates/desktop/artcraft/tauri.conf.json.

Architecture Outputs Builder
x86_64 AppImage, DEB, RPM, tar.gz, Arch pkg.tar.zst, Flatpak bundle, OCI Ubuntu 22.04 native
aarch64 AppImage, DEB, RPM, tar.gz, Arch pkg.tar.zst, Flatpak bundle, OCI Ubuntu 22.04 ARM native
riscv64 DEB, RPM, tar.gz Ubuntu 24.04 cross compiler

Native AppImages also include zsync delta-update metadata.

Flatpak uses native Ubuntu 24.04 runners and GNOME 51 for GTK3/WebKitGTK 4.1. Its build checks for missing ELF dependencies inside the sandbox, grants --persist=Artcraft so settings and task data survive restarts, and provides a launcher wrapper keeping WebKitGTK's accelerated rendering path enabled. RISC-V packages require Ubuntu 24.04-era libraries; x86_64 and ARM64 use Ubuntu 22.04 as their build baseline. The suite does not publish RISC-V AppImages, Arch packages or Flatpaks.

package.sh <architecture> <rust-target> normalizes Tauri's DEB/RPM/AppImage filenames and extracts the DEB's /usr tree into the suite's bin/ and share/ tarball layout. Shared Craft Arch packaging consumes that tarball, with WebKitGTK, GTK3 and OpenSSL dependencies added. flatpak.sh consumes the same tarball, builds the bundle, and exports the OCI layout.

Release runs import LINUX_SIGNING_KEY for Flatpak commit signatures and OCI publishing. The final shared draft-release action signs RPMs, DEBs, Arch packages, AppImages, tarballs, OCI manifests and checksums. Only a stable version on release or artcraft-release moves the OCI stable architecture tags. Like the macOS and Windows release workflows, Linux release packaging runs on release branches (release, artcraft-release, artcraft-linux) and workflow dispatch rather than on pull requests.

APT, RPM and pacman repositories are generated by artcraft-services from the release assets and checksums. Its release catalog must be updated only after the signed release is published. Installing a DEB manually is separate from publishing that DEB in the website's APT repository.

A successful build proves artifact production and metadata/dependency checks. It does not replace installation and interactive testing on physical RISC-V, ARM64 and x86_64 desktops.