Skip to content

Linthra v0.2.0

Choose a tag to compare

@github-actions github-actions released this 08 Aug 06:53
· 79 commits to main since this release
8436fdf

Linthra v0.2.0 release notes

Linthra is an Android music player for local files and self-hosted music servers. v0.2.0 introduces a proper first-run experience for new installs and expands the project foundations for future performance work and broader open-source contributions.

  • Version: 0.2.0 (versionName), versionCode 200999
  • Platform: Android
  • Application ID: io.github.thezupzup.linthra
  • License: MPL-2.0

What's new

A real first-run welcome

  • New installs now open a guided welcome instead of dropping directly into an empty library.
  • The source chooser helps users start with local music, Jellyfin, Navidrome / Subsonic, or Plex.
  • Notification permission is deferred until the welcome has completed so first launch stays focused on setup.
  • The welcome can be replayed later from Settings.

Existing installs stay out of the way

  • Linthra now records onboarding completion and detects Android install history during startup.
  • Existing users upgrading from an earlier version continue into the normal app instead of being treated like a fresh install.
  • The startup state is resolved before the router is built, preventing a temporary jump into the wrong screen.

More resilient onboarding UI

  • The welcome layout now uses the actual SafeArea constraints and handles very short viewports without producing invalid layout constraints.
  • Regression coverage protects first-run routing, upgrade classification, onboarding persistence, and short-screen layout behavior.

Project foundations for v0.2.x

This release also opens more of Linthra to contributors working outside Dart while keeping these components deliberately separate from the shipped playback path until they are ready to be integrated.

  • A Rust linthra_core prototype provides a deterministic large-library search index and a 200k-track benchmark.
  • A native C++ audio DSP project defines an allocation-free processing chain, stable C ABI, EQ/preamp/limiter tests, and a realtime-safety benchmark.
  • Python and SQL tooling can generate and benchmark a deterministic 200k-track SQLite library.
  • CI now validates the Rust core, C++ DSP work, and large-library SQL benchmark independently.
  • Contributor documentation maps real areas where Dart, Kotlin, Rust, C++, Python, and SQL can be used in Linthra.

These native and tooling projects are foundations for future work; v0.2.0 does not claim that Rust search or the C++ DSP chain has replaced the current Flutter playback/search implementation yet.

Upgrade and distribution notes

  • Normal in-place updates preserve accounts, settings, playlists, catalog, favorites, and cache.
  • Existing installs should bypass the new first-run welcome automatically.
  • Do not mix GitHub and F-Droid installations because the APKs use different signing keys and cannot update one another.
  • F-Droid builds and signs its own APKs from the source tag; GitHub Release APKs are signed by the upstream project.

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