feat(dashboard): merge Analytics into Dashboard, remove Kanban Board
Closes issue #5 (Dashboard | Update menu & page): - Analytics content (heatmap, sparkline, token/cost/workflow/productivity charts) moves into a new "Analytics" tab on the Dashboard page, alongside the existing Monitor/Health tabs. The standalone Analytics page, its /analytics route, and its sidebar menu entry are removed. - The Kanban Board page, its /kanban route, and its sidebar menu entry are removed entirely (page content deleted, not just hidden). - Updated ARCHITECTURE.md, README.md, client/README.md, docs/API.md, and the affected client tests/snapshots to match.
This commit is contained in:
@@ -24,12 +24,8 @@ export function DocumentTitle() {
|
||||
title = `${t("sessions")} · ${sessionId.slice(0, 8)}`;
|
||||
} else if (path.startsWith("/sessions")) {
|
||||
title = t("sessions");
|
||||
} else if (path.startsWith("/kanban")) {
|
||||
title = t("agentBoard");
|
||||
} else if (path.startsWith("/activity")) {
|
||||
title = t("activityFeed");
|
||||
} else if (path.startsWith("/analytics")) {
|
||||
title = t("analytics");
|
||||
} else if (path.startsWith("/workflows")) {
|
||||
title = t("workflows");
|
||||
} else if (path.startsWith("/cc-config")) {
|
||||
|
||||
@@ -54,7 +54,6 @@ import { NavLink } from "react-router-dom";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import {
|
||||
LayoutDashboard,
|
||||
Columns3,
|
||||
FolderOpen,
|
||||
Activity,
|
||||
BarChart3,
|
||||
@@ -89,10 +88,8 @@ function isUpdatePayload(x: unknown): x is UpdateStatusPayload {
|
||||
|
||||
const NAV_KEYS = [
|
||||
{ to: "/", icon: LayoutDashboard, key: "nav:dashboard" },
|
||||
{ to: "/kanban", icon: Columns3, key: "nav:agentBoard" },
|
||||
{ to: "/sessions", icon: FolderOpen, key: "nav:sessions" },
|
||||
{ to: "/activity", icon: Activity, key: "nav:activityFeed" },
|
||||
{ to: "/analytics", icon: BarChart3, key: "nav:analytics" },
|
||||
{ to: "/workflows", icon: Workflow, key: "nav:workflows" },
|
||||
{ to: "/cc-config", icon: Boxes, key: "nav:ccConfig" },
|
||||
{ to: "/run", icon: Play, key: "nav:workspace" },
|
||||
|
||||
@@ -32,7 +32,6 @@ describe("Sidebar", () => {
|
||||
it("should render all navigation links", () => {
|
||||
renderSidebar(true);
|
||||
expect(screen.getByText("Dashboard")).toBeInTheDocument();
|
||||
expect(screen.getByText("Kanban Board")).toBeInTheDocument();
|
||||
expect(screen.getByText("Sessions")).toBeInTheDocument();
|
||||
expect(screen.getByText("Activity Feed")).toBeInTheDocument();
|
||||
});
|
||||
@@ -60,7 +59,6 @@ describe("Sidebar", () => {
|
||||
const links = screen.getAllByRole("link");
|
||||
const hrefs = links.map((link) => link.getAttribute("href"));
|
||||
expect(hrefs).toContain("/");
|
||||
expect(hrefs).toContain("/kanban");
|
||||
expect(hrefs).toContain("/sessions");
|
||||
expect(hrefs).toContain("/activity");
|
||||
});
|
||||
@@ -82,7 +80,6 @@ describe("Sidebar", () => {
|
||||
|
||||
await waitFor(() => {
|
||||
expect(screen.getByText("Tổng quan")).toBeInTheDocument();
|
||||
expect(screen.getByText("Bảng Kanban")).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user