Vault WIP

unlisted

by y1chu

Warns you before you start editing when another device still has uncommitted Git changes in the same vault.

Updated todayApache-2.0
View on GitHub

Vault WIP

Obsidian 桌面插件。多台设备交替使用同一个笔记仓库时,在下笔之前提示其他设备上仍有未提交的改动。

English

本插件不能单独工作。 它需要一个中继服务端,见 WIP Relay。插件负责采集本机状态与发出提示,跨设备的转达由中继完成。

[!NOTE] 本项目由 AI 实现,人类提供思路、需求与判断。范围界定、取舍与验收标准由人类决定;代码、文档与测试由 AI 撰写。

它解决什么问题

一个笔记仓库往往不止在一台机器上使用。若两台机器交替使用而不同时开机,真正的风险并非同时编辑,而是这样一串顺序:

  1. 机器甲上留下未提交的改动,随即关机离开。
  2. 机器乙继续撰写,提交并推送。
  3. 回到机器甲,再次拉取时冲突已经就绪。

版本控制只在这一刻才提示冲突,而损失已经造成。Vault WIP 把这句提示提前:它记录各台设备工作区里的未提交状态,在打开文件、保存、切换窗口时告知使用者——对端是否仍有未提交的改动,以及涉及哪些文件。

它还可以按设置代为查询远端:本机与远端各有哪些提交尚未合到一起,好在拉取之前先有数。这一步同样只读,结果只显示在本机。

它不做什么

  • 不上传笔记内容。设备之间交换的是文件路径与状态摘要,不是正文。
  • 不执行任何 git 写操作。采集只读取仓库状态,不提交、不拉取、不推送、不切换分支。
  • 不替代 Obsidian Git 或任何同步工具。git-diff-sync、mob 一类工具把未提交的改动搬到另一台机器;本插件不做搬运,只告知状态。
  • 不做移动端。只覆盖 Windows、macOS 与 Linux 桌面端。

安全性

设备身份由本机生成的密钥对确定,内容密钥只在使用者的设备之间流转。中继服务端只负责搬运,不掌握密钥,也无法读取状态明细。

开始使用

需要 Obsidian 桌面版,以及一台可以常开的机器来运行中继(局域网内的机器也可以)。

  1. 在中继机器上运行 wip-relay init 与 wip-relay serve。init 会写下配置样例与一枚注册凭证,凭证只显示一次。详见 WIP Relay 的服务端说明。
  2. 构建插件,把 main.js、manifest.json 与 styles.css 放进笔记仓库的 .obsidian/plugins/vault-wip/,再在 Obsidian 里启用。详见插件说明。
  3. 在插件设置页填好中继地址与注册凭证并注册;同一仓库的其他设备用同一个仓库别名注册;随后按状态视图「安全」一栏的提示,把内容密钥交给这些设备。

插件的发布页提供三个文件与校验文件;服务端二进制在 WIP Relay 的发布页。

版本与兼容

插件与中继按记录格式配对。0.2.0 起记录格式为 v2,与 0.1.0 不兼容,两端须同时升级。中继不解析记录内容,但参与记录签名校验,因此格式变更时中继也要跟着升。

0.3.0 起注册分为创建频道与加入频道:加入须出示频道标识与令牌,旧版客户端不能混用。

文档

  • 设计说明:要解决的问题、核心判断与取舍
  • 插件说明:采集方式、上报节奏、提醒规则与界面
  • 测试说明:测试分层、持续集成与覆盖率要求

协议与服务端说明位于 WIP Relay 仓库:协议、服务端。

许可

以 Apache License 2.0 发布,全文见 LICENSE。可以自由使用、修改与再分发,包括商用;再分发时须随附许可全文,改过的文件要注明改动。软件按现状提供,不附带任何担保。

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.