From 4c91ba4c6d15b169dc9dd9baf1927585f6cb4256 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Wed, 15 Apr 2026 00:27:17 +0000 Subject: [PATCH 1/2] 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) --- modules/rtime/mod.ts | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/modules/rtime/mod.ts b/modules/rtime/mod.ts index a722f6dd..8530eadc 100644 --- a/modules/rtime/mod.ts +++ b/modules/rtime/mod.ts @@ -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: ``, + scripts: ``, + styles: ``, + })); +}); + +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: ``, + scripts: ``, + styles: ``, + })); +}); + 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' }, ], From d9f5546b74923a546758e520ecd3734867347686 Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Tue, 14 Apr 2026 23:22:30 -0400 Subject: [PATCH 2/2] Add sablier override for encryptid scale-to-zero Labels for encryptid + encryptid-db to join encryptid sablier group. 30m session timeout, routing via sablier dynamic config. Co-Authored-By: Claude Opus 4.6 --- docker-compose.sablier-encryptid.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 docker-compose.sablier-encryptid.yml diff --git a/docker-compose.sablier-encryptid.yml b/docker-compose.sablier-encryptid.yml new file mode 100644 index 00000000..0bc0e74e --- /dev/null +++ b/docker-compose.sablier-encryptid.yml @@ -0,0 +1,10 @@ +services: + encryptid: + labels: + - "sablier.enable=true" + - "sablier.group=encryptid" + - "traefik.enable=false" + encryptid-db: + labels: + - "sablier.enable=true" + - "sablier.group=encryptid"