feat(augur): unlisted-snapshot publish pipeline

augur.setVisibility now coordinates with the server-side unlisted-
snapshots table — same pattern as library/calendar/places. The local
token-allocation placeholder from M6 is replaced with real publish/
revoke calls; deletion revokes any active link before tombstoning.

  - resolvers.ts: buildAugurEntryBlob with strict whitelist
    (source, claim, kind, vibe, encounteredAt, outcome,
    outcomeNote when resolved). NEVER inlines feltMeaning,
    expectedOutcome, probability, tags, livingOracleSnapshot,
    sourceCategory or related FK references — divinatory captures
    stay sensitive even when shared.
  - SharedAugurEntryView: SSR card with vibe-colored border, kind +
    date meta, outcome badge, "Wie es kam" section only when the
    sign was actually resolved.
  - Dispatcher in /share/[token]/+page.svelte gains the
    augurEntries branch.
  - mana-api ALLOWED_COLLECTIONS extended to four items so the
    publish endpoint accepts augurEntries.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-04-25 15:38:09 +02:00
parent a1f2dccb68
commit 9e04385930
5 changed files with 309 additions and 16 deletions

View file

@ -32,7 +32,7 @@ const routes = new Hono<{ Variables: AuthVariables }>();
* honest about what it accepts (a confused client trying to publish
* an arbitrary collection gets 400).
*/
const ALLOWED_COLLECTIONS = new Set<string>(['events', 'libraryEntries', 'places']);
const ALLOWED_COLLECTIONS = new Set<string>(['events', 'libraryEntries', 'places', 'augurEntries']);
const PublishBodySchema = z.object({
spaceId: z.string().min(1).max(64),