Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 10 additions & 9 deletions .acecode/skills/verify-package/scripts/verify_package.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ def preflight(report: Report, repo: Path, cmake: str | None, skip_build: bool,

def print_dry_run(repo: Path, build_dir: Path, staging: Path, platform: str,
targets: list[str], jobs: int, cmake: str | None,
skip_build: bool) -> None:
ninja: str | None, skip_build: bool) -> None:
"""Describe package verification without creating files or running processes."""
cmake_command = cmake or "cmake"
print("DRY RUN: no commands will be executed and no files will be changed.")
Expand All @@ -244,8 +244,8 @@ def print_dry_run(repo: Path, build_dir: Path, staging: Path, platform: str,
configure = [cmake_command, "-S", str(repo), "-B", str(build_dir),
"-DCMAKE_BUILD_TYPE=MinSizeRel", "-DBUILD_TESTING=OFF",
"-DACECODE_BUILD_DESKTOP=ON"]
if platform != "windows" and shutil.which("ninja"):
configure[4:4] = ["-G", "Ninja"]
if platform != "windows" and ninja:
configure[1:1] = ["-G", "Ninja"]
vcpkg_root = os.environ.get("VCPKG_ROOT")
if vcpkg_root:
configure.append(
Expand All @@ -271,16 +271,16 @@ def print_dry_run(repo: Path, build_dir: Path, staging: Path, platform: str,


def configure_and_build(report: Report, repo: Path, build_dir: Path, cmake: str,
targets: list[str], platform: str, jobs: int) -> bool:
ninja: str | None, targets: list[str], platform: str,
jobs: int) -> bool:
if not (build_dir / "CMakeCache.txt").is_file():
command = [cmake, "-S", str(repo), "-B", str(build_dir),
"-DCMAKE_BUILD_TYPE=MinSizeRel", "-DBUILD_TESTING=OFF",
"-DACECODE_BUILD_DESKTOP=ON"]
# A plain Windows shell can have Ninja on PATH without an initialized
# MSVC environment. Let CMake choose Visual Studio there.
if platform != "windows" and shutil.which("ninja"):
command.insert(4, "-G")
command.insert(5, "Ninja")
if platform != "windows" and ninja:
command[1:1] = ["-G", "Ninja"]
vcpkg_root = os.environ.get("VCPKG_ROOT")
if vcpkg_root:
toolchain = Path(vcpkg_root) / "scripts" / "buildsystems" / "vcpkg.cmake"
Expand Down Expand Up @@ -573,13 +573,14 @@ def main(argv: list[str]) -> int:
print("verify-package: --jobs must be a positive integer", file=sys.stderr)
return 2
cmake = shutil.which("cmake")
ninja = shutil.which("ninja")
targets = ["tui", "desktop"] if args.target == "all" else [args.target]
print(f"verify-package: repo={repo} build={build_dir} platform={platform} "
f"target={args.target} skip-build={args.skip_build}")

if args.dry_run:
print_dry_run(repo, build_dir, staging, platform, targets, jobs, cmake,
args.skip_build)
ninja, args.skip_build)
return 0

if not preflight(report, repo, cmake, args.skip_build, build_dir):
Expand All @@ -591,7 +592,7 @@ def main(argv: list[str]) -> int:
if not args.skip_build:
assert cmake is not None
if not configure_and_build(
report, repo, build_dir, cmake, targets, platform, jobs):
report, repo, build_dir, cmake, ninja, targets, platform, jobs):
print(f"verify-package: FAIL ({report.failed} check(s) failed)")
return 1
if not stage(report, repo, build_dir, staging, platform, targets, cmake or "cmake"):
Expand Down
19 changes: 10 additions & 9 deletions .agents/skills/verify-package/scripts/verify_package.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ def preflight(report: Report, repo: Path, cmake: str | None, skip_build: bool,

def print_dry_run(repo: Path, build_dir: Path, staging: Path, platform: str,
targets: list[str], jobs: int, cmake: str | None,
skip_build: bool) -> None:
ninja: str | None, skip_build: bool) -> None:
"""Describe package verification without creating files or running processes."""
cmake_command = cmake or "cmake"
print("DRY RUN: no commands will be executed and no files will be changed.")
Expand All @@ -244,8 +244,8 @@ def print_dry_run(repo: Path, build_dir: Path, staging: Path, platform: str,
configure = [cmake_command, "-S", str(repo), "-B", str(build_dir),
"-DCMAKE_BUILD_TYPE=MinSizeRel", "-DBUILD_TESTING=OFF",
"-DACECODE_BUILD_DESKTOP=ON"]
if platform != "windows" and shutil.which("ninja"):
configure[4:4] = ["-G", "Ninja"]
if platform != "windows" and ninja:
configure[1:1] = ["-G", "Ninja"]
vcpkg_root = os.environ.get("VCPKG_ROOT")
if vcpkg_root:
configure.append(
Expand All @@ -271,16 +271,16 @@ def print_dry_run(repo: Path, build_dir: Path, staging: Path, platform: str,


def configure_and_build(report: Report, repo: Path, build_dir: Path, cmake: str,
targets: list[str], platform: str, jobs: int) -> bool:
ninja: str | None, targets: list[str], platform: str,
jobs: int) -> bool:
if not (build_dir / "CMakeCache.txt").is_file():
command = [cmake, "-S", str(repo), "-B", str(build_dir),
"-DCMAKE_BUILD_TYPE=MinSizeRel", "-DBUILD_TESTING=OFF",
"-DACECODE_BUILD_DESKTOP=ON"]
# A plain Windows shell can have Ninja on PATH without an initialized
# MSVC environment. Let CMake choose Visual Studio there.
if platform != "windows" and shutil.which("ninja"):
command.insert(4, "-G")
command.insert(5, "Ninja")
if platform != "windows" and ninja:
command[1:1] = ["-G", "Ninja"]
vcpkg_root = os.environ.get("VCPKG_ROOT")
if vcpkg_root:
toolchain = Path(vcpkg_root) / "scripts" / "buildsystems" / "vcpkg.cmake"
Expand Down Expand Up @@ -573,13 +573,14 @@ def main(argv: list[str]) -> int:
print("verify-package: --jobs must be a positive integer", file=sys.stderr)
return 2
cmake = shutil.which("cmake")
ninja = shutil.which("ninja")
targets = ["tui", "desktop"] if args.target == "all" else [args.target]
print(f"verify-package: repo={repo} build={build_dir} platform={platform} "
f"target={args.target} skip-build={args.skip_build}")

if args.dry_run:
print_dry_run(repo, build_dir, staging, platform, targets, jobs, cmake,
args.skip_build)
ninja, args.skip_build)
return 0

if not preflight(report, repo, cmake, args.skip_build, build_dir):
Expand All @@ -591,7 +592,7 @@ def main(argv: list[str]) -> int:
if not args.skip_build:
assert cmake is not None
if not configure_and_build(
report, repo, build_dir, cmake, targets, platform, jobs):
report, repo, build_dir, cmake, ninja, targets, platform, jobs):
print(f"verify-package: FAIL ({report.failed} check(s) failed)")
return 1
if not stage(report, repo, build_dir, staging, platform, targets, cmake or "cmake"):
Expand Down
19 changes: 10 additions & 9 deletions .claude/skills/verify-package/scripts/verify_package.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ def preflight(report: Report, repo: Path, cmake: str | None, skip_build: bool,

def print_dry_run(repo: Path, build_dir: Path, staging: Path, platform: str,
targets: list[str], jobs: int, cmake: str | None,
skip_build: bool) -> None:
ninja: str | None, skip_build: bool) -> None:
"""Describe package verification without creating files or running processes."""
cmake_command = cmake or "cmake"
print("DRY RUN: no commands will be executed and no files will be changed.")
Expand All @@ -244,8 +244,8 @@ def print_dry_run(repo: Path, build_dir: Path, staging: Path, platform: str,
configure = [cmake_command, "-S", str(repo), "-B", str(build_dir),
"-DCMAKE_BUILD_TYPE=MinSizeRel", "-DBUILD_TESTING=OFF",
"-DACECODE_BUILD_DESKTOP=ON"]
if platform != "windows" and shutil.which("ninja"):
configure[4:4] = ["-G", "Ninja"]
if platform != "windows" and ninja:
configure[1:1] = ["-G", "Ninja"]
vcpkg_root = os.environ.get("VCPKG_ROOT")
if vcpkg_root:
configure.append(
Expand All @@ -271,16 +271,16 @@ def print_dry_run(repo: Path, build_dir: Path, staging: Path, platform: str,


def configure_and_build(report: Report, repo: Path, build_dir: Path, cmake: str,
targets: list[str], platform: str, jobs: int) -> bool:
ninja: str | None, targets: list[str], platform: str,
jobs: int) -> bool:
if not (build_dir / "CMakeCache.txt").is_file():
command = [cmake, "-S", str(repo), "-B", str(build_dir),
"-DCMAKE_BUILD_TYPE=MinSizeRel", "-DBUILD_TESTING=OFF",
"-DACECODE_BUILD_DESKTOP=ON"]
# A plain Windows shell can have Ninja on PATH without an initialized
# MSVC environment. Let CMake choose Visual Studio there.
if platform != "windows" and shutil.which("ninja"):
command.insert(4, "-G")
command.insert(5, "Ninja")
if platform != "windows" and ninja:
command[1:1] = ["-G", "Ninja"]
vcpkg_root = os.environ.get("VCPKG_ROOT")
if vcpkg_root:
toolchain = Path(vcpkg_root) / "scripts" / "buildsystems" / "vcpkg.cmake"
Expand Down Expand Up @@ -573,13 +573,14 @@ def main(argv: list[str]) -> int:
print("verify-package: --jobs must be a positive integer", file=sys.stderr)
return 2
cmake = shutil.which("cmake")
ninja = shutil.which("ninja")
targets = ["tui", "desktop"] if args.target == "all" else [args.target]
print(f"verify-package: repo={repo} build={build_dir} platform={platform} "
f"target={args.target} skip-build={args.skip_build}")

if args.dry_run:
print_dry_run(repo, build_dir, staging, platform, targets, jobs, cmake,
args.skip_build)
ninja, args.skip_build)
return 0

if not preflight(report, repo, cmake, args.skip_build, build_dir):
Expand All @@ -591,7 +592,7 @@ def main(argv: list[str]) -> int:
if not args.skip_build:
assert cmake is not None
if not configure_and_build(
report, repo, build_dir, cmake, targets, platform, jobs):
report, repo, build_dir, cmake, ninja, targets, platform, jobs):
print(f"verify-package: FAIL ({report.failed} check(s) failed)")
return 1
if not stage(report, repo, build_dir, staging, platform, targets, cmake or "cmake"):
Expand Down
19 changes: 10 additions & 9 deletions .codex/skills/verify-package/scripts/verify_package.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ def preflight(report: Report, repo: Path, cmake: str | None, skip_build: bool,

def print_dry_run(repo: Path, build_dir: Path, staging: Path, platform: str,
targets: list[str], jobs: int, cmake: str | None,
skip_build: bool) -> None:
ninja: str | None, skip_build: bool) -> None:
"""Describe package verification without creating files or running processes."""
cmake_command = cmake or "cmake"
print("DRY RUN: no commands will be executed and no files will be changed.")
Expand All @@ -244,8 +244,8 @@ def print_dry_run(repo: Path, build_dir: Path, staging: Path, platform: str,
configure = [cmake_command, "-S", str(repo), "-B", str(build_dir),
"-DCMAKE_BUILD_TYPE=MinSizeRel", "-DBUILD_TESTING=OFF",
"-DACECODE_BUILD_DESKTOP=ON"]
if platform != "windows" and shutil.which("ninja"):
configure[4:4] = ["-G", "Ninja"]
if platform != "windows" and ninja:
configure[1:1] = ["-G", "Ninja"]
vcpkg_root = os.environ.get("VCPKG_ROOT")
if vcpkg_root:
configure.append(
Expand All @@ -271,16 +271,16 @@ def print_dry_run(repo: Path, build_dir: Path, staging: Path, platform: str,


def configure_and_build(report: Report, repo: Path, build_dir: Path, cmake: str,
targets: list[str], platform: str, jobs: int) -> bool:
ninja: str | None, targets: list[str], platform: str,
jobs: int) -> bool:
if not (build_dir / "CMakeCache.txt").is_file():
command = [cmake, "-S", str(repo), "-B", str(build_dir),
"-DCMAKE_BUILD_TYPE=MinSizeRel", "-DBUILD_TESTING=OFF",
"-DACECODE_BUILD_DESKTOP=ON"]
# A plain Windows shell can have Ninja on PATH without an initialized
# MSVC environment. Let CMake choose Visual Studio there.
if platform != "windows" and shutil.which("ninja"):
command.insert(4, "-G")
command.insert(5, "Ninja")
if platform != "windows" and ninja:
command[1:1] = ["-G", "Ninja"]
vcpkg_root = os.environ.get("VCPKG_ROOT")
if vcpkg_root:
toolchain = Path(vcpkg_root) / "scripts" / "buildsystems" / "vcpkg.cmake"
Expand Down Expand Up @@ -573,13 +573,14 @@ def main(argv: list[str]) -> int:
print("verify-package: --jobs must be a positive integer", file=sys.stderr)
return 2
cmake = shutil.which("cmake")
ninja = shutil.which("ninja")
targets = ["tui", "desktop"] if args.target == "all" else [args.target]
print(f"verify-package: repo={repo} build={build_dir} platform={platform} "
f"target={args.target} skip-build={args.skip_build}")

if args.dry_run:
print_dry_run(repo, build_dir, staging, platform, targets, jobs, cmake,
args.skip_build)
ninja, args.skip_build)
return 0

if not preflight(report, repo, cmake, args.skip_build, build_dir):
Expand All @@ -591,7 +592,7 @@ def main(argv: list[str]) -> int:
if not args.skip_build:
assert cmake is not None
if not configure_and_build(
report, repo, build_dir, cmake, targets, platform, jobs):
report, repo, build_dir, cmake, ninja, targets, platform, jobs):
print(f"verify-package: FAIL ({report.failed} check(s) failed)")
return 1
if not stage(report, repo, build_dir, staging, platform, targets, cmake or "cmake"):
Expand Down
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -91,3 +91,10 @@ skills-lock.json
/tatus
/tatu
/tat
# Local Comet state and documents
/.comet/
/docs/comet/
/docs/desktop-shell/*comet*.md
/docs/desktop-shell/composer-diagnostic.md
/docs/desktop-shell/composer-diagnostic-handoff.md
/pnpm-lock.yaml
7 changes: 7 additions & 0 deletions docs/INDEX.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@
| Localization | [localization.md](localization.md) | Web/Desktop 文案来源和本地化流程 |
| User Manual | [user-manual.md](user-manual.md) | 面向用户的功能说明 |

## Desktop Shell 专题备忘

- [desktop-shell/multi-workspace.md](desktop-shell/multi-workspace.md):多工作区与共享 daemon 行为。
- [desktop-shell/macos-frameless-titlebar.md](desktop-shell/macos-frameless-titlebar.md):macOS 无边框标题栏的安全实现边界。
- [desktop-shell/macos-file-drop.md](desktop-shell/macos-file-drop.md):macOS Finder 文件拖放的根因、修复架构、平台影响与回归清单。
- [desktop-shell/macos-file-drop-debug.md](desktop-shell/macos-file-drop-debug.md):macOS 文件拖放的本地构建与实机验证步骤。

## 交付计划

- [plan/README.md](plan/README.md):计划目录约定。
Expand Down
Loading
Loading