diff --git a/README.md b/README.md index 258164e..c70e974 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ Each submitted selection opens one independent player instance without replacing In video and episode lists, **Space** checks/unchecks the hovered row; **Ctrl-Space** clears checks. **Enter** plays checked rows in their current displayed order, regardless of the order they were checked. With no checks, Enter plays the hovered row. These controls also work in collection views and metadata previews; Miruro catalog titles and saved shows cannot be checked. -Checked videos/episodes show a single `*`; unchecked rows leave that marker blank. Category and tag selectors keep their checkboxes. +Selection and watched state share one marker slot: `*` for checked rows, otherwise `✓` for watched rows, otherwise blank. Checking a row only overrides its displayed marker, not its stored watch state. Category and tag selectors keep their checkboxes. Checks belong to each cached view/screen and follow stable video identities through pagination and reordering. Refresh/replacement queries clear them; collection filtering/removal prunes checks for hidden/removed rows. Successful launcher creation clears checks, while immediate launch failures retain them. Saving, removing and marking watch status still affect the hovered video, not every checked row. Configure `video.select.toggle` and `video.select.clear`; terminals must transmit Ctrl-Space, or bind another chord. diff --git a/src/main.rs b/src/main.rs index a238022..5406936 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3068,10 +3068,7 @@ impl App { Row::new([ Cell::from(if view.checked.contains(&video.id) { "*" - } else { - " " - }), - Cell::from(if self.video_state.is_watched(&video.id) { + } else if self.video_state.is_watched(&video.id) { "✓" } else { "" @@ -3127,7 +3124,6 @@ impl App { .height(2) }), [ - Constraint::Length(1), Constraint::Length(1), Constraint::Fill(1), ], diff --git a/src/miruro_ui.rs b/src/miruro_ui.rs index 5372938..64df88b 100644 --- a/src/miruro_ui.rs +++ b/src/miruro_ui.rs @@ -1660,6 +1660,8 @@ impl Browser { .is_some_and(|id| self.screen().checked.contains(id)) { "* " + } else if row.key.as_deref().is_some_and(|id| self.state.is_watched(id)) { + "✓ " } else { " " }