No description
  • C++ 60.3%
  • QML 26.2%
  • JavaScript 7.2%
  • Python 3.2%
  • CMake 1.8%
  • Other 1.2%
Find a file
2026-11-04 21:39:09 +01:00
.vscode (c) Use common mise tasks and app release workflow 2026-11-04 19:52:32 +00:00
3rdparty (c) common update 2026-11-04 21:39:09 +01:00
docs (c) common update 2026-11-04 21:19:18 +01:00
icons (c) Prepare public sources, mise tasks and guarded release packaging 2026-10-25 08:24:42 +00:00
legal (c) Prepare public sources, mise tasks and guarded release packaging 2026-10-25 08:24:42 +00:00
LICENSES (c) Prepare public sources, mise tasks and guarded release packaging 2026-10-25 08:24:42 +00:00
qml (c) cover blur fix, fixed phronix article rendering, fixed remorse timer 2026-11-02 20:03:21 +01:00
rpm (f) Enforce distribution tests and record sanitized publication history 2026-10-25 08:31:55 +00:00
scripts (c) Use common mise tasks and app release workflow 2026-11-04 19:52:32 +00:00
src (c) cover blur fix, fixed phronix article rendering, fixed remorse timer 2026-11-02 20:03:21 +01:00
tests (c) Use common mise tasks and app release workflow 2026-11-04 19:52:32 +00:00
translations (c) Adopt shared About, legal navigation and offline license catalog 2026-10-25 12:46:04 +00:00
.env.template (c) Prepare public sources, mise tasks and guarded release packaging 2026-10-25 08:24:42 +00:00
.gitattributes (c) Prepare public sources, mise tasks and guarded release packaging 2026-10-25 08:24:42 +00:00
.gitignore (c) Use common mise tasks and app release workflow 2026-11-04 19:52:32 +00:00
.gitmodules (c) Prepare public sources, mise tasks and guarded release packaging 2026-10-25 08:24:42 +00:00
CHANGELOG.md (c) Adopt shared About, legal navigation and offline license catalog 2026-10-25 12:46:04 +00:00
CLAUDE.md (c) Use common mise tasks and app release workflow 2026-11-04 19:52:32 +00:00
CMakeLists.txt (c) Use common mise tasks and app release workflow 2026-11-04 19:52:32 +00:00
flake.lock (+) screenshots / demo 2026-10-28 11:24:58 +01:00
flake.lock.license (c) Prepare public sources, mise tasks and guarded release packaging 2026-10-25 08:24:42 +00:00
flake.nix (c) Prepare public sources, mise tasks and guarded release packaging 2026-10-25 08:24:42 +00:00
harbour-sailreader.desktop (c) Prepare public sources, mise tasks and guarded release packaging 2026-10-25 08:24:42 +00:00
libwebp-COPYING.txt (c) cover blur fix, fixed phronix article rendering, fixed remorse timer 2026-11-02 20:03:21 +01:00
LICENSE (c) Prepare public sources, mise tasks and guarded release packaging 2026-10-25 08:24:42 +00:00
mise.toml (c) common update 2026-11-04 21:19:18 +01:00
README.md (c) common update 2026-11-04 21:19:18 +01:00
THIRD_PARTY_NOTICES.md (+) screenshots / demo 2026-10-28 11:24:58 +01:00

SailReader

Offline-first Miniflux client for Sailfish OS. Browse cached articles, manage read and starred state, and sync offline changes. Images and selected media can be cached; full articles can be fetched from their source.

Screenshots

Browse and pin for later Read cached articles Keep favorites
Article list with reading pins Article reader Favorites

Browse headlines, tap the left-hand markers to keep articles for later, mark the rest read, then open your picks and star favorites:

Mock workflow: browse, pin, read and favorite articles

All captures use an isolated demo account and a local mock Miniflux server. Article summaries are based on public NASA, CERN and Mozilla articles; no personal Miniflux data is used. See the overview and capture setup, sources and image credits.

Development

Install mise, the Sailfish OS SDK, and an SDK target. Start the SDK build engine and, for emulator tasks, the Sailfish emulator.

git submodule update --init --recursive
cp .env.template .env          # adjust SDK path and target
mise install
mise tasks
mise run test:setup     # once per SDK target
mise run test
mise run dev:build             # RPMs are written to RPMS/
mise run dev:deploy
mise run dev:run

mise run test:one test_models rebuilds and runs one test after the initial test build. Tests use the real SDK toolchain; build/compile_commands.json supports editor completion. Override a target with SAILFISH_SDK_TARGET=<target> mise run dev:build.

For the optional Nix MicroVM, install Nix on the host and run mise run vm, then SSH to dev@127.0.10.9 on port 2200. Set the SSH public key and Git identity in .env first. The SDK stays on the host and is mounted read-only in the VM; the same mise tasks work in both environments. The VM retains the upstream firewall defaults. When using the VM’s base Python, MISE_DISABLE_TOOLS=python mise run <task> skips installing a second interpreter. Its base tools include Python/uv, Node/pnpm and common CLI tools; use uv run --with <package> or nix shell nixpkgs#<tool> for temporary tools. Project tools belong in mise.toml.

Releases und Herausgeberangaben

Vor einem verteilbaren RPM die ignorierte legal/provider.local.json anhand des neutralen Beispiels anlegen (Dateimodus 0600):

cp -n legal/provider.example.json legal/provider.local.json
chmod 600 legal/provider.local.json

Der gemeinsame Leitfaden beschreibt externe Profile und Prüfungen. Bei geänderten Datenflüssen legal/datenschutz.html.in überprüfen. RPMs verlangen vollständige Angaben.

mise run check:legal
mise run check:sources
mise run check:source-privacy
mise run test:release
mise run check:harbour
mise run release:prepare -- patch --dry-run
mise run release:deploy -- v0.10.0  # nach Vorbereitung, nur auf dem sauberen Tag

SailReader folgt dem gemeinsamen Task-Schema und Release-Verfahren. release:prepare erstellt Version, Commit und App-Tag v<version>. release:deploy prüft Herausgeber, öffentliche Quellen und Datenschutz, baut und prüft die RPMs für alle drei Architekturen einschließlich Rechtstexten und Lizenzbeilagen im fertigen Paket (check:rpm) und erzeugt unter dist/harbour-sailreader-<tag>/ RPMs, Quellarchiv und SHA256SUMS. Das Quellarchiv enthält ausschließlich versionierte App-Dateien und exakt gepinnte Submodule; lokale Profile und .env sind ausgeschlossen. Auch mit --skip-checks bleiben die Pflichtprüfungen erhalten. Es wird nichts automatisch veröffentlicht. Details stehen unter Versionen und Releases und im Publikationsaudit.

License

GPL-3.0-or-later; see LICENSE. Asset exceptions and attribution are listed in THIRD_PARTY_NOTICES.md. The shared About and legal helper regenerates the selected original license texts at configure, build and install time. They ship in share/harbour-sailreader/licenses/ and are accessible from Settings → About SailReader → Legal. App license, third-party licenses, imprint and privacy documents are available offline.