feat(web): IA-3 navigation, legacy redirects and top-bar inbox (FE-1)

Sidebar becomes 5 groups (overview / resources / subscriptions / organize /
system). Pending items move to a top-bar inbox with badge and grouped
dropdown. Engine panel, schedules and identity pages redirect to the task
page, its plan tab and media overview views; the download plan becomes a
second tab of the download panel. nav.test and smoke cover the new routes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
rootandClaude Opus 5.5 committed 2026-09-28 16:10:42 +08:00
1 parent 4bb2583f6c
commit 738d4ce752
18 files changed
+647 -1104

No files matched your search

+4 -2
View File
@@ -18,12 +18,13 @@ import {
PauseResume,
ProgressLine,
} from "~/components/downloads/download-detail.tsx";
import { DownloadsTabs } from "~/components/downloads/downloads-tabs.tsx";
import { Button } from "~/components/ui/button.tsx";
import { relTime } from "~/components/workbench/release-fields.ts";
import { useSse } from "~/lib/sse.ts";
import { formatBytes } from "~/lib/utils.ts";
export const meta = () => [{ title: "下载队列 · UHD 媒体自动化控制台" }];
export const meta = () => [{ title: "下载面板 · UHD 媒体自动化控制台" }];
export default function DownloadsPage() {
const f = useQueryState(["status", "managed"] as const);
@@ -89,7 +90,7 @@ export default function DownloadsPage() {
return (
<>
<PageHeader
title="下载队列"
title="下载面板"
description="阈值暂停不能手动绕过;无进展只记录,不自动换源。"
actions={
<Button variant="outline" size="sm" onClick={() => void qc.invalidateQueries({ queryKey: ["downloads"] })}>
@@ -98,6 +99,7 @@ export default function DownloadsPage() {
</Button>
}
/>
<DownloadsTabs />
<CacheVolumes />
<FilterBar onReset={f.active ? f.reset : undefined}>
<FilterSelect