mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-15 01:41:08 +02:00
Calendar pilot proved the pattern in M8.3; this rolls it out to
Library entries and Places using the same backbone (resolvers
dispatcher, share-route SSR, SharedLinkControls UI).
Changes:
- lib/data/unlisted/resolvers:
buildLibraryEntryBlob (whitelist: title, kind, creators, year,
coverUrl, rating). Review, status, tags, progress, externalIds,
reading-habit fields all stay private.
buildPlaceBlob (whitelist: name, address, category). Lat/lng
explicitly NOT inlined — 10m precision identifies homes /
workplaces; the v1 share page renders no map. v1.1 may add an
opt-in toggle.
Dispatcher gains 'libraryEntries' + 'places' cases.
- modules/library: LibraryEntry gains unlistedToken; converter +
ListView mock-stub forward it; entries store gets the same publish/
revoke/refresh/regenerate quartet from M8.3:
- setVisibility coordinates with mana-api server-side; failure
aborts the local flip so Dexie + server stay aligned
- deleteEntry revokes the active snapshot before tombstoning
- updateEntry fire-and-forgets refreshUnlistedSnapshot so the
shared link tracks edits to the whitelisted fields
- regenerateUnlistedToken: revoke + republish, returns new token
- modules/library/views/DetailView: SharedLinkControls dropped into
the existing dl as a labeled dt/dd row, only when visibility ===
'unlisted' AND unlistedToken AND shareUrl.
- modules/library/SharedLibraryEntryView: standalone public render —
big cover image, title, creators · year, optional rating-stars,
OG/Twitter meta tags with cover as og:image (link-preview shows
the cover on WhatsApp/Slack/iMessage).
- modules/places: same pattern. Place gains unlistedToken; converter
+ store get publish/revoke/refresh/regenerate; DetailView field-row
for the SharedLinkControls.
- modules/places/SharedPlaceView: standalone public render — name,
address, category badge, "Auf OpenStreetMap suchen"-Link (no map
iframe in v1 because lat/lng aren't in the blob).
- routes/share/[token]/+page.svelte: dispatcher gains two more cases.
Verified:
- pnpm check (web): 7543 files, 0 errors, 0 warnings (svelte-check
passes on all the new components, hooks, types)
Tests: vitest currently fails to load due to an unrelated parallel
edit on $lib/data/current-user.ts that uses $state in a non-.svelte.ts
file. The break predates this commit and isn't surfaced by
svelte-check; the visibility-system + unlisted code itself
type-checks clean. Will be fixed by whoever's currently iterating
on current-user (separate session).
Next: M8.5 — QR codes via the qrcode npm package, expiry-datepicker
wiring, regenerate confirm-dialog polish, and end-to-end
incognito-tab smoke test of all three modules' share links.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| api | ||
| calc/packages/shared | ||
| calendar | ||
| cards | ||
| chat | ||
| citycorners | ||
| contacts | ||
| context | ||
| docs | ||
| food | ||
| guides | ||
| inventory | ||
| mana | ||
| manavoxel | ||
| memoro | ||
| moodlit | ||
| mukke | ||
| news | ||
| photos | ||
| picture | ||
| plants | ||
| presi | ||
| questions | ||
| quotes/packages/content | ||
| skilltree | ||
| storage | ||
| times | ||
| todo | ||
| traces | ||
| uload | ||