feat(halo): 添加图片自动上传功能

- 新增图片处理工具模块 `src/utils/image.ts`,包含图片引用提取、绝对路径解析和路径替换功能
- 新增图片上传服务 `src/service/image-uploader.ts`,支持调用 Halo 媒体 API 上传图片并实现缓存机制
- 在设置界面添加图片上传开关和上传路径配置项
- 更新发布流程,在提交到 Halo 前自动检测并上传本地图片,替换为远程 URL
- 添加英文、简体中文和繁体中文的国际化文案
- 更新插件版本至 1.1.1 并完善相关配置文件
This commit is contained in:
2026-04-26 16:11:11 +08:00
commit 7d332d3b8c
213 changed files with 128271 additions and 0 deletions
@@ -0,0 +1,141 @@
# obsidian-halo 插件功能增强计划
## 当前功能分析
当前插件已实现:
- ✅ 发布文档到 Halo
- ✅ 从 Halo 拉取文档
- ✅ 更新已发布文章内容
- ✅ 多站点管理
- ✅ Frontmatter 元数据同步(标题、摘要、分类、标签、封面)
---
## 功能增强方向
### 1. 图片/附件上传(TODO 清单已标注)
**优先级:高 | 难度:中**
- [ ] 自动检测并上传笔记中的图片到 Halo 媒体库
- [ ] 支持粘贴截图自动上传
- [ ] 转换本地图片路径为 Halo URL
- [ ] 附件管理(支持其他文件类型)
### 2. 批量操作功能
**优先级:高 | 难度:中**
- [ ] 批量发布:选择多个笔记一次性发布
- [ ] 批量同步:检测所有已发布笔记的更新状态
- [ ] 批量管理:统一管理 Halo 上的文章列表
### 3. 双向同步增强
**优先级:高 | 难度:高**
- [ ] 差异检测:比较本地和 Halo 版本的修改时间
- [ ] 选择性同步:仅同步本地/仅同步 Halo/完全合并
- [ ] 冲突解决:处理两边同时修改的情况
- [ ] 同步历史:记录每次同步的详情
### 4. 高级发布选项
**优先级:中 | 难度:中**
- [ ] 自定义 Slug 格式(支持模板变量:`{{title}}`, `{{date}}`
- [ ] 发布时间调度(定时发布)
- [ ] SEO 元数据设置(meta description、keywords
- [ ] 文章属性控制(评论开关、置顶、优先级、可见性)
### 5. 内容预览
**优先级:中 | 难度:中**
- [ ] 发布前预览 Halo 渲染效果
- [ ] 预览不同主题下的样式
- [ ] 实时预览面板
### 6. 状态管理和日志
**优先级:中 | 难度:中**
- [ ] 插件面板:显示所有同步状态
- [ ] 同步历史记录
- [ ] 错误日志和告警
- [ ] 同步状态图标(同步中、已同步、有冲突)
### 7. 搜索和过滤
**优先级:低 | 难度:中**
- [ ] 按分类/标签筛选 Halo 文章列表
- [ ] 搜索已发布文章
- [ ] 高级筛选条件(日期范围、发布状态)
### 8. 模板支持
**优先级:低 | 难度:中**
- [ ] 发布模板:预定义 frontmatter 结构
- [ ] 快捷键自定义默认值
- [ ] 模板变量支持
### 9. 命令面板增强
**优先级:低 | 难度:低**
- [ ] 键盘快捷键支持
- [ ] 快速切换站点
- [ ] 快捷操作菜单
### 10. 用户界面优化
**优先级:低 | 难度:中**
- [ ] 进度条显示
- [ ] 更详细的错误提示
- [ ] 通知中心整合
- [ ] 右键菜单支持
---
## 推荐优先级(建议优先实现)
1. **图片/附件上传** - 核心功能缺失,影响使用体验
2. **批量操作** - 提升工作效率
3. **高级发布选项** - 增加灵活性
4. **状态管理和日志** - 问题排查和监控
5. **双向同步增强** - 高级用户需求
---
## 技术实现要点
### 图片上传实现思路
```typescript
// 1. 解析 Markdown 中的图片引用
// 2. 上传到 Halo 媒体库获取 URL
// 3. 替换本地路径为远程 URL
// Halo 媒体上传 API 端点
POST /apis/api.console.halo.run/v1alpha1/attachments/upload
```
### 批量操作实现思路
```typescript
// 1. 创建批量选择界面
// 2. 批量处理队列
// 3. 进度显示和错误处理
```
### 同步检测实现思路
```typescript
// 1. 保存本地最后同步时间戳
// 2. 对比 Halo 文章的更新时间
// 3. 标记需要更新的文章
```
---
## 开发建议
1. **模块化开发**:新增功能独立成模块
2. **配置化**:新功能支持在设置中开关
3. **国际化**:所有文案支持 i18n
4. **错误处理**:完善异常捕获和用户提示
5. **测试**:添加单元测试和集成测试
---
请确认需要实现哪些功能,我将制定详细的技术方案。