Memories / 文档

本页目录

    发布验收

    每项关卡都必须针对即将发布的提交和产物运行。CI 定义与历史结果不能证明新版本已通过。将提交、产物 SHA-256、平台、命令和结果记录在 validation.md 中。

    • [ ] Rust 工作区测试、格式检查和无警告 Clippy 均通过。
    • [ ] 检索覆盖中文/多关键词、分块偏移、私密内容/凭据排除、六字符 ID 冲突、缓存失效、运行中的锁定/撤销/源变更,以及仅限设备的数据披露限制。验证本地 EmbeddingGemma 推理、模型文件哈希、代理/重试行为和答案引用验证。记录是否测试了真实客户模型端点。
    • [ ] Flutter 分析、格式检查和组件测试通过。
    • [ ] 邮件与应用签名任务使用合成身份通过:S/MIME 和 OpenPGP 验证/解密、签名 APK 验证,以及由发布流水线检查的真实签名 AAB。在每个桌面平台检查预览/审批绑定、失败清理和仅所有者可访问的凭据工作区。
    • [ ] 在 macOS 上使用一次性 Apple 身份、匹配的描述文件和权限验证 iOS 签名,包括框架顺序、钥匙串清理和设备安装。不要将 Windows 编译视为 iOS 签名证据。
    • [ ] Wiki 秘密替换和复制回归通过 core、CLI/IPC、FFI 和 Flutter。使用合成数据验证原子失败、编辑映射保留、当前值解析、MCP 拒绝以及锁定/后台处理。
    • [ ] 在每个发布平台检查真实剪贴板交付,包括 Linux 辅助程序可用性与移动操作系统交付。仅模拟剪贴板测试不能满足此关卡。使用更新的客户端检查秘密引用同步/恢复,并在发布说明中记录旧客户端不兼容性。
    • [ ] 重建 FFI 后通过 Android 原生冒烟测试,随后重建普通 APK 并运行 scripts/verify-apk-native.py 验证。
    • [ ] 使用原生库和 AppAuth 插件通过 iOS Xcode/模拟器检查。
    • [ ] 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 选择开发构建。从干净且已提交的检出运行 bash scripts/package-linux.sh,会在 dist/vVERSION-linux-ARCH/ 下创建包含 CLI/relay/FFI、C 头文件、受跟踪文档和许可证的 .tar.gz,并附带 BUILD-INFO.json、memories.example.toml 和 SHA256SUMS。在目标 glibc/OpenSSL 发行版上验证哈希、Unix 可执行权限和运行时依赖。Linux 使用 WebUI,没有原生托盘包。

    手动 Build desktop packages 工作流运行 Linux/Windows/macOS 检查并将这些包上传为工作流产物;它不会发布 GitHub Release。分发桌面构建前,应在发布的操作系统上验证托盘启动/菜单操作/退出和 WebUI 渲染,并测试令牌/Origin 拒绝、被动空闲过期、锁定/离线详情清除,以及真实守护进程状态变更。

    iOS 分发需要 macOS 上的 Apple 团队、证书/描述文件和配置设置。此仓库不附带凭据或开发者账号。启用云功能的分发构建还需要 cloud-authorization.md 中的平台客户端 ID 和注册回调 scheme;通用 CI 构建不包含 OAuth 客户端注册。