feat: update rstack-app-switcher categories

- rTube → Creating, rSwag stays in Creating
- Rename Social & Media → Sharing, split rData → Observing
- Add tube to Creating in MODULE_CATEGORIES and badge comments

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-02-25 14:17:30 -08:00
parent 7e6d78f4cb
commit b872e8e053
8 changed files with 264 additions and 0 deletions

View File

@ -0,0 +1,44 @@
---
id: TASK-51
title: Consolidate standalone r*.online domains → rspace.online
status: To Do
assignee: []
created_date: '2026-02-25 07:46'
labels:
- infrastructure
- domains
- migration
dependencies: []
references:
- server/index.ts (lines 457-521 — standalone rewrite logic)
- shared/module.ts (standaloneDomain interface)
- shared/components/rstack-app-switcher.ts (external link arrows)
- docker-compose.yml (lines 44-114 — Traefik labels)
- src/encryptid/server.ts (allowedOrigins list)
- src/encryptid/session.ts (JWT aud claim)
priority: high
---
## Description
<!-- SECTION:DESCRIPTION:BEGIN -->
Migrate ~20 standalone domains (rbooks.online, rmaps.online, rfunds.online, etc.) into path-based routing under rspace.online. Currently these domains are silently rewritten to /:space/:moduleId internally — this migration makes rspace.online the canonical URL, adds 301 redirects, removes dead infrastructure, and lets domains expire.
Execution order: Phase 2 → 1 → 3 → 4 → 5 → 6 (fix external service URLs before enabling redirects).
Key risks:
- rnetwork.online is dual-purpose (module alias AND TWENTY_API_URL) — must decouple before redirects
- sync.rmaps.online is a separate WebSocket service, not the rmaps module
- PWA/service worker caches on old domains may need self-unregistering workers
- keepStandalone domains (rcart.online, rfiles.online, swag.mycofi.earth, providers.mycofi.earth) need separate evaluation
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 All standalone domain hits return 301 → rspace.online/demo/{moduleId}/...
- [ ] #2 No hardcoded references to r*.online domains remain in codebase
- [ ] #3 WebAuthn/EncryptID auth works solely on rspace.online
- [ ] #4 Standalone Traefik labels and docker-compose.standalone.yml removed
- [ ] #5 Standalone .ts entry points deleted
- [ ] #6 Domain registrations allowed to expire
<!-- AC:END -->

View File

@ -0,0 +1,31 @@
---
id: TASK-51.1
title: 'Phase 2: Fix external service URLs (analytics, maps sync, Twenty CRM)'
status: To Do
assignee: []
created_date: '2026-02-25 07:47'
labels:
- infrastructure
- domains
- migration
dependencies: []
parent_task_id: TASK-51
priority: high
---
## Description
<!-- SECTION:DESCRIPTION:BEGIN -->
Update hardcoded references to standalone domains used as service endpoints. Must be done BEFORE Phase 1 redirects to avoid breaking analytics, maps sync, and network module.
Files: website/index.html, website/create-space.html (collect.js), docker-compose.yml (MAPS_SYNC_URL, TWENTY_API_URL), modules/maps/mod.ts, modules/network/mod.ts.
DECISION NEEDED: Is Twenty CRM (rnetwork.online) a separate container or proxied through network module?
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 Analytics collect.js loads from relative path on rspace.online
- [ ] #2 Maps sync WebSocket connects via new URL
- [ ] #3 Network module reaches Twenty CRM without depending on rnetwork.online domain
<!-- AC:END -->

View File

