- QML 33.7%
- Shell 31.4%
- C++ 19%
- JavaScript 10.3%
- Nix 3.2%
- Other 2.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo/workflows | ||
| docs | ||
| icons | ||
| qml | ||
| rpm | ||
| scripts | ||
| src | ||
| .gitignore | ||
| AGENTS.md | ||
| flake.nix | ||
| harbour-sfos-forgejo-store.desktop | ||
| harbour-sfos-forgejo-store.pro | ||
| README.md | ||
| sdk-version.json | ||
harbour-sfos-forgejo-store
Sailfish OS (Silica) harbour app that lists RPMs from git.bitp.cz — both Forgejo Packages and harbour RPMs attached to repo Releases (defaults: donach/orca, donach/zulip-sfos, donach/t3code-sfos) — and installs them on-device (SFOS 5.2.x aarch64).
Harbour / binary / desktop name: harbour-sfos-forgejo-store
Product defaults
| Item | Choice |
|---|---|
| Instance | https://git.bitp.cz |
| Catalog sources (v1) | Packages type=rpm + Releases *.rpm (prefer harbour-*) |
| Default release repos | donach/orca, donach/zulip-sfos, donach/t3code-sfos |
| Default package owners | bitpartner, donach, code-fixxers |
| APKs | Omitted in v1 (AppSupport out of harbour install path) |
| UI | Native Silica / QML (sailfishapp); source badge + All / Orca / Packages filter |
| Auth v1 | Anonymous / public listing first; optional PAT stub in Settings |
| Download | C++ QNetworkAccessManager → Downloads/harbour-sfos-forgejo-store/ |
| Install | pkcon install-local --noninteractive <rpm> via C++ QProcess |
| Success rule | Only when pkcon exits 0 (errors shown in QML) |
| Packaging | noarch harbour RPM (QML + small C++ helper); see rpm/ |
Vertical slice (v1)
- List RPMs from Packages owners and configured release repos (Orca harbour assets).
- Open one item → Install page (Packages: files API; Releases: direct asset URL).
- Download the
.rpmto a writable SFOS path. - Install with PackageKit (
pkcon). If harbour sandbox blocks it, keep the file and show: open File Manager / use Warehouse / run pkcon in a terminal.
Install & harbour constraints
Harbour / Sailjail apps are often not allowed to drive PackageKit the same way system tools do. This app:
- Always saves the RPM under the app download directory (path shown in UI).
- Attempts
pkcon; surfaces exit code and stderr. - Never claims success without exit code
0. - On sandbox / permission failure, points the user at File Manager or Warehouse.
See docs/SCOPE.md.
API approach (dual source)
Forgejo has no instance-wide GET /api/v1/packages without an owner.
This app aggregates:
GET /api/v1/packages/{owner}?type=rpm&page=&limit=&q=
across a configurable owner list, and:
GET /api/v1/repos/{owner}/{repo}/releases?limit=
across a configurable release-repo list (default donach/orca, donach/zulip-sfos, donach/t3code-sfos), keeping only
.rpm assets (prefer harbour-*.rpm). See docs/api.md.
Packages download (registry, not /api/v1):
GET /api/packages/{owner}/{type}/{name}/{version}/{filename}
Releases download: asset browser_download_url (direct).
Repo ownership
- Forgejo:
donach/sfos-forgejo-store - Working agent: SFOS (
sfos@bitp.cz) - Ask D. H. only on hard product forks (see AGENTS.md / docs/SCOPE.md)
Build notes
- Do not pull Sailfish Platform SDK images from agent boxes (OOM risk).
- CI:
.forgejo/workflows/harbour-sfos-forgejo-store-rpm.ymlbuilds withcoderus/sailfishos-platform-sdk:5.2.0.15(seesdk-version.json), then publishes the RPM as a release asset (and best-effort Forgejo Packagestype=rpm). Packages uploads often return401 reqPackageAccessfor CI / Grok PATs — the release asset is the supported install path for the store catalog. - Local light checks:
./scripts/check-harbour-sfos-forgejo-store-scaffold.sh,./rpm/check-noarch.sh,./rpm/check-orca-catalog.sh.
Blockers / known gaps
- No true instance-wide package list in Forgejo API → owner aggregation.
- Instance Packages registry currently has essentially zero
type=rpm; harbour RPMs for Orca live on Releases instead — hence the dual source. - Identical harbour RPMs may appear under multiple release tags (no dedupe in v1).
- Anonymous listing may return fewer items than authenticated; PAT settings are in-memory only (not persisted).
- On-device
pkconmay be blocked by harbour Sailjail until permissions / privileged helper are sorted on real hardware. - APKs from Orca releases are intentionally not installable / not listed in v1.