01 / Sync
クラウド同期 — あなたがすでに信頼しているフォルダ経由で
- ·マルチクラウド前提 — iCloud Drive、Google Drive、Dropbox、OneDrive、Syncthing、ディスク上にフォルダとしてマウントされるものなら何でも対応。新規アカウント不要、Stashium がホストするサーバーなし、Apple App Store の entitlement も不要。
- ·「設定 → Sync」で有効化。フォルダを選び、他の Mac も同じフォルダを指すように設定すると、クリップ、フォルダ、ファイル本体、og:image プレビューが Mac の間を流れます。
- ·スナップショット + 行単位の LWW マージ — 履歴の異なる 2 台が実際に収束します(「最後に書いた人が全部上書き」ではなく)。行ごとの last-write-wins は updated_at で判定。
- ·安定したクロスデバイス ID — クリップとフォルダはそれぞれ 128 ビットの sync_id を持ち、再利用されません。デバイス間で AUTOINCREMENT id が衝突する問題はもう起きません。
- ·新規インストール時の復元 — 新しい Mac に Stashium を入れて sync フォルダを指せば、最新ピアのスナップショットから stash が再構築されます。
- ·コンフリクトログ — 同じインターバル中に同じクリップを 2 台が編集したとき、負けた版は sync_folder/conflicts/{device}-{ts}.jsonl に追記されます。サイレントに失われるものはなし。
- ·Blob 同期も透過的に — ファイルクリップ(スクショ、ドロップした PDF、EPUB など)と URL クリップの og:image プレビューは SHA-256 ハッシュ化されて sync_folder/blobs/ にコピー。ピアデバイスの file_path と og_image は自動的に blob フォルダを指すように書き換えられるので、Mac B でクリップを開けば、クラウド同期エンジンがファイルを実体化した瞬間にちゃんと動きます。
- ·ガベージコレクション — クリップを完全削除すると、後のサイクルで sync フォルダから blob も掃除されます(ゴミ箱に入っているだけで復元可能なクリップの blob は保持)。
- ·v1 では意図的に暗号化なし — クラウドプロバイダはクリップ内容を読めます。オンボーディングを 2 クリックに保つためのトレードオフ。v2 で E2E を追加する可能性あり。
02 / Sync
同期設定 UI
- ·ワンクリックのトグル、次回同期 ETA と前回結果を表示するステータスバナー。
- ·ネイティブのフォルダピッカー — iCloud / Google Drive / Dropbox のおすすめパス付き。
- ·同期間隔ピッカー — 1 / 5 / 15 / 30 / 60 分(デフォルト 5 分)。
- ·デバイス名は編集可能(他のピアに表示されます)。
- ·「今すぐ同期」ボタンで手動同期。
- ·他デバイス一覧 — sync フォルダに書き込んだことのある Mac が名前と最終確認時刻付きで並びます。
- ·クリップ単位の診断(上級):sync_diagnose コマンドが各クリップの同期可否を可視化 — 「なんで PDF が同期されないの」に具体的な答えが返ります。
03 / Sync
同期パフォーマンス最適化
- ·DB に変更がなければスナップショットをスキップ — 前回サイクル以降に編集していないアイドル機は同じ DB を再アップしません。
- ·シングルフライトサイクル — 「今すぐ同期」連打やスケジューラと手動同期の衝突で SQLite バックアップ + zstd + アップロードが多重に走ることはなくなりました。
- ·blob GC のスロットル — 孤児 blob の掃除は毎サイクルではなく約 1 時間に 1 回(削除はいずれにせよ最終的に整合します)。
- ·ハッシュキャッシュ — content_hash と og_image_hash は初回計算後にキャッシュ、再計算なし。
- ·アトミックなスナップショット書き込み — .tmp にステージしてからリネーム、ピアスキャナーは書き込み中のファイルを無視。
- ·MAX_CONCURRENT_FETCHES = 3 で上限 — Discover で導入済みの仕組み。同時に走るピアスナップショットマージにも適用。
04 / 修正
その他の修正
- ·現在のビューが空のとき詳細ペインが古い内容を表示 — All ビュー(v0.8 から「未分類のみ」)でアプリを開いたとき、リストが空でも右ペインに前回選んだクリップが残ることがありました。詳細ペインは現在表示中のリストから厳密に派生するように — 中央ペインからフィルタアウトされたものは右ペインからも消えます。
- ·AI Summary / Smart Folder / Generate ToC の競合 — クリップ A で AI を実行→ストリームが終わる前にクリップ B に切り替えると、(a) A のストリーム内容が B 上に表示され、(b) A の結果がサイレントに B の DB に保存される問題がありました。リクエスト単位でクリップ ID をキャプチャ、クリップ切替で完全にローカル状態をリセットして修正。
- ·Jump to existing — トーストの Jump で、All に取り残されずクリップの所属フォルダ(または Archive)に正しく遷移するように。loadClips での古いクロージャ経由で選択クリップが上書きされていた競合も修正。
- ·unminimize 権限 — capabilities から漏れていたためトーストの Jump がサイレントに失敗していました。修正済み。
- ·フォルダブラウザの + ボタン — リストが空でも新規フォルダを作れるように。
- ·Folders → Discover ナビゲーション — サイドバーのセクション切替がフォルダペインに張り付かないように。
- ·Archive ↔ フォルダのドラッグ — アーカイブ済みクリップをフォルダにドラッグできるように(archive はカテゴリではなく状態)。アーカイブ済みクリップを All にドラッグすると un-archive します。
- ·All ビュー = 未分類インボックス — クリップが一度フォルダに入ると All には現れません。整理済みコンテンツの誤一括削除を防ぎます。
- ·サイドバーの feed group — 折りたたみ状態が永続化されます。
- ·Feed 記事のフォント — Discover の記事本文がクリップと同じタイポグラフィ設定(フォントファミリ、サイズ、行間、コンテンツ幅)に従うように。
05 / 既知の制限
既知の制限
- ·v1.0 ではフォルダ削除がデバイス間で伝播しません — 削除したフォルダが、まだ持っているピアと同期した後に復活する可能性があります。Phase 2(イベントログ)で正式に修正予定。
- ·URL クリップの記事本文に埋め込まれたインライン画像はまだ同期されません — 同期されるのは og:image プレビューのみ。v1.2 で対応予定。
- ·暗号化なし — クラウドプロバイダはクリップ内容を読めます。v2 で対応予定。
06 / インストール- 01Stashium.dmg をダウンロード
- 02DMG を開いて、Stashium.app を Applications にドラッグ
- 03Launchpad か Spotlight から起動
- Apple Developer ID で署名済み
- Apple による Notarize 済み
- macOS 11 (Big Sur) 以降が必要
- 0.4.0 以降を使っている場合:起動時に Stashium がアップデートを案内するので、手動ダウンロード不要。