- Update billing version by November
- Constructor inject
Dispatchers
, removeGlobalScope
usages (okay in Singletons?) - Refactor repositories to expose
StateFlow
s instead ofLiveData
?- Need to learn good merging techniques/extensions first
- ViewModels too?
- Rename callbacks in
MediaPlayerService
to be more idiomatic - Refactor Chapters to be managed in their own db
- Look into
ExoPlayer.experimentalSetOffloadSchedulingEnabled
STOPSHIP:
- [ ]
Cannot reproduce:
- Possible memory leaks (reported on op 6t)
Need to confirm:
- [ ]
High priority:
- [ ]
Medium priority:
- Notification doesn't get "proc"ed on chapter change
- Temporary solution: only display track size
- [/] issues loading huge libraries
- [X] stopgap fix: timeout for media queries has been increased from 15s to 30s
- [ ] real fix:
- [ ] incremental library loading
- [ ] optimize repository
get
s to scale better (sub n^2) - Playback progress in library view not updated in real-time, only on library refreshes
Low priority
- Sleep timer "end of chapter" doesn't account for changes in playback speed
- Android Auto (feature flagged, but should be functional)
- Casting
- [/] Filter/Sort/
View type
UI for library - [/] Sort by all known fields (genre, release date, author, etc.) - [X] Sortable by basic fields - [ ] When sorting, change the grid/list item subtitle to reflect the sorted field - [ ] Filterable by all known Plex fields (genre, release date, author, etc.) - [ ] UI for this will be tricky... - [ ] Folder view + author view + collections view - Add more narrator to audiobook page: narrator
- Better tablet/landscape support
- Next/previous chapter buttons in "currently playing" screen?
- At least look into improving UI for this
- Show most recently listened book on login in bottom bar like Spotify does
- More metadata in chapter list (start/end times or duration or something)
- Favorites
- Add a "last synced" at XXX warning, coupled loading data
- Improve downloading experience
- Show download status for tracks (progress, downloaded?)
- Sync by disk option
- "Download all" button?
- Support for manual server connection (no account login)
- Handle 403s with token refresh or logout (tokens only revokable manually it seems, so not a big deal)
- Show warning to users if they have "store track progress" disabled for library
- Translations
- Bookmarks + notes
- AMOLED theme
- Quick scroll bar
- Widget?
Release 0.52.2 (Feb 25):
- Fix broken login for single-user accounts
Release 0.51.1 (Feb 15):
- Update billing library
Release 0.51:
(November 9th)
- Larger artwork on currently playing screen
- Fix disappearing downloads
- Make "mark as watched" visible even if media not started
- Updates for open source release
- Fix completed books not appearing as completed
Release 0.50:
March 15th:
- Highlight current chapter in chapter lists
- Fix issue of thumbnails from home tab not loading
- Manually set watched/unwatched
- Highlighting of current chapter
- Newly rewritten downloader
- Fix issues downloading books to SD card
- Significantly better download UX
(September 10th):
- fix: scroll position no longer lost after returning from a book
- switching servers and then starting playback will not longer cause a 401 error
- removed MINOR memory leak during the plex user chooser process
- library UI not always restoring properly (scroll state for library list lost)
- Sometimes skipping forwards will loop back to start of current track
- Seeking will no longer requires a rebuffer if content is loaded
(August 30th):
- potential track playback ordering related to disk number metadata?
- multiple M4Bs play back in incorrect order
- wired headphone media buttons possibly not working
- make more button white text
- jumping to track/chapter might accidentally rewind sometimes
(August 11th):
- added new view styles for library
- prevent network changes for force-resuming
- fix forced scroll-to-top in library following db changes
- fixed unclearable notification issues
- added a manual "cancel notification" button just in case
(August 10th):
- fixed pause/play for wired headphones
- fixed syncing + 90% issue
- allowed multiline titles in book details screen
(July 30th):
- Fix playback issues for multi-track audiobooks (seeking, jump to chapter)
- Fixed possible memory leak in playback
- Fixed problem where notification icon won't load on slow connections
- Possibly resolved problem where library fails to load after user pin entered
- Increased audio buffer range
- Remote progress updates called more consistently
- Fixed 1.7x speed
- Audiobook screen now shows connection state, and allows retries on fails
- App now automatically reconnects to server on changes to network
- Better messages shown for download errors
Release 0.43:
(July 21st):
- Allow audiobooks to be retained between library changes (but not server!)
(July 10thish):
- Shake to reset snooze
Release 0.42.1:
- Bug where leading zeroes in pins are trimmed
Release 0.42:
(7/2-7/8)
- Managed users support
- Show disk groups for tracks
- Added ability to sort books on the library screen
- App now temporarily pauses playback instead of lowering volume during temporary interruptions
- Notification now disappears upon finishing a book
- Added option in settings to change user/server without logging out
- Warning "this will clear your downloaded books" now only appears if a user has downloaded books
(7/1)
- Remove notification after finishing playback
(6/30)
- Casting support (everything EXCEPT FOR keeping local metadata up to date)
Before 6/30 (forgot to keep up with this, but here's what I remember:)
- Group by disk
- Managed users
- Screen reader support
Release 0.40
(6/10)
- [X]
(6/5)
- Headphone skip forwards/back fix
- Service no longer starts from nothing when headphone buttons clicked
(6/4)
- Added auto-rewind when resuming a book after a long period of no playback
- Improved scroll performance for books with 100+ chapters/tracks
- Fixed media button issues (6/3)
- Library default sorting uses album name, not album sort name
- Cleaning library no longer deletes synced files without warning
- Jump to track in AudiobookViewModel and CurrViewModel fixed (6/2) (5/28)
- Settings screen now shows user's settings
- Refactor strings to xml
- Refactor the BottomSheet stuff to be a single model
- Show pause button on book details page if it's playing
(5/27)
- Show book progress over book covers
- Allow user to disable auto-refresh
- Remove non-existing items from library on refresh
RELEASE 0.32
(5/25)
- Finished books still show up in recently listened
- changed the color of the toolbar in home and library
- removed the non-oauth login option
- changing libraries stops playback now (5/24)
- show a warning before user clears their progress via changing chapter
- show error messages at all choose lib/server
- fix
startforeground()
not being called anr (5/23) - load custom chapter names
- Settings screen flashes when current track starts to maximize
- pressing home button adds search buttons + settings
- fix shared libraries access (5/22)
- flac support
RELEASE 0.31
(5/20)
- Login via the popup thing (it's called OAuth apparently) (5/19)
- Allow library changes w/o logging out (5/18)
- Book duration not showing for Cosmic Computer (m4b I think)
- Limit library updates to swipe-to-refresh + a set refresh duration to save data
- Show chapters in m4b
- Handle scrubbing via TrackListStateManager
- Fix ANR/crash from "Context.startForegroundService() did not then call Service.startForeground()"
- This will require removing the MediaServiceConnection from being a Dagger Singleton so the service is only running when there is music playing, paused, or buffering. I think it should still be scoped globally, but only start it when it needs to be started and only kill it when it isn't needed
- Fixed a large number of crashes- still have yet to test with managed users Before recorded history:
- Build UI for details screen
- Add a "book info" view
- Media playback
- Review how to pass messages: service <---> activity/fragment
- Become familiar with MediaController and MediaSession APIs
- Implement Exoplayer in MediaPlayerService
- Create media notification
- Bind to service
- Implement offline media caching
- Figure out Glide integration w/ data binding if possible (idea: binding w/ two required params)
- Settings
- Create config to back app behavior
- Create settings UI
- Build "Home" view
- Refresh button on server/library chooser screens
- Prefer local servers
- Change library title text from "server" to "library"
- Add sleep timer
- Implement setting playback speed
- Make downloads to work beyond view lifecycle
- Implement sending scrobbling data to server
- Fix bottom chooser buggy in settings
- Fix bug where only single server may be used
- Weird playback speed issue for m4a/m4b (whatever frankenstein is)
- Build UI for currently playing
- Integrate currently playing micro thing into HomeFragment and LibraryFragment
- Refactor bottom sheet into its own component
- Fix layouts to work with low-dpi/small screens
- Test servers when making queries
- SD card support
- MediaServiceConnection leak on UI destroyed