Add watched tracking, resume positions, sort, density slider, channel metadata, mpv IPC, browser selector, auto-rescan
- SQLite DB for watched/position persistence (database.rs) - Mark watched toggle on cards and detail panel - mpv IPC socket integration for resume position tracking (unix) - Sort by title, duration, file size - Thumbnail density slider in top bar - Channel metadata banner (subscriber count, uploader, channel URL) - Cookie browser selector dropdown in settings - Auto-rescan library when a download job finishes - Fix yt-dlp --no-progress-bar flag (does not exist; removed) - Browser field wired through config → downloader Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
95a73b0980
commit
5b3b8fc901
7 changed files with 644 additions and 221 deletions
|
|
@ -15,10 +15,18 @@ pub struct BackupSection {
|
|||
pub directory: PathBuf,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
pub struct PlayerSection {
|
||||
#[serde(default = "default_player")]
|
||||
pub command: String,
|
||||
#[serde(default = "default_browser")]
|
||||
pub browser: String,
|
||||
}
|
||||
|
||||
impl Default for PlayerSection {
|
||||
fn default() -> Self {
|
||||
Self { command: default_player(), browser: default_browser() }
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
|
|
@ -33,13 +41,9 @@ impl Default for UiSection {
|
|||
}
|
||||
}
|
||||
|
||||
fn default_player() -> String {
|
||||
"mpv".to_string()
|
||||
}
|
||||
|
||||
fn default_theme() -> String {
|
||||
"dark".to_string()
|
||||
}
|
||||
fn default_player() -> String { "mpv".to_string() }
|
||||
fn default_browser() -> String { "firefox".to_string() }
|
||||
fn default_theme() -> String { "dark".to_string() }
|
||||
|
||||
impl Config {
|
||||
pub fn load(path: &Path) -> Result<Self, Box<dyn std::error::Error>> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue