Commit Graph

4 Commits

Author SHA1 Message Date
lewis 23d9f5d369 fix(presenter): rewrite as popup window with CSS scale() rendering
BREAKING: S key no longer overlays on the same page. It now opens a
separate browser window (window.open) for the presenter.

Audience window (original page):
- Stays completely untouched — normal slide view
- S key opens the presenter popup
- ← → / T / F / O all work as before
- Navigation syncs to presenter via BroadcastChannel

Presenter window (popup):
- Current slide rendered at 1920×1080 then CSS transform:scale() to fit
- Next slide preview also at 1920×1080 scale() — layout never breaks
- Large-font speaker script (18px, scrollable)
- Elapsed timer + page counter + current slide title
- ← → navigates (syncs back to audience window)
- R resets timer, Esc closes popup

Technical:
- runtime.js builds presenter HTML dynamically (buildPresenterHTML)
- Collects all slide outerHTML + notes + all stylesheets from host page
- Injects into popup via document.write()
- BroadcastChannel keyed by pathname for multi-deck isolation
- base.css: removed all old inline .pv-* / .presenter-view styles
  (presenter styles now self-contained in popup HTML)

Docs updated:
- SKILL.md: describes popup behavior, separate keyboard sections
- references/presenter-mode.md: new dual-window diagram, updated flow
- presenter-mode-reveal/README.md: updated S key and dual-screen guide
2026-04-17 22:36:04 +08:00
lewis 43c4a74f63 feat(presenter): add true presenter view (S) with speaker script + timer
Runtime (assets/runtime.js):
- S key now opens a split-view presenter mode: current slide (left 55%) +
  next-slide preview + large-font speaker script (150-300 words, scrollable)
  + elapsed timer + page counter
- Legacy bottom notes drawer moved to N key (keeps backward compat)
- R key resets timer (only active inside presenter view)
- Esc closes all overlays (overview / notes / presenter)
- Auto-picks up <aside class="notes">, <div class="notes">, or .speaker-notes

Styles (assets/base.css):
- New .presenter-view grid layout with pv-main / pv-side / pv-notes / pv-bar
- body.presenter-mode hides deck chrome from the operator's eye
- Timer styled with JetBrains Mono green (#3fb950)

New template (templates/full-decks/presenter-mode-reveal/):
- 6-slide demo deck designed around the S key presenter flow
- 5 presets via T key: tokyo-night, dracula, catppuccin-mocha, nord, corporate-clean
- Every slide ships a complete 150-300 word <aside class="notes"> example
  written in the "3 rules of speaker script" style
- Scoped .tpl-presenter-mode-reveal CSS with rule-row, feature-row, code-block
- README explains the full authoring flow

Docs:
- New references/presenter-mode.md — when to use, 3 rules of \u9010\u5b57\u7a3f writing
  (\u63d0\u793a\u4fe1\u53f7 / 150-300 \u5b57 / \u53e3\u8bed), required HTML structure, common mistakes,
  standard AI prompt for generating speaker scripts
- SKILL.md: upgraded template count 14 -> 15, added Presenter Mode section
  in 'When to use' with trigger keywords
- full-decks.md: row 15 added with \ud83c\udfa4 marker
- full-decks-index.html gallery now lists presenter-mode-reveal
2026-04-17 22:19:53 +08:00
lewis 376dfe5e77 fix: hide .notes from slides + add explicit no-presenter-text rule
- base.css: add .notes{display:none!important} so speaker notes are never
  visible on the rendered slide (only in S overlay)
- SKILL.md: add NEVER-put-presenter-text rule in authoring rules
- authoring-guide.md: add same rule in What to NOT do section

Fixes issue where AI would put small descriptive/presenter-only text
directly on slide markup instead of inside <div class='notes'>.
2026-04-16 11:27:32 +08:00
lewis a93138e1bf feat: html-ppt AgentSkill — 24 themes, 31 layouts, 20+ animations
World-class HTML presentation skill with keyboard navigation, theme/animation
switching, headless Chrome rendering, and showcase decks for themes/layouts/animations.

- 24 themes (minimal-white, dracula, catppuccin, tokyo-night, xiaohongshu-white, …)
- 31 single-page layouts (cover, code, charts, timeline, gantt, mindmap, …)
- 20+ named animations (rise-in, typewriter, confetti-burst, card-flip-3d, …)
- theme/layout/animation showcase decks
- runtime.js: arrow/space/F/S/O/T/A keybinds, hash routing, progress bar
- render.sh headless Chrome PNG export
- MIT, author lewis <sudolewis@gmail.com>
2026-04-15 15:36:16 +08:00