diff --git a/backlog/tasks/task-59 - Add-rPhotos-module-finish-header-standardization-across-all-rApps.md b/backlog/tasks/task-59 - Add-rPhotos-module-finish-header-standardization-across-all-rApps.md new file mode 100644 index 0000000..0508e0f --- /dev/null +++ b/backlog/tasks/task-59 - Add-rPhotos-module-finish-header-standardization-across-all-rApps.md @@ -0,0 +1,39 @@ +--- +id: TASK-59 +title: Add rPhotos module + finish header standardization across all rApps +status: Done +assignee: + - '@claude' +created_date: '2026-02-26 00:06' +labels: + - photos + - headers + - modules +dependencies: [] +priority: high +--- + +## Description + + +Created modules/photos/ with Immich API proxy, gallery component (shared albums, lightbox viewer), and standard rapp-nav header. Registered in server/index.ts with vite build step. Fixed remaining module headers in books (shelf + reader), splat, swag, tube. All 23 modules now use consistent rapp-nav pattern. Immich confirmed running at demo.rphotos.online, landing page live at rphotos.online. + + +## Acceptance Criteria + +- [ ] #1 modules/photos/ created with mod.ts, component, and CSS +- [ ] #2 Immich API proxy routes for albums, assets, thumbnails +- [ ] #3 folk-photo-gallery component with rapp-nav header +- [ ] #4 Module registered in server/index.ts +- [ ] #5 Vite build step added in vite.config.ts +- [ ] #6 books shelf-header and reader-header replaced with rapp-nav +- [ ] #7 splat h1 branding removed +- [ ] #8 swag h2 branding removed +- [ ] #9 tube tabs converted to rapp-nav + + +## Final Summary + + +Commit eba0aaf merged to main. All 23 modules standardized with rapp-nav headers. rPhotos module added as #23 with Immich gateway. Both rphotos.online (landing) and demo.rphotos.online (Immich) confirmed live and healthy. + diff --git a/backlog/tasks/task-60 - Canonical-subdomain-routing-rSwag-landing-page-simplification.md b/backlog/tasks/task-60 - Canonical-subdomain-routing-rSwag-landing-page-simplification.md new file mode 100644 index 0000000..a049363 --- /dev/null +++ b/backlog/tasks/task-60 - Canonical-subdomain-routing-rSwag-landing-page-simplification.md @@ -0,0 +1,59 @@ +--- +id: TASK-60 +title: Canonical subdomain routing + rSwag landing page simplification +status: Done +assignee: + - '@claude' +created_date: '2026-02-26 00:44' +labels: + - routing + - infrastructure + - simplification +dependencies: [] +references: + - server/index.ts + - server/shell.ts + - shared/url-helpers.ts + - shared/components/rstack-app-switcher.ts + - shared/components/rstack-space-switcher.ts + - shared/components/rstack-identity.ts + - website/shell.ts +priority: high +--- + +## Description + + +Consolidated URL routing so all rApps flow through `{space}.rspace.online/{moduleId}` as the canonical URL pattern, replacing the previous silent URL rewriting from standalone domains. + +**rspace-online changes:** +- Subdomain handler now routes ALL modules (previously only served canvas) +- Standalone domains (rvote.online, rphotos.online, etc.) now 301 redirect to canonical `{space}.rspace.online/{moduleId}` +- Created `shared/url-helpers.ts` with `rspaceNavUrl()`, `getCurrentSpace()`, `getCurrentModule()`, `isSubdomain()` +- Updated app-switcher, space-switcher, identity component, and tab-bar navigation to use subdomain-aware URL generation +- Shell inline scripts use global `__rspaceNavUrl()` for all URL generation +- Path-based `rspace.online/:space/:moduleId` still works as fallback +- WebSocket connections on standalone domains still rewritten (WS can't follow redirects) + +**rswag-online changes:** +- Replaced full Next.js + FastAPI + PostgreSQL + Redis docker-compose with simple static nginx landing page +- Updated landing page CTA: "Try the Demo" → `https://rspace.online/demo/swag` +- Aligns with the "simple components, JS and HTML wherever possible" philosophy + + +## Acceptance Criteria + +- [ ] #1 demo.rspace.online/vote serves vote module in demo space +- [ ] #2 Standalone domains (rvote.online etc) 301 redirect to canonical subdomain URL +- [ ] #3 App-switcher and space-switcher generate subdomain-aware links +- [ ] #4 Auto-provision redirect uses subdomain URL pattern +- [ ] #5 Path-based rspace.online/:space/:moduleId still works +- [ ] #6 rswag.online serves static landing page instead of Next.js app +- [ ] #7 TypeScript compiles cleanly + + +## Final Summary + + +Implemented canonical subdomain routing `{space}.rspace.online/{moduleId}` across rspace-online and simplified rswag-online from Next.js to static landing page.\n\nCommits:\n- rspace-online `eab24e2`: feat: canonical subdomain routing\n- rswag-online `1eca70d`: feat: replace Next.js app with static landing page, add demo CTA\n\nBoth repos pushed to main on Gitea. +