feat(channels): status filter + header full-history link + stable priority

- header: per-user "N without full history" count (channels_deep_pending),
  clickable with a hint -> opens the channel manager filtered to those.
- channel manager: status filter chips (All / Needs full history / Fully synced
  / Hidden); the header link deep-links to "Needs full history".
- fix: priority up/down is now an optimistic in-place cache update (no refetch /
  re-sort), so the list no longer jumps to the top and loses your scroll position;
  the new order applies on the next page load.
This commit is contained in:
npeter83 2026-06-14 07:08:59 +02:00
parent 00d167506d
commit 3f7298cca0
4 changed files with 92 additions and 10 deletions

View file

@ -13,6 +13,7 @@ export default function Header({
page,
setPage,
onOpenSettings,
onGoToFullHistory,
}: {
me: Me;
filters: FeedFilters;
@ -20,6 +21,7 @@ export default function Header({
page: Page;
setPage: (p: Page) => void;
onOpenSettings: () => void;
onGoToFullHistory: () => void;
}) {
async function logout() {
await fetch("/auth/logout", { method: "POST", credentials: "include" });
@ -36,7 +38,7 @@ export default function Header({
Sift<span className="text-accent">lode</span>
</button>
<SyncStatus isAdmin={me.role === "admin"} />
<SyncStatus isAdmin={me.role === "admin"} onGoToFullHistory={onGoToFullHistory} />
{page === "feed" ? (
<div className="flex-1 max-w-xl mx-auto relative">