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
+112
View File
@@ -0,0 +1,112 @@
{
"recentFiles": [
{
"basename": "Git团队协作指南(精简版)",
"path": "博客/Git团队协作指南(精简版).md"
},
{
"basename": "CLI在AI时代的浴火重生",
"path": "博客/CLI在AI时代的浴火重生.md"
},
{
"basename": "halo",
"path": "copilot/copilot-custom-prompts/halo.md"
},
{
"basename": "Drawing 2026-04-25 21.16.49.excalidraw",
"path": "Excalidraw/Drawing 2026-04-25 21.16.49.excalidraw.md"
},
{
"basename": "DeepSeek-V4全面解析",
"path": "博客/DeepSeek-V4全面解析.md"
},
{
"basename": "深入解析 Claude CodeVibe Coding 时代的 AI 编程利器",
"path": "博客/深入解析 Claude CodeVibe Coding 时代的 AI 编程利器.md"
},
{
"basename": "视觉语言模型技术综述",
"path": "博客/视觉语言模型技术综述.md"
},
{
"basename": "大数据技术栈",
"path": "博客/大数据技术栈.md"
},
{
"basename": "小组会议",
"path": "小组会议/26.04.04/小组会议.md"
},
{
"basename": "Pasted image 20260321185646",
"path": "小组会议/26.03.21/Pasted image 20260321185646.png"
},
{
"basename": "小组会议",
"path": "小组会议/26.03.21/小组会议.md"
},
{
"basename": "小组会议",
"path": "小组会议/26.02.28/小组会议.md"
},
{
"basename": "王宇晗",
"path": "小组会议/25.10.26/小组成员基本信息/小组成员信息/王宇晗.md"
},
{
"basename": "彭依萍",
"path": "小组会议/25.10.26/小组成员基本信息/小组成员信息/彭依萍.md"
},
{
"basename": "图灵院大项目要求 ",
"path": "其他/大项目/图灵院大项目要求 .pdf"
},
{
"basename": "数据结构",
"path": "其他/大项目/数据结构.pdf"
},
{
"basename": "赵帅尧",
"path": "小组会议/25.10.26/小组成员基本信息/小组成员信息/赵帅尧.md"
},
{
"basename": "职位安排",
"path": "小组会议/25.10.26/小组成员基本信息/职位安排.md"
},
{
"basename": "李俊杰",
"path": "小组会议/25.10.26/小组成员基本信息/小组成员信息/李俊杰.md"
},
{
"basename": "小组会议",
"path": "小组会议/26.02.06/小组会议.md"
},
{
"basename": "小组会议",
"path": "小组会议/26.02.05/小组会议.md"
},
{
"basename": "Gitee团队协作开发完整实操流程",
"path": "小组会议/26.01.28/Gitee团队协作开发完整实操流程.md"
},
{
"basename": "260123组长会议-二次项目启动",
"path": "小组会议/26.01.24/260123组长会议-二次项目启动.md"
},
{
"basename": "260126组长会议-项目管控要求",
"path": "小组会议/26.01.27/260126组长会议-项目管控要求.pdf"
},
{
"basename": "260126组长会议-项目管控要求",
"path": "小组会议/26.01.27/260126组长会议-项目管控要求.mp4"
},
{
"basename": "小组会议-项目资料整理及后续安排",
"path": "小组会议/25.11.29/小组会议-项目资料整理及后续安排.md"
}
],
"omittedPaths": [],
"omittedTags": [],
"updateOn": "file-open",
"omitBookmarks": false
}
@@ -0,0 +1,52 @@
{
"recentFiles": [
{
"basename": "赵帅尧",
"path": "小组会议/25.10.26/小组成员基本信息/小组成员信息/赵帅尧.md"
},
{
"basename": "小组会议",
"path": "小组会议/26.02.28/小组会议.md"
},
{
"basename": "职位安排",
"path": "小组会议/25.10.26/小组成员基本信息/职位安排.md"
},
{
"basename": "李俊杰",
"path": "小组会议/25.10.26/小组成员基本信息/小组成员信息/李俊杰.md"
},
{
"basename": "小组会议",
"path": "小组会议/26.02.06/小组会议.md"
},
{
"basename": "小组会议",
"path": "小组会议/26.02.05/小组会议.md"
},
{
"basename": "Gitee团队协作开发完整实操流程",
"path": "小组会议/26.01.28/Gitee团队协作开发完整实操流程.md"
},
{
"basename": "260123组长会议-二次项目启动",
"path": "小组会议/26.01.24/260123组长会议-二次项目启动.md"
},
{
"basename": "260126组长会议-项目管控要求",
"path": "小组会议/26.01.27/260126组长会议-项目管控要求.pdf"
},
{
"basename": "260126组长会议-项目管控要求",
"path": "小组会议/26.01.27/260126组长会议-项目管控要求.mp4"
},
{
"basename": "小组会议-项目资料整理及后续安排",
"path": "小组会议/25.11.29/小组会议-项目资料整理及后续安排.md"
}
],
"omittedPaths": [],
"omittedTags": [],
"updateOn": "file-open",
"omitBookmarks": false
}
File diff suppressed because one or more lines are too long
+16
View File
@@ -0,0 +1,16 @@
{
"id": "recent-files-obsidian",
"name": "Recent Files",
"version": "1.7.4",
"minAppVersion": "0.16.3",
"description": "List files by most recently opened",
"author": "Tony Grosinger",
"authorUrl": "https://grosinger.net",
"isDesktopOnly": false,
"fundingUrl": {
"Github Sponsor": "https://github.com/sponsors/tgrosinger",
"Buy me a Coffee": "https://buymeacoffee.com/tgrosinger",
"Paypal": "https://paypal.me/tgrosinger"
},
"donation": "https://buymeacoffee.com/tgrosinger"
}
+34
View File
@@ -0,0 +1,34 @@
.recent-files-file {
.tree-item-spacer {
flex-grow: 1;
}
}
.recent-files-title {
justify-content: flex-start;
align-items: unset;
}
.recent-files-file-delete {
justify-content: right;
display: none;
}
.recent-files-title:hover .recent-files-file-delete {
display: flex;
cursor: var(--cursor);
}
.recent-files-file-delete:hover {
color: var(--nav-item-color-hover);
}
.recent-files-donation {
width: 70%;
margin: 0 auto;
text-align: center;
}
.recent-files-donate-button {
margin: 10px;
}