feat: add GLS team foundation and iPhone baseline

This commit is contained in:
冰朔 2026-07-18 21:39:13 +08:00
parent 2e6f52a5a8
commit a6d83b0846
22 changed files with 1311 additions and 29 deletions

46
docs/IOS-TESTFLIGHT.md Normal file
View File

@ -0,0 +1,46 @@
# HoloLake Era iPhone / TestFlight 承接记录
状态日期2026-07-18
当前版本0.1.7
Bundle ID`com.guanghulab.hololake`
## 为什么这样做
手机版不是把 Mac 三栏界面等比例缩小,而是保留第五域的同一套频道语义,为手机增加固定的五入口导航:零点原核、第五域、心跳核心、光之湖人格体、服务器节点。知识库仍是频道工作区中的能力,不重新变回软件主体。
## 真实文件入口
- 手机频道结构:`src/components/HoloLakeHome.tsx`
- 手机响应式样式与安全区:`src/App.css`
- 手机导航回归测试:`src/components/HoloLakeHome.test.tsx`
- iOS 专用 Tauri 配置:`src-tauri/tauri.ios.conf.json`
- XcodeGen 工程源:`src-tauri/gen/apple/project.yml`
- 已生成 Xcode 工程:`src-tauri/gen/apple/HoloLake.xcodeproj`
- iOS 权限基线:`src-tauri/capabilities/mobile.json`
旧的 `src-tauri/gen/apple/laputa.xcodeproj``laputa_iOS` 目录来自 Tolaria 基座仅作为历史生成结构保留TestFlight 的新承接入口是 `HoloLake.xcodeproj` / `HoloLake_iOS`,不得再用旧包名 `club.refactoring.tolaria` 发布。
## 已验证
- Web/TypeScript 生产构建通过:`npm run build`
- 第五域与手机频道导航测试通过:`src/components/HoloLakeHome.test.tsx`8 项通过
- `aarch64-apple-ios``aarch64-apple-ios-sim` Rust 目标已安装
- Xcode 工程已经以 HoloLake 名称、0.1.7 版本和独立 Bundle ID 生成
## 尚未闭环的外部条件
1. Apple Developer 订阅已付款,但 Xcode 当前仍只显示 `Personal Team`;正式付费团队同步后才能建立发行签名并上传 TestFlight。
2. 本机 Xcode 的 iOS 26.5.1 + iOS 26.5 Simulator 组件未安装,官方界面显示占用 8.52 GB应在冰朔确认磁盘占用后下载。
3. iOS Rust 原生检查已进入 Tauri Swift 层,但 SwiftPM 从 GitHub 拉取 `Brendonovich/swift-rs` 时网络连接失败。这是依赖下载阻断,不是当前代码编译错误;网络恢复后重跑原生检查。
4. 创建 Apple Development / Distribution 证书属于持久凭据操作,必须在正式团队出现后由冰朔当场确认,再在 Xcode 的 `Manage Certificates…` 中执行。
## 下一实例最短继续路径
1. 打开 Xcode → Settings → Apple Accounts确认是否出现非 `Personal Team` 的正式团队。
2. 经冰朔确认后,安装 Xcode → Settings → Components 中的 iOS 26.5.1 + Simulator。
3. 网络可访问 GitHub 后运行:
`cargo check --manifest-path src-tauri/Cargo.toml --target aarch64-apple-ios`
4. 用 `src-tauri/gen/apple/HoloLake.xcodeproj``HoloLake_iOS` scheme 做真机归档。
5. 正式团队出现且冰朔确认创建证书后,创建 App Store Connect 应用记录并上传 TestFlight 内测构建。
TestFlight 上线前不得把“前端构建通过”“Xcode 工程已生成”写成“手机版已发布”。

View File

@ -0,0 +1,113 @@
# 光湖团队 GLS 基座与企业四域开发承接
> 文档编号HLP-DOC-TEAM-0001
> 状态2026-07-18 实现基线
> 产品仓库:`REPO-008 bingshuo/hololake-platform`
## 1. 已确认的产品顺序
光湖只有一个 App 和一个持续演进的产品仓库,但团队基座与冰朔个人内测版是不同发行模式,不得把两边的可见内容混装。
企业侧的开发顺序是:
```text
GLS 团队基座
→ 团队重塑 Notion 原型的页面关系与编号
→ 光湖主域 / 光湖分域 / 光湖零域 / 光湖零感域
→ 团队成员从零感域进入自己的个人频道
→ 公众从公共域进入行业与模块
```
零点原核频道是企业端与冰朔第五域都会连接的桥,但不等于把冰朔第五域、永恒湖心或个人频道复制到企业团队包。
## 2. 团队第一版的严格边界
团队第一版只展示 `GLS-SYS-ARCH-001` 公开系统架构。以下内容不得进入团队首版可见界面:
- 第五域个人频道结构;
- 永恒湖心、心跳核心、光之湖人格体路径;
- 冰朔短剧视频、服务器登记和个人模块;
- 未重塑页面关系的 Notion 导出内容。
这不是删除 Tolaria 基座能力,而是冻结团队首版的产品入口,避免团队在错误页面关系上继续开发。
## 3. 真实源码入口
- 团队 GLS 页面:`src/TeamFoundationApp.tsx`
- 团队独立渲染入口:`src/team-foundation-main.tsx`
- 团队独立 HTML`team-foundation.html`
- 团队 Tauri 身份:`src-tauri/tauri.team.conf.json`
- GLS 唯一内置数据:`src-tauri/resources/public-architecture/gls-system-architecture.json`
- 团队构建收尾:`scripts/finalize-team-foundation-build.mjs`
- Mac 打包:`scripts/build-macos-internal.sh`
- Windows JD 节点打包:`scripts/build-windows-jd-cross.sh`
- 包内容硬门:`scripts/verify-internal-package-content.mjs`
- 自动测试:`src/TeamFoundationApp.test.tsx`
团队包使用独立 Bundle ID`com.guanghulab.hololake.team-foundation`,可以与冰朔个人内测版并存。
## 4. Notion 原型素材源
冰朔桌面上的全量导出:
`/Users/bingshuolingdianyuanhe/Desktop/notion.zip`
2026-07-18 只读核验结果:外层约 497 MB内部为两个 Notion 分卷压缩包。该文件是企业四域原型素材,不是可直接部署的页面树,也不进入团队安装包。
后续重塑必须先输出“页面关系映射表”,至少区分:原页面 ID、标题、父页面、目标域、目标频道、可见性、事实源、废弃/合并关系。未完成映射前不得批量导入仓库。
## 5. 已完成验证与产物
- 团队页面与冰朔频道测试合计 9 项通过;
- `npm run build:team-foundation` 通过,只编译团队独立入口;
- 团队 dist 私人内容扫描通过;
- GLS 与公开研发仓库内容门通过;
- Mac 应用 ad-hoc 签名验证通过;
- Mac DMG 校验通过,桌面复制后二次 SHA-256 通过。
Mac 团队基座包:
`/Users/bingshuolingdianyuanhe/Desktop/HoloLake-Era-0.1.7-Team-Foundation-Mac-aarch64.dmg`
外接盘归档:
`/Volumes/JZAO/HoloLake/artifacts/team-foundation/HoloLake-Era-0.1.7-Team-Foundation-Mac-aarch64.dmg`
## 6. Windows 未闭环项
Windows 包必须在 `JD-FD-PRIMARY` Linux 节点执行,不在 Mac 上伪造:
```bash
COREPACK_HOME=<JD 节点缓存路径> \
CARGO_TARGET_DIR=<JD 节点构建路径> \
HOLOLAKE_SKIP_INSTALL=0 \
npm run package:team:windows
```
输出目标名:`HoloLake-Era-0.1.7-Team-Foundation-Windows-x64-setup.exe`
完成标准包括 PE32+ x86-64、NSIS 安装包、内容门、SHA-256、服务器归档和回传后二次校验。当前 Mac 没有 JD 节点 SSH 通道,所以 Windows 包尚未生成;不得写成双平台已经交付。
## 7. 外接盘构建约束
JZAO 原文件系统会产生 `._` AppleDouble 文件Rust/Tauri 会把它们误读为配置。Mac 原生缓存因此放在 JZAO 上的 APFS 稀疏映像:
- 映像:`/Volumes/JZAO/HoloLake/HoloLakeBuild.sparsebundle`
- 挂载点:`/Volumes/HoloLakeBuild`
- Cargo 缓存:`/Volumes/HoloLakeBuild/target/team`
iOS 26.5 模拟器导出包也保存在 JZAO
`/Volumes/JZAO/HoloLake/Xcode-Platforms/iphonesimulator_26.5_23F77.exportedBundle`
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. 上述真实源码入口与测试。
不得从 Notion 导出包猜页面关系,不得把团队 GLS 基座说成企业四域已经开发完成,也不得把 Mac 包成功说成 Windows/TestFlight 已完成。

View File

