| .gitignore | ●●●●● patch | view | raw | blame | history | |
| AGENTS.md | ●●●●● patch | view | raw | blame | history | |
| CODE_GOVERNANCE.md | ●●●●● patch | view | raw | blame | history | |
| K1.业务知识/README.md | ●●●●● patch | view | raw | blame | history | |
| K2.项目管理/QA成果地图.md | ●●●●● patch | view | raw | blame | history | |
| K2.项目管理/README.md | ●●●●● patch | view | raw | blame | history | |
| K2.项目管理/新窗口接手指南.md | ●●●●● patch | view | raw | blame | history | |
| K2.项目管理/研发交付验收流程.md | ●●●●● patch | view | raw | blame | history | |
| K2.项目管理/项目经理-经验与教训.md | ●●●●● patch | view | raw | blame | history | |
| K3.运营与发布资料/README.md | ●●●●● patch | view | raw | blame | history | |
| K3.运营与发布资料/Release/AppStore-8.3.5-20260702.1046/RELEASE_EVIDENCE_ERRATA.md | ●●●●● patch | view | raw | blame | history | |
| K3.运营与发布资料/Screenshots/render_marketing_screenshots.mjs | ●●●●● patch | view | raw | blame | history | |
| K3.运营与发布资料/Screenshots/render_marketing_screenshots.py | ●●●●● patch | view | raw | blame | history |
.gitignore
@@ -1,4 +1,5 @@ .DS_Store ._* # Root-local runtime/build byproducts. App build outputs are generated under src/build/. /build/ AGENTS.md
@@ -36,13 +36,13 @@ ## 命令输出保护 任何输出未知或可能很大的命令都必须限制输出: 任何输出未知或可能很大的命令都必须控制范围。标准验证命令在文档、规则、CODEGRAPH 或交接材料中必须保持原始可执行形式;执行时优先使用工具输出上限,或把完整输出写入日志并保留原始命令退出码。 ```bash COMMAND 2>&1 | head -c 6000 COMMAND ``` 搜索优先用 `rg` / `rg --files`。不要无上限打印大文件、构建日志或目录树。 搜索优先用 `rg` / `rg --files`。不要无上限打印大文件、构建日志或目录树;临时查看大输出时可以由执行工具限制输出,不要把截断管道写进标准命令。 ## 对话记忆保存规则 CODE_GOVERNANCE.md
@@ -15,9 +15,9 @@ - 开始任何代码、文档、发布或迁移任务前,必须先执行并检查: ```bash git status --short 2>&1 | head -c 6000 git branch --show-current 2>&1 | head -c 2000 git worktree list --porcelain 2>&1 | head -c 6000 git status --short git branch --show-current git worktree list --porcelain ``` - 如果工作区已有改动,必须区分改动来源: @@ -46,9 +46,9 @@ - 提交前必须确认: ```bash git status --short 2>&1 | head -c 6000 git diff --stat 2>&1 | head -c 6000 git diff --cached --stat 2>&1 | head -c 6000 git status --short git diff --stat git diff --cached --stat ``` - 提交信息使用简洁英文或项目已有风格,示例: @@ -90,9 +90,9 @@ - 任务完成后必须执行: ```bash git worktree remove WORKTREE_PATH 2>&1 | head -c 6000 git worktree prune 2>&1 | head -c 6000 git worktree list --porcelain 2>&1 | head -c 6000 git worktree remove WORKTREE_PATH git worktree prune git worktree list --porcelain ``` - 如果 worktree 有未提交改动,禁止直接删除;必须先确认归属和处理方式。 @@ -109,10 +109,10 @@ 接手旧线程、长期任务、发布任务或迁移任务时,必须先完成以下检查,不得等待旧线程: ```bash git status --short 2>&1 | head -c 6000 git branch --show-current 2>&1 | head -c 2000 git log --oneline --decorate --graph --max-count=12 2>&1 | head -c 6000 git worktree list --porcelain 2>&1 | head -c 6000 git status --short git branch --show-current git log --oneline --decorate --graph --max-count=12 git worktree list --porcelain ``` - 必须读取最近会话记录,确认未完成项、已完成项、阻塞项和用户最新指令。 @@ -182,15 +182,15 @@ ## 11. 命令输出保护 任何未知或可能很大的命令输出都必须 byte-cap: 任何未知或可能很大的命令输出都必须控制范围。规则、CODEGRAPH、交接材料和标准验证命令必须保留原始可执行形式,不能为了展示输出而追加 `head -c`、`2>&1 | head` 等截断管道。执行时通过工具输出上限控制展示,或把完整输出写入日志文件并保留原始命令退出码。 ```bash COMMAND 2>&1 | head -c 6000 COMMAND ``` - 构建、测试、目录遍历、日志、Git diff、搜索结果都应限制输出。 - 构建、测试、目录遍历、日志、Git diff、搜索结果都应控制展示范围。 - 搜索优先用 `rg` / `rg --files`。 - 不无上限打印大文件、构建日志、目录树或二进制信息。 - 不无上限打印大文件、构建日志、目录树或二进制信息;需要压缩展示时由执行工具限制输出,不把截断管道写进标准命令。 ## 12. 禁止事项 @@ -206,22 +206,22 @@ ## 13. 常用检查命令 ```bash git status --short 2>&1 | head -c 6000 git branch --show-current 2>&1 | head -c 2000 git log --oneline --decorate --graph --max-count=12 2>&1 | head -c 6000 git worktree list --porcelain 2>&1 | head -c 6000 git diff --stat 2>&1 | head -c 6000 git diff --cached --stat 2>&1 | head -c 6000 git ls-files C1.source 2>&1 | wc -l | head -c 2000 git status --short git branch --show-current git log --oneline --decorate --graph --max-count=12 git worktree list --porcelain git diff --stat git diff --cached --stat git ls-files C1.source | wc -l ``` 从源码根目录运行 QA: ```bash cd /Users/ar/Projects/Taglauncher/03-O/C1.source bash Scripts/apple_default_apps_resource_qa.sh 2>&1 | head -c 12000 bash Scripts/apple_default_note_policy_qa.sh 2>&1 | head -c 12000 bash Scripts/smartstart_catalog_resource_qa.sh 2>&1 | head -c 12000 bash Scripts/quick_search_app_name_qa.sh 2>&1 | head -c 12000 bash Scripts/quick_search_system_app_qa.sh 2>&1 | head -c 12000 bash Scripts/apple_default_apps_resource_qa.sh bash Scripts/apple_default_note_policy_qa.sh bash Scripts/smartstart_catalog_resource_qa.sh bash Scripts/quick_search_app_name_qa.sh bash Scripts/quick_search_system_app_qa.sh ``` K1.业务知识/README.md
New file @@ -0,0 +1,13 @@ # K1.业务知识 本目录保存长期有效的产品、领域和系统行为知识。 适合放入这里的内容: - Taglauncher 长期产品决策。 - 用户任务、领域规则、系统能力和限制。 - 可复用的错误文案、验收口径和领域知识。 - 长期有效的技术约束、状态模型和系统行为知识。 - `成果地图.md` 中索引到的稳定成果和事实源。 不放 Round 过程记录;过程记录留在 `02-P/`。 K2.项目管理/QA成果地图.md
New file @@ -0,0 +1,25 @@ # Taglauncher QA 成果地图 最后整理:2026-07-05 ## 当前状态 Taglauncher 当前源码工程位于 `03-O/C1.source`,Git 根位于 `03-O`。本文件记录 QA 门禁和验证入口;迁移接收验证通过不等同正式发布 QA PASS。 ## 当前已建立入口 | 类型 | 路径 | 状态 | | --- | --- | --- | | 当前验收口径 | `02-P/Round00-Foundation/04-QA与验收.md` | 已建立 | | 工程地图入口 | `03-O/CODEGRAPH.md` | 已建立 | | 构建产物根 | `03-O/C2.builds/` | 已建立 | | 工具脚本根 | `03-O/C3.tools/` | 已建立 | | Release evidence errata | `03-O/K3.运营与发布资料/Release/AppStore-8.3.5-20260702.1046/RELEASE_EVIDENCE_ERRATA.md` | 已建立,作为发布前 gate 输入 | ## 后续应补 - 下一次源码变更或发布前的真实构建命令复核。 - 下一次源码变更或发布前的真实测试命令复核。 - 主 UI / 主流程 / 数据层 / 发布前检查门禁。 - 发布前重新绑定当前可解析 Git commit、manifest、tag、SHA256、metadata、review notes 和截图。 - 截图素材恢复:`03-O/K3.运营与发布资料/Screenshots/localized-content.mjs` 与 `assets/`。 K2.项目管理/README.md
New file @@ -0,0 +1,14 @@ # K2.项目管理 本目录保存长期有效的项目管理、协作、复盘和交付经验。 适合放入这里的内容: - Taglauncher 项目级 SOP。 - QA 门禁和验证地图。 - 阶段复盘。 - 交付验收经验。 - 新 Agent / 新 session 接手指南。 - 多角色协作规则的项目特例。 不复制全局规则;全局规则只在本项目有特例时才补充说明。 K2.项目管理/新窗口接手指南.md
@@ -9,10 +9,12 @@ 1. `/Users/ar/Projects/Taglauncher/AGENTS.md` 2. `/Users/ar/Projects/Taglauncher/PROJECT.md` 3. `/Users/ar/Projects/Taglauncher/INDEX.md` 4. `/Users/ar/Projects/Taglauncher/02-P/进度地图.md` 5. `/Users/ar/Projects/Taglauncher/03-O/CODEGRAPH.md` 6. `/Users/ar/Projects/Taglauncher/03-O/CODE_GOVERNANCE.md` 7. `/Users/ar/Projects/Taglauncher/.codex-sessionhistory/00-Topics.md` 4. `/Users/ar/Projects/Taglauncher/00-H/初心与Go-No-Go.md` 5. `/Users/ar/Projects/Taglauncher/02-P/进度地图.md` 6. `/Users/ar/Projects/Taglauncher/02-P/角色协作宪章.md` 7. `/Users/ar/Projects/Taglauncher/03-O/CODEGRAPH.md` 8. `/Users/ar/Projects/Taglauncher/03-O/CODE_GOVERNANCE.md` 9. `/Users/ar/Projects/Taglauncher/.codex-sessionhistory/00-Topics.md` ## 自检命令 @@ -34,7 +36,13 @@ - 当前迁移基线:`2309264` / `v8.3.5-build20260702.1046` - 当前源码根:`03-O/C1.source` - 当前 HIPO 根结构:`00-H / 01-I / 02-P / 03-O` - 当前初心 / Go-No-Go 入口:`00-H/初心与Go-No-Go.md` - 当前统一台账:`02-P/进度地图.md` - 当前角色启动入口:`02-P/角色会话启动清单.md` - 当前 PMO 收件箱:`02-P/PMO_INBOX.md` - 当前 PMO active assignment:`02-P/pmo-active-assignments.json` - 当前 PMO 事件日志:`02-P/pmo-events.jsonl` - 当前工程地图:`03-O/CODEGRAPH.md` - 当前最新迁入 release 资料:`03-O/K3.运营与发布资料/Release/AppStore-8.3.5-20260702.1046` - 当前最新迁入 release 包:`03-O/C2.builds/AppStore-8.3.5-20260702.1046` @@ -43,9 +51,11 @@ 旧完整 Git 对象、旧 worktree、历史构建包、旧截图原图、帮助 PDF 副本、promo codes、备份目录和系统噪声不在当前正文中。 补充旧资料根 `/Users/ar/Downloads/0702codex-move/02-project2/26.0705-Archive-taglauncher` 只读使用,不作为当前执行路径。 ## 成功判定 新会话能说明项目是什么、当前基线是什么、代码在哪里、任务从哪里领取、QA 和发布入口在哪里、哪些历史材料不能直接当当前事实。 新会话能说明项目是什么、当前基线是什么、代码在哪里、任务从哪里领取、PMO 和角色启动入口在哪里、QA 和发布入口在哪里、哪些历史材料不能直接当当前事实。 ## 接手演练结果 K2.项目管理/研发交付验收流程.md
New file @@ -0,0 +1,23 @@ # Taglauncher 研发交付验收流程 最后整理:2026-07-05 ## 标准链路 ```text 目标对齐 -> 当前 Round 包 -> 技术方案 -> 实现 -> 代码审核 -> QA -> 发布准备 -> 用户 / Owner 验收 ``` ## 规则 - 不跳过 `02-P/进度地图.md` 直接派工。 - 不跳过技术方案直接进入非平凡实现。 - 不跳过 QA 直接进入发布准备。 - 交付结论必须落在文档,而不是只留在会话中。 K2.项目管理/项目经理-经验与教训.md
New file @@ -0,0 +1,15 @@ # Taglauncher 项目经理-经验与教训 最后整理:2026-07-05 ## 当前状态 项目尚处初始化阶段,暂无长期有效经验教训。 ## 后续记录范围 - 计划失真原因 - 交接失败原因 - 文档入口失效原因 - 规则树冗余或缺口 - 哪些流程在真实执行中有效,哪些只是纸面结构 K3.运营与发布资料/README.md
New file @@ -0,0 +1,33 @@ # K3.运营与发布资料 本目录保存 TagLauncher 的官网、商店、营销、支持和法务资料。当前目录来自轻量迁移包,包含可复核的 8.3.5 包体证据,也包含若干历史版本资料;发布前必须先区分当前证据和历史参考。 ## 当前状态 - 当前迁入 release 证据包:`Release/AppStore-8.3.5-20260702.1046/` - 当前迁入 DMG / PKG:`../C2.builds/AppStore-8.3.5-20260702.1046/` - 8.3.5 包体 hash 已与 `Release/AppStore-8.3.5-20260702.1046/SHA256SUMS.txt` 核对一致。 - 8.3.5 manifest 中的 `Git commit: 01bab54` 在当前迁移仓库不可解析;证据边界见 `Release/AppStore-8.3.5-20260702.1046/RELEASE_EVIDENCE_ERRATA.md`。 - 本目录不能单独作为 App Store 发布 PASS;发布前仍需 QA / release gate。 ## 子目录 - `Website/`:官网页面、素材、站点脚本。 - `AppStoreConnect/`:渠道元数据、审核说明、商店材料;当前 metadata 仍是历史 7.9.1 口径,不能直接用于 8.3.5 或后续提交。 - `Marketing/`:营销图、演示图、传播素材;历史文章保留为参考,不自动代表当前审核文案。 - `Screenshots/`:截图脚本和截图清单;当前脚本已迁移到本目录路径,但仍缺本地 `localized-content.mjs` 和 `assets/`,需要恢复素材后才能生成新图。 - `Release/`:发布证据、历史手工清单和 release gate 输入。 - `Support-Legal/`:支持、隐私、协议、法务资料。 ## 历史资料边界 - `AppStore_Submission.md` 和 `AppStore_TODO_7.3.5_744.md` 是 7.3.5 / Build 744 历史提交资料。 - `Release/APP_STORE_RELEASE_MANUAL_TODO.md` 是 7.6.0 历史清单。 - `AppStoreConnect/ASC审核提交SOP.md` 包含 7.9.1 历史提交流程。 - 上述文件只作证据和复盘参考,不能直接复制为当前 ASC 提交材料。 ## 发布前必做 - 重新生成目标版本的 App Store metadata、What’s New、review notes 和截图清单。 - 修复或恢复 `Screenshots/localized-content.mjs` 与 `Screenshots/assets/` 后再运行截图脚本。 - 重新执行 QA / release gate,绑定当前可解析 Git commit、manifest、tag 和 SHA256。 K3.运营与发布资料/Release/AppStore-8.3.5-20260702.1046/RELEASE_EVIDENCE_ERRATA.md
New file @@ -0,0 +1,37 @@ # TagLauncher 8.3.5 Release Evidence Errata Date: 2026-07-07 This file records the migration-era evidence gap for the 8.3.5 package. It does not replace `RELEASE_MANIFEST.md` and does not declare App Store release PASS. ## Current Evidence - Package version: `8.3.5` - Package build: `20260702.1046` - Migrated baseline commit: `2309264ee94daca4b9abe3592d84602c98b77690` - Migrated project handoff commit: `5dbabdb9df401b30e8c92cfb3fb089a0fe1b4f9b` - Release tag available in this repository: `v8.3.5-build20260702.1046 -> 2309264ee94daca4b9abe3592d84602c98b77690` - Manifest commit recorded in `RELEASE_MANIFEST.md`: `01bab54` - Current repository lookup for `01bab54`: not resolvable in this migrated repository. ## Artifact Hash Check The migrated DMG and PKG match `SHA256SUMS.txt`: ```text c378548b9f5186e2e71de08a2b0efc6e33bc84e2785dd98fc62e05903026a729 Archive/TagLauncher-8.3.5-build20260702.1046.dmg 647b64ba420d60f4df1b72daff50f3174ab4c5da61b513ed0d9dc2d7eee2a417 Upload/TagLauncher-8.3.5-build20260702.1046.pkg ``` ## Interpretation - The package files are hash-consistent with the migrated release evidence. - The exact source commit recorded by the original manifest is not available from the current migrated Git history. - For project handoff and code management, `boborobots/main` is aligned to the migrated project handoff commit `5dbabdb9df401b30e8c92cfb3fb089a0fe1b4f9b`. - For release audit, this package remains a migrated release evidence package and must go through a fresh QA / release gate before any new App Store submission or public distribution claim. ## Required Before Release Use - Resolve whether old Git history containing `01bab54` should be restored as historical evidence, or accept this errata as the migration-era evidence boundary. - Rebuild or re-freeze from a current, resolvable Git commit before calling a package a new formal release package. - Regenerate App Store metadata, review notes, screenshots, and the manual release checklist for the target submission version. K3.运营与发布资料/Screenshots/render_marketing_screenshots.mjs
@@ -2,23 +2,42 @@ import fs from "node:fs/promises"; import path from "node:path"; import { createRequire } from "node:module"; import { fileURLToPath } from "node:url"; import { LOCALES, getCopy, loadAppStrings, modeLabels } from "../../../docs/scripts/localized-content.mjs"; import { fileURLToPath, pathToFileURL } from "node:url"; const require = createRequire(import.meta.url); const { chromium } = require("playwright"); const SCRIPT_DIR = path.dirname(fileURLToPath(import.meta.url)); const ROOT = path.resolve(SCRIPT_DIR, "../../.."); const ASSETS = path.join(ROOT, "docs/assets"); const OUT_ROOT = path.join(ROOT, "Docs/X-Op资料/Screenshots/AppStore-Marketing"); const REPO_ROOT = path.resolve(SCRIPT_DIR, "../.."); const SOURCE_ROOT = path.join(REPO_ROOT, "C1.source"); const LOCALIZED_CONTENT = path.join(SCRIPT_DIR, "localized-content.mjs"); const ASSETS = path.join(SCRIPT_DIR, "assets"); const OUT_ROOT = path.join(SCRIPT_DIR, "AppStore-Marketing"); const W = 2880; const H = 1800; if (!fsSync.existsSync(LOCALIZED_CONTENT)) { throw new Error([ "Missing localized screenshot copy module.", `Expected: ${LOCALIZED_CONTENT}`, "Restore or regenerate this file before rendering App Store screenshots." ].join("\n")); } if (!fsSync.existsSync(ASSETS)) { throw new Error([ "Missing screenshot asset directory.", `Expected: ${ASSETS}`, "Restore image assets before rendering App Store screenshots." ].join("\n")); } const { LOCALES, getCopy, loadAppStrings, modeLabels } = await import(pathToFileURL(LOCALIZED_CONTENT).href); function esc(value) { return String(value ?? "") @@ -389,7 +408,7 @@ async function renderLocale(browser, locale) { const copy = getCopy(locale.code); const app = loadAppStrings(ROOT, locale); const app = loadAppStrings(SOURCE_ROOT, locale); const modes = modeLabels(app); const outDir = path.join(OUT_ROOT, locale.code); await cleanGeneratedPngs(outDir); K3.运营与发布资料/Screenshots/render_marketing_screenshots.py
@@ -6,11 +6,10 @@ import sys ROOT = Path("/Users/ar/Projects/Taglauncher") SCRIPT = Path(__file__).resolve().with_suffix(".mjs") RUNTIME = Path("/Users/ar/.cache/codex-runtimes/codex-primary-runtime/dependencies") NODE = RUNTIME / "node/bin/node" NODE_MODULES = RUNTIME / "node/node_modules" SCRIPT = ROOT / "Docs/X-Op资料/Screenshots/render_marketing_screenshots.mjs" def main() -> int: @@ -23,7 +22,7 @@ existing = env.get("NODE_PATH") env["NODE_PATH"] = str(NODE_MODULES) if not existing else f"{NODE_MODULES}{os.pathsep}{existing}" completed = subprocess.run([node, str(SCRIPT)], cwd=str(ROOT), env=env) completed = subprocess.run([node, str(SCRIPT)], cwd=str(SCRIPT.parent), env=env) return completed.returncode