fix(ui): focus, paging and state that a key or a finger can reach

- A key landing on a side panel's tab steps into the card it peeks open, not onto the hidden tab.
- The Channels cards keep their status / pager row at the list's end while the band is folded.
- A menu row's note shows on an enabled row too: the download state under 'Download…', not a title.
- A removal chip hands the focus to its neighbour before it goes, for every caller (the feed's and
  Plex's active filters); the hidden-filter cue's own copy is gone.
- Back to a spot within a page's end spacer lands at the page's end, not its top.
- A running push / revert is tracked per list: another list's push is no longer refused unseen.
This commit is contained in:
2026-09-27 19:43:04 +02:00
parent e31a588f19
commit 740602b9bf
15 changed files with 231 additions and 48 deletions
+4 -3
View File
@@ -74,8 +74,9 @@ export function useVideoActions(handlers: VideoActionHandlers, open: boolean) {
const hidden = v.status === "hidden";
const inProgress = v.position_seconds > 0 && !watched;
const dl = index.data?.[v.id];
// The row opens the download dialog, so it says so; the download's state is its hint, not its
// label — "Downloaded" read as a status, not as a row that opens something (E28 review J4).
// The row opens the download dialog, so it says so; the download's state is the line under its
// label — "Downloaded" read as a status, not as a row that opens something (E28 review J4) — and
// not a `title`, which a key or a finger never shows (round 2, F5).
const dlState =
dl === "done"
? t("downloads.button.downloaded")
@@ -143,7 +144,7 @@ export function useVideoActions(handlers: VideoActionHandlers, open: boolean) {
{
id: "download",
label: t("downloads.menu.download"),
title: dlState,
note: dlState,
icon: <Download className={icon} />,
onSelect: () => setFollowUp({ kind: "download", video: v }),
},