feat: open selected video channel with U

This commit is contained in:
2026-10-11 16:33:41 +02:00
parent b38ca30735
commit 1a13fa8f47
3 changed files with 192 additions and 21 deletions
+3
View File
@@ -62,6 +62,7 @@ Each selection opens an independent player instance without replacing existing p
| Esc | Close the preview |
| `c` | Browse saved categories |
| `u` | Browse an individual saved channel |
| `U` (Shift-U) | Open the selected video's channel |
| `s` | Edit the selected channel's tags |
| `S` | Edit tags for all saved channels in the current category |
| Tab / Shift-Tab | Switch between visible views |
@@ -100,6 +101,8 @@ If the terminal intercepts modified Backspace rather than transmitting it, use C
- Choosing a channel opens one temporary channel tab. Choosing another replaces it without replacing the temporary category tab. Revisiting a channel restores its cached videos, selection, and pagination.
- Channel selection is single-choice and does not pin channels or change subscriptions. `s` still edits the selected video's channel tags; bulk `S` remains category-only.
Press **`U` (Shift-U)** on a video to browse its creator directly, including channels you have not saved. This uses the same temporary channel tab and caches without adding a subscription. Channel IDs are preferred; a valid handle is used when an ID is unavailable. Missing channel metadata leaves the current view unchanged. Unsaved channel views survive configuration changes for the session; explicitly removing a saved subscription still removes its channel view.
### Channel tags (`s`, or `S` for bulk editing)
- `j` / `k` or arrow keys navigate; Space toggles a tag.
+1 -1
View File
@@ -400,7 +400,7 @@ fn category_name(name: &str) -> io::Result<&str> {
Ok(name.trim())
}
fn normalize_channel(input: &str) -> io::Result<String> {
pub(crate) fn normalize_channel(input: &str) -> io::Result<String> {
if input.chars().any(char::is_control) {
return Err(invalid(
"Channel addresses must contain no control characters",
+188 -20
View File
File diff suppressed because one or more lines are too long