diff --git a/DESIGN.md b/DESIGN.md
index e08e9a9be..cee28133a 100644
--- a/DESIGN.md
+++ b/DESIGN.md
@@ -23,14 +23,12 @@ Top to bottom:
Nothing page-scoped ever renders in this body; it lists
conversations, not product sections.
3. **Footer rail** — Mission Control is pinned above the rail as its own
- row. The first-run rail below it is Routines, Files, Skills, Agents, in
- that order (CL-6765). Insights and Evals join that rail only when
- existing reads prove real usage (turns > 0 / at least one eval run);
- Plugins stays off the rail entirely and is reached by deep link or the
- command palette. These are utility destinations, not workbenches, and
- each is its own top-level route (`/mission-control`, `/routines`,
- `/files`, `/skills`, `/agents`; plus `/insights`, `/evals`, `/plugins`
- when reached).
+ row. The first-run rail below it is Routines, Files, Skills, Agents,
+ Plugins, in that order. Insights and Evals join that rail only when
+ existing reads prove real usage (turns > 0 / at least one eval run).
+ These are utility destinations, not workbenches, and each is its own
+ top-level route (`/mission-control`, `/routines`, `/files`, `/skills`,
+ `/agents`, `/plugins`; plus `/insights`, `/evals` when reached).
4. **Account row** — avatar and name, anchoring the rail, plus a separate
settings icon beside it. The avatar+name half is a menu trigger
(weekly usage, feedback, log out) that pops upward; the gear is a
diff --git a/PRODUCT.md b/PRODUCT.md
index 9ff2ec3e0..7b9ad1ffb 100644
--- a/PRODUCT.md
+++ b/PRODUCT.md
@@ -79,13 +79,12 @@ A bench that already has one or more workbenches skips first-run and
lands on `workbenches[0]` (see `apps/web/src/pages/home-page.tsx`). Myra
is the first-run guide in her DM, not a home slot.
-The shell's first-run destinations stay small on purpose (CL-6765):
+The shell's first-run destinations stay small on purpose:
Mission Control is pinned above the footer rail; the rail itself is
-Routines, Files, Skills, and Agents. Insights and Evals appear on that
-rail only after honest usage exists; Plugins stays reachable by deep
-link and the command palette, not as a first-run rail item. New benches
-should not meet an empty Plugins / Insights / Evals gallery before they
-have anything to put there.
+Routines, Files, Skills, Agents, and Plugins. Insights and Evals appear
+on that rail only after honest usage exists. New benches should not
+meet an empty Insights / Evals gallery before they have anything to
+put there.
### Code review's first minute
diff --git a/apps/web/src/routes.tsx b/apps/web/src/routes.tsx
index eecf74abd..f15d43514 100644
--- a/apps/web/src/routes.tsx
+++ b/apps/web/src/routes.tsx
@@ -1,10 +1,10 @@
// The route table: one entry per screen, consumed by the command palette
// (label) and the route switch (render), so navigation and pages cannot
// drift apart. The sidebar itself lists workbenches (conversations), not
-// routes — the first-run footer reaches Routines, Files, Skills, and
-// Agents; Insights and Evals join that rail only given honest usage.
-// Plugins, Insights, Evals, and Settings stay reachable by deep link and
-// the palette even when they are off the rail. Conversation deep links
+// routes — the first-run footer reaches Routines, Files, Skills, Agents,
+// and Plugins; Insights and Evals join that rail only given honest usage.
+// Insights, Evals, and Settings stay reachable by deep link and the
+// palette even when they are off the rail. Conversation deep links
// (`/w/:workbenchId`) stay routable; `/` is the Myra land hop (ensure +
// open her conversation) for a bench with a workbench already, or the
// guided first-workbench describe screen for a bench with none (CL-6104)
@@ -26,6 +26,7 @@ import {
FolderOpen,
Lightning,
ListBullets,
+ PuzzlePiece,
Robot,
SlidersHorizontal,
SquaresFour,
@@ -395,12 +396,11 @@ export const APP_ROUTES: readonly AppRoute[] = [
render: (path: string) => ,
},
{
- // Reached by deep link and the command palette's Pages group — never
- // from the first-run footer rail. No `/plugins/:slug` until CL-6417
- // (CL-6817 unlinked the stub).
+ // First-run footer rail destination. No `/plugins/:slug` until
+ // CL-6417 (CL-6817 unlinked the stub).
path: "/plugins",
label: "Plugins",
- icon: ,
+ icon: ,
render: (path: string, navigate: (to: string) => void) => (
),
@@ -426,8 +426,8 @@ function routesInOrder(paths: readonly string[]): readonly AppRoute[] {
/**
* Everything the command palette treats as a product destination (its
* "Pages" group). The first-run sidebar footer reaches Routines / Files /
- * Skills / Agents (and Insights / Evals only given honest usage);
- * Plugins, Insights, Evals, and Settings stay palette- and
+ * Skills / Agents / Plugins (and Insights / Evals only given honest
+ * usage); Insights, Evals, and Settings stay palette- and
* deep-link-reachable even when they are off the rail.
*/
export const NAV_ROUTES: readonly AppRoute[] = routesInOrder([
diff --git a/apps/web/src/shell/sidebar.tsx b/apps/web/src/shell/sidebar.tsx
index 4bb80b751..fc6d9170b 100644
--- a/apps/web/src/shell/sidebar.tsx
+++ b/apps/web/src/shell/sidebar.tsx
@@ -1,14 +1,12 @@
// The one sidebar. Header: the brand mark, then create + search. Body:
// Agents and Channels — nothing page-scoped ever renders here. Footer: the
-// first-run rail is Routines, Files, Skills, Agents; Insights and Evals
-// join only when the existing usage / eval-run reads return real items
-// (never a fabricated row, never a new analytics store). Plugins is
-// reachable by URL and the command palette, not as a first-run tour
-// destination. Below the rail: the account row — avatar + name, the whole
-// row is the trigger for a menu that pops upward with weekly usage,
-// settings, feedback, and log out. Always present; there is no collapse
-// affordance and no second nav column. Approvals belong in the
-// conversation, not as a standing band here.
+// first-run rail is Routines, Files, Skills, Agents, Plugins; Insights and
+// Evals join only when the existing usage / eval-run reads return real items
+// (never a fabricated row, never a new analytics store). Below the rail:
+// the account row — avatar + name, the whole row is the trigger for a menu
+// that pops upward with weekly usage, settings, feedback, and log out.
+// Always present; there is no collapse affordance and no second nav column.
+// Approvals belong in the conversation, not as a standing band here.
//
// Inbox is gone (CL-6151, owner decision: tasks + approvals don't flow
// into workbenches).
@@ -41,6 +39,7 @@ import {
Lightning,
ListBullets,
Plus,
+ PuzzlePiece,
Robot,
SignOut,
Repeat,
@@ -170,7 +169,7 @@ export function Sidebar({
{/* Mission Control is pinned above the footer rail as its own row
(DESIGN.md's Shell & Navigation) — not a button inside the
- first-run rail, which stays Routines/Files/Skills/Agents. */}
+ first-run rail, which stays Routines/Files/Skills/Agents/Plugins. */}