rspace-online/backlog/tasks/task-72 - Standardize-canva...

2.3 KiB

id title status assignee created_date labels dependencies references priority
TASK-72 Standardize canvas header to match renderShell (MI bar, welcome, Try Demo) Done
2026-02-28 01:10
fix
canvas
header
ux
website/canvas.html
server/shell.ts
website/shell.ts
high

Description

Canvas.html was served as a static SPA fallback and had a hand-crafted header missing several features that renderShell() provides to all other rApp pages. Fixed to achieve full parity:

  1. RStackMi registration: <rstack-mi> tag was in the HTML but never registered as a custom element — MI bar was dead on canvas. Added import + define().
  2. "Try Demo" button: Added to header right section, with visibility logic (hidden on demo space, shown on bare domain).
  3. Embedded iframe detection: Added rspace-embedded CSS + early script to hide shell chrome when canvas is loaded inside an iframe (e.g. folk-rapp).
  4. Welcome overlay: Full popup for first-time demo visitors with "Create a Space" + "Explore Demo" actions.
  5. Auto-space resolution: Logged-in users on demo space get redirected to their personal space via /api/spaces/auto-provision.
  6. auth-change listener: Reloads space switcher dropdown when user signs in/out.
  7. window.__rspaceNavUrl global: Exposed nav URL helper globally, matching shell.js behavior.

Acceptance Criteria

  • #1 RStackMi imported and defined — MI bar functional on canvas
  • #2 Try Demo button in canvas header with correct visibility logic
  • #3 rspace-embedded iframe detection hides chrome when embedded
  • #4 Welcome overlay shows for first-time demo visitors
  • #5 Auto-space resolution redirects logged-in demo users to personal space
  • #6 auth-change listener reloads space switcher on sign in/out
  • #7 bun run build passes with zero errors

Final Summary

Canvas.html now has full header parity with renderShell(). Added RStackMi registration (MI bar was dead), Try Demo button, iframe detection, welcome overlay, auto-space resolution, and auth-change listener. 1 file changed, +165 lines. Commit: 6c22559, merged dev→main as 6f80f7a.