From 03c843254bba5d543aea21f90a1703529f716d8a Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Wed, 25 Feb 2026 19:10:04 -0800 Subject: [PATCH] feat: add "Try Demo" button to all headers + revert landing page copy - Add teal "Try Demo" button to rstack-header (right side, before identity) - Button links to demo.rspace.online/{currentModule} for context-aware demo entry - Hidden when already on the demo space (server-side conditional) - Revert website/index.html to original copy, only updating CTA link + adding demo button - Add demo button CSS to shell.css Co-Authored-By: Claude Opus 4.6 --- ...gs-landing-page-clickable-rStack-header.md | 43 +++++++++++++++++++ server/shell.ts | 1 + website/index.html | 1 + website/public/shell.css | 20 +++++++++ 4 files changed, 65 insertions(+) create mode 100644 backlog/tasks/task-64 - r-prefix-module-slugs-landing-page-clickable-rStack-header.md diff --git a/backlog/tasks/task-64 - r-prefix-module-slugs-landing-page-clickable-rStack-header.md b/backlog/tasks/task-64 - r-prefix-module-slugs-landing-page-clickable-rStack-header.md new file mode 100644 index 0000000..86a2444 --- /dev/null +++ b/backlog/tasks/task-64 - r-prefix-module-slugs-landing-page-clickable-rStack-header.md @@ -0,0 +1,43 @@ +--- +id: TASK-64 +title: r-prefix module slugs + landing page + clickable rStack header +status: Done +assignee: [] +created_date: '2026-02-26 03:04' +updated_date: '2026-02-26 03:05' +labels: + - refactor + - routing + - shell +dependencies: [] +references: + - server/index.ts + - shared/components/rstack-app-switcher.ts + - shared/components/rstack-tab-bar.ts + - shared/url-helpers.ts + - modules/*/mod.ts +priority: high +--- + +## Description + + +Rename all 23 module IDs from bare names to r-prefixed slugs (canvas→rspace, notes→rnotes, vote→rvote, etc.) so URLs are consistent with rApp branding. Root rspace.online/ now serves the landing page instead of redirecting to demo. rStack header in app switcher is now a clickable link. rSpace itself appears as a module peer alongside all other rApps. + + +## Acceptance Criteria + +- [x] #1 All 23 module IDs use r-prefix slugs (rspace, rnotes, rvote, etc.) +- [x] #2 Root rspace.online/ serves landing page (not redirect to demo) +- [x] #3 rStack header in app switcher dropdown is clickable (links to rstack.online) +- [x] #4 Space root redirects to /rspace instead of /canvas +- [x] #5 All internal navigation links updated to r-prefixed paths +- [x] #6 Badge maps in app switcher and tab bar use r-prefixed keys +- [x] #7 TypeScript compiles cleanly + + +## Final Summary + + +Renamed all 23 module IDs to r-prefixed slugs across 33 files. Root domain now serves the landing page. rStack header is clickable. All badge maps, URL helpers, internal links, and redirects updated. Commit 4895af1, merged to main. + diff --git a/server/shell.ts b/server/shell.ts index d618605..1103f27 100644 --- a/server/shell.ts +++ b/server/shell.ts @@ -78,6 +78,7 @@ export function renderShell(opts: ShellOptions): string {
+ ${spaceSlug !== "demo" ? `Try Demo` : ""}
diff --git a/website/index.html b/website/index.html index 91ffff9..3df7c2f 100644 --- a/website/index.html +++ b/website/index.html @@ -369,6 +369,7 @@ diff --git a/website/public/shell.css b/website/public/shell.css index 6168e26..9fc170c 100644 --- a/website/public/shell.css +++ b/website/public/shell.css @@ -55,6 +55,26 @@ body { gap: 12px; } +.rstack-header__demo-btn { + display: inline-flex; + align-items: center; + padding: 5px 14px; + border-radius: 6px; + font-size: 0.78rem; + font-weight: 600; + text-decoration: none; + white-space: nowrap; + transition: background 0.15s, opacity 0.15s; + background: linear-gradient(135deg, #14b8a6, #0d9488); + color: #fff; + box-shadow: 0 1px 4px rgba(20, 184, 166, 0.25); +} +.rstack-header__demo-btn:hover { + opacity: 0.88; +} +/* Hide the demo button when already on demo space */ +.rstack-header__demo-btn[data-hide] { display: none; } + .rstack-header__brand { display: flex; align-items: center;