feat(web): download the Android APK from Settings

Backend serves a staged APK so co-users self-serve the latest build:
- GET /api/apk streams APK_PATH (default /data/novasonic.apk) with the
  android package content-type + attachment disposition; 404 if absent.
- GET /api/apk/info reports availability, size, mtime, and an optional
  version from /data/novasonic.version.txt.
- Settings gets a "🤖 Android App" section that appears only when an APK is
  present and shows version/size/date.

Maintainer updates the APK with:
  docker cp app-release.apk novasonic-backend:/data/novasonic.apk

Android source is already tracked; only build artifacts stay out of git.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Opus 4.8 committed 2026-08-25 18:00:36 +02:00
1 parent 7996971ba0
commit 908b50bcd9
4 files changed
+67

No files matched your search

+7
View File
@@ -71,6 +71,13 @@ like Android), concert events become **reliable across web/Android**, several An
**YouTube downloads are recovered** after they broke on two independent fronts.
### Added
- **Android APK download in Settings (Web)** — a "🤖 Android App" section in Settings offers the
latest APK so co-users self-serve instead of the maintainer hand-delivering builds. The backend
serves the staged APK (`GET /api/apk`, metadata at `/api/apk/info`); the button appears only when an
APK is present and shows version/size/date. **Maintainer workflow:** drop the release build into the
backend's data volume — `docker cp app-release.apk novasonic-backend:/data/novasonic.apk` (optional
`docker cp version.txt novasonic-backend:/data/novasonic.version.txt`). The Android *source* is
already in the repo; only build artifacts stay out of git.
- **Unified Global Search field (Web)** — the separate Song-Importer page/sidebar entry is gone. The
one search field now auto-detects: a **link** (Spotify/SoundCloud/YouTube) opens the importer
preview, plain **text** runs a Deezer search. Cleaner left nav, same behaviour as Android.