Memories / 文件

本頁目錄

    發布驗收

    針對要發布的提交與產物執行每項關卡。CI 定義與歷史結果不能證明新版本已通過。 在 validation.md 記錄提交、產物 SHA-256、平台、命令與結果。

    • [ ] Rust 工作區測試、格式檢查及無警告的 Clippy 通過。
    • [ ] 檢索涵蓋中文/多個關鍵字、區塊偏移量、私密/憑證排除、六字元 ID 衝突、 快取失效、進行中的鎖定/撤銷/來源變更,以及僅限裝置的揭露限制。 驗證本機 EmbeddingGemma 推論與模型檔案雜湊、Proxy/重試行為及答案引用驗證。 記錄是否測試過真實客戶的模型端點。
    • [ ] Flutter 分析、格式檢查與 widget 測試通過。
    • [ ] 郵件與應用程式簽署作業使用合成身分通過:S/MIME 與 OpenPGP 驗證/解密、 已簽署 APK 驗證,以及由發布管線檢查的真實已簽署 AAB。 在每個桌面平台檢查預覽/核准繫結、失敗清理及僅限擁有者的憑證工作區。
    • [ ] 在 macOS 上,使用一次性 Apple 身分、相符描述檔與權限驗證 iOS 簽署, 包含框架順序、鑰匙圈清理及裝置安裝。不可將 Windows 編譯視為 iOS 簽署證據。
    • [ ] Wiki 機密取代與複製回歸測試通過 core、CLI/IPC、FFI 與 Flutter。 使用合成資料驗證不可分割的失敗處理、保留編輯對應、目前值解析、MCP 拒絕 及鎖定/背景處理。
    • [ ] 在每個出貨平台檢查真實剪貼簿交付,包括 Linux 輔助程式可用性及行動 OS 交付。 僅有模擬剪貼簿測試不足以通過此關卡。使用更新後的用戶端檢查機密參照同步/復原, 並在版本資訊中記錄與舊用戶端不相容的情況。
    • [ ] 重建 FFI 後 Android 原生冒煙測試通過,接著重建一般 APK, 並執行 scripts/verify-apk-native.py 驗證。
    • [ ] iOS Xcode/模擬器檢查使用原生程式庫與 AppAuth 外掛通過。
    • [ ] ARM64 Android 硬體與實體 iOS 裝置通過鎖定/背景、安全儲存持久化及復原檢查。
    • [ ] 真實 OneDrive 與 Google Drive 原生/桌面註冊完成同意、更新、登出、雙裝置收斂、 離線重試及撤銷測試。使用一次性雲端帳號與合成記錄。 記錄用戶端/平台組合;不可將 iOS OAuth 結果推論至 Android。
    • [ ] 儲存效能基準測試結果符合預期支援的資料庫規模。
    • [ ] 獨立密碼學/應用程式安全審查與滲透測試發現已解決, 或由發布負責人明確接受。
    • [ ] 已簽署產物驗證與獨立備份/復原演練通過。

    Validate 工作流程建置 Android 與 iOS 原生用戶端並執行冒煙測試。 Build signed Android release 是針對 release 環境的手動工作流程。 將 ANDROID_KEYSTORE_BASE64、ANDROID_KEY_ALIAS、ANDROID_KEY_PASSWORD 與 ANDROID_STORE_PASSWORD 設定為環境機密。缺少憑證時會失敗, 會驗證 APK 簽章/原生程式庫鏈,並將 APK 與總和檢查碼上傳為工作流程產物。 它不會發布至商店。執行前先審查來源提交的 Validate 結果。

    Windows 預先發行版請先提交來源,再從 Windows x86_64 MSVC 主機執行 pwsh -File scripts/package-windows.ps1。 它會重建 Rust 工作區,並封裝 CLI、系統匣、relay、FFI DLL/匯入程式庫、 C 標頭、根目錄 README/安全/授權檔案及 docs/ 下每個受追蹤檔案,保留目錄結構。 封存檔、BUILD-INFO.json(來源提交與個別檔案雜湊)、memories.example.toml 及 SHA256SUMS 寫入 dist/vVERSION/。 將全部四個檔案上傳至對應 GitHub Release 前,驗證封存內容與雜湊。 絕不覆寫既有輸出目錄。

    在 macOS 上,bash scripts/package-macos.sh 建置主機架構並建立未簽署的 Memories.app、CLI/relay/FFI 套件、完整文件與字型授權。 在 Linux 上,bash scripts/build-linux.sh 建置原生 x86_64/aarch64 GNU 目標; --debug 選擇開發建置。從乾淨且已提交的 checkout 執行 bash scripts/package-linux.sh,會建立包含 CLI/relay/FFI、C 標頭、受追蹤文件 與授權的 .tar.gz,存放於 dist/vVERSION-linux-ARCH/ 下, 另附 BUILD-INFO.json、memories.example.toml 與 SHA256SUMS。 在預定的 glibc/OpenSSL 發行版驗證雜湊、Unix 執行權限及執行期相依性。 Linux 使用 WebUI,沒有原生系統匣套件。

    手動 Build desktop packages 工作流程執行 Linux/Windows/macOS 檢查, 並將這些套件上傳為工作流程產物;它不會發布 GitHub Release。 散布桌面建置前,請在出貨 OS 驗證系統匣啟動/選單操作/結束及 WebUI 呈現, 並測試權杖/Origin 拒絕、被動閒置到期、鎖定/離線詳細資訊清除, 以及真實 daemon 狀態變更。

    iOS 散布需要 macOS 上的 Apple 團隊、憑證/描述檔與佈建設定。 此儲存庫未隨附任何憑證或開發者帳號。啟用雲端功能的散布建置也需要 cloud-authorization.md 中的平台用戶端 ID 與已註冊回呼方案; 一般 CI 建置不包含 OAuth 用戶端註冊。