feat(sync): 添加同步状态面板和历史功能

- 创建同步状态面板视图,显示已发布文章列表和快速操作按钮
- 添加同步历史弹窗,记录和展示同步操作记录
- 在侧边栏添加同步图标,支持快速打开面板
- 更新国际化文件,添加中英文同步相关文案
- 编写详细的使用指南文档,说明所有功能使用方法
- 更新插件主程序,注册新命令和视图
This commit is contained in:
2026-04-26 18:34:29 +08:00
parent b72f36926a
commit 9b4530555f
17 changed files with 1358 additions and 67 deletions
+93
View File
@@ -0,0 +1,93 @@
# 同步状态面板功能规格说明
## Why
当前插件的功能分散在多个命令中,用户难以直观地了解:
1. 哪些文章已发布到 Halo
2. 文章的同步状态如何
3. 最近的操作历史和结果
需要一个集中的状态管理面板,让用户一眼就能看到所有同步状态。
## What Changes
- 新增**同步状态面板**:在 Obsidian 侧边栏显示已发布文章列表及状态
- 显示文章同步时间戳、发布状态、本地/Halo 版本差异
- 支持快速操作:更新、拉取、删除
- 新增使用指南文档
## Impact
- Affected specs:
- 状态管理和日志
- 命令面板增强
- Affected code:
- 新增 `src/commands/sync-status-panel.ts`:侧边栏面板
- 新增 `src/modals/sync-history-modal.ts`:同步历史弹窗
- 修改 `src/main.ts`:注册面板命令
- 新增 `docs/usage-guide.md`:使用指南
## ADDED Requirements
### Requirement: 同步状态面板
系统 SHALL 提供一个侧边栏面板,显示已发布到 Halo 的文章列表及其状态。
#### Scenario: 打开面板
- **WHEN** 用户执行"打开同步状态面板"命令
- **THEN** 在侧边栏显示面板,包含已发布文章列表
#### Scenario: 显示文章状态
- **WHEN** 面板加载时
- **THEN** 显示所有已发布文章的:标题、slug、发布状态、同步时间
#### Scenario: 快速操作
- **WHEN** 用户点击文章的操作按钮
- **THEN** 可以快速执行:更新、拉取、删除操作
#### Scenario: 同步历史
- **WHEN** 用户点击"同步历史"按钮
- **THEN** 显示最近的操作记录
### Requirement: 使用指南
系统 SHALL 提供一份详细的使用指南,说明所有功能的位置和使用方法。
## MODIFIED Requirements
## REMOVED Requirements
---
## 技术实现细节
### Obsidian 面板 API
```typescript
// 创建侧边栏面板
this.addRibbonIcon("sync-icon", "同步状态", (evt) => {
this.openSyncStatusPanel();
});
```
### 扫描已发布文章
通过扫描 Vault 中的所有文件,查找 frontmatter 中包含 `halo.name` 的文件。
### 状态图标
- ✅ 已同步(本地和 Halo 版本一致)
- ⏳ 待同步(本地有更新)
- ⚠️ 有冲突(两边都有更新)
---
## 实现优先级
1. 同步状态面板(核心 UI
2. 同步历史记录(辅助功能)
3. 使用指南文档(用户教育)