fix(rtime): remove duplicate header tabs in sub-navigation

The shell's rapp-subnav rendered Canvas/Collaborate/Fulfillment pills
(from outputPaths) while the folk-timebank-app component also rendered
its own tab-bar with the same three views. Remove outputPaths and add
explicit routes for /canvas and /collaborate so URLs still work but
navigation only appears once via the component's internal tab-bar.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-04-15 00:27:17 +00:00
parent f735f2beb2
commit 4c91ba4c6d
1 changed files with 32 additions and 5 deletions

View File

@ -1175,6 +1175,36 @@ routes.post("/api/tasks/:id/export-to-backlog", async (c) => {
});
});
routes.get("/canvas", (c) => {
const space = c.req.param("space") || "demo";
return c.html(renderShell({
title: `${space} — Canvas | rTime | rSpace`,
moduleId: "rtime",
spaceSlug: space,
modules: getModuleInfoList(),
theme: "dark",
body: `<folk-timebank-app space="${space}" view="canvas"></folk-timebank-app>`,
scripts: `<script type="module" src="/modules/rtime/folk-timebank-app.js?v=1"></script>`,
styles: `<link rel="stylesheet" href="/modules/rtime/rtime.css">`,
}));
});
routes.get("/collaborate", (c) => {
const space = c.req.param("space") || "demo";
return c.html(renderShell({
title: `${space} — Collaborate | rTime | rSpace`,
moduleId: "rtime",
spaceSlug: space,
modules: getModuleInfoList(),
theme: "dark",
body: `<folk-timebank-app space="${space}" view="collaborate"></folk-timebank-app>`,
scripts: `<script type="module" src="/modules/rtime/folk-timebank-app.js?v=1"></script>`,
styles: `<link rel="stylesheet" href="/modules/rtime/rtime.css">`,
}));
});
routes.get("/dashboard", (c) => {
const space = c.req.param("space") || "demo";
@ -1226,11 +1256,8 @@ export const timeModule: RSpaceModule = {
filterable: true,
},
],
outputPaths: [
{ path: "canvas", name: "Canvas", icon: "🧺", description: "Unified commitment pool & task weaving canvas" },
{ path: "collaborate", name: "Collaborate", icon: "🤝", description: "Intent-routed collaboration matching" },
{ path: "dashboard", name: "Fulfillment", icon: "📊", description: "Personal commitment fulfillment tracking" },
],
// Views (Canvas, Collaborate, Fulfillment) are handled by the component's
// internal tab-bar — no outputPaths needed to avoid duplicate navigation.
onboardingActions: [
{ label: "Pledge Hours", icon: "⏳", description: "Add a commitment to the pool", type: 'create', href: '/rtime' },
],