Skip to content

feat: meeting templates and workflow presets#101

Open
StevenLi-phoenix wants to merge 1 commit intomainfrom
pr/meeting-templates-97
Open

feat: meeting templates and workflow presets#101
StevenLi-phoenix wants to merge 1 commit intomainfrom
pr/meeting-templates-97

Conversation

@StevenLi-phoenix
Copy link
Copy Markdown
Owner

Summary

  • MeetingTemplate model with name, icon, config overrides (summary interval/style/language), optional recipe/profile IDs
  • MeetingTemplateStore (nonisolated enum) — JSON file storage, 5 built-in templates (General Meeting, Standup/Sync, 1-on-1, Brainstorm, Lecture/Talk) with stable UUIDs
  • TemplatePickerView — grid sheet shown before recording, select template or skip; controlled by @AppStorage("showTemplatePickerOnRecord")
  • TemplateManagerView — Settings tab for template CRUD (built-ins read-only, custom fully editable)
  • ContentView integration: template picker before startRecording(), applies overrides to SummarizerConfig in UserDefaults
  • 12 unit tests covering store logic, JSON round-trip, and built-in template properties

Closes #97

Test plan

  • Build succeeds
  • 12 unit tests pass (MeetingTemplateTests)
  • Manual: click Record → template picker appears → select Standup → verify 5min summary interval applied
  • Manual: click Record → Skip → recording starts with default config
  • Manual: Settings → Templates → create custom template → verify it appears in picker
  • Manual: Settings → Templates → duplicate built-in → edit copy → verify changes saved
  • Manual: Settings → Templates → toggle "Show template picker" off → Record starts immediately

🤖 Generated with Claude Code

Add MeetingTemplate model and MeetingTemplateStore with 5 built-in
templates (General Meeting, Standup/Sync, 1-on-1, Brainstorm, Lecture).
Templates configure summary interval, style, language, and suggested
duration. TemplatePickerView sheet shown before recording; template
overrides applied to SummarizerConfig. TemplateManagerView settings tab
for CRUD. 12 unit tests covering store logic, JSON round-trip, and
built-in template properties.
@claude
Copy link
Copy Markdown

claude bot commented Mar 28, 2026

✅ Claude Code Review: APPROVE

Well-structured feature following project conventions (nonisolated enum store, DS tokens, explicit @mainactor tasks), tests cover core logic, and the description accurately matches the changes.

@github-actions
Copy link
Copy Markdown
Contributor

⏸️ Auto-merge paused: 5 unchecked checkbox(es) in PR body. Merge will proceed automatically once all tasks are checked and a new push triggers the workflow.

@StevenLi-phoenix
Copy link
Copy Markdown
Owner Author

Notes — Meeting Templates (#97)

803 行、9 文件——完整的模板系统!

1. MeetingTemplateStore JSON 文件存储

好的选择——模板是配置数据,不需要 SwiftData。与我之前建议的 @AppStorage + JSON 一致。

2. 5 个内置模板评估

  • ✅ General Meeting — 通用默认
  • ✅ Standup/Sync — 短会 + action items
  • ✅ 1-on-1 — coaching 风格
  • ✅ Brainstorm — 创意整理
  • ✅ Lecture/Talk — 长录音优化

缺少一个高频场景:面试模板——需要评估格式 + 保密模式。建议作为第 6 个内置模板。

3. Config Overrides 模式

模板 override session 配置(summary interval/style/language)很灵活。建议验证:

  • override 是 merge 语义还是 replace?(merge 更好——只覆盖模板指定的字段,其余用用户默认)
  • nil override = 继承用户默认配置

4. 与其他 PR 的集成点

5. 模板选择器 UI

建议录音前的模板选择用 .popover 而非 .sheet——更轻量,不打断工作流。加 "Don't show again" 选项。

@StevenLi-phoenix
Copy link
Copy Markdown
Owner Author

与 AI Recipes (#85) 的区别和整合

Meeting Templates (#101) 和 AI Recipes (#85) 有重叠:

  • Templates: 录音前的预设(标题、提示词、定时器)
  • Recipes: 摘要风格模板(类似 Granola 的 Recipes)

建议统一为一个 "Workflow" 概念:录音前选择 workflow → 自动配置录音参数 + 摘要风格 + 后处理流程。这比两个独立功能更直觉。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

会议模板与工作流预设 (Meeting Templates & Workflow Presets)

1 participant