New launcher icon (the Podcasts Radio pack, master in art/icon-master.png). The status-bar icon
was cut out of the old headphones artwork; make_icons.py now draws a white radio silhouette.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Renames the app (label, texts, Audiobookshelf client name, User-Agent, APK). The package name,
preferences and signing key stay, so it installs over MiniABS and keeps its settings.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
All requests (API, covers, downloads, the streaming proxy) go through Minamp's own
HTTP/TLS client (Bouncy Castle TLS 1.2, Mozilla roots, keep-alive, session
resumption) via NetConnection, a drop-in HttpURLConnection, as the iPod version does
with BearSSL. The phone reaches the normal https:// address directly; nothing changes
on the server.
- Trust: Mozilla roots + the user's pinned CAs/certificates feed the new verifier; the
trust prompt, renew-safe CA pinning and forged-chain protection behave as before
- PATCH is a normal request now (no raw-socket path)
- Job, covers, player, downloads and proxy threads get big stacks for the handshake
- embedded Roots.java and gen_roots.py replaced by assets/roots
- tests: desktop shims read assets; all 104 checks pass (HTTP and HTTPS)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- An episode only counts as played when playback reaches the last minute.
Saved files that "complete" early (cut-short download, SD card problems) were
marked as played on the server, as were streams ending 30-60 s early; now a
stream is retried and a file is reported.
- "Playing" but the position not moving for 12 s: say so.
- Menu -> "Pechar MiniABS" (Latest/Shows/Saved and the player): save the
position, stop playback and close the app.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Launcher icon from the Audiobookshelf icon pack (art/icon_master_512.png),
including an xhdpi size
- Notification icon cut out of the same artwork; player icons redrawn in the
icon's lilac (tools/make_icons.py)
- Purple colour scheme taken from the icon: gradient accent buttons, lilac
text accents (accent_light), purple-tinted backgrounds
- README: where the icon and colours come from
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Translate the interface to Galician (tools/translate_gl.py), including
Galician month abbreviations for dates, which Android 2.3 lacks
- Resize for the Galaxy Mini's 240x320 screen: larger text, rows, tabs and
buttons; all sizes now live in res/values/dimens.xml
- Redraw play/pause/refresh icons for every density; slightly brighter
secondary text colours
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Bundle current root certificates (Let's Encrypt, GTS, Sectigo, DigiCert G2,
Amazon, ...) missing from Android 2.x's store (Roots.java, tools/gen_roots.py)
- Ask once for unknown certificates, showing the SHA-256 fingerprint, and
remember the answer; replaces "accept any certificate" (Trust*, Settings)
- Local streaming proxy so Android 2.x's MediaPlayer can play https:// servers,
with seeking and a fresh token per request (StreamProxy.java)
- Tests over real TLS with good, expired, wrong-host, forged and self-signed
certificates (test/make_pki.sh, TrustTest.java)
- README: server setup for a legacy TLS 1.0 port
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>