htmlewislulu-html-ppt-skill/assets
lewis 36ecd2cf30 fix(presenter): sync theme across audience + presenter iframes (T key)
Problem: pressing T in audience window only swapped the host page's
theme CSS link. Preview iframes in the presenter window stayed on the
theme that was active when the popup was opened (or the HTML default).

Fix: 3-hop theme propagation via message types
1. audience cycleTheme() → BroadcastChannel 'theme' message
2. presenter window receives BC msg → postMessage 'preview-theme'
   to both iframes
3. iframe preview mode listens for 'preview-theme' → swaps its own
   <link id='theme-link'> href

Also:
- Audience window listens for 'theme' BC events → applies theme
  (so pressing T in one window cycles theme in BOTH)
- Presenter window captures audience's current theme at open time
  (data-theme attr) and forwards it to each iframe on 'preview-ready'
  so previews match audience from frame 1, even if audience had
  already cycled theme before opening presenter
- preview mode auto-detects theme base path from existing
  theme-link href (same logic as audience cycleTheme)

Verified in headless Chrome: BC msg {type:theme, name:dracula} →
both audience and preview iframes show data-theme=dracula with
matching colors.
2026-04-17 23:34:09 +08:00
..
animations fix: v2 — iframe theme isolation, 8 full-deck templates from source decks, 20 FX animations (particles/graph/fireworks), +12 themes 2026-04-15 16:29:08 +08:00
themes fix: v2 — iframe theme isolation, 8 full-deck templates from source decks, 20 FX animations (particles/graph/fireworks), +12 themes 2026-04-15 16:29:08 +08:00
base.css fix(presenter): rewrite as popup window with CSS scale() rendering 2026-04-17 22:36:04 +08:00
fonts.css feat: html-ppt AgentSkill — 24 themes, 31 layouts, 20+ animations 2026-04-15 15:36:16 +08:00
runtime.js fix(presenter): sync theme across audience + presenter iframes (T key) 2026-04-17 23:34:09 +08:00