Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion apps/web/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,12 @@ in a real `@corbits/routines` listing later touches nothing else.
| `/library` | The artifact gallery. See "Library" below. |
| `/agents` | Agent definitions you can invite into a channel, and each channel's participants. |
| `/skills` | A stub: skills have no registry in the hub yet, so this describes what's coming. |
| `/approvals` | Approvals waiting on the signed-in account. |
| `/settings` | Account and bench membership settings. |

Approvals are not a page: pending permission requests land as actionable
cards in the contextual panel's Notifications band (and, when a channel is
open, inline in that channel). The `/approvals` route is gone.

## Library

`/library` (`src/pages/library-page.tsx`) is the artifact gallery: search,
Expand Down
19 changes: 7 additions & 12 deletions apps/web/src/routes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@
// icon) and the route switch (render), so navigation and pages cannot drift
// apart. Settings renders like any other route but is reached from the
// sidebar's identity dock, not the top nav — `NAV_ROUTES` is what the nav
// list shows. Chat and Approvals stay routable for deep links but leave the
// rail (channel surface and notifications tickets own their next homes).
// list shows. Chat stays routable for deep links but leaves the rail (the
// channel surface owns its next home). Approvals no longer has a page at all
// — the `/approvals` route is gone and its actionable cards live inline in
// the contextual panel's notifications band.

import {
Bot,
Expand All @@ -12,14 +14,12 @@ import {
Library,
MessageSquare,
Settings,
ShieldCheck,
Wand2,
Workflow,
} from "lucide-react";
import type { ReactElement, ReactNode } from "react";

import { AgentsRoute } from "./pages/agents-page";
import { ApprovalsRoute } from "./pages/approvals-page";
import { ChatPage } from "./pages/chat-page";
import { HomeRoute } from "./pages/home-page";
import { InsightsRoute } from "./pages/insights-page";
Expand All @@ -36,7 +36,8 @@ export const ONBOARDING_PATH = "/onboarding";
/** Settings lives in the sidebar's identity dock, not the top nav. */
export const SETTINGS_PATH = "/settings";

/** Paths the rail lists — product nav after Chat/Approvals leave the rail. */
/** Paths the rail lists — product nav after Chat and Approvals leave the rail.
* Approvals now has no route at all (notifications band owns its surface). */
const RAIL_NAV_PATHS = new Set([
"/",
"/routines",
Expand Down Expand Up @@ -113,12 +114,6 @@ export const APP_ROUTES: readonly AppRoute[] = [
icon: <ChartColumn />,
render: () => <InsightsRoute />,
},
{
path: "/approvals",
label: "Approvals",
icon: <ShieldCheck />,
render: () => <ApprovalsRoute />,
},
{
path: SETTINGS_PATH,
label: "Settings",
Expand All @@ -128,7 +123,7 @@ export const APP_ROUTES: readonly AppRoute[] = [
];

/** What the rail lists: product pages only. Settings is the identity dock;
* Chat and Approvals stay deep-linkable but off the rail. */
* Chat stays deep-linkable but off the rail. Approvals has no route. */
export const NAV_ROUTES: readonly AppRoute[] = APP_ROUTES.filter((route) =>
RAIL_NAV_PATHS.has(route.path),
);
3 changes: 3 additions & 0 deletions apps/web/src/shell/contextual-panel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { Pin as PinIcon, Settings } from "lucide-react";
import { useState } from "react";

import { CanvasToggle } from "./canvas-column";
import { NotificationsBand } from "./notifications-band";
import { resolvePanelContribution } from "./panel-contribution";
import { ensurePanelContributions } from "./panel-contributions";
import { loadPins, type Pin } from "./pins";
Expand Down Expand Up @@ -114,6 +115,8 @@ export function ContextualPanel({
)}
</section>

<NotificationsBand />

<section
className="panel-band panel-band-page-specific"
aria-label={`${pageBand.title} details`}
Expand Down
Loading
Loading