01 / Sync
云同步——走任何你已经信任的文件夹
- ·天生多云——支持 iCloud Drive、Google Drive、Dropbox、OneDrive、Syncthing,任何在硬盘上挂成文件夹的东西都行。不用新建账号、没有 Stashium 自己的服务器、不需要 Apple App Store entitlement。
- ·「设置 → Sync」打开它。选一个文件夹,把别的 Mac 也指过去,剪辑、文件夹、文件本体、og:image 预览就在它们之间流动。
- ·快照 + 按行 LWW 合并——历史不同的两台 Mac 真的能收敛(不是「最后写入的人把所有人覆盖掉」);按行 last-write-wins 比较 updated_at。
- ·稳定的跨设备身份——每条剪辑和文件夹都有一个 128 位的 sync_id,永不复用,所以跨设备 AUTOINCREMENT id 撞车的问题没了。
- ·重装即恢复——换台新 Mac 装上 Stashium、指向你的 sync 文件夹,stash 会从最新的 peer 快照里物化出来。
- ·冲突日志——两台 Mac 在同一个间隔内编辑了同一条剪辑时,输的那个版本会追加写到 sync_folder/conflicts/{device}-{ts}.jsonl。没有东西会被静默吃掉。
- ·Blob 同步,悄无声息——文件剪辑(截图、拖进来的 PDF、EPUB 之类)和 URL 剪辑的 og:image 预览都做 SHA-256 哈希后复制到 sync_folder/blobs/。peer 设备上的 file_path 和 og_image 会被自动改写指向 blob 文件夹,所以等你的云同步引擎把文件落地到 Mac B 的那一刻,打开剪辑就能用。
- ·垃圾回收——彻底删除一条剪辑时,对应的 blob 会在之后的某个周期里从 sync 文件夹里被清掉(在垃圾桶里、还可恢复的剪辑的 blob 会保留)。
- ·v1 故意不做加密——你的云服务商能读到剪辑内容。这是为了把上手降到「点两下」做的取舍。v2 可能加 E2E。
02 / Sync
同步设置 UI
- ·一键开关,状态条显示下次同步 ETA + 上次同步结果。
- ·原生文件夹选择器,自带 iCloud / Google Drive / Dropbox 的建议路径。
- ·同步间隔选择——1 / 5 / 15 / 30 / 60 分钟(默认 5 分钟)。
- ·可编辑的设备名(其他 peer 会看到)。
- ·手动「立即同步」按钮。
- ·其他设备列表——所有曾经写过这个 sync 文件夹的 Mac 会列出来,带名字和最近活跃时间。
- ·按剪辑诊断(进阶):sync_diagnose 命令把每条剪辑的可同步状态可视化出来——「我的 PDF 怎么不同步」终于有具体答案。
03 / Sync
同步性能优化
- ·DB 没变就跳过快照——上次同步以来没编辑的空闲设备不会再重新上传一份一样的 DB。
- ·Single-flight 周期——疯狂点「立即同步」或者调度器和手动触发撞在一起,都不会再叠加多个 SQLite backup + zstd + 上传任务。
- ·Blob GC 限流——孤儿 blob 清扫从每周期一次改为大约每小时一次(删除本来就是最终一致的)。
- ·哈希缓存——content_hash 和 og_image_hash 算一次就缓存,不再重算。
- ·原子快照写入——先写 .tmp,再原子改名;peer 扫描器会忽略正在写入的文件。
- ·受 MAX_CONCURRENT_FETCHES = 3 限制——Discover 已经用过的机制,同时给并发的 peer 快照合并设上限。
04 / 修复
其他修复
- ·当前视图为空时详情面板还在显示老内容——在 All 视图(现在 = 仅未分类)打开 app 时,列表是空的,但右边详情面板还会渲染上一次选中的剪辑。详情面板现在严格从当前可见列表派生,被中间面板过滤掉的东西在右边也会消失。
- ·AI Summary / Smart Folder / Generate ToC 竞态——在剪辑 A 上点 AI,再在流没结束前切到剪辑 B,会 (a) 把 A 的流式内容显示在 B 上、(b) 把 A 的结果静默写进 B 的 DB。改成按请求捕获 clip id,并且切换剪辑时完全重置本地状态。
- ·Jump to existing——toast → Jump 现在能正确跳到剪辑所在的文件夹(或 Archive),不再卡在 All。loadClips 里通过陈旧闭包覆盖选中剪辑的竞态也一起修了。
- ·unminimize 权限——之前在 capabilities 里漏了,导致 toast 的 Jump 静默失败。补上了。
- ·文件夹浏览器的 + 按钮——列表为空时也能新建文件夹了。
- ·Folders → Discover 切换——侧边栏切换板块时不再卡在文件夹面板。
- ·Archive ↔ 文件夹拖放——归档的剪辑现在也能拖到文件夹里(archive 是状态,不是分类);把归档剪辑拖回 All 会解除归档。
- ·All 视图 = 未分类收件箱——剪辑一旦进了某个文件夹,就不再在 All 里出现。避免误把整理好的内容批量删掉。
- ·侧边栏 feed group——折叠状态会持久化。
- ·Feed 文章字体——Discover 里 feed 文章正文现在遵循和剪辑一样的排版设置(字体、字号、行高、内容宽度)。
05 / 已知限制
已知限制
- ·v1.0 里文件夹删除不跨设备传播——删掉的文件夹,在和还留着它的 peer 同步后可能会「复活」。Phase 2(事件日志)里会彻底修。
- ·URL 剪辑文章正文里嵌入的内联图片暂时不同步——只有 og:image 预览会同步。v1.2 会做。
- ·没有加密——云服务商能读到剪辑内容。v2 会做。
06 / 安装- 01下载 Stashium.dmg
- 02打开 DMG,将 Stashium.app 拖入 Applications
- 03从 Launchpad 或 Spotlight 启动
- 已使用 Apple Developer ID 签名
- 已通过 Apple 公证 (Notarize)
- 需要 macOS 11 (Big Sur) 或更新版本
- 已经在用 0.4.0 及以上?启动时 Stashium 会主动提示更新,不需要手动下载。