Commit graph

268 commits

Author SHA1 Message Date
damontecres
77c787b51f
Add settings to show the current time (#155)
Closes #154 

Adds a settings to show the current time in the upper right corner.

If enabled, it will also show the end time for the playback on the
overlay.
2025-11-04 15:27:38 -05:00
damontecres
40a8249469
Support basic adding to playlists (#157)
Closes #143 

Adds option in the "More" menu to add the item to a playlist. Can also
create a playlist if needed.
2025-11-04 15:27:26 -05:00
damontecres
86977f846c
Handle larger TV guide data (#132)
Fixes #110 

Switches loading the EPG/TV Guide data to lazy loading. The app will
load all of the channels, but only keep ~100 channels worth of data in
memory. As the user scrolls up and down, new channel program data will
be fetched as needed.

Eventually this technique can be applied to supporting more than 48
hours of data.

The logic for determine which program to focus on is also simplified and
more of it is delegated to composition.

Credit to @joshjryan for #131 hinting to use a different API endpoint to
avoid 414 errors.
2025-11-04 13:33:32 -05:00
damontecres
13c2bb32d2
Fix favorites not loading (#156)
Fixes bug introduced in #150 that prevented the favorites page from
loading anything

Also remembers the sort for each favorites tab
2025-11-04 13:33:03 -05:00
damontecres
a0b9ac7673
Add option to play item forcing transcoding (#153)
Closes #97 

Adds an option to force an item to play by transcoding. This can be
useful in the few cases where the device reports that it supports direct
play for a file, but it really doesn't.

Also rearranges the "More" dialog list to move picking audio & subtitle
track near the top.
2025-11-03 20:34:46 -05:00
damontecres
2840fa3f2a
Extract strings into resources (#151)
Move all strings into resource files to make future translating easier

No user facing changes in this PR
2025-11-03 15:38:12 -05:00
damontecres
40267be633
Remember library/collection sorting (#150)
Closes #148 
Closes #83

Remember the chosen sort order & direction per user profile on device.
Also adds a few more sort options.

This is only saved on the device and not saved/loaded from the server.
2025-11-03 12:15:41 -05:00
damontecres
08577b8a31
Play theme song for movies (#149)
Closes #133 
Fixes #142 

Theme songs will play for both TV shows and movies, if available. Also,
if there are multiple theme songs, one will be picked randomly instead
of always playing the first.

Additionally, the music now waits to start until the UI has loaded.
2025-11-03 11:50:47 -05:00
Damontecres
d658ec16f3
Release v0.2.5 2025-11-02 17:33:51 -05:00
damontecres
78322ab0a5
Fix deserialization error during login (#145)
Fixes #144 

The error was occurring when querying for server information. The
endpoint used returns information about previous installations and seems
some may be missing a field marked as required in the API. This causes
the deserialization error.

Since the query is just to get the server's name for the UI, we can use
the public server info endpoint instead and also wrap it in a try-catch
since it's not absolutely required.

Additionally, this PR adds exceptions for cases when necessary
information is not available (user id, access token, etc).
2025-11-02 17:28:18 -05:00
damontecres
fe0f96d413
Revert nav drawer on focus #127 (#140)
Temporarily reverts #127 and reopens #95

It needs more refinement.
2025-11-02 17:06:06 -05:00
damontecres
d76f829804
Option to show next up during credits/outros (#130)
Adds an option to the show the next up during the end credits (outro)
instead of at the very end of the video.

The next up pushes up from the bottom and the video scales down to fit
above.

Still a WIP though

### Sample screenshot
<img width="1280" height="771" alt="next_up_credits Large"
src="https://github.com/user-attachments/assets/9a03d0ec-325d-4efe-a28e-51270ddaaa89"
/>
2025-11-02 10:51:59 -05:00
damontecres
715dc1abda
Fix network on main during letter position lookups (#136)
Maybe fixes #135

Yet another network-on-main exception fix.
2025-11-01 19:25:19 -04:00
Damontecres
b288f0f100
Release v0.2.4 2025-11-01 09:54:01 -04:00
Damontecres
c47a34a25f
Don't generate release notes 2025-11-01 09:53:33 -04:00
damontecres
efde6deb58
Adjust audio index when downloading subtitles (#129)
If the user has picked a specific audio track, then downloads a new
external subtitle, the audio track index must be adjusted (add 1) to
account for the shift in track indices.

This is because external subtitles are always indexed first.
2025-10-31 22:20:00 -04:00
damontecres
9f3691fd1b
Optional to automatically go to new page on focus instead of clicking (#127)
Closes #95 

Adds a setting (defaults to enabled) to automatically go to a page when
the navigation drawer item is focused after a brief delay.

Basically, if you open the left nav drawer, and scroll down to "Movies"
after a brief delay (600ms), the app will switch to the Movies page
without having to click.

It can be disabled in advanced settings.
2025-10-31 15:09:13 -04:00
Damontecres
26cc092402
Enable subtitles button when no subtitle tracks 2025-10-31 14:37:30 -04:00
damontecres
e9e5aee01c
Follow up to #122 for selecting subtitles tracks (#124)
Handles selecting subtitle tracks when transcoding now too

Also fixes the adjustment if there's many external subtitles
2025-10-31 13:56:42 -04:00
damontecres
1508fa1ea3
Show file details in overview dialog (#126)
When clicking the overview for an item, the dialog now shows details
about each file/media source including video, audio, & subtitle
information.

It only shows the full file path if the user is an administrator.
2025-10-31 12:27:30 -04:00
Damontecres
ba09ac09e4
Save build cache on main 2025-10-31 12:14:12 -04:00
damontecres
799255814f
Fix selecting subtitle tracks (#122)
Fixes subtitle track selection especially when there is a mix of
embedded & external subtitles

Fixes #116
2025-10-30 22:37:28 -04:00
damontecres
c65831cb05
Fix switching audio/subtitle tracks during playback (#121)
An error would occur when switching audio or subtitle tracks during
playback, but would be ignored. This meant the tracks can't be changed.

#111 was too aggressive on switching dispatchers. The player can only be
accessed on `Main`, so this PR fixes that.
2025-10-30 19:24:53 -04:00
damontecres
982506555f
Add page to details about people (#119)
Adds a page to show details about people (actors, directors, etc) when
clicking on the person card

<img width="1280" height="771" alt="wholphin_person"
src="https://github.com/user-attachments/assets/ceba6c77-2943-4faf-a2c2-81471fb3acff"
/>
2025-10-30 19:24:36 -04:00
Damontecres
90f4ca7306
Release v0.2.3 2025-10-30 14:52:09 -04:00
damontecres
4945bef008
Cache ffmpeg build (#115)
Speed up PR builds by caching the ffmpeg module build artifact
2025-10-30 14:32:07 -04:00
damontecres
3f7c2ac730
UI Updates & Fixes (#114)
Fixes #113 

- Ensures all audio and subtitle options are shown during playback
- Fix home rows not being at top when going back
- Show error message when background home page refresh fails

Also shows more details for login failures and adds a link to the debug
page (with log info) after multiple login failure attempts. Hopefully
this can help diagnose #112 and #18
2025-10-30 13:41:46 -04:00
damontecres
b1275ae210
Include ffmpeg extensions for some audio formats (#109)
Related to #103

Adds ffmpeg decoder module to support a few extra audio formats such as
AC3, EAC3, DTS, & TrueHD.

This increases the apk size by about 5.4mb (release 17.4mb->22.8mb), but
definitely worth it for the added support.
2025-10-29 20:34:41 -04:00
damontecres
f76556f90e
Fix network on main exception trying to play theme songs (#111)
Fetch the theme song info on the IO thread

This would throw an exception on some devices, but it would be caught
without affecting the app, other than just not playing theme music.
2025-10-29 20:07:00 -04:00
Damontecres
84ee57225b
Release v0.2.2 2025-10-29 13:59:03 -04:00
damontecres
cbcae526b4
Don't report playback started until it actually starts (#107)
Wait until playback actually beings before reporting status to the
server. And also ensure progress isn't reported until after reporting
start.
2025-10-29 13:15:17 -04:00
damontecres
576c20edff
Fixes & optimizations to series pages (#106)
Simplifies the process for finding the right season id & episode id
after clicking on an episode. This can also improve loading time for
seasons that have a large number of episodes (hundreds).

Also fixes handling for "unknown" seasons which don't have an
index/season number.
2025-10-29 11:02:21 -04:00
Damontecres
808e379e02
Use neutral color for buffered & remaining seek bar 2025-10-28 21:49:43 -04:00
Damontecres
5682f61b02
Always scroll rows w/ overview to top 2025-10-28 21:47:46 -04:00
damontecres
d578dca0cf
Make watched indicator more clear (#102)
Closes #89

Updates the watched indicator to be more clear. The checkmark is filled
in and there's a slight border to add contrast.

Also this PR makes the location of the watched indicator consistent
between card types and makes child counts always use a semi-transparent
black background.

## Before
<img width="451" height="260" alt="watched_before 2"
src="https://github.com/user-attachments/assets/734d1bb7-4604-4ef1-bb40-fc08403d58fe"
/>

## After
<img width="458" height="272" alt="watched_after 2"
src="https://github.com/user-attachments/assets/d39c4e8e-e483-4843-9083-33209302feb1"
/>
2025-10-28 20:47:17 -04:00
damontecres
06f2c1260d
Add slf4j-simple (#101)
Fixes #99 

While not an actual error, it does look like a transitive dependency of
the Jellyfin Kotlin SDK may log using slf4j, so it would be good to
include an slf4j implementation just in case.
2025-10-28 19:28:54 -04:00
damontecres
f291a0ec04
Move focus from username to password field on enter (#96)
Closes #93
2025-10-28 17:35:26 -04:00
damontecres
3ab9eafc7c
Fix crash when changing seasons & improve error page (#94)
Related to #64 

If an error occurred while querying for a season's episodes, the app
would crash instead of display the error message.

This PR fixes the app crash, but not the underlying query issue. It also
changes the error page to show a button for sending logs to the server
immediately.
2025-10-28 17:04:15 -04:00
Damontecres
50b0b0a508
Release v0.2.1 2025-10-28 13:23:38 -04:00
damontecres
1db48334ab
Sort & format subtitle download options (#88)
Sorts the subtitle download options by community rating and downloads.

Also abbreviates the download count if it's large (eg 5133->5.1k).
2025-10-28 13:07:30 -04:00
damontecres
af0e853c21
Don't send crash reports as json (#84)
This is a workaround for jellyfin/jellyfin-web#7267 to ensure the client
logs are not valid JSON and can be rendered on the `10.11.x` web UI.

Related to #82
2025-10-27 21:22:44 -04:00
damontecres
f1f6b729aa
Fix several UI focus issues (#81)
Remembers the page position & focused item on both Movie & Series detail
pages

Only loads similar movies & series once so that if you click on one and
go back, it doesn't refresh the entire list

Remember the tab on the Favorite page (if remember tabs is enabled in
settings)
2025-10-27 20:44:04 -04:00
damontecres
c4df751918
Fallback to transcoding if direct play fails (#79)
If direct playing (or direct streaming) fails on device, attempt to fall
back to transcoding.

Also display more error information if available
2025-10-27 16:11:30 -04:00
damontecres
07a0db8e98
Add ability to search & download subtitles (#78)
Closes #74 

Adds an option to download subtitles from a remote source. This uses the
Jellyfin server's API, so you need to install a plugin on your server
that provides subtitle searching such as the [official OpenSubtitles
plugin](https://github.com/jellyfin/jellyfin-plugin-opensubtitles).

Initially it will search for subtitles in the device's current language,
but you can search for a different language if needed.
2025-10-27 15:53:58 -04:00
damontecres
4f5b0c7eee
Update bug.yml 2025-10-27 15:50:00 -04:00
damontecres
bafd635402
Add setting to change default content scaling (#77)
Closes #53 #71

Adds an advanced playback setting to set a different default global
content scaling. It can still be changed per playback as well.
2025-10-27 14:25:07 -04:00
damontecres
4269d27dad
Search page improvements (#76)
Update the search page results to indicate whether 1) the search is in
progress, 2) there are no results, or 3) the actual results. This makes
it clear when there's actually no results versus the search is just
running slowly.

Also search for collections as well
2025-10-27 10:28:27 -04:00
damontecres
1a7684b458
Minor UI changes (#75)
* Revert transparent cards from #61
* Don't show queue during playback if playing the final item
* Fix nav drawer collection page from showing everything recursively
* Immediately hide the skip intro button when pressed
2025-10-27 10:17:50 -04:00
damontecres
89b9364807
Dependency updates & removing unused code (#70)
Just bumping dependencies and deleting some unused code. No user facing
changes
2025-10-26 18:17:47 -04:00
damontecres
1c1e64a5b9
Fix focus on home page load defaulting to nav drawer (#68)
When the home page loaded, it would only try to focus on the "Resume"
row even if there were no items in that row (so it doesn't appear). This
resulted in the focus defaulting instead to the nav drawer.

This PR fixes focus so it always starts with the first item in the first
row of the home page.
2025-10-26 17:05:41 -04:00