Skip to content

Firefin 0.2.5: sign-in, playback session and browsing fixes - #12

Merged
ZepiGit merged 4 commits into
mainfrom
firefin/polish-0.2.5
Oct 3, 2026
Merged

ZepiGit merged 4 commits into
mainfrom
firefin/polish-0.2.5

Conversation

@ZepiGit

@ZepiGit ZepiGit commented Oct 3, 2026

Copy link
Copy Markdown
Owner

Summary

Firefin 0.2.5: fixes for sign-in, playback sessions and browsing in the native app, plus refreshed documentation and templates. Version 0.2.5-firefin / 3001005; no release is created by this change.

Changes

Native app

  • Jellyfin REST, media and snapshot clients add ISRG Root X1 (Let's Encrypt) to the platform trust store; hostname and chain validation are unchanged.
  • Media reads fail after 30 s without data instead of buffering forever.
  • Favorite/watched marks are cleared with DELETE on the item resource.
  • Sign-in errors are classified by exception type (credentials, server status, certificate, HTTPS hint, unknown host, unreachable, address); http:// needs confirmation and works on Android 9+.
  • Sign-out revokes the token on the server and keeps address and user name.
  • Playback sessions finish once on end, fatal error, source change and teardown; errors offer Retry/Back; subtitles come from the server list during direct play too.
  • Container children page past 60 entries; episodes show numbers; series get a Continue button; unsupported library types are hidden; home rows load concurrently; settings show current values.
  • Localized transport errors and sort names; LRU image disk cache with an out-of-memory guard; unused WAKE_LOCK removed.

Repository

  • README installation and troubleshooting sections; CHANGELOG, BUILDING, COMPATIBILITY, SECURITY, technical overview, notices and migration ledger updated to the current evidence.
  • Issue/PR templates describe Firefin on Fire TV devices; .gitattributes keeps the legacy Flutter tree out of language statistics.
  • verify-native-apk.py uses explicit checks that also hold under python -O.

Area

  • Native app (app/)
  • Legacy Flutter app (lib/, packages/, android/)
  • Documentation
  • Build / CI (verifier script only; workflows unchanged)

Testing

  • Unit tests: :app:testDebugUnitTest 83 passed, 0 failed
  • Strict lint debug/release: 0 errors, 74 warnings; assembleDebug and assembleRelease pass; APK verifier passes for both APKs
  • API 22 x86 emulator: :app:connectedDebugAndroidTest 2 passed (login screen; sign-in over HTTP, favorite set/clear, paging through 125 episodes, sign-out and prefilled sign-in against a local fixture server); sign-in error and cleartext dialog checked manually
  • Physical Fire TV device: not available
  • Playback with real media: not exercised for this version (no media server in the test setup)

Checklist

  • Code builds successfully
  • Code follows project style and conventions
  • No unnecessary commented-out code
  • No new lint errors (warnings went from 77 to 74)

Transport:
- Add ISRG Root X1 next to the platform anchors for Jellyfin REST, media
  and snapshot clients; Android 5.1 lacks it. Validation is unchanged.
- Fail a media read after 30 s without data; calls stay unbounded.
- Clear favorite and watched marks with DELETE on the item resource
  instead of POST .../Delete.
- Localize user-facing transport errors.

Sign-in:
- Classify failures by exception type; rejected credentials are no
  longer reported as an expired session.
- Suggest http:// after a TLS failure on an address without scheme and
  confirm every cleartext sign-in; permit cleartext on Android 9+.
- Revoke the token on sign-out and keep address and user name.

Playback:
- Finish the session once on natural end, fatal error, source change and
  teardown; offer retry with a new session after an error.
- Choose subtitles from the server list during direct play as well.
- Keep the screen on only while playback is wanted.

Browsing:
- Page container children past 60 entries, driven by D-pad focus.
- Show episode numbers and a Continue button for series.
- Hide library types without a native player; load home rows
  concurrently; show the overview for recently added items.
- Show current values in settings; localize library sort names.

Tests: PageCursorTest, PlaybackSessionTrackerTest, LoginErrorsTest,
transport TLS/timeout cases, client route and paging cases, and an API 22
instrumented sign-in/mark/page/sign-out flow against a fixture server.
- README: installation by sideloading (Downloader or ADB), checksum
  check, sign-in address formats, troubleshooting, corrected device table,
  spelling and screenshot descriptions, current releases link.
- CHANGELOG, BUILDING, COMPATIBILITY, SECURITY, technical overview and
  third-party notices: 0.2.5 changes and evidence, published 0.2.4
  release, TLS anchor, cleartext confirmation and media read timeout.
- Migration ledger: product-level scope and checklist without copied task
  rows or review-round labels; evidence, SHAs and open items preserved.
- Issue and pull request templates describe Firefin on Fire TV devices,
  use existing labels and link to the installation help.
- verify-native-apk.py: explicit checks that also hold under python -O.
- FIRETV32-VERIFICATION.txt: placeholders replaced by "not recorded".
- .gitattributes: exclude the legacy Flutter tree from language stats.
After the deliberate read timeout OkHttp marks the route as failed. On
hosts where localhost also resolves to ::1 the follow-up request tried
that address first and failed to connect, so the test now uses 127.0.0.1
and asserts the read timeout explicitly.
@ZepiGit
ZepiGit merged commit a938957 into main Oct 3, 2026
2 checks passed
@ZepiGit
ZepiGit deleted the firefin/polish-0.2.5 branch October 3, 2026 03:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant