feat: flatpak desktop-integration discovery + Flathub-clean release layout#491
Merged
Conversation
…ayout
Driven by the first real Flathub submission (mariner). Everything a
submission tripped over is now automated or surfaced early:
- App-provided desktop-integration files are discovered and used instead
of generated stubs: data/<id>.desktop (Exec rewritten for the sandbox),
data/<id>.metainfo.xml (verbatim, id checked), data/icons/hicolor/
(whole theme tree, sized+scalable+symbolic). Overridable via
bundle.desktopFile/metainfo/iconsDir; stubs remain the fallback.
- Generated metainfo stub enriched (content_rating, releases, developer
from package.json author) so even stub-only apps pass appstreamcli.
- --release writes flathub/<id>.yml — the linter requires the manifest be
named exactly <id>.yml, and the flathub/ dir is what the submission PR
contains. Tarball members now include the icon theme.
- bundle.flatpak.lintExceptions ({check: justification}): passed to
flatpak-builder-lint as --exceptions --user-exceptions, so permissions
an app stands by (a file manager's --filesystem=host) lint green
locally while documenting exactly what the submission PR must request.
- Early warnings for Flathub conventions: com.github.*/com.gitlab.* ids
(must be io.github.*/io.gitlab.*), placeholder com.example ids on
--release, broad filesystem access without a declared exception.
- create-app scaffolds the icon at data/icons/hicolor/scalable/apps/
<id>.svg (the discovered convention) instead of bundle.icon.
- Default runtime 49 -> 50 (build-validated with the node26 extension);
CI cache key follows.
Validated end-to-end on mariner: build on org.gnome.Platform//50, install,
headless run (window up, clean SIGTERM), manifest+appstream lint green,
repo lint green modulo the two screenshot-mirroring errors expected
outside Flathub's pipeline (documented).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
appstreamcli compose (run by flatpak-builder at finish) rejects a desktop file whose Categories contain no main category — GTK alone is additional-only, so the first real flatpak-build.yaml run failed with no-valid-category. Default to Utility;GTK. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
romgrk
added a commit
to romgrk/mariner
that referenced
this pull request
Jul 5, 2026
Flathub rejects com.github.* application ids, so the app id changes to io.github.romgrk.mariner everywhere: GApplication applicationId, desktop file, metainfo, icons, AUR packaging, docs. - metainfo: captioned screenshots (docs/*.png), branding colors, dated 0.0.1 release entry - bundle config: pin org.gnome.Platform//50, declare the finish-args-host-filesystem-access lint exception with its justification - packaging/flathub.md: the release + submission runbook - gitignore dist/ (node-gtk bundle/flatpak output) Verified with `node-gtk flatpak --release --lint` (romgrk/node-gtk#491): manifest + appstream lint green; built on Platform//50, installed, and ran in the sandbox (headless, clean SIGTERM exit). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Everything the first real Flathub submission (mariner,
io.github.romgrk.mariner) tripped over, automated or surfaced early:data/<id>.desktop(onlyExec=rewritten for the sandbox),data/<id>.metainfo.xml(verbatim, id mismatch warned),data/icons/hicolor/(whole theme tree — sized, scalable, symbolic). Overridable viabundle.desktopFile/metainfo/iconsDir; stubs remain the fallback for apps that have nothing.content_rating,releases,developerfrom package.jsonauthor) so stub-only apps passappstreamcli validate.--releasewritesflathub/<id>.yml— the linter hard-requires the manifest filename to equal the app id (appid-filename-mismatch), and theflathub/dir is exactly what the submission PR contains.bundle.flatpak.lintExceptions({check: justification}): forwarded toflatpak-builder-lintas--exceptions --user-exceptions, so permissions an app stands by (a file manager's--filesystem=host) lint green locally while documenting what the submission PR must request.com.github.*/com.gitlab.*ids (Flathub requiresio.github.*/io.gitlab.*), placeholdercom.example.*ids under--release, broad filesystem access without a declared exception.data/icons/hicolor/scalable/apps/<id>.svg(the discovered convention) and dropsbundle.iconfrom the template.Validation
scripts/flatpak-smoke-test.jsextended: fixture now shipsdata/metainfo + icon theme (discovery path) while the missing.desktopstill covers stub generation; asserts theflathub/<id>.ymllayout. Green.org.gnome.Platform//50, install, headless run under dbus-run-session+Xvfb (window up, clean SIGTERM),--lintgreen for manifest and appstream, repo-level lint green modulo the two screenshot-mirroring errors expected outside Flathub's pipeline (documented in doc/bundling.md).🤖 Generated with Claude Code