5abee1b5b7
Versioned, per-topic project memory (index + entries): IIOS overview, the generic-safety rule, run/test + the replay.spec flake workaround, recent features (Supabase auth, reactions/pins/saves, mentions, media, notifications), the chat-web consumer, and workflow conventions. CLAUDE.md points to it as the accumulating-notes companion to the canonical rules. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1.9 KiB
1.9 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| project_recent_features | The "real-providers" era — Supabase auth, reactions/pins/saves, mentions→inbox, media, notifications |
|
Beyond P0–P8 (kernel → messaging → inbox → support → adapters → routing → AI → calendar/meetings), recent work (mostly driven by the chat app, the start of P9 "real providers"):
- Real Supabase auth —
SessionVerifierverifies real OIDC tokens against issuer JWKS (ES256, no secret), a multi-issuer registry routed by theissclaim → per-issuerappIdscope (AUTH_ISSUERSJSON, orSUPABASE_URLsingle-issuer shorthand).userId = email. Legacy HS256 app-token path (APP_SECRETS) stays for dev/tests. - Reactions / pins / saves — one generic
IiosInteractionAnnotationprimitive (opaqueannotationType+value); socketannotateevent →annotationbroadcast;GET /v1/threads/my-annotations?type=save. - @mentions → Inbox —
send(... mentions[])(opaque userId list) →InboxProjectorfans out aMENTIONinbox item to mentioned participants; reading resolves it. - Media —
StoragePort(dev = local diskMEDIA_DIR; prod swap to S3/Supabase), presigned upload/download (signed HS256 tokens, OPA-gated size/type, tenant-fenced),attachmentonMessageDto; parts use genericMEDIA_REF/VOICE_REF/FILE_REF. - Notifications — presence-gated Web Push:
NotificationProjectorruns 3 gates (policy=DM/mention/reply-to-you · presence=focus_threadsignal · per-threadmuted) → swappableNotificationPort(Web Push/VAPID); dead sub (410) pruned. Presence is in-memory (single-instance) → Redis for multi-replica. senderId(stable externalId) onMessageDtofor reliable "is this mine?".
~205 tests. Keep docs/IIOS_API_AND_SDK_GUIDE.md current when adding endpoints.
Related: reference_chat_web_consumer, feedback_generic_safety.