External embed: draft v2 spec

Updated rewrite of the earlier embed plan covering every Artstr
feature shipped since the original sketch:

- Linked sub-design resolution inside embeds (reuses
  linkedDesigns.prefetchBatch + resolveLinked + disk cache, full
  cycle/depth/byte safety).
- Premium boundary: watermarked preview + "Open in Artstr to
  unlock" CTA; no in-iframe zap.
- Private boundary: hard refuse with 🔒 placeholder; no decrypt
  attempts.
- Pixel-art animation playback (auto-play, fps override,
  prefers-reduced-motion respected).
- Deck slide picker — `?slide=N` deep-links; linked-deck layers
  carrying design.slideIndex project to a single-slide payload.
- Credits overlay (opt-in via `?credits=1`), mirroring the
  in-app Credits panel.
- PostMessage handshake for parent-page integration (deck
  control, fullscreen request, ready/error events).
- Layer-group handling falls out naturally — groups are flat
  layers with groupId; the existing renderers already paint them.
- Open Graph metadata on the embed route URL itself.
- Per-event + per-tree byte caps inherited from linked-designs.
- Phase plan + acceptance criteria + risks updated.

No code; this is the planning artifact. Implementation phases
0-9 are scoped inside the doc.
This commit is contained in:
thePR0M3TH3AN committed 2026-05-31 22:46:16 -04:00
1 parent 8439b358c3
commit 4d355f87d4
1 file changed
+1078
File diff suppressed because it is too large. Load diff