chore: add backlog tasks 14-17
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
0a32944243
commit
65aeceddd1
|
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
id: TASK-14
|
||||
title: 'Overhaul canvas shape creation, connections, and sync'
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-02-15 15:28'
|
||||
labels:
|
||||
- canvas
|
||||
- bugfix
|
||||
- refactor
|
||||
dependencies: []
|
||||
priority: high
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
Fixed multiple issues preventing the FolkJS canvas and shapes from working properly.
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
<!-- AC:BEGIN -->
|
||||
- [ ] #1 Trip shapes (itinerary, destination, budget, packing-list, booking) have position:absolute CSS
|
||||
- [ ] #2 Arrow connections work with all 21 shape types, not just markdown and wrapper
|
||||
- [ ] #3 New shapes appear at viewport center instead of clustering top-left
|
||||
- [ ] #4 Shape creation uses shared createAndAddShape() utility (~270 lines removed)
|
||||
- [ ] #5 Google Item toolbar button exists
|
||||
- [ ] #6 Remote shape creation has error handling (try-catch-finally)
|
||||
- [ ] #7 WebSocket keep-alive ping actually sends a message
|
||||
- [ ] #8 Sync layer uses toJSON() to capture all shape-specific properties
|
||||
<!-- AC:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Fixed 8 issues in canvas.html and community-sync.ts:\n\n1. Added 5 missing trip shapes to CSS position:absolute rule\n2. Expanded arrow connection mode from 2 to all 21 shape types\n3. New shapes now center in viewport (accounting for zoom/pan)\n4. Extracted createAndAddShape() utility, eliminating ~270 lines of duplication\n5. Added missing Google Item toolbar button\n6. Added try-catch-finally on remote shape creation\n7. Implemented actual WebSocket keep-alive ping (was no-op)\n8. Replaced manual property extraction in #shapeToData() with shape.toJSON() for all shape types\n\nNet result: -158 lines (179 added, 337 removed)
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
id: TASK-15
|
||||
title: Add all r-Ecosystem apps to EncryptID landing page
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-02-15 15:28'
|
||||
labels:
|
||||
- encryptid
|
||||
- ecosystem
|
||||
dependencies: []
|
||||
priority: medium
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
Added rNotes, rTrips, rFunds, rNetwork, and rCart to the r-Ecosystem app icons section on the EncryptID landing page. All 10 r* apps now displayed.
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Added 5 missing r-Ecosystem apps (rNotes, rTrips, rFunds, rNetwork, rCart) to the EncryptID landing page app icons. All 10 apps now match the CORS origins list: rSpace, rWallet, rVote, rMaps, rFiles, rNotes, rTrips, rFunds, rNetwork, rCart.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
---
|
||||
id: TASK-16
|
||||
title: Live interconnected r* demo pages via shared rSpace data layer
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-02-15 16:40'
|
||||
updated_date: '2026-02-15 16:40'
|
||||
labels:
|
||||
- feature
|
||||
- demo
|
||||
- real-time
|
||||
- cross-app
|
||||
dependencies: []
|
||||
priority: high
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
Replace all static demo pages across the r* ecosystem with live, interactable demos connected through a shared rSpace "demo" community. Changes in one app propagate to all others in real-time via WebSocket.
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Acceptance Criteria
|
||||
<!-- AC:BEGIN -->
|
||||
- [x] #1 JSON WebSocket mode added to rSpace server (?mode=json)
|
||||
- [x] #2 GET /api/communities/:slug/shapes endpoint
|
||||
- [x] #3 POST /api/communities/demo/reset with rate limiting
|
||||
- [x] #4 Alpine Explorer 2026 seed data (~40 shapes) via seed-demo.ts
|
||||
- [x] #5 useDemoSync React hook (~220 lines, zero deps beyond React)
|
||||
- [x] #6 rTrips demo rewritten with live data (hub showing all shape types)
|
||||
- [x] #7 rNotes demo rewritten with live notes, notebooks, packing lists
|
||||
- [x] #8 rCart demo rewritten with live cart items and funding
|
||||
- [x] #9 rVote demo rewritten with live polls and voting
|
||||
- [x] #10 rMaps demo rewritten with live map markers and destinations
|
||||
- [x] #11 rFunds demo created with live expenses and budget tracking
|
||||
- [x] #12 All changes sync across apps in real-time via shared demo community
|
||||
<!-- AC:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
## Implementation Complete
|
||||
|
||||
### Server-side (rspace-online)
|
||||
- **JSON WebSocket mode**: Added `?mode=json` query param to WS upgrade. Server bridges Automerge↔JSON, avoiding ~500KB Automerge bundle in demo pages
|
||||
- **GET shapes endpoint**: `GET /api/communities/:slug/shapes` returns all shapes as JSON
|
||||
- **Demo reset**: `POST /api/communities/demo/reset` clears and re-seeds (5-min rate limit)
|
||||
- **Seed script**: `server/seed-demo.ts` creates "demo" community with `visibility: "public"` and populates ~40 shapes for Alpine Explorer 2026 scenario
|
||||
|
||||
### Shared hook
|
||||
- **useDemoSync**: `src/lib/demo-sync.ts` (~220 lines) — WebSocket JSON mode, auto-reconnect, exponential backoff, ping keepalive, optimistic updates, shape type filtering, resetDemo()
|
||||
|
||||
### Demo page rewrites (6 apps)
|
||||
| App | Shape Types | Key Interactions |
|
||||
|-----|-------------|-----------------|
|
||||
| rTrips | all (hub) | View cross-app data, toggle packing |
|
||||
| rNotes | folk-note, folk-notebook, folk-packing-list | Expand notes, toggle packing checkboxes |
|
||||
| rCart | demo-cart-item | Fund items, add to cart |
|
||||
| rVote | demo-poll | Cast votes, see live tallies |
|
||||
| rMaps | demo-map-marker, folk-destination | Click markers, view details |
|
||||
| rFunds | demo-expense, folk-budget | Edit expenses, see balances |
|
||||
|
||||
### Commits pushed to Gitea
|
||||
- rspace-online: `0a32944`
|
||||
- rtrips-online: `fa778ed`
|
||||
- rnotes-online: `30f3383`
|
||||
- rcart-online: `9d16bf3`
|
||||
- rvote-online: `160a556`
|
||||
- rmaps-online: `8e96d4e`
|
||||
- rfunds-online: `216df8c`
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
id: TASK-17
|
||||
title: Enable Always Use HTTPS for all r*.online domains
|
||||
status: Done
|
||||
assignee: []
|
||||
created_date: '2026-02-15 16:59'
|
||||
labels:
|
||||
- infrastructure
|
||||
- ssl
|
||||
- cloudflare
|
||||
dependencies: []
|
||||
priority: high
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
<!-- SECTION:DESCRIPTION:BEGIN -->
|
||||
All 10 r*.online domains were serving over plain HTTP without redirecting to HTTPS, causing browser "not secure" warnings. Enabled Cloudflare "Always Use HTTPS" setting via API for all zones.
|
||||
<!-- SECTION:DESCRIPTION:END -->
|
||||
|
||||
## Final Summary
|
||||
|
||||
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
|
||||
Enabled `always_use_https` via Cloudflare API (DNS token) for all 10 r*.online zones. HTTP now returns 301 redirect to HTTPS.\n\nDomains fixed: rspace.online, rtrips.online, rnotes.online, rcart.online, rvote.online, rmaps.online, rfunds.online, rwallet.online, rfiles.online, rnetwork.online\n\nNo code changes — Cloudflare zone setting only.
|
||||
<!-- SECTION:FINAL_SUMMARY:END -->
|
||||
Loading…
Reference in New Issue