# Linthra v0.1.0-alpha.9 — release notes

**Linthra is a modern, local-first, privacy-focused music player for people who
own their music.** This is the latest sideloadable Android alpha — still early
software, but with several rounds of features and fixes since the first alpha.

- **Version:** `0.1.0-alpha.9` (`versionName`), `versionCode` 9
- **Platform:** Android (Linux desktop planned later, same codebase)
- **Application ID:** `io.github.thezupzup.linthra`
- **License:** [MPL-2.0](../../LICENSE)

## What changed since v0.1.0-alpha.1

- **Shuffle & repeat.** Working shuffle and repeat playback controls.
- **Cast foundation.** Chromecast / cast groundwork behind the playback layer.
- **Smart offline cache.** An offline cache manager with a user-configurable
  size limit and eviction policy.
- **Jellyfin favorites & lyrics.** Favorites stay in sync with Jellyfin, and
  track lyrics now display.
- **Smoother playback.** Disk preloading of upcoming tracks.
- **Brand & theme refresh.** A violet + warm orange identity and a refined
  equalizer icon.
- **Library fast-scroller fix.** The alphabet fast scroller no longer overlaps
  track rows.
- **Version display fix.** Settings/About now shows the real app version. Older
  alpha builds were stuck displaying `0.1.0-alpha.1` because the in-app string
  was a second, hand-maintained source that had drifted from `pubspec.yaml`.
  The version now lives in `pubspec.yaml` as the single source of truth, with a
  CI test (`test/core/app_info_version_test.dart`) that fails if the in-app
  string drifts again.

For the full baseline feature set and the honest list of known limitations, see
the [v0.1.0-alpha.1 notes](./v0.1.0-alpha.1.md); they still describe the core
of the app. This alpha remains a **sideloadable APK only — not on F-Droid yet**.

## Install (sideload)

1. Download the `app-release.apk` attached to this release (or build it
   yourself — see the README).
2. On your Android device, allow installing from unknown sources if prompted,
   then open the APK. Or, with the device connected over ADB:
   ```bash
   adb install -r app-release.apk
   ```
3. On first launch (Android 13+), tap **Allow** on the notification prompt so
   the media notification and its controls can appear.

## Releasing the next alpha without drift

Follow [docs/release-process.md §3](../release-process.md#3-pre-tag-checklist).
In short, for `0.1.0-alpha.10`:

1. Bump `version:` in `pubspec.yaml` to `0.1.0-alpha.10+10` (versionName **and**
   the monotonic `+versionCode`).
2. Sync `AppInfo.version` in `lib/core/app_info.dart` to `0.1.0-alpha.10`
   (the drift test enforces this).
3. Add `fastlane/metadata/android/en-US/changelogs/10.txt` and a
   `docs/release-notes/v0.1.0-alpha.10.md`.
4. Land it with CI green, then push the annotated tag `v0.1.0-alpha.10`.

Full reference: [docs/release-process.md](../release-process.md).
