Skip to content

同步与存储

Noust 优先保障数据主权。您的笔记属于您自己,并且由您决定它们的去向。

导出与导入

以标准格式带走您的数据。

  • 导出:生成一个 .npad 二进制包,其中包含所有笔记、分区、设置和环境变量。该格式经过高度优化,支持嵌入式二进制资源(如图片)。我们建议在导出过程中对文件进行加密,以确保最大安全性。
  • 导入:从以前导出的 .npad 或旧版 .json 文件恢复您的工作区。
  • 注意:导入操作将覆盖您当前活跃的会话。

存储架构

Noust 采用分层的高性能方式来进行本地持久化存储,以确保最大的可靠性和数据主权。

  1. 主引擎 (IndexedDB):我们的核心本地数据库。工作区存储在相互隔离的分区中 (workspace_{id}),支持大型数据集与二进制大对象 (blobs),同时支持本地加密 (静态加密 - At-Rest)
  2. 原生后台持续自动保存 (Auto-Save):数据持久化在后台全自动且实时运行。笔记、画布布局、Nexus 文档以及设置的所有更改都会异步写入 IndexedDB,不会阻塞主 UI 线程。
  3. 备用存储 (LocalStorage):仅在浏览器阻止访问 IndexedDB 时作为容灾备用。注意:由于存储容量限制,备用模式下不支持本地静态加密。

多工作区分区与跨标签页同步 (Event Storage)

  • 工作区隔离:每个工作区维护其独立的存储分区。切换或删除工作区时,会干净地加载或清理其关联的画布节点、位置快照以及云端工作区元数据,绝不影响其他工作区。
  • 跨标签页同步开关:您可以在 设置 > 行为 中自定义同步行为:
    • 已启用(默认):在一个标签页中所做的修改与切换工作区操作,会通过 Event Storage / BroadcastChannel 实时同步到所有打开的标签页。
    • 已禁用:将每个浏览器标签页转换为独立的会话实例,允许您在不同标签页中同时打开并处理不同的工作区而互不干扰,同时后台自动保存依然会确保所有工作区数据安全写入本地。

云同步

我们的云同步建立在零知识 (Zero-Knowledge) 架构之上。这意味着我们提供存储空间,但我们永远无法查看数据内容。

工作原理

  1. 二进制打包:您的工作区数据和资源被打包进一个 .npad 二进制信封中,以最小化数据占用并消除 Base64 带来的额外开销。
  2. 本地加密:数据在您的浏览器中直接使用 AES-256-GCM 进行加密。
  3. 加密 Blob:只有加密后的“blob”数据块会被发送到我们的服务器。
  4. 密钥留存:密钥(您的密码和可选的 salt 盐值)绝不会离开您的设备。
  5. 解除同步:协作者或所有者可以随时解除共享工作区的同步。这将断开云端链接,同时在您的本地工作区中保留一份完整的私有可编辑副本。

云端工作区操作

  • Sync (原为 "Save"):将本地工作区的更改发送并同步到云端。如果是首次创建新工作区,此操作显示为 Send(或 Sync)。
  • Load:从云端列表中打开并加载工作区到当前活跃会话。
  • Sync (原为 "Auto-Sync"):切换当前活跃工作区的后台自动同步状态。

更新检测与视觉指示器

Noust 会持续验证您的工作区在多台设备间的新鲜度。检测既可以通过手动方式(点击工作区列表中的 Refresh 或打开云同步面板)触发,也会自动运行(例如:重新连接网络、系统从休眠中恢复或长时间静止后重返使用)。

当在云端检测到更新版本的工作区时,Noust 会在 3 个不同的 UI 位置向您发出提醒:

  1. 全局顶部图标:主应用工具栏中的 Sync 图标将显示更新通知标记。
  2. 工作区列表标记我的云端工作区与我共享 中的工作区项旁会出现一个空心指示点。
  3. 云表单提示:活跃的云端工作区管理面板内将出现一个 "Updates Available" 操作按钮。

智能 3-Way 行级合并与冲突保护

当从其他设备拉取更新时,Noust 会对笔记、章节、目标和拓扑元数据执行自动化的 3-Way 行级合并 (3-Way Line Merge)

  • 冲突预防:为防止意外覆盖在其他设备上做出的更改,只要检测到远端更新或未解决的冲突,Noust 会阻止手动的 Sync 操作。您必须先拉取并解决最新的远端更改,才能推送本地更新。
  • 细粒度冲突解决:如果修改在同一行发生碰撞,Noust 会打开一个交互式冲突解决弹窗,允许您逐行选择要保留的版本(本地 vs 云端)。

Auto-Update(付费订阅套餐)

付费订阅套餐用户可使用 Auto-Update 功能,该功能无需打断工作流即可自动完成后台同步:

  • 自动化拉取与合并:当检测到远端更新且不存在结构性冲突时,Noust 会在后台自动下载并合并远端版本。
  • 安全与密码验证:只要开启了 Sync,且您的本地会话已使用与传入云端工作区相同的安全密码解密,Auto-Update 即可无缝运行。
  • 打字静止安全机制:为了防止在您编写内容时发生打字碰撞或光标跳动,Auto-Update 会在应用后台合并前等待一段短暂的编辑器打字静止期。
  • 无干扰通知:当后台自动更新成功完成时,系统会弹出简洁的提示通知。
  • 冲突阻断安全降级:如果在自动更新过程中发生无法解决的结构性合并冲突,Noust 会安全地暂停自动合并以保护您的数据,在工作区上标记更新提示,并引导您手动解决冲突。

视觉提示

全局标题栏中会出现图标,表示当前活动工作区已同步到云端。 当云图标被填充时,表示当前工作区已激活自动更新 (Auto-Update)

