Merge branch 'dev'

This commit is contained in:
Jeff Emmett 2026-03-02 18:25:20 -08:00
commit bedc5652dc
3 changed files with 161 additions and 0 deletions

View File

@ -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
<!-- SECTION:DESCRIPTION:BEGIN -->
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).
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #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
<!-- AC:END -->
## Final Summary
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
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.
<!-- SECTION:FINAL_SUMMARY:END -->

View File

@ -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
<!-- SECTION:DESCRIPTION:BEGIN -->
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.
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [ ] #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
<!-- AC:END -->
## Final Summary
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
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.
<!-- SECTION:FINAL_SUMMARY:END -->

View File

@ -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
<!-- SECTION:DESCRIPTION:BEGIN -->
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.
<!-- SECTION:DESCRIPTION:END -->
## Acceptance Criteria
<!-- AC:BEGIN -->
- [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
<!-- AC:END -->
## Final Summary
<!-- SECTION:FINAL_SUMMARY:BEGIN -->
## 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
<!-- SECTION:FINAL_SUMMARY:END -->