Changelog¶
The authoritative changelog lives in the repo root at
CHANGELOG.md. This page is a
snapshot for convenience.
Unreleased¶
Added¶
- GitHub Actions deploy of the docs site to Cloudflare Pages
(
.github/workflows/cloudflare-pages.yml) via Wrangler direct upload. The live site is nowhttps://spooty.pages.dev. The GitHub Pages workflow (pages.yml) stays in place for the future option of publishing from a public repo.
Fixed¶
- Release builds were shipped unsigned when no keystore was configured (the
app-release-unsigned.apkasset), which Android refuses to install. The release build type now falls back to the debug signing key, so the APK is always installable for sideloading.
1.0.0¶
Added¶
- WebView wrapper around Spotify Web Player with desktop-UA baseline and Spicetify-style
CSS/JS injection (
core-spooty.js,core-spooty.css,spicetify-polyfill.js). - Ad engine with mute-by-default ad handling; skip available behind an explicit
user toggle. Layered detection (webpack
ListPlayerscan + DOM fallback), safe volume restore, skip guards (ad content-type/URI, duration cap, cooldown, rate limit). - Bundled themes:
win95,spotify-dark,retro-player(color + CSS per theme), theme selection via the Theming skill workflow. - Native settings screen (ad mode, theme, background playback, desktop UA, DNS preconnect, renderer prewarm) wired to the in-app settings button over the JS bridge.
- Foreground
SpotifyPlaybackServicemirroring playback state (media-session lockscreen controls) while the WebView's own audio element owns the real stream. - Connectivity-aware
NetworkMonitorcache-mode switching. - Startup prewarm: renderer warm-up + DNS preconnect to Spotify origins, feature-guarded.
- Unit tests for ad-mode mapping, theme parsing, and ad-mode behavior.
- Clean-vector placeholder launcher icon (adaptive with monochrome layer) pending a proper logo.
- GitHub Pages landing page + project docs built with MkDocs Material (
mkdocs.yml,docs/) and deployed by.github/workflows/pages.yml. - CI
workflow_dispatchtrigger with optional unsigned-release-APK build for on-demand sideloading.
Changed¶
AGENTS.mdnow mandates the branch → full local sweep → PR → CHANGELOG → green-merge workflow for all agents; the docs site mirrors it underdocs/contributing.md.- Added a gitignored
notes/scratch space for deferred items (e.g. enabling Pages later).
Fixed¶
SpootyApplicationused a nonexistent androidx.webkit API (Profile.preconnect/WebViewFeature.PRECONNECT); rewrote against real APIs; optimization skill updated to match.SettingsActivitycalled aLinearLayoutreceiver extension without a receiver.- Playback service rewritten on media3-only APIs (no legacy media compat) with main-thread routing for JS bridge calls.
Security¶
- WebView locked down: JS enabled only for loaded content, universal/file access disabled,
MIXED_CONTENT_NEVER_ALLOW,usesCleartextTraffic = false, SSL errors always cancelled. - All JS→native bridge methods carry
@JavascriptInterface.