From 0ef5aad3ad9e348cc6574b33c8179d3f3086b04c Mon Sep 17 00:00:00 2001 From: Jeff Emmett Date: Mon, 2 Mar 2026 18:25:12 -0800 Subject: [PATCH] chore: add backlog tasks 79-81 Co-Authored-By: Claude Opus 4.6 --- ...ptance-—-server-initiated-WebAuthn-flow.md | 45 +++++++++++ ...ne-panel-—-live-peer-presence-on-canvas.md | 40 ++++++++++ ...-page-—-ontology-branding-and-OSS-logos.md | 76 +++++++++++++++++++ 3 files changed, 161 insertions(+) create mode 100644 backlog/tasks/task-79 - Fix-guardian-invitation-acceptance-—-server-initiated-WebAuthn-flow.md create mode 100644 backlog/tasks/task-80 - People-online-panel-—-live-peer-presence-on-canvas.md create mode 100644 backlog/tasks/task-81 - rStack.online-landing-page-—-ontology-branding-and-OSS-logos.md diff --git a/backlog/tasks/task-79 - Fix-guardian-invitation-acceptance-—-server-initiated-WebAuthn-flow.md b/backlog/tasks/task-79 - Fix-guardian-invitation-acceptance-—-server-initiated-WebAuthn-flow.md new file mode 100644 index 0000000..a518f2e --- /dev/null +++ b/backlog/tasks/task-79 - Fix-guardian-invitation-acceptance-—-server-initiated-WebAuthn-flow.md @@ -0,0 +1,45 @@ +--- +id: TASK-79 +title: Fix guardian invitation acceptance — server-initiated WebAuthn flow +status: Done +assignee: [] +created_date: '2026-03-03 00:56' +labels: + - bugfix + - encryptid + - webauthn +dependencies: [] +priority: high +--- + +## Description + + +Guardian invitation acceptance and auth.rspace.online login were broken. The guardian page and main login page used the client-side SDK's `authenticatePasskey()`/`registerPasskey()` which generate their own challenge, then tried to send `result.challenge` and `result.credential` to the server — but `AuthenticationResult` doesn't have those properties (both undefined). The postgres driver threw `UNDEFINED_VALUE` on `getChallenge(undefined)`, resulting in a raw 500 "Internal Server Error" that the client couldn't parse as JSON. + +Fixed by replacing with the proper server-initiated flow (matching rstack-identity.ts): `/api/auth/start` → WebAuthn → `/api/auth/complete`, and same for registration. Also fixed Dockerfile.encryptid to include `shared/local-first/` in the build context (needed by login-button.ts importing encryptid-bridge). + + +## Acceptance Criteria + +- [ ] #1 Guardian invitation acceptance completes without JSON parse error +- [ ] #2 auth.rspace.online login/register works with server-initiated WebAuthn +- [ ] #3 Dockerfile.encryptid builds successfully with shared/local-first context + + +## Final Summary + + +Fixed 500 error on guardian invitation acceptance caused by client sending `undefined` challenge/credential to server. + +**Root cause:** Guardian page and auth.rspace.online login used client-side SDK functions (`authenticatePasskey()`/`registerPasskey()`) which return `AuthenticationResult` — but code referenced `.challenge` and `.credential` properties that don't exist on that type. Both were `undefined`, causing postgres `UNDEFINED_VALUE` error → 500 plain text → client JSON parse failure. + +**Fix:** Replaced with server-initiated WebAuthn flow matching `rstack-identity.ts`: +1. `POST /api/auth/start` → get server challenge +2. `navigator.credentials.get()` with that challenge +3. `POST /api/auth/complete` with `{ challenge, credential: { credentialId } }` + +Also fixed `Dockerfile.encryptid` to COPY `shared/local-first/` (needed by `login-button.ts` → `encryptid-bridge.ts`). + +Commits: 88118cd (WebAuthn flow), 4dd212e (Dockerfile fix). Both rspace-online and encryptid containers rebuilt and deployed. + diff --git a/backlog/tasks/task-80 - People-online-panel-—-live-peer-presence-on-canvas.md b/backlog/tasks/task-80 - People-online-panel-—-live-peer-presence-on-canvas.md new file mode 100644 index 0000000..d51fbf6 --- /dev/null +++ b/backlog/tasks/task-80 - People-online-panel-—-live-peer-presence-on-canvas.md @@ -0,0 +1,40 @@ +--- +id: TASK-80 +title: People online panel — live peer presence on canvas +status: Done +assignee: [] +created_date: '2026-03-03 00:57' +labels: + - feature + - canvas + - presence +dependencies: [] +priority: medium +--- + +## Description + + +Add real-time people online panel to the canvas showing who's currently viewing the same space. Includes peer announcements, join/leave broadcasts, avatar dots badge, expandable panel, and ping-user relay for "come here" notifications. + + +## Acceptance Criteria + +- [ ] #1 People online badge shows in canvas with colored dots +- [ ] #2 Panel expands showing usernames and avatars +- [ ] #3 Peer join/leave events broadcast in real-time +- [ ] #4 Ping button relays viewport coordinates to target peer + + +## Final Summary + + +Committed pre-existing people online feature: + +- **community-sync.ts**: Re-announce on reconnect, handle peer-list/joined/left/ping-user events, `setAnnounceData()` API +- **presence.ts**: Export `peerIdToColor` helper +- **server/index.ts**: Track `peerAnnouncements` map, broadcast peer-joined/left, relay ping-user to target +- **canvas.html**: People online badge (bottom-right), expandable panel with avatar dots and ping button + +Commit: 5ee59f8. Deployed to production. + diff --git a/backlog/tasks/task-81 - rStack.online-landing-page-—-ontology-branding-and-OSS-logos.md b/backlog/tasks/task-81 - rStack.online-landing-page-—-ontology-branding-and-OSS-logos.md new file mode 100644 index 0000000..72eb5a0 --- /dev/null +++ b/backlog/tasks/task-81 - rStack.online-landing-page-—-ontology-branding-and-OSS-logos.md @@ -0,0 +1,76 @@ +--- +id: TASK-81 +title: 'rStack.online landing page — ontology, branding, and OSS logos' +status: Done +assignee: [] +created_date: '2026-03-03 02:10' +updated_date: '2026-03-03 02:10' +labels: + - rstack-online + - branding + - documentation +dependencies: [] +references: + - 'https://rstack.online' + - 'https://github.com/rspace-online/rspace-online/blob/main/ONTOLOGY.md' +priority: medium +--- + +## Description + + +Major update to the rstack.online landing page to align with the new ONTOLOGY.md three-layer architecture model and establish consistent branding across all rApps and open source dependencies. + + +## Acceptance Criteria + +- [x] #1 Architecture section reflects 3-layer ontology (rApps → rSpace → rStack) +- [x] #2 Hero subtitle uses ontology framing +- [x] #3 x402 micropayments and Gnosis Safe added to value architecture section +- [x] #4 Tech references updated: Y.js→Automerge, tldraw→FolkJS, ERC-4337→Gnosis Safe +- [x] #5 EncryptID flow diagram shows full HKDF key hierarchy +- [x] #6 Link to full ONTOLOGY.md on GitHub +- [x] #7 All 22 rApp cards use branded badge icons (rS, rN, rV, etc.) with emoji after name +- [x] #8 All 7 demo cards use branded badge variant +- [x] #9 13 OSS tool cards have actual SVG/PNG logos from official sources +- [x] #10 All 13 OSS tool cards are clickable links to repos/websites +- [x] #11 rIDs renamed to rIdentity across the site +- [x] #12 Nav header shows [rS] badge + (you)rStack branding +- [x] #13 Browser tab title is clean 'rStack' without (you) prefix + + +## Final Summary + + +## Summary + +Comprehensive update to rstack.online across 8 commits: + +### Architecture & Content (from ONTOLOGY.md) +- Rewrote architecture section from 4 generic layers to the ontology's 3-tier model (rStack Foundation / rSpace Platform / rApps) +- Updated hero subtitle: "composable, local-first platform for collaborative knowledge work, democratic governance, and programmable economic flows" +- Added x402 micropayments as lead card in value architecture, Gnosis Safe treasury, governance tokens, rollup strategy +- Replaced EncryptID flow diagram with precise HKDF key hierarchy (passkey → PRF → HKDF → AES-256-GCM / Ed25519 / ECDSA P-256 / secp256k1) +- Updated all tech references: Y.js→Automerge, tldraw→FolkJS, ERC-4337→Gnosis Safe, Hono→Hono+x402 +- Added link to full ontology doc on GitHub + +### Branding & Icons +- 22 app cards: replaced emoji icons with branded badge abbreviations (rS on teal, rN on amber, etc.) matching app-switcher palette, with emoji retained after name for visual scanning +- 7 demo cards: same badge treatment at larger 56x56 size +- 13 OSS tool cards: added actual project logos (10 from Simple Icons CDN, Automerge brandmark SVG, Safe white SVG, FolkJS PNG) +- All 13 OSS cards now clickable links to official repos/websites +- Renamed rIDs → rIdentity across all 5 occurrences +- Nav header: [rS] teal badge + "(you)rStack" with dimmed pun +- Browser tab: clean "rStack — Open-Source Community Infrastructure" + +### Commits +- `257a1b2` feat: update landing page with ontology-derived architecture info +- `a796bb4` feat: branded badge icons for all rApps and OSS tool logos +- `723d674` feat: use actual SVG/PNG logos for OSS tools section +- `584b3fc` feat: add emoji indicators next to rApp names in card headers +- `676c118` brand: rename rIDs → rIdentity across the site +- `df2de33` feat: make OSS tool cards clickable links to repos/websites +- `087e60d` brand: update nav header to show [rS] badge + "rStack" text +- `e547783` brand: add (you)rStack branding to nav header +- `b6d464d` brand: remove (you) from browser tab title +