Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/git-sync-experience.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"dsh-mnemon": patch
---

Git sync reads in the order it is set up: connect a repository through a GitHub sign-in or by its address, then sync, automatic sync, backup history and the advanced choices. Advanced names this computer by its host name or a custom name, as backup history shows it. Sync now merges the repository and pushes in one step, Check remote shows what a sync would change before anything is written, a failure is said in the page's language with the way to fix it, and a public repository asks before it is used. Switching to another repository, or syncing after the remote branch was deleted, no longer publishes earlier payloads there; a saved token no longer follows the repository to another host; a push raced by another machine is merged and retried once; an abandoned sync lock no longer blocks every later sync; a blank commit author falls back to the channel identity on a machine without one; and the mirror initializes on Git 2.20 through 2.27 again.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ Start with the [plugin author guide](https://github.com/omdsh-dev/dsh-mnemon/blo

- Runtime memory and Project Documents are local files; Mnemon Native is local. Third-party Providers use their own services and scopes.
- Turning a component off does not erase its memory, and changing the storage location does not move data. Use ZIP backup to carry it.
- Git sync publishes the same Mnemon Pack payload to a repository you own, as readable files, so another machine can pull it. Sign in with GitHub, pick one of your repositories or create a new one; the token field stays optional. Push and pull both ask for confirmation first, and both are refused where `writeEnabled` is false. **Automatic backup** offers an interval (off, or hours to a week), saved as soon as it is chosen: the background then repeats that same confirmed push, reading the remote branch into this machine on the way, and every push folds the mirror's loose objects into one pack so a clone stays small. **Backups** opens a dialog: the branch history on top, named by the manifest each commit carries — time, machine, components — and the memory difference below it, which **Check remote** opens as well. The difference falls into three kinds: one subject written twice (the only kind that needs **Ask AI to reconcile**, which arrives as a pending proposal to **Approve** and then **Apply**, or to annotate with an opinion first; a rejected plan has to be **reopened** before your words reach the next run), only remotely (with no conflict they are simply **added**), and only here (a push shares them). Reconciliation takes your own words as guidance, shows the branch entries this machine does not have, and an accepted plan is applied operation by operation, so you can take part of it.
- Git sync publishes the same Mnemon Pack payload to a repository you own, as readable files, so another machine can pull it. Connect a repository by signing in with GitHub (search, pick or create a private one; a public one asks first) or by its address, with a token field only for HTTPS. **Sync now** merges the repository into this machine and pushes the result, **Check remote** shows what a sync would change before anything is written, and **Automatic sync** repeats the same sync at an interval from an hour to a week. When the repository cannot be read, the row says why (credentials, not found, network or timeout) and how to fix it, and **Backup history** lists every machine's versions by time and computer. Both directions are refused where `writeEnabled` is false. Two machines that wrote one subject differently keep both wordings until **Reconcile** under **Memory reconciliation** proposes a plan, which arrives as a pending proposal to **Accept** and then **Apply**, or to annotate with an opinion first; a rejected plan has to be **reopened** before your words reach the next run. Reconciliation takes your own words as guidance, and an accepted plan is applied operation by operation, so you can take part of it.
- Saved Provider credentials stay on the Host and are never exported. Backups still contain private memory; protect them.
- Sources and Strategies are trusted in-process JavaScript, not sandboxed code. Remembered history never outranks current instructions.

Expand Down
2 changes: 1 addition & 1 deletion README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ Starter 固定一组经过测试、各自独立版本的包。同一时间只运

- 运行时记忆与项目档案是本地文件,Mnemon Native 也在本地;第三方 Provider 使用各自的服务与作用域。
- 关闭组件不会删除其中的记忆,更换存储位置也不会搬移数据;需要迁移时使用 ZIP 备份。
- Git 同步把同一份 Mnemon Pack 载荷以可读文件发布到你自己的仓库,另一台机器可以拉取。用 GitHub 登录后可从已有仓库中选择或新建一个;token 字段保留为选填。push 与 pull 都会先要求确认;`writeEnabled=false` 时两个方向都会被拒绝。**自动备份**可以选择间隔(关闭,或数小时到一周),选择即保存:后台随后重复同一条已确认的 push,途中会把远端分支读进本机;每次推送都会把镜像的零散对象收进一个 pack,让 clone 保持小体积。**备份历史**打开一个弹窗:上半按每次备份携带的 manifest 列出分支历史——时间、机器、组件——下半是逐条记忆差异,**检查远端**打开的是同一个弹窗。差异分成三类:同一主题两边写法不同(只有这类需要**让 AI 整理**,方案先以待审查建议出现,可以**满意,通过**后**采纳并执行**,也可以留下意见——已拒绝的方案要先**重新打开**,你的意见才会进入下一次整理)、只在远端(没有冲突时**直接新增**即可)、只在本机(推送后即可共享)。整理记忆可以填写你的要求,并会看到分支持有而本机没有的条目;已接受的方案可以逐条勾选执行,因此可以只采纳其中一部分。
- Git 同步把同一份 Mnemon Pack 载荷以可读文件发布到你自己的仓库,另一台机器可以拉取。可以用 GitHub 登录连接仓库(搜索、选择或新建私有仓库,选择公开仓库前会先确认),也可以填写地址,只有 HTTPS 地址才需要访问令牌。**立即同步**先把仓库合并到本机,再推送结果;**检查远端**在写入任何内容之前说明一次同步会带来什么;**自动同步**按一小时到一周的间隔重复同样的同步。读不到仓库时,这一行会说明原因(凭据、找不到、网络或超时)以及如何修正;**备份历史**按时间与设备列出每台机器的版本。`writeEnabled=false` 时两个方向都会被拒绝。两台设备对同一主题写法不同时,两种写法都会保留,直到**记忆整理**里的**整理记忆**给出方案;方案以待审查建议出现,可以**接受**后**执行**,也可以先留下意见——已拒绝的方案要先**重新打开**,你的意见才会进入下一次整理。整理记忆可以填写你的要求,已接受的方案可以逐条勾选执行,因此可以只采纳其中一部分。
- 已保存的 Provider 凭据只留在宿主上,不会被导出;但备份仍包含私有记忆,请妥善保护。
- Source 与 Strategy 是受信任的进程内 JavaScript,**不是沙箱代码**;历史记忆永远不会凌驾于当前指令之上。

Expand Down
Loading
Loading