From 443fe5d2f73367ecb7980052d06af7f636565b81 Mon Sep 17 00:00:00 2001 From: CodePilot Date: Mon, 20 Jul 2026 11:18:26 +0200 Subject: [PATCH 1/5] docs: refresh public presence audit --- docs/CHANGELOG.md | 2 +- ops/agents/escalations/presence-maintenance.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 76a0b566..c77e3baa 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -31,7 +31,7 @@ - Added concrete draft support and privacy URLs that remain gated on GitHub Pages enablement and maintainer verification. - Added the missing repository checkout step and documented the supported macOS 13 and iOS 17 minimums for beta setup. - Reframed Remote Desktop support categories as availability-guard reports so the gated feature is not presented as a supported beta workflow. -- Expanded the beta privacy draft to disclose Cloudflare data transit, notification and Live Activity payload contents, and the lack of automatic upload cleanup. +- Expanded the beta privacy draft to disclose Cloudflare data transit, notification and Live Activity payload contents, and the gateway's seven-day upload cleanup behavior. - Clarified that the local gateway does not make Codex workflows offline: prompts, conversation context, and selected attachments can still be processed by OpenAI, while Cloudflare and Apple process data only for the enabled tunnel and notification workflows. - Added a consistent fictional-data capture brief and full-resolution acceptance checklist for the approved public beta screenshot set. - Added a public beta data-flow map showing what stays on the Mac and what can be processed by Codex, OpenAI, Cloudflare, or Apple. diff --git a/ops/agents/escalations/presence-maintenance.md b/ops/agents/escalations/presence-maintenance.md index 5b3a90df..47debc2b 100644 --- a/ops/agents/escalations/presence-maintenance.md +++ b/ops/agents/escalations/presence-maintenance.md @@ -12,7 +12,7 @@ The following public-publishing decisions are approved: ## Pending Maintainer Action -Reverified on 2026-07-19. The public repository review found four launch-readiness settings that require maintainer access, one legal-content decision, and one unresolved release blocker: +Reverified on 2026-07-20. The read-only live presence audit still reports seven failures: the repository description, repository website field, GitHub Pages configuration, private vulnerability reporting, and the landing, privacy, and support URLs. These map to four launch-readiness settings that require maintainer access, one legal-content decision, and one unresolved release blocker: Repository-setting follow-up is tracked in GitHub issue #27. From 5e8a19c591174f8c763de13b135366473790ff8e Mon Sep 17 00:00:00 2001 From: CodePilot Date: Mon, 20 Jul 2026 12:18:57 +0200 Subject: [PATCH 2/5] docs: align App Store presence metadata --- docs/CHANGELOG.md | 2 ++ metadata/screenshots/README.md | 15 ++++++++++++--- metadata/version/0.1/en-US.json | 4 ++-- scripts/public-presence-audit.sh | 18 ++++++++++++++++++ 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index c77e3baa..ed8c26f7 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -55,6 +55,8 @@ - Aligned privacy, FAQ, iOS setup, and troubleshooting copy with the gateway's seven-day upload-retention cleanup behavior. - Reconciled the versioned App Store and TestFlight drafts with the approved Codex CLI beta positioning, supported feature set, and privacy-safe feedback guidance. - Added the public-presence audit to CI and made canonical App Store metadata drift or blocked Remote Desktop enablement copy fail the check. +- Replaced placeholder support and privacy URLs in the versioned App Store metadata with the approved GitHub Pages candidates, and made URL drift from the human-readable draft fail the public-presence audit. +- Aligned the App Store screenshot checklist with the public demo-data brief and added full-resolution privacy checks for window chrome, local-web previews, and unrelated device content. ### Recent Product Work diff --git a/metadata/screenshots/README.md b/metadata/screenshots/README.md index 89cd6406..f6ab7a4a 100644 --- a/metadata/screenshots/README.md +++ b/metadata/screenshots/README.md @@ -4,6 +4,13 @@ No App Store-ready screenshots are currently present in the repository. The minimum practical submission set is 1–10 screenshots for the 6.9-inch iPhone display. Use an accepted portrait canvas such as 1320×2868, 1290×2796, or 1260×2736 pixels. Export PNG or JPEG files without alpha or transparency. No iPad set is required for the current iPhone-only target. +Use one fictional workspace across the set: + +- Account names: `Work`, `Personal`, and `Demo`. +- Gateway hostname: `codepilot.example.com`. +- Thread names: `Review parser tests`, `Improve setup copy`, and `Triage upload error`. +- Sample files: `sample-diff.txt` and `wireframe.png`, created only for capture. + Prepare approved screenshots for: - First connection screen with the Cloudflare connection choice. @@ -11,10 +18,12 @@ Prepare approved screenshots for: - Total-credit status with synthetic account names and balances. - Total Credit Live Activity on a supported Lock Screen or Dynamic Island. - Thread list or active turn view. -- File preview from a local Mac path. -- Local Mac web page opened through the gateway. +- File upload confirmation using a non-sensitive sample file, without showing a local path. +- Purpose-built loopback demo page opened through the gateway, without showing its URL, source code, logs, paths, or query values. - Error recovery state with non-sensitive copy. Do not include Remote Desktop in the 0.1 screenshot set while its paired-device and session-authorization protections remain release-blocked. -All screenshots must avoid real tokens, private hostnames, private account names, private file paths, private emails, and personal identifiers. +Capture only the app or simulator window. Exclude desktop content, unrelated menu bar items, browser history, other-app notifications, device names, and unrelated windows. Inspect every full-resolution export, including status bars and window edges. + +All screenshots must avoid real tokens, private hostnames, private account names, private file paths, private emails, Apple or signing identifiers, repository names, private prompts, uploaded files, connected personal services, and personal identifiers. Run `scripts/privacy-audit.sh` before committing any image or screenshot metadata. diff --git a/metadata/version/0.1/en-US.json b/metadata/version/0.1/en-US.json index 80f14a73..c885b30c 100644 --- a/metadata/version/0.1/en-US.json +++ b/metadata/version/0.1/en-US.json @@ -7,7 +7,7 @@ "promotionalText": "Public beta for Codex CLI users: check usage and threads, upload files, and steer coding sessions running on a Mac you control.", "description": "CodePilot is a Mac menu bar app, local gateway, and iPhone companion for AI coding users who already run Codex CLI on a Mac.\n\nUse the iPhone app to check active account status, follow threads, upload files, open loopback web previews, steer or stop supported turns, receive optional turn-finished notifications, and connect through your own Cloudflare Tunnel setup. The Mac stays in your control, and the current beta does not require a hosted CodePilot account service.\n\nThe beta is focused on setup clarity, connection reliability, privacy-safe diagnostics, and practical remote workflows for existing Codex CLI users. Some internals still use legacy Codex-specific names, and support for other coding agents is not part of the current beta.\n\nCodePilot handles local coding-agent credentials and gateway access. Coding prompts and selected attachments are still processed through Codex and OpenAI according to the user's Codex account and configuration. Review the privacy, security, install, and support docs before exposing the gateway outside your local network.", "whatsNew": "See your total remaining Codex credit at a glance with a Live Activity, and use an available reset credit for the account you choose without returning to your Mac.\n\nNew:\n- Track combined available credit across configured accounts from the Lock Screen and Dynamic Island.\n- Use a rate-limit reset credit for a specific account after a clear confirmation.\n\nImproved:\n- Clearer gateway recovery when a token is missing, the gateway is offline, or authentication needs attention.\n- Better file previews for local paths and Markdown links.\n- Clearer account status and turn controls.\n\nFixed:\n- More stable gateway event formatting, turn-state handling, and background-session cleanup.\n- More reliable per-account credit refresh and reset state after manual account switches.", - "supportUrl": "TODO: maintainer-provided support URL", - "privacyPolicyUrl": "TODO: maintainer-provided privacy policy URL", + "supportUrl": "https://codepilotios.github.io/codepilot/SUPPORT.html", + "privacyPolicyUrl": "https://codepilotios.github.io/codepilot/PRIVACY.html", "reviewNotes": "TODO: add maintainer-approved review notes, demo prerequisites, and any required compliance details before upload." } diff --git a/scripts/public-presence-audit.sh b/scripts/public-presence-audit.sh index 1960ecc5..2f2921d2 100755 --- a/scripts/public-presence-audit.sh +++ b/scripts/public-presence-audit.sh @@ -87,6 +87,24 @@ version_metadata = JSON.parse(File.read("metadata/version/0.1/en-US.json")) exit 1 end +{ + "Support URL" => "supportUrl", + "Privacy URL" => "privacyPolicyUrl" +}.each do |heading, json_key| + section = metadata[/^## #{Regexp.escape(heading)}\n\n(.*?)(?=\n## |\z)/m, 1] + candidate_url = section&.match(/Candidate destination[^:]*: `([^`]+)`/)&.captures&.first + + unless candidate_url + warn "public presence audit failed: candidate #{heading.downcase} is missing from #{metadata_path}" + exit 1 + end + + next if version_metadata[json_key] == candidate_url + + warn "public presence audit failed: versioned #{json_key} does not match the candidate URL in #{metadata_path}" + exit 1 +end + remote_desktop_setup_files = ["docs/INSTALL_MAC.md", "docs/INSTALL_IOS.md", "docs/TROUBLESHOOTING.md"] remote_desktop_enablement_patterns = [ From 512320e7eb386da45b4144d4f84609ce2c2bdf9f Mon Sep 17 00:00:00 2001 From: CodePilot Date: Tue, 21 Jul 2026 19:45:10 +0200 Subject: [PATCH 3/5] docs: reverify public presence blockers --- ops/agents/escalations/presence-maintenance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ops/agents/escalations/presence-maintenance.md b/ops/agents/escalations/presence-maintenance.md index 47debc2b..76e99557 100644 --- a/ops/agents/escalations/presence-maintenance.md +++ b/ops/agents/escalations/presence-maintenance.md @@ -12,7 +12,7 @@ The following public-publishing decisions are approved: ## Pending Maintainer Action -Reverified on 2026-07-20. The read-only live presence audit still reports seven failures: the repository description, repository website field, GitHub Pages configuration, private vulnerability reporting, and the landing, privacy, and support URLs. These map to four launch-readiness settings that require maintainer access, one legal-content decision, and one unresolved release blocker: +Reverified on 2026-07-21. The read-only live presence audit still reports seven failures: the repository description, repository website field, GitHub Pages configuration, private vulnerability reporting, and the landing, privacy, and support URLs. These map to four launch-readiness settings that require maintainer access, one legal-content decision, and one unresolved release blocker: Repository-setting follow-up is tracked in GitHub issue #27. From dae39b141f314345261556cafa3a2237599c5d20 Mon Sep 17 00:00:00 2001 From: CodePilot Date: Wed, 22 Jul 2026 00:40:11 +0200 Subject: [PATCH 4/5] docs: prepare beta app review notes --- docs/APP_STORE_METADATA_DRAFT.md | 5 +++++ docs/CHANGELOG.md | 1 + metadata/version/0.1/en-US.json | 2 +- ops/agents/escalations/presence-maintenance.md | 2 +- scripts/public-presence-audit.sh | 5 +++-- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/docs/APP_STORE_METADATA_DRAFT.md b/docs/APP_STORE_METADATA_DRAFT.md index 15ab4255..6394da56 100644 --- a/docs/APP_STORE_METADATA_DRAFT.md +++ b/docs/APP_STORE_METADATA_DRAFT.md @@ -42,6 +42,10 @@ Install CodePilot on a Mac that already runs Codex CLI, create a saved account p Please report whether Cloudflare Tunnel setup, gateway connection, token entry, or localhost link opening was the step that failed. Remove account names, gateway URLs, tokens, hostnames, localhost or local-web session URLs, local page contents, local paths, private prompts, screenshots, and logs containing private data before sharing feedback. +## Review Notes + +CodePilot is a companion for people who already run Codex CLI on a Mac they control. No CodePilot account or demo credentials are required. The app opens without a gateway and shows connection setup guidance. Connected features require a user-controlled Mac running the CodePilot gateway, an HTTPS Cloudflare Tunnel URL, and its gateway token. Remote Desktop is disabled and is not part of this beta. The support documentation explains the setup and privacy model. + ## Support URL Requires maintainer approval before TestFlight external testing or App Store submission. Candidate destination after GitHub Pages is enabled and verified: `https://codepilotios.github.io/codepilot/SUPPORT.html`. @@ -68,4 +72,5 @@ See the [App Store screenshot checklist](../metadata/screenshots/README.md). - Age rating. - Export compliance. - TestFlight external testing and App Store review submission. +- Final App Review notes and reviewer access path. - Pricing, subscription, or commercial-use claims. diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index ed8c26f7..be71622b 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -57,6 +57,7 @@ - Added the public-presence audit to CI and made canonical App Store metadata drift or blocked Remote Desktop enablement copy fail the check. - Replaced placeholder support and privacy URLs in the versioned App Store metadata with the approved GitHub Pages candidates, and made URL drift from the human-readable draft fail the public-presence audit. - Aligned the App Store screenshot checklist with the public demo-data brief and added full-resolution privacy checks for window chrome, local-web previews, and unrelated device content. +- Replaced the versioned App Review notes placeholder with a beta-scoped local draft and added length and drift checks, while keeping final reviewer access and submission approval-gated. ### Recent Product Work diff --git a/metadata/version/0.1/en-US.json b/metadata/version/0.1/en-US.json index c885b30c..d0803ac8 100644 --- a/metadata/version/0.1/en-US.json +++ b/metadata/version/0.1/en-US.json @@ -9,5 +9,5 @@ "whatsNew": "See your total remaining Codex credit at a glance with a Live Activity, and use an available reset credit for the account you choose without returning to your Mac.\n\nNew:\n- Track combined available credit across configured accounts from the Lock Screen and Dynamic Island.\n- Use a rate-limit reset credit for a specific account after a clear confirmation.\n\nImproved:\n- Clearer gateway recovery when a token is missing, the gateway is offline, or authentication needs attention.\n- Better file previews for local paths and Markdown links.\n- Clearer account status and turn controls.\n\nFixed:\n- More stable gateway event formatting, turn-state handling, and background-session cleanup.\n- More reliable per-account credit refresh and reset state after manual account switches.", "supportUrl": "https://codepilotios.github.io/codepilot/SUPPORT.html", "privacyPolicyUrl": "https://codepilotios.github.io/codepilot/PRIVACY.html", - "reviewNotes": "TODO: add maintainer-approved review notes, demo prerequisites, and any required compliance details before upload." + "reviewNotes": "CodePilot is a companion for people who already run Codex CLI on a Mac they control. No CodePilot account or demo credentials are required. The app opens without a gateway and shows connection setup guidance. Connected features require a user-controlled Mac running the CodePilot gateway, an HTTPS Cloudflare Tunnel URL, and its gateway token. Remote Desktop is disabled and is not part of this beta. The support documentation explains the setup and privacy model." } diff --git a/ops/agents/escalations/presence-maintenance.md b/ops/agents/escalations/presence-maintenance.md index 76e99557..e68932b6 100644 --- a/ops/agents/escalations/presence-maintenance.md +++ b/ops/agents/escalations/presence-maintenance.md @@ -12,7 +12,7 @@ The following public-publishing decisions are approved: ## Pending Maintainer Action -Reverified on 2026-07-21. The read-only live presence audit still reports seven failures: the repository description, repository website field, GitHub Pages configuration, private vulnerability reporting, and the landing, privacy, and support URLs. These map to four launch-readiness settings that require maintainer access, one legal-content decision, and one unresolved release blocker: +Reverified on 2026-07-22. The read-only live presence audit still reports seven failures: the repository description, repository website field, GitHub Pages configuration, private vulnerability reporting, and the landing, privacy, and support URLs. GitHub issues #25 and #27 also remain open. These map to four launch-readiness settings that require maintainer access, one legal-content decision, and one unresolved release blocker: Repository-setting follow-up is tracked in GitHub issue #27. diff --git a/scripts/public-presence-audit.sh b/scripts/public-presence-audit.sh index 2f2921d2..db820c12 100755 --- a/scripts/public-presence-audit.sh +++ b/scripts/public-presence-audit.sh @@ -55,7 +55,7 @@ metadata_values = {} metadata_values[heading] = value end -{"Description" => 4_000, "What To Test" => 4_000}.each do |heading, field_limit| +{"Description" => 4_000, "What To Test" => 4_000, "Review Notes" => 4_000}.each do |heading, field_limit| value = metadata[/^## #{Regexp.escape(heading)}\n\n(.*?)(?=\n## |\z)/m, 1]&.strip unless value @@ -79,7 +79,8 @@ version_metadata = JSON.parse(File.read("metadata/version/0.1/en-US.json")) "Subtitle" => "subtitle", "Promotional Text" => "promotionalText", "Description" => "description", - "Keywords" => "keywords" + "Keywords" => "keywords", + "Review Notes" => "reviewNotes" }.each do |heading, json_key| next if version_metadata[json_key] == metadata_values[heading] From 341b58bbcb5fe8e2ef2013059b5003e7b8f02562 Mon Sep 17 00:00:00 2001 From: CodePilot Date: Wed, 22 Jul 2026 02:56:53 +0200 Subject: [PATCH 5/5] docs: restrict generated public site --- docs/CHANGELOG.md | 1 + docs/_config.yml | 2 ++ scripts/public-presence-audit.sh | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index be71622b..312fc3cf 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -4,6 +4,7 @@ ### Public Beta Preparation +- Kept maintainer-only App Store setup guidance and community promotion drafts out of the generated GitHub Pages site, with an automated exclusion check. - Added GitHub Pages configuration and narrowed the generated site to user-facing beta documentation. - Refined the Pages landing page with beta scope, security guidance, and install prerequisites. - Added public-safe GitHub feature request and pull request templates for beta feedback and contribution review. diff --git a/docs/_config.yml b/docs/_config.yml index 47d1d446..707765ea 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -6,11 +6,13 @@ show_downloads: false # Keep planning, operations, and submission drafts in the repository without # publishing them as part of the user-facing GitHub Pages site. exclude: + - APP_STORE_CONNECT_SETUP.md - APP_STORE_METADATA_DRAFT.md - PRODUCTION_READINESS.md - PRODUCTION_READINESS_IMPLEMENTATION_PLAN.md - PUBLIC_PRESENCE_CHECKLIST.md - RELEASE_CHECKLIST.md - SCREENSHOTS.md + - community - operations - superpowers diff --git a/scripts/public-presence-audit.sh b/scripts/public-presence-audit.sh index db820c12..d2a798f1 100755 --- a/scripts/public-presence-audit.sh +++ b/scripts/public-presence-audit.sh @@ -30,6 +30,25 @@ unless missing_links.empty? exit 1 end +pages_config = File.read("docs/_config.yml") +[ + "APP_STORE_CONNECT_SETUP.md", + "APP_STORE_METADATA_DRAFT.md", + "PRODUCTION_READINESS.md", + "PRODUCTION_READINESS_IMPLEMENTATION_PLAN.md", + "PUBLIC_PRESENCE_CHECKLIST.md", + "RELEASE_CHECKLIST.md", + "SCREENSHOTS.md", + "community", + "operations", + "superpowers" +].each do |private_pages_path| + next if pages_config.match?(/^\s*- #{Regexp.escape(private_pages_path)}\s*$/) + + warn "public presence audit failed: docs/_config.yml does not exclude #{private_pages_path} from GitHub Pages" + exit 1 +end + metadata_path = "docs/APP_STORE_METADATA_DRAFT.md" metadata = File.read(metadata_path) metadata_values = {}