# Linthra v0.1.11 — release notes

**Linthra is an Android music player for local files and self-hosted music
servers.** v0.1.11 is a **folder-browsing and Android navigation release**. It
adds a real server-folder view for Jellyfin and Navidrome/Subsonic and makes the
Android system Back button follow Linthra's navigation before exiting the app.

- **Version:** `0.1.11` (`versionName`), `versionCode` `111999`
- **Platform:** Android
- **Application ID:** `io.github.thezupzup.linthra`
- **License:** [MPL-2.0](../../LICENSE)
- **Get it:** Available from the
  [GitHub Releases page](https://github.com/TheZupZup/Linthra/releases) first
  (signed APKs); [Obtainium](https://github.com/ImranR98/Obtainium) can track
  this repository for updates. The
  [F-Droid](https://f-droid.org/packages/io.github.thezupzup.linthra/) build
  follows after F-Droid detects the tag and completes its build process.

## What's new

### Browse by folder hierarchy

- **New Folders tab.** Library now includes a Folders tab when a compatible
  Jellyfin or Navidrome/Subsonic server is connected.
- **Real server structure.** Browse the hierarchy exposed by the server instead
  of relying only on Linthra's flat Songs, Albums, and Artists views.
- **Direct playback.** Songs found inside a folder can be started immediately
  using Linthra's existing playback queue and track actions.
- **Separate connected sources.** Jellyfin and Navidrome/Subsonic roots are
  shown independently when both are connected.
- **Lightweight navigation.** Linthra requests one folder level at a time rather
  than recursively downloading the complete directory tree.
- **Friendly states.** Loading, empty-folder, error, and retry states are handled
  inside the folder browser.

### Android Back navigation

- **Nested folders return correctly.** Android Back moves to the previous folder
  before leaving the Folders tab.
- **Detail screens return normally.** Album, artist, playlist, player, support,
  and settings-detail screens return to their parent screen.
- **Main tabs return to Library.** Back from the root of Playlists, Downloads,
  or Settings returns to Library instead of closing Linthra immediately.
- **Exit only from the true root.** Linthra closes normally only when Back is
  pressed from the root of Library with no internal state left to dismiss.
- **Existing tab history is preserved.** The independent navigation stack and
  scroll position of each bottom-navigation tab remain intact.

## Technical summary

- **Provider-neutral folder capability**
  ([PR #289](https://github.com/TheZupZup/Linthra/pull/289), closes
  [#282](https://github.com/TheZupZup/Linthra/issues/282)): a small optional
  folder-browsing contract lets supported providers expose root folders and one
  immediate child level without changing the normal music-source interface.
- **Jellyfin folder browser:** reads music roots from `/Library/MediaFolders`
  and direct child folders/tracks from `/Items` with non-recursive requests.
- **Navidrome/Subsonic folder browser:** reads music roots through
  `getMusicFolders`, indexes through `getIndexes`, and nested directories through
  `getMusicDirectory`.
- **Credential-safe identifiers:** folder IDs stay opaque and never include an
  authenticated URL, password, token, or other secret.
- **Central Android Back handling**
  ([PR #289](https://github.com/TheZupZup/Linthra/pull/289), closes
  [#285](https://github.com/TheZupZup/Linthra/issues/285)): root and branch
  navigators now cooperate so internal state is handled before the app exits.

No dependency, Drift schema, account, playlist, download, cache, or media-library
data migration is included in this release.

## Manual QA completed

- [x] Browse a real Jellyfin folder hierarchy.
- [x] Open nested folders and start a song directly from Folders.
- [x] Use Android Back to return through nested folders.
- [x] Use Android Back across Linthra detail screens and main tabs.
- [x] Exit normally from the Library root.
- [x] Dart formatting, Flutter analysis, full tests, privacy scan, Android debug
      build, and GitHub Sponsor simulation passed on the feature PR.

## Upgrade and distribution notes

- No settings reset or database migration is required.
- **Don't mix install sources.** A GitHub-release APK is signed with Linthra's
  key, while the F-Droid build is signed with F-Droid's key; the two cannot
  update each other. Stay with one source.
- F-Droid detects stable tags automatically and builds from source. The local
  metadata mirror can be updated after tagging with the final tag commit SHA and
  per-ABI version codes.

No ads, no tracking, no analytics, no telemetry. Linthra plays music you already
own or that your own server provides.