解密要求

要从其他设备恢复您的数据,您必须提供:

  • 您的加密密码
  • 您的自定义 salt 盐值(如果已使用)。

重要提示

如果您丢失了密码或 salt 盐值,没有任何机制可以恢复您的数据。我们不存储它们,也无法为您重置。

协作与共享工作区

Noust 允许您与其它用户共享特定的云端工作区。

  • 选择性共享:仅共享您选择的工作区。
  • 发现保护(基于用户名):共享功能被限制为仅能使用精确的用户名进行,防止第三方在 Noust 上枚举您的存在。
  • 协作者角色:每个协作者可以分配以下两种角色之一:
    • 读者 (Reader):可以在只读模式下同步和读取共享工作区。
    • 编辑者 (Editor):可以同步工作区并提交本地更改以供所有者审查。
  • 管理角色和撤销访问:作为工作区所有者,您可以随时更改协作者的角色(读者/编辑者)或完全撤销访问权限。在升级为编辑者时,将通过凭据模态框进行身份验证确认。

协作者更新与所有者审查

编辑者 协作者提交更改时,工作区所有者会在“协作者”面板中收到待处理的更新通知。

  • 待处理更新面板:所有者可以查看有多少更新待处理、谁提交的、大小以及时间戳。
  • 临时审查:点击 审查 会将协作者的更改加载到工作区中进行视觉检查。所有者在做出决定之前可以直接在编辑器中查看合并后的结果。
  • 接受或放弃:审查后,所有者可以:
    • 全部接受:应用并保存合并后的更改到云端工作区。
    • 全部放弃:立即将工作区恢复到原始状态,不应用任何更改,不会丢失任何本地数据。
  • 不审查直接删除:所有者还可以直接在面板中删除待处理的更新,而无需打开它。

冲突处理

如果所有者和协作者编辑了相同的笔记或行,Noust 会自动尝试 3-way line merge。当冲突无法自动解决时,会在文本中显示冲突标记,以便所有者在接受或放弃之前做出明智的决定。

端到端加密共享 (Zero-Knowledge Sharing)

共享工作区保持与个人工作区相同的 Zero-Knowledge 保证。工作区密码通过加密的 E2EE Envelope 交付给协作者——该信封使用协作者的个人 E2EE 公钥密封。

  • 协作者授权与密码要求:在授权协作者时,系统会提示工作区所有者提供该工作区的准确加密密码(及 salt)。浏览器会将这些凭据使用接收者的公钥加密到 E2EE Envelope 中。
  • 信封交付:服务器永远无法访问工作区密码、私钥或明文内容。
  • 凭据验证 (keyVerifier):当编辑者提交更新时,服务器会验证源自工作区密码和 salt 的 SHA-256 哈希值 (keyVerifier)。这可以确保协作者在接受更新之前使用的是与所有者定义的完全相同的密码和 salt。
  • 更新协作者密钥 (Update Keys):如果所有者更改了先前已共享的云工作区的加密密码或 salt,现有协作者将失去访问权限,因为他们的信封是使用旧凭据加密的。所有者可以随时使用 Update Collaborator Keys 按钮(协作者卡片中的钥匙图标或同步面板中的“Update collaborator keys on sync”复选框)重新加密信封并一次性为所有协作者更新 keyVerifier,从而恢复协作者的访问权限。
  • 保管库解锁要求:协作者必须解锁其 E2EE 保管库(位于 个人资料 > 安全 中)才能解密信封并访问共享工作区。

密码学透明度

  • 私有工作区与只读模式(Reader):在绝对零知识(Zero-Knowledge)模式下运行 — 不会向服务器发送或存储任何凭据、哈希或加密线索。
  • 仅针对编辑者的验证:仅当所有者向协作者授予**编辑者(Editor)**权限时,单向 SHA-256 哈希值(密码 + salt)才会作为 keyVerifier 临时记录。它专门用于让服务器验证具有编辑者权限的协作者在提交更改时是否使用了正确的加密凭据(密码和 salt),而服务器绝不会知道您的真实密码。
  • 同步时自动刷新 (Sync):每当所有者同步(Sync / 更新)云端工作区时,仅当该工作区中存在至少一名拥有编辑者(Editor)角色的协作者时,服务器上的 keyVerifier 才会自动更新。
  • 严格生命周期:此哈希值仅在存在活跃编辑者期间与云端工作区保持关联;在撤销编辑者权限或移除协作者时,如果该工作区中不再剩余任何其他活跃编辑者(或从云端删除工作区),keyVerifier立即从服务器中永久清除

安全审计(高级版计划 - Advanced Tier)

高级版用户可以访问透明且注重隐私的审计日志。

  • 访问日志:跟踪您自己的关键事件(登录、数据推送/Push、删除)。
  • 隐私保护:日志仅记录设备系列/操作系统和操作类型,绝不会在面向用户的界面中暴露您的公网 IP 地址。
  • 核验:使用这些日志来监控您的设备是否存在未经授权的访问。

账号管理与删除

Noust 为您的数据提供了一个安全的内容生命周期终结过程。

  • 软删除 (Soft Delete):当您申请删除账号时,系统会立即暂停账号的访问权限,但数据会被保留 30 天的宽限期 以供恢复,之后才会执行不可逆的永久清除。
  • 确认机制:为防止误操作,删除账号需要输入特定格式的字符串进行确认(即 {username}_delete)。
  • 数据主权:30 天后,您的身份信息将被清除,但某些元数据可能会在加密的系统日志中保留最多 6 个月,以用于法律合规(LGPD/GDPR),之后才会彻底永久删除。