在一个TiddlyWiki里同时放公开内容和隐私内容

林一二2020年06月25日 16:22

我希望 TiddlyWiki 能像 Notion 一样,既可以当自己的 Todo 管理工具、人际关系和想法整理器,又可以把一些想法、文章直接公开发布。

这应该要通过 Tiddler 级别的加密来实现,但是直接用密码加密 Tiddler 的简单方案不好用:

  1. 加密之后上传 diff 不好看(这个可以容忍,毕竟我也几乎不会去看 diff)
  2. 不能记住密码和浏览器,每次加解密都要重新输入密码(太麻烦了)
  3. 不能在保存前自动加密该加密的Tiddler(如果忘了手动点加密按钮就会把隐私公开了)

但是它的解决方案天生就有缺陷:

如果保存前自动加密了,则加密后的 Tiddler 无法搜索,也没法直接看到内容,还得先点解密按钮才能看到内容。



SyncAdaptor方案

  1. 打了 APrivateContent 标签的笔记,在输入过密码的浏览器上总是可见状态
  2. 保存到文件系统上时是加密状态(所以可能只能在 NodeJS 版的 Wiki 上做到这一点)
  3. 浏览器打开编译好的 HTML 时,一开始都是加密状态,然后如果浏览器有记住密码,则自动在启动时解密

所以需要在连接到 NodeJS 服务器的浏览器上,接触到 SyncAdaptor,在几个钩子上做加解密(需要 SyncAdaptor 支持钩子或者中间件才行):

  1. 在输入过密码的浏览器上,创建的一个新的 Tiddler,在保存时加密
  2. 当一个新的 Tiddler 同步到浏览器上时,解密

缺点是

  1. 需要倒腾复杂的 SyncAdaptor
  2. 加密后的内容 diff 记录不好看
  3. 加密后体积变大
  4. 所有内容都会打包到公开的 HTML 里,包括加密后的乱码

优点是

  1. 可以输入密码在网页版里查看内容,也就是可以在移动端查看
Code
我希望 TiddlyWiki 能像 Notion 一样,既可以当自己的 Todo 管理工具、人际关系和想法整理器,又可以把一些想法、文章直接公开发布。

这应该要通过 Tiddler 级别的加密来实现,但是直接用密码加密 Tiddler 的简单方案不好用:

<<reuse-tiddler "TW5-EncryptTiddlerPlugin的缺点">>

---

<<reuse-tiddler "$:/plugins/linonetwo/private-tiddlers-in-private-repo/explaination-zh">>

---

<<reuse-tiddler "在一个TiddlyWiki里同时放公开内容和隐私内容/SyncAdaptor方案">>