@ -0,0 +1,31 @@
---
id: TASK-51.2
title: 'Phase 1: Convert standalone domain rewrite to 301 redirects'
status: To Do
assignee: []
created_date: '2026-02-25 07:47'
labels:
- infrastructure
- domains
- migration
dependencies:
- TASK-51.1
parent_task_id: TASK-51
priority: high
---
## Description
<!-- SECTION:DESCRIPTION:BEGIN -->
Change server/index.ts standalone domain handling from silent rewrite to 301 redirect for HTML page loads. Keep API/WS rewriting so running apps don't break. Traefik labels stay — domains must still route to the container to serve the 301.
Target: server/index.ts lines 482-521. Redirect HTML page loads, continue proxying /api/* and /ws/* requests. keepStandalone domains unaffected.
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 rmaps.online/some-room returns 301 to rspace.online/demo/maps/some-room
- [ ] #2 rbooks.online/ returns 301 to rspace.online/demo/books
- [ ] #3 API and WebSocket requests still proxied without redirect
- [ ] #4 keepStandalone domains unaffected
<!-- AC:END -->

View File

@ -0,0 +1,31 @@
---
id: TASK-51.3
title: 'Phase 3: Update UI links (app switcher, landing page)'
status: To Do
assignee: []
created_date: '2026-02-25 07:47'
labels:
- infrastructure
- domains
- migration
- ui
dependencies:
- TASK-51.2
parent_task_id: TASK-51
priority: medium
---
## Description
<!-- SECTION:DESCRIPTION:BEGIN -->
Remove standalone domain references from user-facing UI. Remove external link arrow from app switcher, update landing page ecosystem links to path-based routes, remove standaloneDomain from ModuleInfo interface.
Files: shared/components/rstack-app-switcher.ts, shared/module.ts, website/index.html, website/create-space.html.
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 App switcher shows no external link arrows
- [ ] #2 Landing page ecosystem links use /demo/{moduleId} paths
- [ ] #3 ModuleInfo no longer exposes standaloneDomain to client
<!-- AC:END -->

View File

@ -0,0 +1,32 @@
---
id: TASK-51.4
title: 'Phase 4: Simplify EncryptID and WebAuthn for single domain'
status: To Do
assignee: []
created_date: '2026-02-25 07:47'
labels:
- infrastructure
- domains
- migration
- auth
dependencies:
- TASK-51.3
parent_task_id: TASK-51
priority: medium
---
## Description
<!-- SECTION:DESCRIPTION:BEGIN -->
Prune WebAuthn Related Origins, JWT audience claims, and CORS allowedOrigins now that all modules are on rspace.online.
Files: server/index.ts (.well-known/webauthn), public/.well-known/webauthn, src/encryptid/session.ts (JWT aud), src/encryptid/server.ts (allowedOrigins + HTML templates).
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 Passkey login works on rspace.online
- [ ] #2 No CORS errors for auth flows
- [ ] #3 JWT aud is rspace.online only
- [ ] #4 .well-known/webauthn no longer lists standalone domains
<!-- AC:END -->

View File

@ -0,0 +1,32 @@
---
id: TASK-51.5
title: 'Phase 5: Remove standalone domain dead code and infrastructure'
status: To Do
assignee: []
created_date: '2026-02-25 07:48'
updated_date: '2026-02-25 07:48'
labels:
- infrastructure
- domains
- migration
- cleanup
dependencies:
- TASK-51.4
parent_task_id: TASK-51
priority: low
---
## Description
<!-- SECTION:DESCRIPTION:BEGIN -->
After 301 redirects have been live 3-6 months, strip all standalone domain machinery. Delete domainToModule map, keepStandalone set, rewrite/redirect block in server/index.ts. Remove standaloneDomain from RSpaceModule interface and all 22 mod.ts files. Delete all 20 standalone.ts entry points. Remove Traefik labels. Delete docker-compose.standalone.yml.
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 No references to standaloneDomain remain in codebase
- [ ] #2 No standalone.ts files exist
- [ ] #3 docker-compose.standalone.yml deleted
- [ ] #4 Traefik config only has rspace.online and *.rspace.online routers
- [ ] #5 All modules work via path-based routing
<!-- AC:END -->

View File

@ -0,0 +1,31 @@
---
id: TASK-51.6
title: 'Phase 6: DNS cleanup and domain expiry'
status: To Do
assignee: []
created_date: '2026-02-25 07:48'
updated_date: '2026-02-25 07:48'
labels:
- infrastructure
- domains
- migration
- dns
dependencies:
- TASK-51.5
parent_task_id: TASK-51
priority: low
---
## Description
<!-- SECTION:DESCRIPTION:BEGIN -->
Operational phase — no code changes. Monitor Cloudflare analytics on old domains for 3-6 months. Remove tunnel hostname entries, DNS zones. Let Porkbun registrations expire. Keep rspace.online, ridentity.online, rstack.online, rmail.online. Evaluate keepStandalone domains separately.
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #1 No Cloudflare tunnel entries for expired domains
- [ ] #2 No DNS zones for expired domains
- [ ] #3 Domain renewals cancelled at Porkbun
- [ ] #4 Core domains retained
<!-- AC:END -->

View File

@ -0,0 +1,32 @@
---
id: TASK-52
title: Redesign canvas toolbar with grouped dropdowns and collapse
status: Done
assignee:
- '@claude'
created_date: '2026-02-25 21:07'
labels:
- ui
- canvas
dependencies: []
priority: medium
---
## Description
<!-- SECTION:DESCRIPTION:BEGIN -->
The canvas toolbar had 28+ flat tool buttons in a single horizontal row that ran off screen on most displays. Redesigned with grouped dropdown menus and a collapse/minimize toggle.
**Changes:**
- 6 category dropdowns: Create, Media, Embed, AI, Travel, Decide
- Direct-access buttons for Connect, Memory, and Zoom controls
- Collapse toggle (◀/▶) to minimize toolbar to a single button
- Mobile responsive: accordion-style groups instead of floating dropdowns
- Click-outside-to-close and auto-close-on-tool-select behavior
<!-- SECTION:DESCRIPTION:END -->
## Final Summary
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
Replaced 28 flat toolbar buttons with 6 grouped dropdowns (Create, Media, Embed, AI, Travel, Decide) plus direct-access Connect/Memory/Zoom buttons. Added collapsible toolbar toggle. Mobile-responsive with accordion-style groups. Commit: 5c3db2c on dev branch.
<!-- SECTION:FINAL_SUMMARY:END -->