# 同步状态面板功能规格说明

## 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. 使用指南文档（用户教育）