Skip to content

Commit

Permalink
feat: Refactor server, implement seek, reduce playback gaps, apply cl…
Browse files Browse the repository at this point in the history
…ippy suggestions, update ratatui, implement file logging, make song results order repeatable. (#151)

* Refactor in progress
* Complete server refactor, improve song ticker.
* Fix a typo with MAX_RETRIES
* Fix typing issues with API
* Refactor completed
* Model reponse to always contain a TaskID, also apply clippy lints where possible
* Update to latest ratatui/crossterm/tuilogger
* Implement seek
* Update changelog
* Organisation for Playlist
* Resolve TUI Logger freezing
* Fix another TUILogger crash, fix seek past total length when paused, fix seek not updating duration when paused
* Implement debug logging, and further improve some of the Debug implementations for messages
* Fix unable to go back 1 song
* Commence new model for queing / gapless playback
* WIP
* WIP
* Refactor rodio_thread
* Continue new player implementation
* Implement ordering for song results
* Improve race conditions with autoplay
* Add new AutoplayQueued message - should resolve sender dropped errors
* Add short skip duration to improve gapless
* Remove skip duration
* Fix play song multiple time skips
* Improve seek controls
* Correctly stop when a song was queued and then deleted
* Update README
* Clippy lints
  • Loading branch information
nick42d authored Aug 28, 2024
1 parent c7a3d7f commit 2684fe9
Show file tree
Hide file tree
Showing 34 changed files with 2,306 additions and 1,478 deletions.
64 changes: 27 additions & 37 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,32 +56,32 @@ Chrome example (Select manually and paste):

## Limitations
- This project is under heavy development, and interfaces could change at any time. The project will use semantic versioning to indicate when interfaces have stabilised.
- Song progress updates are currently emulated with a ticker and may be slightly out.

## Roadmap
### Application
- [x] Windows support (target for 0.0.1)
- [x] Configuration folder support (target for 0.0.1)
- [x] Implement improved download speed
- [x] Filtering (target for 0.0.3)
- [ ] Logging to a file
- [x] Release to AUR (target for 0.0.4)
- [x] Remove reliance on rust nightly (target for 0.0.4)
- [x] OAuth authentication including automatic refresh of tokens
- [x] Seeking
- [ ] Logging to a file (basic version implemented - use `-d` flag)
- [ ] Gapless playback (blocked - requires symphonia AAC gapless support)
- [ ] Dbus support for media keys
- [ ] Seeking
- [ ] Mouse support
- [ ] Offline cache
- [ ] Streaming of buffered tracks
- [x] OAuth authentication including automatic refresh of tokens
- [ ] Display lyrics and album cover (pixel art)
- [ ] Theming
- [ ] Configurable key bindings
### API
- [x] Document public API
- [x] OAuth authentication
- [ ] Implement all endpoints
- [ ] Automatically update User Agent using a library
- [ ] Implement endpoint continuations
- [ ] Implement all endpoints
- [x] OAuth authentication
- [ ] i18n

Feature parity with `ytmusicapi`
Expand Down
1 change: 1 addition & 0 deletions clippy.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
allow-unwrap-in-tests = true
7 changes: 3 additions & 4 deletions youtui/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ rust-version = "1.79"

[dependencies]
clap = { version = "4.5.7", features = ["derive"] }
crossterm = { version = "0.27", features = ["event-stream"] }
crossterm = { version = "0.28.1", features = ["event-stream"] }
futures = "0.3.30"
ratatui = { version = "0.27.0", features = ["all-widgets"] }
ratatui = { version = "0.28.0", features = ["all-widgets"] }
serde = "1.0.203"
serde_json = "1.0.117"
tokio = "1.38.0"
Expand All @@ -27,8 +27,7 @@ ytmapi-rs = { path = "../ytmapi-rs", version = "0.0.12", default-features = fals
] }
tracing = "0.1.40"
tracing-subscriber = "0.3.18"
tui-logger = { version = "0.11.2", default-features = false, features = [
"crossterm",
tui-logger = { version = "0.12.0", features = [
"tracing-support",
] }
directories = "5.0.1"
Expand Down
Loading

0 comments on commit 2684fe9

Please sign in to comment.