1
0
Files
PPTX/openspec/changes/archive/2026-03-02-add-browser-preview/proposal.md
lanyuanxiaoyao cd7988cbd5 feat: initial implementation of html2pptx with OpenSpec documentation
Add core Python script (yaml2pptx.py) for converting YAML to PowerPoint:
- Element rendering: text, image, shape, table, chart
- Template system with placeholders
- PPTX generation with python-pptx

OpenSpec workflow setup:
- 3 archived changes: browser-preview, template-dir-cli, yaml-to-pptx
- 7 main specifications covering all core modules
- Config and documentation structure

30 files changed, 4984 insertions(+)
2026-03-02 14:28:25 +08:00

2.2 KiB
Raw Blame History

Why

当前工作流程中,每次编辑 YAML 文件后,需要手动运行 yaml2pptx.py 生成 PPTX 文件,然后在 Keynote 或 PowerPoint 中打开查看效果。这个反馈循环较慢,需要频繁切换应用程序,降低了内容创作和调试的效率。添加浏览器实时预览功能可以让用户在编辑 YAML 时立即看到效果,大幅提升开发体验。

What Changes

  • yaml2pptx.py 中添加 --preview 参数,启用浏览器预览模式
  • 使用 Flask 提供 Web 服务,动态生成 HTML 预览
  • 使用 Server-Sent Events (SSE) 实现浏览器自动刷新
  • 使用 watchdog 监听 YAML 文件变化
  • 复用现有的 YAML 解析和模板渲染逻辑
  • 将 YAML 元素转换为 HTML/CSS 进行渲染
  • 新增依赖:flaskwatchdog(添加到脚本的 Inline script metadata
  • 保持向后兼容,不影响现有的 PPTX 生成功能

Capabilities

New Capabilities

  • browser-preview-server: 浏览器预览服务器,负责启动 Web 服务、文件监听、SSE 事件推送
  • html-rendering: HTML 渲染系统,负责将 YAML 元素(文本、形状、表格、图片)转换为 HTML/CSS

Modified Capabilities

无。此变更不修改现有能力的需求,仅复用 yaml-parsingtemplate-system 的功能。

Impact

修改文件

  • yaml2pptx.py: 添加预览服务器功能(约 200 行新增代码)
    • 新增 --preview 命令行参数
    • 新增 Flask 路由和 SSE 事件流
    • 新增 HTML 渲染函数
    • 新增文件监听逻辑

依赖变化

  • yaml2pptx.py 的 Inline script metadata 中新增依赖:flaskwatchdog
  • 使用 uv 自动管理依赖,无需手动安装

现有功能

  • 完全向后兼容,不影响现有的 PPTX 生成功能
  • 复用 Presentation 类和 YAML 解析逻辑
  • 不修改现有的模板系统和元素渲染逻辑

用户体验

  • 生成 PPTXuv run yaml2pptx.py input.yaml (保持不变)
  • 浏览器预览:uv run yaml2pptx.py input.yaml --preview (新增)
  • 预览模式下浏览器自动打开预览页面
  • 编辑 YAML 文件后浏览器自动刷新
  • 预览效果与最终 PPTX 可能存在细微差异HTML/CSS vs PPTX 渲染)