@ -7,6 +7,7 @@
"scripts": {
"dev": "vite",
"build": "tsc -b && vite build",
"build:team-foundation": "VITE_HOLOLAKE_DISTRIBUTION=team-foundation tsc -b && VITE_HOLOLAKE_DISTRIBUTION=team-foundation vite build && node scripts/finalize-team-foundation-build.mjs",
"agent-docs": "node scripts/build-agent-docs.mjs",
"bundle-mcp": "node scripts/bundle-mcp-server.mjs",
"docs:dev": "vitepress dev site --host 127.0.0.1",
@ -31,6 +32,8 @@
"test:internal-release": "node --test scripts/internal-release-version.test.mjs",
"package:internal:macos": "./scripts/build-internal-release.sh macos",
"package:internal:windows": "./scripts/build-internal-release.sh windows",
"package:team:macos": "HOLOLAKE_TAURI_CONFIG=src-tauri/tauri.team.conf.json HOLOLAKE_APP_NAME='HoloLake Era Team Foundation' HOLOLAKE_INSTALLER_BASENAME='HoloLake-Era-{version}-Team-Foundation-Mac-aarch64' ./scripts/build-internal-release.sh macos",
"package:team:windows": "HOLOLAKE_TAURI_CONFIG=src-tauri/tauri.team.conf.json HOLOLAKE_INSTALLER_BASENAME='HoloLake-Era-{version}-Team-Foundation-Windows-x64-setup' ./scripts/build-internal-release.sh windows",
"prepare": "husky"
},
"dependencies": {

View File

@ -9,19 +9,37 @@ cd "$repo_root"
target="${HOLOLAKE_MAC_TARGET:-aarch64-apple-darwin}"
version="$(node scripts/internal-release-version.mjs src-tauri/tauri.conf.json "${HOLOLAKE_VERSION:-}")"
output_dir="${HOLOLAKE_OUTPUT_DIR:-$repo_root/artifacts/internal/$version}"
bundle_dir="$repo_root/src-tauri/target/$target/release/bundle/macos"
app="$bundle_dir/HoloLake Era.app"
target_root="${CARGO_TARGET_DIR:-$repo_root/src-tauri/target}"
bundle_dir="$target_root/$target/release/bundle/macos"
app="$bundle_dir/${HOLOLAKE_APP_NAME:-HoloLake Era}.app"
installer="$output_dir/HoloLake-Era-$version-Mac-internal-aarch64.dmg"
tauri_config="${HOLOLAKE_TAURI_CONFIG:-}"
if [[ -n "${HOLOLAKE_INSTALLER_BASENAME:-}" ]]; then
installer_basename="${HOLOLAKE_INSTALLER_BASENAME//\{version\}/$version}"
installer="$output_dir/${installer_basename}.dmg"
fi
command -v pnpm >/dev/null || { echo "pnpm is required." >&2; exit 2; }
if command -v pnpm >/dev/null 2>&1; then
pnpm_cmd=(pnpm)
elif command -v corepack >/dev/null 2>&1; then
pnpm_cmd=(corepack pnpm)
else
echo "pnpm or corepack is required." >&2
exit 2
fi
command -v hdiutil >/dev/null || { echo "hdiutil is required." >&2; exit 2; }
mkdir -p "$output_dir"
pnpm install --frozen-lockfile
pnpm tauri build --target "$target" --bundles app
if [[ "${HOLOLAKE_SKIP_INSTALL:-0}" != "1" ]]; then
"${pnpm_cmd[@]}" install --frozen-lockfile
fi
[[ -x "$repo_root/node_modules/.bin/tauri" ]] || { echo "Local Tauri CLI is missing; install dependencies first." >&2; exit 2; }
tauri_args=(build --target "$target" --bundles app)
if [[ -n "$tauri_config" ]]; then tauri_args+=(--config "$tauri_config"); fi
"$repo_root/node_modules/.bin/tauri" "${tauri_args[@]}"
[[ -d "$app" ]] || { echo "No macOS application bundle was produced: $app" >&2; exit 1; }
pnpm verify:internal-package "$app"
node scripts/verify-internal-package-content.mjs "$app"
codesign --force --deep --sign - "$app"
codesign --verify --deep --strict "$app"
hdiutil create -volname "HoloLake Era $version Internal" -srcfolder "$app" -ov -format UDZO "$installer"

View File

@ -19,6 +19,7 @@ fi
command -v node >/dev/null || { echo "Node.js is required." >&2; exit 2; }
version="$(node scripts/internal-release-version.mjs src-tauri/tauri.conf.json "${HOLOLAKE_VERSION:-}")"
tauri_config="${HOLOLAKE_TAURI_CONFIG:-}"
export PATH="$HOME/.cargo/bin:$PATH"
if ! command -v cargo >/dev/null 2>&1; then
@ -44,15 +45,20 @@ command -v cargo-xwin >/dev/null || cargo install cargo-xwin --locked
pnpm install --frozen-lockfile
# Tauri's Linux CLI intentionally only exposes Linux bundle targets. Compile the
# Windows application with cargo-xwin, then hand the resulting payload to NSIS.
pnpm tauri build --runner cargo-xwin --target "$target" --no-bundle
tauri_args=(build --runner cargo-xwin --target "$target" --no-bundle)
if [[ -n "$tauri_config" ]]; then tauri_args+=(--config "$tauri_config"); fi
pnpm tauri "${tauri_args[@]}"
release_dir="$repo_root/src-tauri/target/$target/release"
target_root="${CARGO_TARGET_DIR:-$repo_root/src-tauri/target}"
release_dir="$target_root/$target/release"
app_exe="$release_dir/tolaria.exe"
[[ -f "$app_exe" ]] || { echo "No Windows executable was produced: $app_exe" >&2; exit 1; }
bundle_dir="$release_dir/bundle/nsis"
stage_dir="$bundle_dir/stage"
installer="$bundle_dir/HoloLake-Era_${version}_x64-internal-setup.exe"
installer_basename="${HOLOLAKE_INSTALLER_BASENAME:-HoloLake-Era_${version}_x64-internal-setup}"
installer_basename="${installer_basename//\{version\}/$version}"
installer="$bundle_dir/${installer_basename}.exe"
rm -rf "$stage_dir"
mkdir -p "$stage_dir/resources" "$bundle_dir"
cp "$app_exe" "$stage_dir/HoloLake Era.exe"

View File

@ -0,0 +1,3 @@
import { rename } from 'node:fs/promises'
await rename('dist/team-foundation.html', 'dist/index.html')

View File

@ -0,0 +1,798 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 77;
objects = {
/* Begin PBXBuildFile section */
10BC764F3DECE7B9FDC8F1EB /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12F6AA9DA589FC51C9D843C3 /* WebKit.framework */; };
10CF0B2A75125AB882A4104B /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 60D77C95CDA4878AC31E06FC /* Metal.framework */; };
1E3F1D473076F96C5929CEE7 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E5CBD70FB2815D19C3F0190 /* CoreGraphics.framework */; };
30810FE969AAA1DFE091637C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3BBE6E79A4BF3832CE315919 /* Assets.xcassets */; };
574E9FC1DB877392B7BF5918 /* assets in Resources */ = {isa = PBXBuildFile; fileRef = 0F60A50A996D2D783A5FD25F /* assets */; };
6BA90420617661093E6C004A /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 476D4C25E501B2DB819B83EF /* Security.framework */; };
888E277D0583DEC4A5F817FA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 28F8BF20C12EF3B0D970C4BE /* QuartzCore.framework */; };
890AF7B1E9D69D4FBA033F99 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26BB1CFE5D89468C0954F3D7 /* UIKit.framework */; };
9E4FC2FF2D11E16C85D0CA22 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 6A8D7ABE8518DC962AEE83D2 /* main.mm */; };
A22C9A35CAAB2DF45F783F3B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A9D939D7C6842A013F9E9D2D /* LaunchScreen.storyboard */; };
BFA08714B1F1FFA160554E4E /* MetalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C68619FE2409BD0403F0F822 /* MetalKit.framework */; };
E52656C9AA3CE79F8BD9C340 /* libapp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 907D2515583F8E3DAA94C653 /* libapp.a */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
0050B284AED1F6607547DDDF /* cache.rs */ = {isa = PBXFileReference; path = cache.rs; sourceTree = "<group>"; };
0075CBC9552C222333830937 /* menu.rs */ = {isa = PBXFileReference; path = menu.rs; sourceTree = "<group>"; };
010158A81A8DD44ABBAA4BCC /* codex_cli.rs */ = {isa = PBXFileReference; path = codex_cli.rs; sourceTree = "<group>"; };
015F375350B0DCCF932CD855 /* path_identity.rs */ = {isa = PBXFileReference; path = path_identity.rs; sourceTree = "<group>"; };
01A36EEB3D914E2049B80F8C /* folder_and_file_kind.rs */ = {isa = PBXFileReference; path = folder_and_file_kind.rs; sourceTree = "<group>"; };
057242D51175B2DA743FFEEC /* rename_cmds.rs */ = {isa = PBXFileReference; path = rename_cmds.rs; sourceTree = "<group>"; };
057E964B8FFDE93C6C0DE7F0 /* paths.rs */ = {isa = PBXFileReference; path = paths.rs; sourceTree = "<group>"; };
06D4D353ACDD7DA2F35B49E8 /* delete.rs */ = {isa = PBXFileReference; path = delete.rs; sourceTree = "<group>"; };
082E515A19172B9A0992BA4F /* conflict.rs */ = {isa = PBXFileReference; path = conflict.rs; sourceTree = "<group>"; };
09754A5CDE571D89F3563080 /* migration.rs */ = {isa = PBXFileReference; path = migration.rs; sourceTree = "<group>"; };
09D44DF00534FAA275529BF9 /* remote_config.rs */ = {isa = PBXFileReference; path = remote_config.rs; sourceTree = "<group>"; };
0BF29A2DBD08245184C62509 /* view_value_conversions.rs */ = {isa = PBXFileReference; path = view_value_conversions.rs; sourceTree = "<group>"; };
0F60A50A996D2D783A5FD25F /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; path = assets; sourceTree = SOURCE_ROOT; };
0FCCFC9E2A1E037C3491E7F5 /* pi_events.rs */ = {isa = PBXFileReference; path = pi_events.rs; sourceTree = "<group>"; };
1179CD8FF58077DDF7E99299 /* mod.rs */ = {isa = PBXFileReference; path = mod.rs; sourceTree = "<group>"; };
121AED7D3C84479EC638C2E8 /* antigravity_cli.rs */ = {isa = PBXFileReference; path = antigravity_cli.rs; sourceTree = "<group>"; };
128C9606725F612692B8438E /* getting_started.rs */ = {isa = PBXFileReference; path = getting_started.rs; sourceTree = "<group>"; };
12F6AA9DA589FC51C9D843C3 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
1315706C702DC2397F3B802E /* scan_cmds.rs */ = {isa = PBXFileReference; path = scan_cmds.rs; sourceTree = "<group>"; };
14962FC08F5BBCA3DFF34DD4 /* copilot_cli.rs */ = {isa = PBXFileReference; path = copilot_cli.rs; sourceTree = "<group>"; };
14C532D36F6C1157D9C129D1 /* upstream.rs */ = {isa = PBXFileReference; path = upstream.rs; sourceTree = "<group>"; };
1BB054E84CD7A1962922A3E2 /* provider.rs */ = {isa = PBXFileReference; path = provider.rs; sourceTree = "<group>"; };
1C41778F8CEEEBAC8FCC5F13 /* ai_models.rs */ = {isa = PBXFileReference; path = ai_models.rs; sourceTree = "<group>"; };
1CBDAF21C861C3AB97AC482D /* memory.rs */ = {isa = PBXFileReference; path = memory.rs; sourceTree = "<group>"; };
20AE80661DFE787E09398F4F /* antigravity_discovery.rs */ = {isa = PBXFileReference; path = antigravity_discovery.rs; sourceTree = "<group>"; };
22092BA85067CC737DBBAD05 /* commit.rs */ = {isa = PBXFileReference; path = commit.rs; sourceTree = "<group>"; };
22EBF553582EACF370284B42 /* display_metadata.rs */ = {isa = PBXFileReference; path = display_metadata.rs; sourceTree = "<group>"; };
26948CCB253A8A9438E1DFF6 /* folders.rs */ = {isa = PBXFileReference; path = folders.rs; sourceTree = "<group>"; };
26BB1CFE5D89468C0954F3D7 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
2869AD5AF9EBC3A2F6F89A96 /* system_metadata_tests.rs */ = {isa = PBXFileReference; path = system_metadata_tests.rs; sourceTree = "<group>"; };
28F8BF20C12EF3B0D970C4BE /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
2E55F0E500944FFBEDF36439 /* credentials.rs */ = {isa = PBXFileReference; path = credentials.rs; sourceTree = "<group>"; };
2F38683CB597F0CC57478E4A /* main.rs */ = {isa = PBXFileReference; path = main.rs; sourceTree = "<group>"; };
2FC6224DED146A056DBEFAFA /* title_sync.rs */ = {isa = PBXFileReference; path = title_sync.rs; sourceTree = "<group>"; };
3202961ACB715D8D472F795C /* pi_config.rs */ = {isa = PBXFileReference; path = pi_config.rs; sourceTree = "<group>"; };
348A425343E36A5B9DC950F4 /* sheet.rs */ = {isa = PBXFileReference; path = sheet.rs; sourceTree = "<group>"; };
354F27756754D7E66226E8C8 /* view_cmds.rs */ = {isa = PBXFileReference; path = view_cmds.rs; sourceTree = "<group>"; };
363304D4E0297987B24BB926 /* status.rs */ = {isa = PBXFileReference; path = status.rs; sourceTree = "<group>"; };
3BBE6E79A4BF3832CE315919 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
3CD4014D86632C50AF20DE59 /* ai_agents.rs */ = {isa = PBXFileReference; path = ai_agents.rs; sourceTree = "<group>"; };
3D266F3E587C8CAFD43897AB /* window_state.rs */ = {isa = PBXFileReference; path = window_state.rs; sourceTree = "<group>"; };
3EF2534081FDE3316E028081 /* dates.rs */ = {isa = PBXFileReference; path = dates.rs; sourceTree = "<group>"; };
3FE3C66FF30B84195FA98C1A /* opencode_events.rs */ = {isa = PBXFileReference; path = opencode_events.rs; sourceTree = "<group>"; };
41B8445BDA2EEFFB636C2F27 /* lifecycle_cmds.rs */ = {isa = PBXFileReference; path = lifecycle_cmds.rs; sourceTree = "<group>"; };
4207C0C689A9DEF15CA8888C /* vault.rs */ = {isa = PBXFileReference; path = vault.rs; sourceTree = "<group>"; };
42D0C09784FF734A5CC92E40 /* entry.rs */ = {isa = PBXFileReference; path = entry.rs; sourceTree = "<group>"; };
458437264D37E162C02F7E01 /* vault_watcher.rs */ = {isa = PBXFileReference; path = vault_watcher.rs; sourceTree = "<group>"; };
463BC00E27FDD63E84BFDACD /* parsing.rs */ = {isa = PBXFileReference; path = parsing.rs; sourceTree = "<group>"; };
476D4C25E501B2DB819B83EF /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
4A46898BA1C969B2646B4B80 /* pdf_export.rs */ = {isa = PBXFileReference; path = pdf_export.rs; sourceTree = "<group>"; };
4C1FDAEA4662D9A6260A58DE /* hermes_discovery.rs */ = {isa = PBXFileReference; path = hermes_discovery.rs; sourceTree = "<group>"; };
4D52F451E32D5D9CA7AFB9AA /* author.rs */ = {isa = PBXFileReference; path = author.rs; sourceTree = "<group>"; };
4E947F33478FAB67227CFCCB /* mod.rs */ = {isa = PBXFileReference; path = mod.rs; sourceTree = "<group>"; };
4F0D35BE7398C3602AB06629 /* command.rs */ = {isa = PBXFileReference; path = command.rs; sourceTree = "<group>"; };
5450814D3827CCD69F01A241 /* bindings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = bindings.h; sourceTree = "<group>"; };
5766FC68AFF52E5D601A2201 /* image.rs */ = {isa = PBXFileReference; path = image.rs; sourceTree = "<group>"; };
5986643AE3444A64F2EC3699 /* HoloLake_iOS.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = HoloLake_iOS.app; sourceTree = BUILT_PRODUCTS_DIR; };
5A06AA9064684BD5F26156B3 /* lib.rs */ = {isa = PBXFileReference; path = lib.rs; sourceTree = "<group>"; };
5B0390DD26F6B3080CFE1531 /* opencode.rs */ = {isa = PBXFileReference; path = opencode.rs; sourceTree = "<group>"; };
5BFC39CB9F1243B4474C3BB6 /* app_updater.rs */ = {isa = PBXFileReference; path = app_updater.rs; sourceTree = "<group>"; };
5D6A7764044526D11B69B748 /* pulse.rs */ = {isa = PBXFileReference; path = pulse.rs; sourceTree = "<group>"; };
60D77C95CDA4878AC31E06FC /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; };
66E7FE04B14503C592B73CD0 /* view_relationships.rs */ = {isa = PBXFileReference; path = view_relationships.rs; sourceTree = "<group>"; };
675DE5C585D832EC23F4BFF3 /* archival_metadata.rs */ = {isa = PBXFileReference; path = archival_metadata.rs; sourceTree = "<group>"; };
68EDAECA09ECC7BC74B1088C /* subprocess.rs */ = {isa = PBXFileReference; path = subprocess.rs; sourceTree = "<group>"; };
6A8D7ABE8518DC962AEE83D2 /* main.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; };
6B7EB67FFE128AB20A135E6E /* folders.rs */ = {isa = PBXFileReference; path = folders.rs; sourceTree = "<group>"; };
6D03B0E75CD5CDAFA20644BC /* connect.rs */ = {isa = PBXFileReference; path = connect.rs; sourceTree = "<group>"; };
6E98CFB59596D798EB7DCB34 /* type_templates.rs */ = {isa = PBXFileReference; path = type_templates.rs; sourceTree = "<group>"; };
6F0DA82A2114B791EDAB7300 /* real_vault_consistency.rs */ = {isa = PBXFileReference; path = real_vault_consistency.rs; sourceTree = "<group>"; };
6F4D5A90038E5C644B0B92A5 /* hermes_cli.rs */ = {isa = PBXFileReference; path = hermes_cli.rs; sourceTree = "<group>"; };
700C8B5C02E5F70B26055FFD /* remote_branch_tests.rs */ = {isa = PBXFileReference; path = remote_branch_tests.rs; sourceTree = "<group>"; };
73CCD2E1120A28AD85F99137 /* type_and_links.rs */ = {isa = PBXFileReference; path = type_and_links.rs; sourceTree = "<group>"; };
74958B90904CF6F4DD914C06 /* frontmatter_regression_tests.rs */ = {isa = PBXFileReference; path = frontmatter_regression_tests.rs; sourceTree = "<group>"; };
76DEFD594E4794AA24544225 /* parsing_tests.rs */ = {isa = PBXFileReference; path = parsing_tests.rs; sourceTree = "<group>"; };
7A12A53788441DDEC467ADF9 /* complex_frontmatter.rs */ = {isa = PBXFileReference; path = complex_frontmatter.rs; sourceTree = "<group>"; };
7B0BC7CD8DCDBD326123B1E1 /* trash.rs */ = {isa = PBXFileReference; path = trash.rs; sourceTree = "<group>"; };
7BF95AB601E1EA43C76FEE79 /* telemetry.rs */ = {isa = PBXFileReference; path = telemetry.rs; sourceTree = "<group>"; };
7D2B082E58B3456C21A81C48 /* config_seed.rs */ = {isa = PBXFileReference; path = config_seed.rs; sourceTree = "<group>"; };
7D8F18C847A1FF6B2BDB0356 /* ai.rs */ = {isa = PBXFileReference; path = ai.rs; sourceTree = "<group>"; };
816915173E861F05D186A727 /* pi_discovery.rs */ = {isa = PBXFileReference; path = pi_discovery.rs; sourceTree = "<group>"; };
818CA203C2C91ABABF95A8CB /* mod.rs */ = {isa = PBXFileReference; path = mod.rs; sourceTree = "<group>"; };
81F8B518EC2593A40DAA5503 /* remote.rs */ = {isa = PBXFileReference; path = remote.rs; sourceTree = "<group>"; };
85A5FC54DAD705312260A21A /* scan_and_file_access.rs */ = {isa = PBXFileReference; path = scan_and_file_access.rs; sourceTree = "<group>"; };
87147D77664A5051BBA28592 /* mod.rs */ = {isa = PBXFileReference; path = mod.rs; sourceTree = "<group>"; };
8961178AD8EA4CC56A023659 /* view_date_filters.rs */ = {isa = PBXFileReference; path = view_date_filters.rs; sourceTree = "<group>"; };
8D2E06DCBF77C0D6AC0FB24C /* mod_tests.rs */ = {isa = PBXFileReference; path = mod_tests.rs; sourceTree = "<group>"; };
8E5CBD70FB2815D19C3F0190 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
8FD8EFD959EE4C4185BD712D /* windows_cmd_shim.rs */ = {isa = PBXFileReference; path = windows_cmd_shim.rs; sourceTree = "<group>"; };
9049C59DDCC9763ACB36C5F3 /* opencode_discovery.rs */ = {isa = PBXFileReference; path = opencode_discovery.rs; sourceTree = "<group>"; };
907D2515583F8E3DAA94C653 /* libapp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libapp.a; sourceTree = "<group>"; };
96BDADEAB5BE019394D4DF4C /* opencode_cli.rs */ = {isa = PBXFileReference; path = opencode_cli.rs; sourceTree = "<group>"; };
9992DE2C71B8768B3E090D80 /* clone.rs */ = {isa = PBXFileReference; path = clone.rs; sourceTree = "<group>"; };
9A57A197EBB4AEAC23ED6F36 /* git.rs */ = {isa = PBXFileReference; path = git.rs; sourceTree = "<group>"; };
9A611472FDB8AC605F500C3F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
9B5BEB3EE5C7932B4E065849 /* clipboard.rs */ = {isa = PBXFileReference; path = clipboard.rs; sourceTree = "<group>"; };
9C68630C9CBDDB447BC5E879 /* app_icon.rs */ = {isa = PBXFileReference; path = app_icon.rs; sourceTree = "<group>"; };
9D7F16C81C610385B6CA9B46 /* search.rs */ = {isa = PBXFileReference; path = search.rs; sourceTree = "<group>"; };
9EAFBB5DB3A9DC0A7B2E8FF6 /* frontmatter.rs */ = {isa = PBXFileReference; path = frontmatter.rs; sourceTree = "<group>"; };
A01712BAB3D6830A0BC75710 /* remote_status.rs */ = {isa = PBXFileReference; path = remote_status.rs; sourceTree = "<group>"; };
A0FB232A6B19885BD9BDCA62 /* boundary.rs */ = {isa = PBXFileReference; path = boundary.rs; sourceTree = "<group>"; };
A16DE2463D72666355CA347B /* antigravity_config.rs */ = {isa = PBXFileReference; path = antigravity_config.rs; sourceTree = "<group>"; };
A1AE659A16F1D92E77E9E687 /* views.rs */ = {isa = PBXFileReference; path = views.rs; sourceTree = "<group>"; };
A64C1E3DB12B7D51417FBED4 /* vault_list.rs */ = {isa = PBXFileReference; path = vault_list.rs; sourceTree = "<group>"; };
A8647B6883D11614B6E97DB3 /* copilot_discovery.rs */ = {isa = PBXFileReference; path = copilot_discovery.rs; sourceTree = "<group>"; };
A8F3EABFCD65C8663D7D2FDC /* rename.rs */ = {isa = PBXFileReference; path = rename.rs; sourceTree = "<group>"; };
A8F4939901A70030BD872898 /* rename_transaction.rs */ = {isa = PBXFileReference; path = rename_transaction.rs; sourceTree = "<group>"; };
A9D939D7C6842A013F9E9D2D /* LaunchScreen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
AE2B2E577D7A7ABD77E37F57 /* relationship_key_tests.rs */ = {isa = PBXFileReference; path = relationship_key_tests.rs; sourceTree = "<group>"; };
B0488C703D2C6B46C91C47DA /* ai_agent_processes.rs */ = {isa = PBXFileReference; path = ai_agent_processes.rs; sourceTree = "<group>"; };
B2ABF84048E93D7CD435A4FA /* opencode_config.rs */ = {isa = PBXFileReference; path = opencode_config.rs; sourceTree = "<group>"; };
B43462DD1247187BEC7B2867 /* mcp_config.rs */ = {isa = PBXFileReference; path = mcp_config.rs; sourceTree = "<group>"; };
B87EE0F054D9C201C322C9B1 /* opencode_events_tests.rs */ = {isa = PBXFileReference; path = opencode_events_tests.rs; sourceTree = "<group>"; };
B88D960D36A57345E09B5B80 /* keys.rs */ = {isa = PBXFileReference; path = keys.rs; sourceTree = "<group>"; };
B9F7A500BB678F7C6C5EFA99 /* history.rs */ = {isa = PBXFileReference; path = history.rs; sourceTree = "<group>"; };
BA4747AF028A869AA1A1A6DC /* basics.rs */ = {isa = PBXFileReference; path = basics.rs; sourceTree = "<group>"; };
BBE04C1F55BC29695FEE4539 /* runtime.rs */ = {isa = PBXFileReference; path = runtime.rs; sourceTree = "<group>"; };
BC1398337782B4F13550069B /* modified_dates_tests.rs */ = {isa = PBXFileReference; path = modified_dates_tests.rs; sourceTree = "<group>"; };
BD49C0127DD47B9259DDB6DC /* relationships.rs */ = {isa = PBXFileReference; path = relationships.rs; sourceTree = "<group>"; };
C0126E76F91A13BBDBC5904C /* view_migration.rs */ = {isa = PBXFileReference; path = view_migration.rs; sourceTree = "<group>"; };
C2AD8E13B962ECF439B7E1E5 /* yaml.rs */ = {isa = PBXFileReference; path = yaml.rs; sourceTree = "<group>"; };
C3ED1D8403428C88C5F63503 /* kiro_discovery.rs */ = {isa = PBXFileReference; path = kiro_discovery.rs; sourceTree = "<group>"; };
C55B8EDBBEB11312B57B7591 /* ops.rs */ = {isa = PBXFileReference; path = ops.rs; sourceTree = "<group>"; };
C66F99524B45C69B7210BDEE /* version.rs */ = {isa = PBXFileReference; path = version.rs; sourceTree = "<group>"; };
C68619FE2409BD0403F0F822 /* MetalKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MetalKit.framework; path = System/Library/Frameworks/MetalKit.framework; sourceTree = SDKROOT; };
C6CD6117887727F3A4D96F57 /* cli_agent_runtime.rs */ = {isa = PBXFileReference; path = cli_agent_runtime.rs; sourceTree = "<group>"; };
C7F71AD744A1B18D2DACDC62 /* ai_model_tools.rs */ = {isa = PBXFileReference; path = ai_model_tools.rs; sourceTree = "<group>"; };
CAA8F8764EF165BAD372E0AB /* file_cmds.rs */ = {isa = PBXFileReference; path = file_cmds.rs; sourceTree = "<group>"; };
CBE02C8F152E451278EA827C /* view_tests.rs */ = {isa = PBXFileReference; path = view_tests.rs; sourceTree = "<group>"; };
CECEC916A37B4A001FEEFF9A /* file.rs */ = {isa = PBXFileReference; path = file.rs; sourceTree = "<group>"; };
D1CBEA64917CE1F1C3A5589D /* file_url.rs */ = {isa = PBXFileReference; path = file_url.rs; sourceTree = "<group>"; };
D3757B9773F2FA1B992C7EB1 /* shell_env.rs */ = {isa = PBXFileReference; path = shell_env.rs; sourceTree = "<group>"; };
D860F78F8B5272FDB3AE6247 /* git_clone.rs */ = {isa = PBXFileReference; path = git_clone.rs; sourceTree = "<group>"; };
D8B35D0B4002E064A68C5918 /* ops_update_tests.rs */ = {isa = PBXFileReference; path = ops_update_tests.rs; sourceTree = "<group>"; };
DB739EBCB89E3A26BD0494C8 /* extraction.rs */ = {isa = PBXFileReference; path = extraction.rs; sourceTree = "<group>"; };
DC2E71B56C45C04CAE6565F0 /* git_connect.rs */ = {isa = PBXFileReference; path = git_connect.rs; sourceTree = "<group>"; };
DC4FA3AE9642BBE51F638B89 /* runtime.rs */ = {isa = PBXFileReference; path = runtime.rs; sourceTree = "<group>"; };
DC6FADA70D52DCF194FF7D6C /* system.rs */ = {isa = PBXFileReference; path = system.rs; sourceTree = "<group>"; };
E479065A9C78E592C84F4944 /* remote_url.rs */ = {isa = PBXFileReference; path = remote_url.rs; sourceTree = "<group>"; };
E4FA358B012D1EDF0267B63F /* claude_invocation.rs */ = {isa = PBXFileReference; path = claude_invocation.rs; sourceTree = "<group>"; };
EA0CD2EF0B8E39E98114B8B1 /* laputa_iOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = laputa_iOS.entitlements; sourceTree = "<group>"; };
EBBF2E18D884BEAE0BB5EABE /* pi_events_tests.rs */ = {isa = PBXFileReference; path = pi_events_tests.rs; sourceTree = "<group>"; };
EC2E3E3FD74DE9987F1F326B /* mcp.rs */ = {isa = PBXFileReference; path = mcp.rs; sourceTree = "<group>"; };
ECE47DEFF64DBD80238E7C96 /* kiro_cli.rs */ = {isa = PBXFileReference; path = kiro_cli.rs; sourceTree = "<group>"; };
F2C168663A35EAABC3AC0E00 /* filename_rules.rs */ = {isa = PBXFileReference; path = filename_rules.rs; sourceTree = "<group>"; };
F304454433962A99CF538071 /* line_stream.rs */ = {isa = PBXFileReference; path = line_stream.rs; sourceTree = "<group>"; };
F4EDF4DE2E778C5A03B94435 /* linux_appimage.rs */ = {isa = PBXFileReference; path = linux_appimage.rs; sourceTree = "<group>"; };
F4F90594F8CD2DB418876246 /* settings.rs */ = {isa = PBXFileReference; path = settings.rs; sourceTree = "<group>"; };
F6671256B6EF31BA8EEB7622 /* app_config.rs */ = {isa = PBXFileReference; path = app_config.rs; sourceTree = "<group>"; };
F6CCA1B5F651CD7BE868E102 /* claude_cli.rs */ = {isa = PBXFileReference; path = claude_cli.rs; sourceTree = "<group>"; };
F77DDF68DB111E6E824780D4 /* frontmatter_cmds.rs */ = {isa = PBXFileReference; path = frontmatter_cmds.rs; sourceTree = "<group>"; };
F7833823F42B1D5F9031B534 /* app_icon.rs */ = {isa = PBXFileReference; path = app_icon.rs; sourceTree = "<group>"; };
FB24334BDF17362ADB6AFAF8 /* journal_type_visibility.rs */ = {isa = PBXFileReference; path = journal_type_visibility.rs; sourceTree = "<group>"; };
FB6CC358F33CD2DDB4DFB1FE /* ignored.rs */ = {isa = PBXFileReference; path = ignored.rs; sourceTree = "<group>"; };
FCC12D491DEEA8F9048BEB3C /* pi_cli.rs */ = {isa = PBXFileReference; path = pi_cli.rs; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
C5C4481C06CDA35095034A53 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
E52656C9AA3CE79F8BD9C340 /* libapp.a in Frameworks */,
1E3F1D473076F96C5929CEE7 /* CoreGraphics.framework in Frameworks */,
10CF0B2A75125AB882A4104B /* Metal.framework in Frameworks */,
BFA08714B1F1FFA160554E4E /* MetalKit.framework in Frameworks */,
888E277D0583DEC4A5F817FA /* QuartzCore.framework in Frameworks */,
6BA90420617661093E6C004A /* Security.framework in Frameworks */,
890AF7B1E9D69D4FBA033F99 /* UIKit.framework in Frameworks */,
10BC764F3DECE7B9FDC8F1EB /* WebKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
0EEEEBEC725F0B590CDC8EA7 /* git */ = {
isa = PBXGroup;
children = (
4D52F451E32D5D9CA7AFB9AA /* author.rs */,
9992DE2C71B8768B3E090D80 /* clone.rs */,
4F0D35BE7398C3602AB06629 /* command.rs */,
22092BA85067CC737DBBAD05 /* commit.rs */,
082E515A19172B9A0992BA4F /* conflict.rs */,
6D03B0E75CD5CDAFA20644BC /* connect.rs */,
2E55F0E500944FFBEDF36439 /* credentials.rs */,
3EF2534081FDE3316E028081 /* dates.rs */,
D1CBEA64917CE1F1C3A5589D /* file_url.rs */,
B9F7A500BB678F7C6C5EFA99 /* history.rs */,
87147D77664A5051BBA28592 /* mod.rs */,
1BB054E84CD7A1962922A3E2 /* provider.rs */,
5D6A7764044526D11B69B748 /* pulse.rs */,
700C8B5C02E5F70B26055FFD /* remote_branch_tests.rs */,
09D44DF00534FAA275529BF9 /* remote_config.rs */,
A01712BAB3D6830A0BC75710 /* remote_status.rs */,
E479065A9C78E592C84F4944 /* remote_url.rs */,
81F8B518EC2593A40DAA5503 /* remote.rs */,
363304D4E0297987B24BB926 /* status.rs */,
14C532D36F6C1157D9C129D1 /* upstream.rs */,
);
path = git;
sourceTree = "<group>";
};
24D40E45930F3723C3E550D0 /* commands */ = {
isa = PBXGroup;
children = (
7D8F18C847A1FF6B2BDB0356 /* ai.rs */,
F7833823F42B1D5F9031B534 /* app_icon.rs */,
9B5BEB3EE5C7932B4E065849 /* clipboard.rs */,
06D4D353ACDD7DA2F35B49E8 /* delete.rs */,
6B7EB67FFE128AB20A135E6E /* folders.rs */,
D860F78F8B5272FDB3AE6247 /* git_clone.rs */,
DC2E71B56C45C04CAE6565F0 /* git_connect.rs */,
9A57A197EBB4AEAC23ED6F36 /* git.rs */,
1CBDAF21C861C3AB97AC482D /* memory.rs */,
4E947F33478FAB67227CFCCB /* mod.rs */,
4A46898BA1C969B2646B4B80 /* pdf_export.rs */,
DC4FA3AE9642BBE51F638B89 /* runtime.rs */,
348A425343E36A5B9DC950F4 /* sheet.rs */,
DC6FADA70D52DCF194FF7D6C /* system.rs */,
4207C0C689A9DEF15CA8888C /* vault.rs */,
C66F99524B45C69B7210BDEE /* version.rs */,
F195675449CD313E2231565D /* vault */,
);
path = commands;
sourceTree = "<group>";
};
25D8109B94A4D5FA1ADBFFAC /* mcp */ = {
isa = PBXGroup;
children = (
DB739EBCB89E3A26BD0494C8 /* extraction.rs */,
5B0390DD26F6B3080CFE1531 /* opencode.rs */,
057E964B8FFDE93C6C0DE7F0 /* paths.rs */,
BBE04C1F55BC29695FEE4539 /* runtime.rs */,
68EDAECA09ECC7BC74B1088C /* subprocess.rs */,
);
path = mcp;
sourceTree = "<group>";
};
375B38CFEED2D8C01FF6B250 /* src */ = {
isa = PBXGroup;
children = (
B0488C703D2C6B46C91C47DA /* ai_agent_processes.rs */,
3CD4014D86632C50AF20DE59 /* ai_agents.rs */,
C7F71AD744A1B18D2DACDC62 /* ai_model_tools.rs */,
1C41778F8CEEEBAC8FCC5F13 /* ai_models.rs */,
121AED7D3C84479EC638C2E8 /* antigravity_cli.rs */,
A16DE2463D72666355CA347B /* antigravity_config.rs */,
20AE80661DFE787E09398F4F /* antigravity_discovery.rs */,
F6671256B6EF31BA8EEB7622 /* app_config.rs */,
9C68630C9CBDDB447BC5E879 /* app_icon.rs */,
5BFC39CB9F1243B4474C3BB6 /* app_updater.rs */,
F6CCA1B5F651CD7BE868E102 /* claude_cli.rs */,
E4FA358B012D1EDF0267B63F /* claude_invocation.rs */,
C6CD6117887727F3A4D96F57 /* cli_agent_runtime.rs */,
010158A81A8DD44ABBAA4BCC /* codex_cli.rs */,
14962FC08F5BBCA3DFF34DD4 /* copilot_cli.rs */,
A8647B6883D11614B6E97DB3 /* copilot_discovery.rs */,
6F4D5A90038E5C644B0B92A5 /* hermes_cli.rs */,
4C1FDAEA4662D9A6260A58DE /* hermes_discovery.rs */,
ECE47DEFF64DBD80238E7C96 /* kiro_cli.rs */,
C3ED1D8403428C88C5F63503 /* kiro_discovery.rs */,
5A06AA9064684BD5F26156B3 /* lib.rs */,
F4EDF4DE2E778C5A03B94435 /* linux_appimage.rs */,
2F38683CB597F0CC57478E4A /* main.rs */,
EC2E3E3FD74DE9987F1F326B /* mcp.rs */,
0075CBC9552C222333830937 /* menu.rs */,
96BDADEAB5BE019394D4DF4C /* opencode_cli.rs */,
B2ABF84048E93D7CD435A4FA /* opencode_config.rs */,
9049C59DDCC9763ACB36C5F3 /* opencode_discovery.rs */,
B87EE0F054D9C201C322C9B1 /* opencode_events_tests.rs */,
3FE3C66FF30B84195FA98C1A /* opencode_events.rs */,
FCC12D491DEEA8F9048BEB3C /* pi_cli.rs */,
3202961ACB715D8D472F795C /* pi_config.rs */,
816915173E861F05D186A727 /* pi_discovery.rs */,
EBBF2E18D884BEAE0BB5EABE /* pi_events_tests.rs */,
0FCCFC9E2A1E037C3491E7F5 /* pi_events.rs */,
9D7F16C81C610385B6CA9B46 /* search.rs */,
F4F90594F8CD2DB418876246 /* settings.rs */,
7BF95AB601E1EA43C76FEE79 /* telemetry.rs */,
A64C1E3DB12B7D51417FBED4 /* vault_list.rs */,
458437264D37E162C02F7E01 /* vault_watcher.rs */,
3D266F3E587C8CAFD43897AB /* window_state.rs */,
70C8904AC6DCA135C23A111F /* cli_agent_runtime */,
24D40E45930F3723C3E550D0 /* commands */,
DC70A0AE2754CAB63FF390CC /* frontmatter */,
0EEEEBEC725F0B590CDC8EA7 /* git */,
25D8109B94A4D5FA1ADBFFAC /* mcp */,
ED344194F7B84C233B93DD09 /* vault */,
);
name = src;
path = ../../src;
sourceTree = "<group>";
};
53685D32BD42A5AD34D93205 /* bindings */ = {
isa = PBXGroup;
children = (
5450814D3827CCD69F01A241 /* bindings.h */,
);
path = bindings;
sourceTree = "<group>";
};
62A4B7D340F2686BFC21EEA1 /* Externals */ = {
isa = PBXGroup;
children = (
);
path = Externals;
sourceTree = "<group>";
};
70C8904AC6DCA135C23A111F /* cli_agent_runtime */ = {
isa = PBXGroup;
children = (
F304454433962A99CF538071 /* line_stream.rs */,
B43462DD1247187BEC7B2867 /* mcp_config.rs */,
D3757B9773F2FA1B992C7EB1 /* shell_env.rs */,
8FD8EFD959EE4C4185BD712D /* windows_cmd_shim.rs */,
);
path = cli_agent_runtime;
sourceTree = "<group>";
};
8E68112B2BC77FD0176FC686 /* laputa */ = {
isa = PBXGroup;
children = (
6A8D7ABE8518DC962AEE83D2 /* main.mm */,
53685D32BD42A5AD34D93205 /* bindings */,
);
path = laputa;
sourceTree = "<group>";
};
9E882C91B5A089FA290CC95F /* mod_tests */ = {
isa = PBXGroup;
children = (
675DE5C585D832EC23F4BFF3 /* archival_metadata.rs */,
BA4747AF028A869AA1A1A6DC /* basics.rs */,
7A12A53788441DDEC467ADF9 /* complex_frontmatter.rs */,
22EBF553582EACF370284B42 /* display_metadata.rs */,
01A36EEB3D914E2049B80F8C /* folder_and_file_kind.rs */,
FB24334BDF17362ADB6AFAF8 /* journal_type_visibility.rs */,
6F0DA82A2114B791EDAB7300 /* real_vault_consistency.rs */,
BD49C0127DD47B9259DDB6DC /* relationships.rs */,
85A5FC54DAD705312260A21A /* scan_and_file_access.rs */,
73CCD2E1120A28AD85F99137 /* type_and_links.rs */,
);
path = mod_tests;
sourceTree = "<group>";
};
ADB8E0CEBBD4C6248828DC1E /* laputa_iOS */ = {
isa = PBXGroup;
children = (
9A611472FDB8AC605F500C3F /* Info.plist */,
EA0CD2EF0B8E39E98114B8B1 /* laputa_iOS.entitlements */,
);
path = laputa_iOS;
sourceTree = "<group>";
};
BCC76595F04AD2075FB85DBD = {
isa = PBXGroup;
children = (
0F60A50A996D2D783A5FD25F /* assets */,
3BBE6E79A4BF3832CE315919 /* Assets.xcassets */,
A9D939D7C6842A013F9E9D2D /* LaunchScreen.storyboard */,
62A4B7D340F2686BFC21EEA1 /* Externals */,
ADB8E0CEBBD4C6248828DC1E /* laputa_iOS */,
D07B2BBD7D85A1140E7B1325 /* Sources */,
375B38CFEED2D8C01FF6B250 /* src */,
F8799DD23A051DB64ABA21E1 /* Frameworks */,
BDD7263C80436D6C14C3E2BB /* Products */,
);
sourceTree = "<group>";
};
BDD7263C80436D6C14C3E2BB /* Products */ = {
isa = PBXGroup;
children = (
5986643AE3444A64F2EC3699 /* HoloLake_iOS.app */,
);
name = Products;
sourceTree = "<group>";
};
D07B2BBD7D85A1140E7B1325 /* Sources */ = {
isa = PBXGroup;
children = (
8E68112B2BC77FD0176FC686 /* laputa */,
);
path = Sources;
sourceTree = "<group>";
};
DC70A0AE2754CAB63FF390CC /* frontmatter */ = {
isa = PBXGroup;
children = (
B88D960D36A57345E09B5B80 /* keys.rs */,
1179CD8FF58077DDF7E99299 /* mod.rs */,
D8B35D0B4002E064A68C5918 /* ops_update_tests.rs */,
C55B8EDBBEB11312B57B7591 /* ops.rs */,
C2AD8E13B962ECF439B7E1E5 /* yaml.rs */,
);
path = frontmatter;
sourceTree = "<group>";
};
ED344194F7B84C233B93DD09 /* vault */ = {
isa = PBXGroup;
children = (
0050B284AED1F6607547DDDF /* cache.rs */,
7D2B082E58B3456C21A81C48 /* config_seed.rs */,
42D0C09784FF734A5CC92E40 /* entry.rs */,
CECEC916A37B4A001FEEFF9A /* file.rs */,
F2C168663A35EAABC3AC0E00 /* filename_rules.rs */,
26948CCB253A8A9438E1DFF6 /* folders.rs */,
74958B90904CF6F4DD914C06 /* frontmatter_regression_tests.rs */,
9EAFBB5DB3A9DC0A7B2E8FF6 /* frontmatter.rs */,
128C9606725F612692B8438E /* getting_started.rs */,
FB6CC358F33CD2DDB4DFB1FE /* ignored.rs */,
5766FC68AFF52E5D601A2201 /* image.rs */,
09754A5CDE571D89F3563080 /* migration.rs */,
8D2E06DCBF77C0D6AC0FB24C /* mod_tests.rs */,
818CA203C2C91ABABF95A8CB /* mod.rs */,
BC1398337782B4F13550069B /* modified_dates_tests.rs */,
76DEFD594E4794AA24544225 /* parsing_tests.rs */,
463BC00E27FDD63E84BFDACD /* parsing.rs */,
015F375350B0DCCF932CD855 /* path_identity.rs */,
AE2B2E577D7A7ABD77E37F57 /* relationship_key_tests.rs */,
A8F4939901A70030BD872898 /* rename_transaction.rs */,
A8F3EABFCD65C8663D7D2FDC /* rename.rs */,
2869AD5AF9EBC3A2F6F89A96 /* system_metadata_tests.rs */,
2FC6224DED146A056DBEFAFA /* title_sync.rs */,
7B0BC7CD8DCDBD326123B1E1 /* trash.rs */,
6E98CFB59596D798EB7DCB34 /* type_templates.rs */,
8961178AD8EA4CC56A023659 /* view_date_filters.rs */,
C0126E76F91A13BBDBC5904C /* view_migration.rs */,
66E7FE04B14503C592B73CD0 /* view_relationships.rs */,
CBE02C8F152E451278EA827C /* view_tests.rs */,
0BF29A2DBD08245184C62509 /* view_value_conversions.rs */,
A1AE659A16F1D92E77E9E687 /* views.rs */,
9E882C91B5A089FA290CC95F /* mod_tests */,
);
path = vault;
sourceTree = "<group>";
};
F195675449CD313E2231565D /* vault */ = {
isa = PBXGroup;
children = (
A0FB232A6B19885BD9BDCA62 /* boundary.rs */,
CAA8F8764EF165BAD372E0AB /* file_cmds.rs */,
F77DDF68DB111E6E824780D4 /* frontmatter_cmds.rs */,
41B8445BDA2EEFFB636C2F27 /* lifecycle_cmds.rs */,
057242D51175B2DA743FFEEC /* rename_cmds.rs */,
1315706C702DC2397F3B802E /* scan_cmds.rs */,
354F27756754D7E66226E8C8 /* view_cmds.rs */,
);
path = vault;
sourceTree = "<group>";
};
F8799DD23A051DB64ABA21E1 /* Frameworks */ = {
isa = PBXGroup;
children = (
8E5CBD70FB2815D19C3F0190 /* CoreGraphics.framework */,
907D2515583F8E3DAA94C653 /* libapp.a */,
60D77C95CDA4878AC31E06FC /* Metal.framework */,
C68619FE2409BD0403F0F822 /* MetalKit.framework */,
28F8BF20C12EF3B0D970C4BE /* QuartzCore.framework */,
476D4C25E501B2DB819B83EF /* Security.framework */,
26BB1CFE5D89468C0954F3D7 /* UIKit.framework */,
12F6AA9DA589FC51C9D843C3 /* WebKit.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
7C405E12F28A63ECDF863C30 /* HoloLake_iOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1BC66CB9C55FA203BDD14661 /* Build configuration list for PBXNativeTarget "HoloLake_iOS" */;
buildPhases = (
0AD8A0E8790089BF8E7F3851 /* Build Rust Code */,
FDE5DF4B6ABD5475F59F7853 /* Sources */,
3AC97F5F4F4789DB85510F50 /* Resources */,
C5C4481C06CDA35095034A53 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = HoloLake_iOS;
packageProductDependencies = (
);
productName = HoloLake_iOS;
productReference = 5986643AE3444A64F2EC3699 /* HoloLake_iOS.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
D0324676016167B5308CE31A /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 1430;
TargetAttributes = {
};
};
buildConfigurationList = 5536EFA81EFA6631A115A48E /* Build configuration list for PBXProject "HoloLake" */;
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
Base,
en,
);
mainGroup = BCC76595F04AD2075FB85DBD;
minimizedProjectReferenceProxies = 1;
preferredProjectObjectVersion = 77;
productRefGroup = BDD7263C80436D6C14C3E2BB /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
7C405E12F28A63ECDF863C30 /* HoloLake_iOS */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
3AC97F5F4F4789DB85510F50 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
30810FE969AAA1DFE091637C /* Assets.xcassets in Resources */,
A22C9A35CAAB2DF45F783F3B /* LaunchScreen.storyboard in Resources */,
574E9FC1DB877392B7BF5918 /* assets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
0AD8A0E8790089BF8E7F3851 /* Build Rust Code */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "Build Rust Code";
outputFileListPaths = (
);
outputPaths = (
"$(SRCROOT)/Externals/x86_64/${CONFIGURATION}/libapp.a",
"$(SRCROOT)/Externals/arm64/${CONFIGURATION}/libapp.a",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "npm run -- tauri ios xcode-script -v --platform ${PLATFORM_DISPLAY_NAME:?} --sdk-root ${SDKROOT:?} --framework-search-paths \"${FRAMEWORK_SEARCH_PATHS:?}\" --header-search-paths \"${HEADER_SEARCH_PATHS:?}\" --gcc-preprocessor-definitions \"${GCC_PREPROCESSOR_DEFINITIONS:-}\" --configuration ${CONFIGURATION:?} ${FORCE_COLOR} ${ARCHS:?}";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
FDE5DF4B6ABD5475F59F7853 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
9E4FC2FF2D11E16C85D0CA22 /* main.mm in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
59094C00BE8A55D183856EE8 /* debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ARCHS = (
arm64,
);
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = laputa_iOS/laputa_iOS.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
ENABLE_BITCODE = NO;
"EXCLUDED_ARCHS[sdk=iphoneos*]" = x86_64;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\".\"",
);
INFOPLIST_FILE = laputa_iOS/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
"LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.guanghulab.hololake;
PRODUCT_NAME = "HoloLake Era";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALID_ARCHS = arm64;
};
name = debug;
};
6AA0389A83C50D9AFAFB7CBD /* release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_VERSION = 5.0;
};
name = release;
};
8D6F3195A1CD4CA412A8E96A /* debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
"DEBUG=1",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = "$(TARGET_NAME)";
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
};
name = debug;
};
CEA1A776C8E7A07EB2E0981B /* release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ARCHS = (
arm64,
);
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = laputa_iOS/laputa_iOS.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
ENABLE_BITCODE = NO;
"EXCLUDED_ARCHS[sdk=iphoneos*]" = x86_64;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\".\"",
);
INFOPLIST_FILE = laputa_iOS/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
"LIBRARY_SEARCH_PATHS[arch=arm64]" = "$(inherited) $(PROJECT_DIR)/Externals/arm64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
"LIBRARY_SEARCH_PATHS[arch=x86_64]" = "$(inherited) $(PROJECT_DIR)/Externals/x86_64/$(CONFIGURATION) $(SDKROOT)/usr/lib/swift $(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)";
PRODUCT_BUNDLE_IDENTIFIER = com.guanghulab.hololake;
PRODUCT_NAME = "HoloLake Era";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALID_ARCHS = arm64;
};
name = release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
1BC66CB9C55FA203BDD14661 /* Build configuration list for PBXNativeTarget "HoloLake_iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
59094C00BE8A55D183856EE8 /* debug */,
CEA1A776C8E7A07EB2E0981B /* release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = debug;
};
5536EFA81EFA6631A115A48E /* Build configuration list for PBXProject "HoloLake" */ = {
isa = XCConfigurationList;
buildConfigurations = (
8D6F3195A1CD4CA412A8E96A /* debug */,
6AA0389A83C50D9AFAFB7CBD /* release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = debug;
};
/* End XCConfigurationList section */
};
rootObject = D0324676016167B5308CE31A /* Project object */;
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1430"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES"
runPostActionsOnFailure = "NO">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "7C405E12F28A63ECDF863C30"
BuildableName = "HoloLake_iOS.app"
BlueprintName = "HoloLake_iOS"
ReferencedContainer = "container:HoloLake.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "NO"
onlyGenerateCoverageForSpecifiedTargets = "NO">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "7C405E12F28A63ECDF863C30"
BuildableName = "HoloLake_iOS.app"
BlueprintName = "HoloLake_iOS"
ReferencedContainer = "container:HoloLake.xcodeproj">
</BuildableReference>
</MacroExpansion>
<Testables>
</Testables>
<CommandLineArguments>
</CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
key = "RUST_BACKTRACE"
value = "full"
isEnabled = "YES">
</EnvironmentVariable>
<EnvironmentVariable
key = "RUST_LOG"
value = "info"
isEnabled = "YES">
</EnvironmentVariable>
</EnvironmentVariables>
</TestAction>
<LaunchAction
buildConfiguration = "debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "7C405E12F28A63ECDF863C30"
BuildableName = "HoloLake_iOS.app"
BlueprintName = "HoloLake_iOS"
ReferencedContainer = "container:HoloLake.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
</CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
key = "RUST_BACKTRACE"
value = "full"
isEnabled = "YES">
</EnvironmentVariable>
<EnvironmentVariable
key = "RUST_LOG"
value = "info"
isEnabled = "YES">
</EnvironmentVariable>
</EnvironmentVariables>
</LaunchAction>
<ProfileAction
buildConfiguration = "release"
shouldUseLaunchSchemeArgsEnv = "NO"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "7C405E12F28A63ECDF863C30"
BuildableName = "HoloLake_iOS.app"
BlueprintName = "HoloLake_iOS"
ReferencedContainer = "container:HoloLake.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
</CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
key = "RUST_BACKTRACE"
value = "full"
isEnabled = "YES">
</EnvironmentVariable>
<EnvironmentVariable
key = "RUST_LOG"
value = "info"
isEnabled = "YES">
</EnvironmentVariable>
</EnvironmentVariables>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1,8 +1,8 @@
# Uncomment the next line to define a global platform for your project
target 'laputa_iOS' do
platform :ios, '14.0'
# Pods for laputa_iOS
target 'HoloLake_iOS' do
platform :ios, '15.0'
# Pods for HoloLake_iOS
end
target 'laputa_macOS' do

View File

@ -4,6 +4,8 @@
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>HoloLake</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
@ -15,9 +17,9 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>0.1.0</string>
<string>0.1.7</string>
<key>CFBundleVersion</key>
<string>0.1.0</string>
<string>17</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
@ -30,8 +32,6 @@
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
@ -41,4 +41,4 @@
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>
</plist>

View File

@ -1,8 +1,8 @@
name: Tolaria
name: HoloLake
options:
bundleIdPrefix: club.refactoring.tolaria
bundleIdPrefix: com.guanghulab.hololake
deploymentTarget:
iOS: 14.0
iOS: 15.0
fileGroups: [../../src]
configs:
debug: debug
@ -10,8 +10,8 @@ configs:
settingGroups:
app:
base:
PRODUCT_NAME: Tolaria
PRODUCT_BUNDLE_IDENTIFIER: club.refactoring.tolaria
PRODUCT_NAME: HoloLake Era
PRODUCT_BUNDLE_IDENTIFIER: com.guanghulab.hololake
targetTemplates:
app:
type: application
@ -24,7 +24,7 @@ targetTemplates:
settings:
groups: [app]
targets:
laputa_iOS:
HoloLake_iOS:
type: application
platform: iOS
sources:
@ -44,15 +44,14 @@ targets:
UIRequiredDeviceCapabilities: [arm64, metal]
UISupportedInterfaceOrientations:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
UISupportedInterfaceOrientations~ipad:
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
CFBundleShortVersionString: 0.1.0
CFBundleVersion: "0.1.0"
CFBundleDisplayName: HoloLake
CFBundleShortVersionString: 0.1.7
CFBundleVersion: "17"
entitlements:
path: laputa_iOS/laputa_iOS.entitlements
scheme:

View File

@ -0,0 +1,33 @@
{
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
"productName": "HoloLake Era",
"identifier": "com.guanghulab.hololake",
"build": {
"beforeDevCommand": "pnpm dev",
"beforeBuildCommand": "pnpm build"
},
"app": {
"macOSPrivateApi": false,
"windows": [
{
"title": "HoloLake Era",
"width": 430,
"height": 932,
"minWidth": 320,
"minHeight": 568,
"resizable": true,
"fullscreen": false,
"backgroundColor": "#11161A",
"dragDropEnabled": false
}
]
},
"bundle": {
"active": true,
"targets": ["app"],
"resources": {},
"iOS": {
"minimumSystemVersion": "15.0"
}
}
}

View File

@ -0,0 +1,19 @@
{
"$schema": "../node_modules/@tauri-apps/cli/config.schema.json",
"productName": "HoloLake Era Team Foundation",
"identifier": "com.guanghulab.hololake.team-foundation",
"build": {
"beforeBuildCommand": "npm run build:team-foundation"
},
"app": {
"windows": [
{
"title": "HoloLake Era · GLS 团队基座",
"width": 1280,
"height": 820,
"minWidth": 760,
"minHeight": 560
}
]
}
}

View File

@ -25,6 +25,10 @@
/* Tauri's macOS traffic lights are overlaid on the title bar. Keep the
product mark and title in a separate, stable lane so they never collide. */
body.mac-chrome .hololake-bar { padding-left: 92px; }
.team-foundation { min-height: 100vh; padding: clamp(24px, 5vw, 72px); color: var(--text-primary); background: radial-gradient(circle at 85% 10%, color-mix(in srgb, var(--accent-blue) 16%, transparent), transparent 32%), var(--surface-app); }
.team-foundation__header, .team-foundation__footer { display: flex; align-items: center; justify-content: space-between; color: var(--text-muted); font-size: 11px; letter-spacing: .12em; }.team-foundation__header strong { color: var(--text-primary); font-size: 16px; letter-spacing: 0; }
.team-foundation__intro { max-width: 760px; padding: clamp(64px, 12vw, 150px) 0 54px; }.team-foundation__intro > p:first-child { color: var(--accent-blue); font: 11px/1.4 monospace; letter-spacing: .12em; }.team-foundation__intro h1 { margin: 12px 0 20px; font: 500 clamp(48px, 9vw, 112px)/.95 serif; }.team-foundation__intro p:last-child { max-width: 650px; color: var(--text-secondary); font-size: 16px; line-height: 1.8; }
.team-foundation__route { display: grid; max-width: 980px; margin: 0; padding: 0; border-top: 1px solid var(--border-default); list-style: none; }.team-foundation__route li { display: grid; grid-template-columns: 56px 1fr; align-items: center; min-height: 82px; border-bottom: 1px solid var(--border-default); }.team-foundation__route li > span { color: var(--text-muted); font: 11px monospace; }.team-foundation__route div { display: flex; align-items: baseline; justify-content: space-between; gap: 20px; }.team-foundation__route code { color: var(--accent-blue); font-size: 11px; }.team-foundation__route strong { font-size: clamp(16px, 2vw, 24px); font-weight: 500; }.team-foundation__footer { margin-top: 48px; }
.hololake-bar__brand { min-width: max-content; white-space: nowrap; }
.hololake-bar__context { white-space: nowrap; }
.hololake-home { position: relative; z-index: 2; display: flex; width: 100%; min-width: 0; overflow: hidden; color: var(--text-primary); background: var(--surface-app); }
@ -40,6 +44,7 @@ body.mac-chrome .hololake-bar { padding-left: 92px; }
.channel-rail nav i[data-color="cyan"] { --tag-color: #4fd1c5; }.channel-rail nav i[data-color="blue"] { --tag-color: #60a5fa; }.channel-rail nav i[data-color="violet"] { --tag-color: #a78bfa; }.channel-rail nav i[data-color="amber"] { --tag-color: #fbbf24; }.channel-rail nav i[data-color="rose"] { --tag-color: #fb7185; }.channel-rail nav i[data-color="pink"] { --tag-color: #f472b6; }.channel-rail nav i[data-color="green"] { --tag-color: #4ade80; }
.channel-rail__modules { display: grid; gap: 8px; margin-top: auto; padding: 14px 10px; border: 1px solid var(--border-default); border-radius: 10px; background: var(--surface-card); }
.channel-rail__modules span { color: var(--text-muted); font-size: 10px; letter-spacing: .12em; }.channel-rail__modules b { font-size: 12px; font-weight: 550; }
.channel-mobile-nav { display: none; }
.hololake-home__hero { position: relative; max-width: 740px; padding: 24px 0 56px; overflow: hidden; }
.hololake-home__halo { position: absolute; right: -80px; top: -140px; width: 300px; aspect-ratio: 1; border: 1px solid var(--border-default); border-radius: 50%; opacity: .45; }
.hololake-home__eyebrow, .hololake-home__section-head span { color: var(--accent-blue); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; }
@ -92,7 +97,17 @@ body.mac-chrome .hololake-bar { padding-left: 92px; }
.guanghu-architecture__route { overflow-x: auto; margin: 2px 0 0; padding: 12px; border-radius: 6px; color: var(--text-secondary); background: var(--surface-app); font: 11px/1.6 monospace; white-space: nowrap; }
@media (max-width: 1000px) { .server-grid { grid-template-columns: 1fr; } }
@media (max-width: 900px) { .channel-grid--three { grid-template-columns: 1fr; }.channel-card { min-height: 190px; }.channel-rail { width: 190px; flex-basis: 190px; } }
@media (max-width: 780px) { .hololake-home__signal-grid, .hololake-home__module-grid, .channel-grid { grid-template-columns: 1fr; }.hololake-bar__context { display: none; }.channel-workspace { padding: 28px; }.channel-rail { display: none; }.channel-breadcrumb { overflow-x: auto; }.channel-stage h1 { font-size: 42px; } }
@media (max-width: 780px) {
.hololake-bar { height: calc(52px + env(safe-area-inset-top)); padding-top: env(safe-area-inset-top); padding-inline: 16px 12px; }
.hololake-bar__brand { font-size: 15px; }.hololake-bar__context { display: none; }.hololake-bar__theme { max-width: 120px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.app { min-height: 0; }
.hololake-home__signal-grid, .hololake-home__module-grid, .channel-grid { grid-template-columns: 1fr; }
.hololake-home { padding-bottom: calc(70px + env(safe-area-inset-bottom)); }
.channel-workspace { padding: 20px 18px 32px; }.channel-rail { display: none; }.channel-breadcrumb { margin-bottom: 18px; overflow-x: auto; }.channel-stage h1 { font-size: clamp(38px, 12vw, 52px); }.channel-stage__lead { margin: 16px 0 24px; }.channel-stage--root { min-height: calc(100dvh - 190px); }.channel-card { min-height: 180px; padding: 20px; }.channel-grid--three { grid-template-columns: 1fr; }.server-grid { grid-template-columns: 1fr; }
.channel-mobile-nav { position: fixed; z-index: 20; right: 0; bottom: 0; left: 0; display: grid; grid-template-columns: repeat(5, 1fr); padding: 6px 8px calc(6px + env(safe-area-inset-bottom)); border-top: 1px solid var(--border-default); background: color-mix(in srgb, var(--surface-sidebar) 92%, transparent); backdrop-filter: blur(18px); }
.channel-mobile-nav button { display: grid; height: 48px; min-width: 0; place-items: center; gap: 0; padding: 2px; color: var(--text-muted); }.channel-mobile-nav button[data-active="true"] { color: var(--accent-blue); }.channel-mobile-nav span { font-size: 18px; line-height: 1; }.channel-mobile-nav small { font-size: 9px; }
.channel-dock { width: 48px; flex-basis: 48px; padding-inline: 4px; }.channel-dock button { width: 40px; }
}
@media (max-width: 700px) { body.mac-chrome .hololake-bar { padding-left: 84px; }.hololake-bar__line { display: none; } }
.app {

View File

@ -0,0 +1,16 @@
import { render, screen } from '@testing-library/react'
import { describe, expect, it } from 'vitest'
import TeamFoundationApp from './TeamFoundationApp'
describe('TeamFoundationApp', () => {
it('exposes only the GLS public foundation workflow', () => {
render(<TeamFoundationApp />)
expect(screen.getByRole('heading', { name: 'GLS 系统架构' })).toBeInTheDocument()
expect(screen.getByText('GLS-SYS-ARCH-001')).toBeInTheDocument()
expect(screen.getByRole('list', { name: 'GLS 公共路径' })).toBeInTheDocument()
expect(screen.queryByText('心跳核心频道')).not.toBeInTheDocument()
expect(screen.queryByText('短剧视频 AI')).not.toBeInTheDocument()
expect(screen.queryByText('服务器与灯塔节点')).not.toBeInTheDocument()
})
})

30
src/TeamFoundationApp.tsx Normal file
View File

@ -0,0 +1,30 @@
import architecture from '../src-tauri/resources/public-architecture/gls-system-architecture.json'
import './App.css'
export default function TeamFoundationApp() {
return (
<main className="team-foundation" aria-label="光湖团队 GLS 系统架构基座">
<header className="team-foundation__header">
<span>HOLOLAKE · TEAM FOUNDATION</span>
<strong>HoloLake Era</strong>
</header>
<section className="team-foundation__intro">
<p>PUBLIC ARCHITECTURE · {architecture.id}</p>
<h1>GLS </h1>
<p> GLS </p>
</section>
<ol className="team-foundation__route" aria-label="GLS 公共路径">
{architecture.route.map((node, index) => (
<li key={node.id}>
<span>{String(index + 1).padStart(2, '0')}</span>
<div><code>{node.id}</code><strong>{node.name_zh}</strong></div>
</li>
))}
</ol>
<footer className="team-foundation__footer">
<span>线</span>
<code>{architecture.development_repository.id} · {architecture.development_repository.url}</code>
</footer>
</main>
)
}

View File

@ -1,4 +1,4 @@
import { fireEvent, render, screen } from '@testing-library/react'
import { fireEvent, render, screen, within } from '@testing-library/react'
import { beforeEach, describe, expect, it, vi } from 'vitest'
import { HoloLakeHome, HOLOLAKE_DEVELOPMENT_REPOSITORY_URL } from './HoloLakeHome'
@ -80,6 +80,19 @@ describe('HoloLakeHome', () => {
expect(screen.getAllByRole('button', { name: /接口已预留/ })).toHaveLength(3)
})
it('provides direct channel navigation for the iPhone layout', () => {
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)
const mobileNavigation = screen.getByRole('navigation', { name: '手机频道导航' })
expect(mobileNavigation).toBeInTheDocument()
fireEvent.click(within(mobileNavigation).getByRole('button', { name: /人格体/ }))
expect(screen.getByRole('heading', { name: '光之湖子系统' })).toBeInTheDocument()
fireEvent.click(within(mobileNavigation).getByRole('button', { name: /节点/ }))
expect(screen.getByRole('heading', { name: '服务器与灯塔节点' })).toBeInTheDocument()
})
it('opens the public domestic development repository', () => {
render(<HoloLakeHome locale="zh-CN" onEnterKnowledgeBase={vi.fn()} />)

View File

@ -213,6 +213,14 @@ export function HoloLakeHome({ locale, onEnterKnowledgeBase }: HoloLakeHomeProps
{renderRoute()}
</div>
<nav className="channel-mobile-nav" aria-label="手机频道导航">
<Button data-active={route === 'zero-core'} variant="ghost" onClick={() => navigate('zero-core')}><span></span><small></small></Button>
<Button data-active={['fifth-domain', 'eternal-lake-heart'].includes(route)} variant="ghost" onClick={() => navigate('eternal-lake-heart')}><span></span><small></small></Button>
<Button data-active={route === 'heartbeat-core'} variant="ghost" onClick={() => navigate('heartbeat-core')}><span></span><small></small></Button>
<Button data-active={route === 'light-lake'} variant="ghost" onClick={() => navigate('light-lake')}><span></span><small></small></Button>
<Button data-active={route === 'servers'} variant="ghost" onClick={() => navigate('servers')}><span></span><small></small></Button>
</nav>
<Dialog open={architectureOpen} onOpenChange={setArchitectureOpen}>
<DialogContent className="guanghu-architecture" aria-label={t('hololake.architecture.title')}>
<DialogHeader>

View File

@ -0,0 +1,8 @@
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import './index.css'
import TeamFoundationApp from './TeamFoundationApp'
createRoot(document.getElementById('root')!).render(
<StrictMode><TeamFoundationApp /></StrictMode>,
)

12
team-foundation.html Normal file
View File

@ -0,0 +1,12 @@
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>HoloLake Era · GLS 团队基座</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/team-foundation-main.tsx"></script>
</body>
</html>

View File

@ -958,6 +958,7 @@ function mcpBridgeInfoPlugin(): Plugin {
export default defineConfig({
plugins: [react(), tailwindcss(), vaultApiPlugin(), mcpBridgeInfoPlugin()],
cacheDir: process.env.TOLARIA_VITE_CACHE_DIR,
publicDir: process.env.VITE_HOLOLAKE_DISTRIBUTION === 'team-foundation' ? false : 'public',
resolve: {
alias: {
@ -991,6 +992,9 @@ export default defineConfig({
envPrefix: ['VITE_', 'TAURI_'],
build: {
rollupOptions: process.env.VITE_HOLOLAKE_DISTRIBUTION === 'team-foundation'
? { input: path.resolve(__dirname, 'team-foundation.html') }
: undefined,
// Tauri uses Chromium on Windows and WebKit on macOS/Linux
target: process.env.TAURI_PLATFORM === 'windows' ? 'chrome105' : 'safari13',
// Don't minify for debug builds