描述你的建议
功能需求概述
当前 NoteGen 在使用 Git / Gitea 等作为同步后端时,文章(Markdown)同步是以单篇为粒度的:
- 需要在文章底部点击同步按钮,或者
- 依赖自动同步在编辑后逐篇上传
对于已经存在于本地工作区里的大量 Markdown 文件,想要「第一次全部上传到远程同步仓库」时,需要一篇一篇手动触发同步,操作成本比较高。
希望增加一个「一键上传当前工作区所有笔记到远程 Git 仓库」的功能,用于首次迁移 / 批量补齐远程数据。
当前行为(Current Behavior)
以 Gitea 为例(其他 Git 平台逻辑类似):
- 已设置工作区目录后,NoteGen 能正确显示该目录下的 Markdown 文件列表。
- 已在设置中配置:
primaryBackupMethod = gitea
- Gitea 实例地址、Access Token、自定义同步仓库名等,并通过了仓库检测。
- 使用 NoteGen 的同步功能时:
- 标题栏的「上传全部」可以一次性上传:
- 标签(
.data/tags.json)
- 记录 / 聊天数据
- 配置(
.settings/store.json 或 .data/settings.json)
- 但文章正文的同步逻辑在
core/article/custom-footer/sync.tsx 中是「按当前 activeFilePath 同步」:
- 需要单篇打开文章并触发同步,才会将对应的 Markdown 文件上传到远程仓库。
- 没有一个入口可以对当前工作区里所有文章批量执行这个同步逻辑。
结果是:
- 即使工作区里已经有很多本地 Markdown 文件,它们也不会自动出现在远程同步仓库中;
- 用户需要逐篇打开并同步,或者手动触发自动同步,才能把这些文件一点点推到远端。
期望行为(Expected Behavior)
希望增加一个批量文章同步能力,例如:
- 在标题栏同步菜单或设置页面中增加一个按钮:
- 功能行为:
- 扫描当前工作区下符合 NoteGen 识别规则的所有 Markdown 文件(例如与记录关联的
activeFilePath 列表,或工作区内的 .md 文件)。
- 根据当前
primaryBackupMethod(Github/Gitee/Gitlab/Gitea):
- 对每个文件复用现有的单篇同步逻辑:
- 如果远程不存在,则创建新文件;
- 如果远程存在,则根据
sha 进行更新。
- 允许在批量同步过程中展示进度 / 简单结果(成功/失败数量)。
这样可以方便用户在以下场景中使用:
- 首次将本地已有大量 Markdown 笔记迁移到 NoteGen + Git 同步体系下;
- 在更换同步仓库 / 重置远程仓库后,需要重新推送本地全部内容。
可能的实现思路(Suggestions)
仅作为参考,具体以项目设计为准:
- 复用
core/article/custom-footer/sync.tsx 中单篇同步的实现:
- 对多个
activeFilePath 进行循环调用;
- 或者在工作区层面构建一份需要同步的本地文件列表。
- 根据现有的
primaryBackupMethod 自动选择对应的上传函数:
- GitHub:
uploadGithubFile
- Gitee:
uploadGiteeFile
- Gitlab:
uploadGitlabFile
- Gitea:
uploadGiteaFile
- 可以增加一些保护选项,例如:
- 只上传当前工作区中「已在 NoteGen 中存在记录」的文件;
- 允许用户选择「仅上传新增文件」或「全部覆盖(按 sha 更新)」;
- 批量同步时限制并发数,避免一次性 API 请求过多。
环境信息(Environment)
- 平台:macOS
- 同步后端:Gitea(自建实例)
- NoteGen:本地构建的桌面端(Tauri)
- 已开启工作区功能,文件在客户端列表中可以正常显示
描述你的建议
功能需求概述
当前 NoteGen 在使用 Git / Gitea 等作为同步后端时,文章(Markdown)同步是以单篇为粒度的:
对于已经存在于本地工作区里的大量 Markdown 文件,想要「第一次全部上传到远程同步仓库」时,需要一篇一篇手动触发同步,操作成本比较高。
希望增加一个「一键上传当前工作区所有笔记到远程 Git 仓库」的功能,用于首次迁移 / 批量补齐远程数据。
当前行为(Current Behavior)
以 Gitea 为例(其他 Git 平台逻辑类似):
primaryBackupMethod = gitea.data/tags.json).settings/store.json或.data/settings.json)core/article/custom-footer/sync.tsx中是「按当前activeFilePath同步」:结果是:
期望行为(Expected Behavior)
希望增加一个批量文章同步能力,例如:
activeFilePath列表,或工作区内的.md文件)。primaryBackupMethod(Github/Gitee/Gitlab/Gitea):sha进行更新。这样可以方便用户在以下场景中使用:
可能的实现思路(Suggestions)
仅作为参考,具体以项目设计为准:
core/article/custom-footer/sync.tsx中单篇同步的实现:activeFilePath进行循环调用;primaryBackupMethod自动选择对应的上传函数:uploadGithubFileuploadGiteeFileuploadGitlabFileuploadGiteaFile环境信息(Environment)