diff --git a/docs/HANDOFF-2026-07-19-IOS-WINDOWS.md b/docs/HANDOFF-2026-07-19-IOS-WINDOWS.md new file mode 100644 index 0000000..893cb04 --- /dev/null +++ b/docs/HANDOFF-2026-07-19-IOS-WINDOWS.md @@ -0,0 +1,105 @@ +# HoloLake Era · 2026-07-19 iPhone 与 Windows 开发收口 + +> 文档编号:`HLP-HANDOFF-20260719-001` +> 事实源:`REPO-008 bingshuo/hololake-platform` +> 状态:`IOS_UPLOAD_ACCEPTED_PENDING_TESTFLIGHT · WINDOWS_NATIVE_EXE_BUILT_PACKAGING_NAME_MISMATCH` + +## 1. 本日完成事项 + +- iOS 工程、Scheme、Bundle ID 与显示名称已经从 Tolaria 过渡名称统一到 HoloLake: + `hololake.xcodeproj`、`hololake_iOS`、`com.guanghulab.hololake`、`HoloLake Era`。 +- Apple 付费开发团队与开发/发行证书已在 Xcode 生效。 +- `HoloLake Era 0.1.7 (20)` 已由 Xcode 上传;上传前确认 App 根目录不再包含导致 + build 19 被拒的 `libapp.a`。 +- App Store Connect 应用页面已经显示 HoloLake 实际图标,不再是默认占位图;这证明 + 上传包图标资产已被识别,不等于 TestFlight 已可安装。 +- iOS 归档、IPA 和校验文件已落到外接盘,未把大体积构建缓存长期留在电脑内置盘。 +- 新加坡大脑服务器已完成 Windows MSVC 目标的首次依赖下载与 Rust 交叉编译,实际生成: + `/opt/hololake-build/hololake-platform/src-tauri/target/x86_64-pc-windows-msvc/release/hololake.exe`。 + +## 2. iPhone / TestFlight 当前进度 + +真实源码入口: + +- `src/components/HoloLakeHome.tsx`:手机频道结构; +- `src/App.css`:手机响应式布局与安全区; +- `src/components/HoloLakeHome.test.tsx`:手机入口回归测试; +- `src-tauri/tauri.ios.conf.json`:iOS Tauri 身份; +- `src-tauri/gen/apple/project.yml`:XcodeGen 工程源; +- `src-tauri/gen/apple/hololake.xcodeproj`:当前 Xcode 工程; +- `docs/IOS-TESTFLIGHT.md`:持续维护的 iOS 承接页。 + +外接盘证据: + +- 目录:`/Volumes/JZAO/HoloLake/artifacts/ios-testflight/0.1.7-build20/` +- IPA:`/Volumes/JZAO/HoloLake/artifacts/ios-testflight/0.1.7-build20/HoloLake Era-0.1.7-build20.ipa` +- IPA SHA-256:`c813d8fd6f639d5e91366e95e1b57d04ea6eec46ac9433261746b0c8cd18dc76` + +尚未闭环: + +1. 核验 build 20 在 TestFlight 的 Apple 处理状态; +2. 补全内部测试信息并把 build 加入内部测试组; +3. 冰朔从 TestFlight 真机安装,验收启动、五入口、安全区、频道切换和知识库入口; +4. 后续上传必须递增 build number,不能重复上传 build 20。 + +边界:App Store Connect 页面显示“准备提交”、显示实际 Logo 或 Xcode 显示 +`App upload complete`,都不能单独写成“TestFlight 已可用”。 + +## 3. Windows 构建的真实结果与问题 + +本次不是在 Mac 上伪造 Windows 包,而是在 Linux 服务器上使用 `cargo-xwin` 生成 +Windows MSVC 二进制,再计划交给 NSIS 封装。运行节点是新加坡大脑服务器: + +- Gatekeeper 节点编号:`BS-SG-001`; +- 仓库:`/opt/hololake-build/hololake-platform`; +- 日志:`/opt/hololake-build/windows-build.log`; +- 构建入口:`scripts/build-windows-jd-cross.sh`; +- Tauri 团队配置:`src-tauri/tauri.team.conf.json`; +- NSIS 模板:`scripts/windows-installer.nsi`。 + +首次运行遇到旧 Cargo 进程持有 package cache 文件锁;只终止旧 PID 后,本轮进程正常 +下载并编译。最终日志确认: + +```text +Finished `release` profile [optimized] +Built application at: .../release/hololake.exe +No Windows executable was produced: .../release/tolaria.exe +``` + +因此真实结论是: + +- Windows 原生 `.exe` 已编译成功; +- NSIS 安装包尚未生成; +- 根因是 `src-tauri/Cargo.toml` 的 package 名已是 `hololake`,而 + `scripts/build-windows-jd-cross.sh` 仍把 `app_exe` 固定为 `tolaria.exe`; +- 这不是 Linux 构建能力问题,也不是 Windows runner 缺失导致的本次失败。 + +下一实例只需先修复 `scripts/build-windows-jd-cross.sh` 的可执行文件定位,使其读取 +`hololake.exe`(更稳妥的做法是从 Cargo metadata/构建输出推导,而非再次硬编码旧名), +然后利用服务器现有 Cargo 缓存重跑。成功标准必须同时包括: + +1. 生成 `HoloLake-Era-0.1.7-Team-Foundation-Windows-x64-setup.exe`; +2. `file`/PE 检查确认 Windows x64 格式; +3. `.sha256` 校验通过; +4. 安装包复制到冰朔桌面和 `/Volumes/JZAO/HoloLake/artifacts/windows/0.1.7/`; +5. 真实 Windows 电脑安装、启动并确认只显示 GLS 团队基础入口。 + +## 4. 当日没有宣称完成的事项 + +- 没有宣称 TestFlight 已向测试者开放; +- 没有宣称 Windows NSIS 包已经交付; +- 没有宣称企业四域页面已经完成; +- 没有把 Notion 导出当作现行页面关系或软件本体; +- 没有把第五域个人内容混入团队 GLS 基座包。 + +## 5. 下一实例最短读取顺序 + +1. 本文; +2. `docs/TEAM-FOUNDATION-HANDOFF.md`; +3. `docs/IOS-TESTFLIGHT.md`; +4. `docs/skills/internal-release-packaging/SKILL.md`; +5. `scripts/build-windows-jd-cross.sh`; +6. `src-tauri/Cargo.toml` 与 `src-tauri/tauri.team.conf.json`。 + +所有状态必须重新读取远端 `main` 与真实构建/Apple 页面核验;本文提供可审计断点, +不允许后来实例把历史状态当成当前成功状态。 diff --git a/docs/IOS-TESTFLIGHT.md b/docs/IOS-TESTFLIGHT.md index 946276e..77faf4d 100644 --- a/docs/IOS-TESTFLIGHT.md +++ b/docs/IOS-TESTFLIGHT.md @@ -35,6 +35,10 @@ Bundle ID:`com.guanghulab.hololake` App Store Connect 应用记录已创建:名称 `HoloLake Era`,主语言简体中文,Bundle ID `com.guanghulab.hololake`。0.1.7 build 20 已由 Xcode 返回 `App upload complete`。build 19 曾因 `libapp.a` 被错误复制到 App 根目录而被 Apple 以 90171 拒绝;根因是 `project.yml` 把 `Externals` 同时声明为 sources,现已移除,build 20 包内预检确认不再包含该静态库。 +上传后 App Store Connect 应用页面已显示 HoloLake 实际图标,不再是默认占位图。当前 +仍需以 TestFlight 构建处理页和测试组可见性为准;应用页显示 Logo 或“准备提交”不能 +替代 TestFlight 真机安装验收。 + 外接盘留档:`/Volumes/JZAO/HoloLake/artifacts/ios-testflight/0.1.7-build20/`。IPA SHA-256:`c813d8fd6f639d5e91366e95e1b57d04ea6eec46ac9433261746b0c8cd18dc76`。 ## 下一实例最短继续路径 @@ -43,5 +47,7 @@ App Store Connect 应用记录已创建:名称 `HoloLake Era`,主语言简 2. 处理完成后设置内部测试信息并邀请测试者;若出现新的合规问题,记录 Apple 原始错误后再修,不重复上传同一 build number。 3. 真机从 TestFlight 安装后验收启动、五入口导航、安全区、频道切换和知识库入口。 4. 后续上传必须递增 build number,并保留归档、IPA、SHA-256 与 Apple 接收状态。 +5. 先读 `docs/HANDOFF-2026-07-19-IOS-WINDOWS.md`,恢复同日 Windows 构建断点与 + iOS/Windows 状态边界。 `App upload complete` 证明 Apple 已接收上传,不等于 TestFlight 已处理完成、已分配测试者或 App Store 已发布。 diff --git a/docs/TEAM-FOUNDATION-HANDOFF.md b/docs/TEAM-FOUNDATION-HANDOFF.md index c8e177f..22d9d1d 100644 --- a/docs/TEAM-FOUNDATION-HANDOFF.md +++ b/docs/TEAM-FOUNDATION-HANDOFF.md @@ -88,6 +88,12 @@ artifact_name = HoloLake-Era-Team-Foundation-Windows-x64 该工作流固定通过 `src-tauri/tauri.team.conf.json` 构建 GLS 团队入口,并对 NSIS 文件做 PE32 格式检查与 SHA-256 输出。CI 成功只能证明 NSIS 产物生成;能否安装、启动和显示正确 GLS 页面仍须 Windows 实机验收。当前新版工作流尚未在远端 runner 上跑出本次团队包,不得写成双平台已经交付。 +2026-07-19 在新加坡大脑 Linux 服务器上直接运行 +`scripts/build-windows-jd-cross.sh`,已经由 `cargo-xwin` 成功生成 Windows MSVC +二进制 `release/hololake.exe`,但脚本仍检查历史文件名 `release/tolaria.exe`,因此 +在 NSIS 封装前退出。准确日志、节点路径和续接标准见 +`docs/HANDOFF-2026-07-19-IOS-WINDOWS.md`。当前不得写成 Windows 安装包已生成。 + 2026-07-18 功能提交为 `a6d83b0`,Windows CI 与本文修正提交为 `ab283b5`。第一次推送完整执行了前端测试、Rust lint、1074 项 Rust 测试与覆盖率;Playwright 冒烟测试因本机缺少对应 headless-shell 运行器未执行成功。远端曾因 `repo_push_grant_expired` 拒绝;冰朔完成新邮件工单批准后,已按导航地图读取、确认和仓库授权路径成功推送至远端 `main`。2026-07-19 的 iOS/TestFlight 与 Windows 工作流提交推送后会自动触发新版 Windows CI;必须以远端 job 与产物页面为准,并在 Windows 实机验证安装和启动。 ## 7. 外接盘构建约束 @@ -107,9 +113,10 @@ Xcode 下载后曾自动在内置盘注册一份;已用 `simctl runtime delete ## 8. 下一实例最短读取顺序 1. 本文 `HLP-DOC-TEAM-0001`; -2. `docs/IOS-TESTFLIGHT.md`; -3. `docs/HOLOLAKE-LANGUAGE-WORLD-SYSTEM.md`; -4. `docs/skills/internal-release-packaging/SKILL.md`; -5. 上述真实源码入口与测试。 +2. `docs/HANDOFF-2026-07-19-IOS-WINDOWS.md`; +3. `docs/IOS-TESTFLIGHT.md`; +4. `docs/HOLOLAKE-LANGUAGE-WORLD-SYSTEM.md`; +5. `docs/skills/internal-release-packaging/SKILL.md`; +6. 上述真实源码入口与测试。 不得从 Notion 导出包猜页面关系,不得把团队 GLS 基座说成企业四域已经开发完成,也不得把 Mac 包成功说成 Windows/TestFlight 已完成。