在一个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. 可以输入密码在网页版里查看内容,也就是可以在移动端查看