v0.1.9
[0.1.9] - 2026-08-03
Added
- Explicit unexpected-mpv-exit state with a user-controlled restart-and-resume action;
automatic player restart attempts remain exactly zero. - A real-host crash-recovery smoke that forcibly terminates mpv, verifies stable queue
identity, and requires resumed playback to remain within a five-second checkpoint bound. - A clean-profile runner for packaged desktop and AppImage smoke tests, including an
isolated temporary directory that prevents stale extract-and-run state, plus isolated
Flatpak application HOME/config/data/cache/state paths. - A deterministic AppImage smoke path that explicitly extracts into a private directory,
verifies the reviewedAppRun, embedded version metadata, and launcher containment,
then executes the packaged smoke instead of trusting runtime extract-and-run caching. - Retrying MPRIS identity and playback-status probes so transient D-Bus registration
races cannot fail an otherwise healthy Flatpak package run. - A complete release-graph validator covering immutable version/tag/commit provenance,
required artifact kinds and filenames, sizes, SHA-256 evidence, checksum closure,
release notes, symlink rejection, and forbidden secret/ephemeral fields. - An Arch
PKGBUILDrenderer that requires a real HTTPS source archive and calculates
its checksum instead of acceptingSKIPor unresolved placeholders. - A detailed GNOME/KDE/i3, accessibility, package, and soak evidence matrix whose
unverified cells remain explicit blockers for0.2.0.
Changed
- The Linux gate now includes forced crash recovery and packaged clean-profile smokes in
addition to unit, application-image, normal mpv/SQLite, and MPRIS checks. - Tagged AppImage and Flatpak jobs run application smokes with isolated user state, and
publication revalidates the finalized artifact graph againstGITHUB_SHA. - Player IPC polling reports fixed local health messages and cannot expose provider
response data through process-exit diagnostics.
Security
- A crashed player is never restarted automatically; recovery requires an observable
user action that re-resolves the current stream and uses durable progress. - Release publication rejects artifact symlinks, unsafe paths, missing or extra checksum
entries, mismatched evidence, and secret-bearing evidence keys. - Arch package preparation rejects insecure source URLs and floating/skipped checksums.
Testing
- Added pure exit-state tests, real mpv termination/restart coverage, clean-profile
environment tests, release-graph mutation tests, Arch renderer tests, and a simulated
delayed Flatpak playback-status registration regression.
Known limitations
- Clean-profile workflow wiring is automated, but final AppImage/Flatpak evidence still
belongs to the immutable tagged release run. - GNOME, KDE Plasma, and i3 keyring/MPRIS/suspend cells, the manual accessibility matrix,
a four-hour soak, the final Archmakepkg --cleanbuild, and protected EU/US provider
validation remain external blockers for0.2.0.
Artifact status
The attached APK is an installable debug-signed demo build produced by the pinned Docker toolchain. Production signing remains an external maintainer boundary.
The deterministic demo source is fully exercised in public CI. Protected live pCloud OAuth, fallback direct-login, and regional-account validation require maintainer-provided sandbox credentials and are reported separately rather than simulated.
The exact jaudiotagger source archive used by the metadata adapter is attached under third-party/, checksum-verified, and rebuildable through the tagged Gradle project.
Linux packages
The release includes an x86_64 AppImage and a single-file Flatpak bundle. Both contain the application runtime. Playback still uses the distribution's installed mpv; the Flatpak invokes that host command through flatpak-spawn. Install the Flatpak bundle with flatpak install ./properpcloud-*.flatpak.