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 會主動提示更新,不需要手動下載。