Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Settings UI for configuring Volcengine App ID, Resource ID, and Access Token.
- **Theme Mode**: Support for System (Auto) / Light / Dark appearance in Settings.
- **Security and Audit Documentation**: Added comprehensive security and audit notes (doc/09-security-and-audit.md).
- **Email Notifications**: Added email notification feature to send meeting summaries via configured FastMail gateway. Includes Settings UI for Gateway URL, API Token, and Recipient configuration.

### Changed
- **Task Info UI**: Redesigned the Task Info section in Result View with a grid layout, status indicators, and copy functionality for Task Key.
Expand Down
16 changes: 13 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Read this in Chinese: [README_CN.md](README_CN.md)
- **Privacy-First**: Operates locally on your machine with clear permission handling.
- **Meeting Minutes (Multi-Provider ASR)**: Support for **Alibaba Cloud Tingwu** and **Volcengine** (ByteDance) to transcribe audio and generate structured minutes (summary, key points, action items), with Markdown export.
- **Storage Backends (SQLite/MySQL)**: Store history locally or in MySQL, with optional local-to-MySQL sync.
- **Email Notifications**: Send meeting summaries directly to your email via a configured gateway.

## Changelog

Expand Down Expand Up @@ -108,7 +109,15 @@ Open Settings in the app and configure:
- **Alibaba Tingwu**: AppKey
- **Volcengine**: AppId, AccessToken, ResourceId (supports auto format inference)

### 4. Audio Outputs
### 4. Configure Email (optional)

In **Settings > Email**, you can enable email notifications to receive meeting summaries:

- **Gateway URL**: The endpoint of your email sending service (e.g., FastMail gateway).
- **API Token**: The authentication token for the gateway.
- **Recipient**: The email address to receive the summaries.

### 5. Audio Outputs

Recorded audio files are saved to:

Expand All @@ -125,13 +134,13 @@ Imported audio files are copied into the app sandbox:

- `~/Library/Application Support/VoiceMemo/recordings/` (filename: `<uuid>.<ext>`)

### 5. Generate minutes
### 6. Generate minutes

After a recording completes, the latest task appears in the pipeline UI. Trigger the steps manually:
- Transcode → Upload → Create Task → Refresh Status
- View Result → Export Markdown

### 6. Import audio (optional)
### 7. Import audio (optional)

Use the sidebar action **Import Audio** to create a meeting task from an existing audio file, then run the same pipeline steps as above.

Expand Down Expand Up @@ -161,6 +170,7 @@ Ensure you configure **Signing & Capabilities** with your Development Team to ru
- [x] Manual pipeline UI (transcode/upload/create/poll)
- [x] MySQL storage backend with local-to-remote sync
- [x] Unified error handling for ASR services
- [x] Email notifications for meeting summaries

### Planned
- [ ] Speaker diarization (cloud-based)
Expand Down
16 changes: 13 additions & 3 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ English version: [README.md](README.md)
- **隐私优先**:所有处理均在本地完成,具有清晰的权限管理机制。
- **会议纪要(多供应商 ASR)**:支持 **阿里云听悟** 和 **火山引擎** (字节跳动) 进行音频转写和结构化纪要生成(摘要 / 要点 / 待办),并支持导出 Markdown。
- **存储(SQLite/MySQL)**:历史记录可保存到本地或 MySQL,并支持本地同步到 MySQL。
- **邮件通知**:支持通过配置网关将会议纪要直接发送到指定邮箱。

## 更新日志

Expand Down Expand Up @@ -108,7 +109,15 @@ open VoiceMemo.app
- **阿里云听悟**:AppKey(需配合 AK/SK)
- **火山引擎**:AppId、AccessToken、Cluster ID(V3 BigModel 接口,支持说话人自动分离)

### 4. 音频输出
### 4. 配置邮件通知(可选)

在 **设置 > Email** 中,您可以开启邮件通知功能,以便接收会议纪要:

- **网关地址 (Gateway URL)**:邮件发送服务的接口地址(如 FastMail 网关)。
- **API Token**:网关的认证令牌。
- **接收人 (Recipient)**:接收纪要的电子邮箱地址。

### 5. 音频输出

录制输出将保存至:

Expand All @@ -124,13 +133,13 @@ open VoiceMemo.app

- `~/Library/Application Support/VoiceMemo/recordings/`(文件名:`<uuid>.<ext>`)

### 5. 生成会议纪要
### 6. 生成会议纪要

录音完成后,界面会出现最新任务的流水线节点,按顺序手动触发:
- 转码 → 上传 → 创建任务 → 刷新状态
- 查看结果 → 导出 Markdown

### 6. 导入音频(可选)
### 7. 导入音频(可选)

使用左侧栏的 **Import Audio** 从已有音频文件创建任务,然后按上述相同步骤运行流水线。

Expand Down Expand Up @@ -160,6 +169,7 @@ xed VoiceMemo.xcodeproj
- [x] 手动触发流水线 UI(转码/上传/创建/轮询)
- [x] MySQL 存储后端,支持本地同步到远程
- [x] ASR 服务统一错误处理
- [x] 邮件通知功能(支持发送会议纪要)

### 计划中
- [ ] 实时转写 UI 界面
Expand Down
15 changes: 12 additions & 3 deletions Sources/VoiceMemo/Views/ResultView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ struct ResultView: View {

Spacer()

if settings.enableEmailNotification && task.status == .completed {
if settings.enableEmailNotification {
let isCompleted = task.status == .completed
Button(action: {
Task { await sendEmail() }
}) {
Expand All @@ -59,8 +60,16 @@ struct ResultView: View {
Text(emailStatus ?? "Email")
}
}
.disabled(isSendingEmail)
.help("Send meeting summary via email")
.disabled(isSendingEmail || !isCompleted)
.help({
if isCompleted {
return "Send meeting summary via email"
}
if task.status == .failed {
return "Pipeline failed — email can only be sent after completion"
}
return "Please wait for the pipeline to complete"
}())
}

Button(action: exportMarkdown) {
Expand Down
1 change: 1 addition & 0 deletions doc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@ See [01-architecture-overview.md](01-architecture-overview.md) for detailed arch
- 06-testing.md
- 08-import-guide.md
- 09-security-and-audit.md
- 10-email-notification.md
1 change: 1 addition & 0 deletions doc/README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@ VoiceMemo 采用**多提供商 ASR 架构**,通过 `TranscriptionService` 协
- 06-testing.zh-CN.md
- 08-import-guide.zh-CN.md
- 09-security-and-audit.zh-CN.md
- 10-email-notification.zh-CN.md