feat(scheduler): live admin Scheduler dashboard + reusable poll hook (HU/EN/DE)

New admin Scheduler page (left-nav entry) with a live, self-refreshing view of
job activity, queued work and quota. Polling is factored into a reusable
useLiveQuery hook (pauses when the tab is unfocused) that the notification bell
and future yt-dlp job queue will reuse instead of re-implementing.
This commit is contained in:
npeter83 2026-06-16 14:38:51 +02:00
parent 02d913f133
commit db9ee4beab
13 changed files with 491 additions and 5 deletions

View file

@ -27,6 +27,7 @@ import Feed from "./components/Feed";
import Channels, { type ChannelStatusFilter } from "./components/Channels";
import Playlists from "./components/Playlists";
import Stats from "./components/Stats";
import Scheduler from "./components/Scheduler";
import SettingsPanel from "./components/SettingsPanel";
import OnboardingWizard from "./components/OnboardingWizard";
import { shouldAutoOpenOnboarding } from "./lib/onboarding";
@ -62,7 +63,8 @@ function loadInitialPage(): Page {
stored === "channels" ||
stored === "stats" ||
stored === "playlists" ||
stored === "settings"
stored === "settings" ||
stored === "scheduler"
)
return stored;
return "feed";
@ -271,6 +273,8 @@ export default function App() {
/>
) : page === "stats" && meQuery.data!.role === "admin" ? (
<Stats />
) : page === "scheduler" && meQuery.data!.role === "admin" ? (
<Scheduler />
) : page === "playlists" ? (
<Playlists canWrite={meQuery.data!.can_write} />
) : page === "settings" ? (