Files
orbithub/docs/FLATHUB.md
T
ksmithandClaude Sonnet 5 186480dcf5 packaging: prepare Flatpak for Flathub submission
Adds a production manifest (packaging/flatpak/flathub/) using a
pinned git source instead of the local-dir source the dev manifest
uses, so Flathub's build infrastructure can reproduce the build
independently.

Narrows the dev and production manifests' filesystem permission from
--filesystem=home to --filesystem=~/.ssh (read-write, needed for SSH
known_hosts/config) after confirming in the actual sandbox that: SSH
already works there (provided by the KDE runtime base, no extra
packaging needed), RDP needs no filesystem access at all (its
certificate trust never touched disk even before today's fix), and
QFileDialog's private-key/export pickers route through the desktop
portal rather than needing static filesystem access.

Expands AppStream metainfo with bugtracker/vcs-browser URLs, a
developer block, a releases entry, an OARS content rating, and three
screenshots (profiles view, an active SSH session, an active RDP
session) using real test-system profiles.

Adds docs/FLATHUB.md tracking overall submission readiness.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-08 16:19:09 -06:00

3.5 KiB

Flathub Submission Readiness

Tracks OrbitHub's readiness for submission to Flathub. This is a separate checklist from docs/PROGRESS.md's development milestones, since Flathub submission is an external process with its own requirements.

Status

Item Status
Production manifest with pinned, reproducible git source Done — packaging/flatpak/flathub/org.darksingularity.OrbitHub.yml
Offline build (no network fetches during build) Verified — no FetchContent/ExternalProject/curl/wget in CMake; all vendored deps committed in third_party/
SSH client available inside the sandbox Verified — provided by the org.kde.Platform runtime base, no packaging needed
--filesystem=home removed Done — narrowed to --filesystem=~/.ssh (read-write, needed for known_hosts and SSH config)
SSH known-hosts trust persists with narrowed permissions Verified in sandbox
RDP works with zero filesystem permission Verified — FreeRDP's cert trust store lives outside the sandboxed home path concerns entirely (see below)
Private-key/export file pickers use the desktop portal Uses QFileDialog static functions, which route through the portal when sandboxed; not yet visually confirmed interactively
Current, supported KDE runtime Verified — 6.10 (not EOL)
Desktop entry validates Verified
Application icon validates Verified — PNGs at all standard hicolor sizes, matching the real app icon
MetaInfo/AppStream validates Verified via appstreamcli validate (0 errors)
Screenshots present In progress
Release information present Done — <releases> block with v2026.9.8
Developer/project URLs present Done — homepage, bugtracker, vcs-browser, developer block
Architecture support decided x86_64 only (no ARM hardware available to test FreeRDP/WinPR on aarch64)
Flathub manifest linter passes Not yet run locally — needs sudo apt install gir1.2-appstream-1.0 for its AppStream bindings; Flathub's own CI runs this during submission review regardless
AppStream linter passes Passing (appstreamcli validate)
Clean install works without host dependencies Verified via local .flatpak bundle install and launch

During permission-narrowing research, RDP certificate verification was found to be completely disabled (IgnoreCertificate=TRUE, all server certificates silently accepted including changed ones). This has been fixed separately in src/rdp_session_backend.cpp — FreeRDP's own trust-on-first-use certificate store is now used, matching SSH's known-hosts model. Not a Flathub-specific issue, but worth noting since it was found in the course of this work.

Explicitly out of scope for this repo

  • Opening the actual submission PR against github.com/flathub/flathub — requires the maintainer's GitHub identity, done outside this repo.
  • ARM64 build/testing — no hardware available.
  • Flathub's post-acceptance developer-verification step — done via Flathub's own website after acceptance, using DNS control of darksingularity.org.

Files

  • Dev manifest (local iteration, type: dir): packaging/flatpak/org.darksingularity.OrbitHub.yml
  • Flathub submission manifest (pinned type: git): packaging/flatpak/flathub/org.darksingularity.OrbitHub.yml
  • AppStream metainfo: packaging/linux/org.darksingularity.OrbitHub.metainfo.xml
  • Desktop entry: packaging/linux/org.darksingularity.OrbitHub.desktop