From d98349a3fc300be299f34b4c767f735dd023958c Mon Sep 17 00:00:00 2001 From: oratis Date: Fri, 19 Jun 2026 15:06:06 +0800 Subject: [PATCH] docs(app-store): point submission runbook at the canonical marketing/ copy MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The listing + privacy docs existed twice: stale copies in docs/app-store/ (listing-copy.md, privacy-label-and-review.md) and the authoritative, up-to-date versions in marketing/app-store/ (listing.md, privacy-and-review.md). The runbook linked the stale copies, which gave the wrong app name ("Markup" instead of "Markup - MD Reader"), un-trimmed keywords, and the old "paste a GitHub link" narrative instead of "open a GitHub repo as a vault". - Replace the two stale docs/app-store/ files with short redirect stubs that point at the marketing/ canonical versions. - Repoint every link in README.md, ios-submission.md, and launch-1.0-checklist.md to marketing/app-store/{listing,privacy-and-review}.md (screenshot sizes now point at marketing/app-store/screenshots/README.md). - Fix the Mac screenshot sizes in the checklist (section C step 6): add 1440x900 and 2880x1800 — the mac/ set is 2880x1800. Single source of truth is now marketing/app-store/. Co-Authored-By: Claude Opus 4.8 --- docs/app-store/README.md | 4 +- docs/app-store/ios-submission.md | 10 +- docs/app-store/launch-1.0-checklist.md | 8 +- docs/app-store/listing-copy.md | 200 ++------------------- docs/app-store/privacy-label-and-review.md | 92 ++-------- 5 files changed, 33 insertions(+), 281 deletions(-) diff --git a/docs/app-store/README.md b/docs/app-store/README.md index 2af209e..053c620 100644 --- a/docs/app-store/README.md +++ b/docs/app-store/README.md @@ -26,8 +26,8 @@ in the repo; the account-gated steps are called out as "you". - **[ios-submission.md](./ios-submission.md)** — iOS App Store runbook (TestFlight → App Store). - **[MAS-publishing-plan.md](./MAS-publishing-plan.md)** — Mac App Store plan (sandbox, certs, build flavor, review gotchas, phased plan). - **[signing-setup.md](./signing-setup.md)** — Developer ID signing for the **direct-download** macOS DMG (separate from MAS). -- **[listing-copy.md](./listing-copy.md)** — store text for both products (name, subtitle, keywords, description), EN + 中文. -- **[privacy-label-and-review.md](./privacy-label-and-review.md)** — App Privacy questionnaire answers + App Review notes for both. +- **[listing.md](../../marketing/app-store/listing.md)** — store text for both products (name, subtitle, keywords, description), EN + 中文. *(canonical; in `marketing/app-store/`)* +- **[privacy-and-review.md](../../marketing/app-store/privacy-and-review.md)** — App Privacy questionnaire answers + App Review notes for both. *(canonical; in `marketing/app-store/`)* - **[reviewer-sample-vault/](./reviewer-sample-vault/)** — a tiny vault to hand reviewers so the BYO-folder app isn't seen as "empty". - Related: the iOS TestFlight build is the [`ship-ios-testflight`](../../.claude/skills/ship-ios-testflight/SKILL.md) skill; privacy policy is [`PRIVACY.md`](../../PRIVACY.md). diff --git a/docs/app-store/ios-submission.md b/docs/app-store/ios-submission.md index 0f195e4..0d40b81 100644 --- a/docs/app-store/ios-submission.md +++ b/docs/app-store/ios-submission.md @@ -13,7 +13,7 @@ target iOS 17 · universal (iPhone + iPad). ## Already satisfied in the project (no work) - ✅ **App Privacy** is "Data Not Collected" (backed by `PrivacyInfo.xcprivacy`). - Fill the questionnaire per [`privacy-label-and-review.md`](./privacy-label-and-review.md). + Fill the questionnaire per [`privacy-and-review.md`](../../marketing/app-store/privacy-and-review.md). - ✅ **Export compliance**: `ITSAppUsesNonExemptEncryption=NO` is set, so uploads don't prompt. - ✅ **App icon**: a 1024×1024 marketing icon is present (single-size app icons @@ -25,7 +25,7 @@ target iOS 17 · universal (iPhone + iPad). ## You provide (account-gated — I can't log in) 1. **Apple Developer Program** active on `wangharp@gmail.com` (Team `9LH9NBX7P4`). ✅ already used for TestFlight. -2. **Screenshots** (see [`listing-copy.md`](./listing-copy.md) for sizes): iPhone +2. **Screenshots** (see [`screenshots/README.md`](../../marketing/app-store/screenshots/README.md) for sizes): iPhone 6.9" + 6.5", and **iPad 13" (required — the app supports iPad)**. 3. **Privacy Policy URL**: https://github.com/oratis/Markup/blob/main/PRIVACY.md 4. (optional) Localized zh-Hans metadata for a China listing. @@ -42,16 +42,16 @@ target iOS 17 · universal (iPhone + iPad). 2. In **App Store Connect → Apps → Markup → (+) macOS/iOS App → iOS App**, create a new **App Store version** (e.g. `1.0.0`). 3. **Listing**: paste name/subtitle/keywords/description/promo from - [`listing-copy.md`](./listing-copy.md). Set **Category = Productivity**, + [`listing.md`](../../marketing/app-store/listing.md). Set **Category = Productivity**, **Price = Free**, **Support URL** + **Privacy Policy URL**. 4. **Screenshots**: upload iPhone + iPad sets. 5. **Build**: attach the processed TestFlight build to this version. 6. **App Privacy**: complete as "Data Not Collected" - ([`privacy-label-and-review.md`](./privacy-label-and-review.md)). + ([`privacy-and-review.md`](../../marketing/app-store/privacy-and-review.md)). 7. **Age rating**: answer the questionnaire → 4+. 8. **App Review Information**: paste the review notes (incl. the sample-vault pointer + "GitHub sign-in is optional") from - [`privacy-label-and-review.md`](./privacy-label-and-review.md). + [`privacy-and-review.md`](../../marketing/app-store/privacy-and-review.md). 9. **Submit for Review.** First reviews are typically ~24–48h. ## Versioning note diff --git a/docs/app-store/launch-1.0-checklist.md b/docs/app-store/launch-1.0-checklist.md index a836baf..79e3712 100644 --- a/docs/app-store/launch-1.0-checklist.md +++ b/docs/app-store/launch-1.0-checklist.md @@ -29,10 +29,10 @@ Binary pipeline already proven (EAS → App Store Connect). Remaining: 2. ⏳ ~5–10 min ASC processing. 3. 🔑 App Store Connect → Markup → **+ Version → 1.0.0**: - Attach build **100000** - - Paste metadata from [`listing-copy.md`](./listing-copy.md) — name, subtitle, keywords, description, promo text, support/marketing/privacy URLs, **category Productivity**, **age 4+**, copyright - - **App Privacy → "Data Not Collected"** (answers in [`privacy-label-and-review.md`](./privacy-label-and-review.md)) + - Paste metadata from [`listing.md`](../../marketing/app-store/listing.md) — name, subtitle, keywords, description, promo text, support/marketing/privacy URLs, **category Productivity**, **age 4+**, copyright + - **App Privacy → "Data Not Collected"** (answers in [`privacy-and-review.md`](../../marketing/app-store/privacy-and-review.md)) - Upload screenshots — iPhone 6.9″ (1320×2868) + 6.5″ (1242×2688) + iPad 13″ (2064×2752) - - **App Review notes** + sample-vault pointer ([`privacy-label-and-review.md`](./privacy-label-and-review.md)) + - **App Review notes** + sample-vault pointer ([`privacy-and-review.md`](../../marketing/app-store/privacy-and-review.md)) 4. 🔑 **Submit for Review.** --- @@ -52,7 +52,7 @@ Code is ready; this is new account/cert work. - `MAS_INSTALLER_IDENTITY` — e.g. `3rd Party Mac Developer Installer: Bihao Wang (9LH9NBX7P4)` - `MAS_PROVISION_PROFILE_BASE64` — base64 of the `.provisionprofile` 5. 🤖 Produce the `.pkg`: push tag **`v1.0.0`** → CI `mas` job runs `scripts/build-mas.sh` → uploads `Markup.pkg` artifact (7-day retention). *I can create + push the tag once the secrets exist.* (Local alt: run `scripts/build-mas.sh` with the three `MAS_*` env vars.) -6. 🔑 App Store Connect → **+ New App** (macOS) for `com.appkon.markup`: SKU, **Free**, metadata from [`listing-copy.md`](./listing-copy.md), **"Data Not Collected"**, screenshots (1280×800 or 2560×1600, ≥1). +6. 🔑 App Store Connect → **+ New App** (macOS) for `com.appkon.markup`: SKU, **Free**, metadata from [`listing.md`](../../marketing/app-store/listing.md), **"Data Not Collected"**, screenshots (1280×800, 1440×900, 2560×1600, or 2880×1800 — the `mac/` set is 2880×1800; ≥1). 7. 🔑 Upload `Markup.pkg` — **Transporter.app** (drag in) or `xcrun altool --upload-app -f Markup.pkg -t macos --apple-id wangharp@gmail.com --password `. 8. 🔑 Attach build → **Submit for Review.** diff --git a/docs/app-store/listing-copy.md b/docs/app-store/listing-copy.md index 7c375d8..9de272d 100644 --- a/docs/app-store/listing-copy.md +++ b/docs/app-store/listing-copy.md @@ -1,188 +1,12 @@ -# App Store listing copy — Markup (iOS + Mac) - -Ready-to-paste store text for both products, EN + 中文. Keep the two products' -copy aligned but platform-true (iOS = read-first vault on iPhone/iPad with -iCloud; Mac = WYSIWYG editor). Character limits are App Store Connect's. - -- **App name** (30): `Markup` -- **Category**: Productivity (primary). Secondary (optional): Utilities. -- **Price**: Free, no in-app purchases. -- **Age rating**: 4+ (no objectionable content). -- **Support URL**: https://github.com/oratis/Markup -- **Marketing URL** (optional): https://github.com/oratis/Markup -- **Privacy Policy URL**: https://github.com/oratis/Markup/blob/main/PRIVACY.md -- **Copyright**: `© 2026 Bihao Wang` - ---- - -## iOS - -### Subtitle (30) -- EN: `Markdown reader & editor` -- 中文: `Markdown 阅读与编辑` - -### Promotional text (170, editable any time) -- EN: `Read your Markdown like a page — code, math, diagrams, tables. Point it at any iCloud/Files folder. Open files straight from GitHub. Private by default.` -- 中文: `像读一页纸那样读 Markdown——代码、公式、图表、表格。指向任意 iCloud/「文件」文件夹,还能直接打开 GitHub 上的文件。默认隐私。` - -### Keywords (100, comma-separated, no spaces) -- EN: `markdown,editor,notes,reader,obsidian,vault,iCloud,github,preview,writing,latex,mermaid,code` -- 中文: `markdown,笔记,编辑器,阅读,vault,obsidian,iCloud,github,预览,写作,公式,图表` - -### Description -EN: -``` -Markup reads and edits your Markdown beautifully — and it works with the folder -of notes you already have, on your iPhone and iPad. - -POINT IT AT YOUR FOLDER -• Open any folder of .md files from iCloud Drive or Files — the same vault you - use on your Mac. Nothing to import, no lock-in. -• Open several vaults and switch between them. - -READ LIKE A PAGE -• High-fidelity rendering: syntax-highlighted code, LaTeX math, Mermaid - diagrams, tables, task lists, and GitHub-style callouts. -• Light / Dark / Sepia themes, adjustable text size and width, Dynamic Type. -• Wikilinks, backlinks with context, a per-document outline, and tags. - -FIND ANYTHING -• Full-text search with tag: and path: filters; fuzzy Quick Open. - -EDIT WITH EASE -• A focused Markdown editor with smart lists, auto-closing brackets, table - formatting, and inline [[wikilink]] and #tag autocomplete. -• Insert images straight into your vault. Export or share as PDF, HTML, or - Markdown. - -iPAD -• Open documents in tabs; edit with a live rendered preview beside the source. -• Hardware-keyboard shortcuts. - -OPEN FROM GITHUB -• Paste a GitHub link or browse a repo to read a file. Sign in (optional) to - reach private repos and your own repositories. - -HTML, TOO -• Open and read .html and web bundles, with scripts off by default for safety. - -PRIVATE BY DEFAULT -• No account required, no telemetry, no tracking. Your notes stay on your device - and your iCloud. Signing in to GitHub is optional and only used to fetch the - files you ask for. - -English and 简体中文, switchable in-app. -``` - -中文: -``` -Markup 把你的 Markdown 漂亮地读出来、顺手地写下去——而且直接用你已经有的笔记 -文件夹,在 iPhone 和 iPad 上。 - -指向你的文件夹 -• 打开 iCloud 云盘或「文件」里任意 .md 文件夹——和你 Mac 上用的是同一个仓库。 - 无需导入,不绑定。 -• 可打开多个仓库并随时切换。 - -像读一页纸 -• 高保真渲染:代码高亮、LaTeX 公式、Mermaid 图表、表格、任务列表,以及 - GitHub 风格的提示框(callout)。 -• 浅色/深色/护眼三种主题,字号与宽度可调,支持动态字体。 -• 双链 [[wikilink]]、带上下文的反向链接、单文档大纲、标签。 - -快速查找 -• 全文搜索,支持 tag: 与 path: 过滤;模糊「快速打开」。 - -轻松编辑 -• 专注的 Markdown 编辑器:智能列表、括号自动闭合、表格对齐,行内 - [[双链]] 与 #标签 自动补全。 -• 图片可直接插入仓库。可导出/分享为 PDF、HTML 或 Markdown。 - -iPad -• 多文档标签页;编辑时源码旁实时渲染预览。 -• 支持硬件键盘快捷键。 - -从 GitHub 打开 -• 粘贴 GitHub 链接或浏览仓库即可阅读文件。登录(可选)后可访问私有仓库与 - 你自己的仓库列表。 - -也支持 HTML -• 可打开并阅读 .html 与网页压缩包,默认关闭脚本以保安全。 - -默认隐私 -• 无需账户、无遥测、无追踪。你的笔记只留在本机与你的 iCloud。登录 GitHub 为 - 可选,且仅用于拉取你指定的文件。 - -支持 English 与简体中文,App 内即可切换。 -``` - ---- - -## Mac - -### Subtitle (30) -- EN: `Markdown editor for your vault` -- 中文: `面向你仓库的 Markdown 编辑器` - -### Promotional text (170) -- EN: `A fast, local-first Markdown editor. WYSIWYG editing, full-text search, math & diagrams, HTML export. Open any folder — your notes stay on your Mac.` -- 中文: `快速、本地优先的 Markdown 编辑器。所见即所得、全文搜索、公式与图表、HTML 导出。打开任意文件夹——笔记只留在你的 Mac。` - -### Keywords (100) -- EN: `markdown,editor,notes,vault,obsidian,wysiwyg,search,latex,mermaid,html,export,writing,canvas` -- 中文: `markdown,编辑器,笔记,仓库,obsidian,所见即所得,搜索,公式,图表,html,导出,写作` - -### Description -EN: -``` -Markup is a fast, local-first Markdown editor for the folder of notes you -already have. - -• WYSIWYG editing that stays plain Markdown on disk — no proprietary format. -• Open any folder as a vault; instant full-text search, tags, wikilinks, and - backlinks. -• Syntax-highlighted code, LaTeX math, Mermaid diagrams, tables, task lists, - and GitHub-style callouts. -• Export or preview as self-contained HTML; print to PDF. -• Open files straight from GitHub, public or (signed in) private. -• Light / Dark / Sepia themes and custom CSS. -• English and 简体中文. - -Private by default: no account, no telemetry. Your notes never leave your Mac. -The Mac App Store edition is fully sandboxed. -``` - -中文: -``` -Markup 是一款快速、本地优先的 Markdown 编辑器,直接用你已经有的笔记文件夹。 - -• 所见即所得编辑,磁盘上始终是纯 Markdown——无私有格式。 -• 把任意文件夹作为仓库打开;即时全文搜索、标签、双链与反向链接。 -• 代码高亮、LaTeX 公式、Mermaid 图表、表格、任务列表,以及 GitHub 风格提示框。 -• 可导出或预览为自包含 HTML;可打印为 PDF。 -• 可直接打开 GitHub 上的文件,公开仓库或(登录后)私有仓库。 -• 浅色/深色/护眼主题,支持自定义 CSS。 -• 支持 English 与简体中文。 - -默认隐私:无账户、无遥测,笔记绝不离开你的 Mac。Mac App Store 版完全沙盒化。 -``` - ---- - -## "What's New" (release notes) template - -- iOS first App Store release: lead with "First public release — read & write your - Markdown vault on iPhone and iPad." -- Mac App Store first release: "Now on the Mac App Store — fully sandboxed." - -Keep per-release notes short; mirror the human-facing items, not internals. - -## Screenshots needed (you produce these) - -- **iPhone** 6.9" (1320×2868) and 6.5" (1242×2688) — at least 2, up to 10. Suggested: - reader page, search, editor, GitHub open, settings/themes. -- **iPad** 13" (2064×2752) — required because the app supports iPad. Suggested: - tabs + split-view live preview, file list + reader. -- **Mac** 2560×1600 (or 1280×800) — editor, search, HTML export/preview, themes. - -Localize screenshots for zh-Hans if you want a localized China listing (optional). +# App Store listing copy — moved → marketing/app-store/listing.md + +> **Not maintained here.** The single source of truth for the App Store listing +> copy (app name, subtitle, promo text, keywords, description, category, URLs, +> copyright — EN + 中文, iOS + Mac) now lives in **`marketing/app-store/`**: +> +> ## → [`marketing/app-store/listing.md`](../../marketing/app-store/listing.md) +> +> Paste from that file in App Store Connect. An earlier copy lived here and had +> drifted — e.g. it gave the app name as `Markup`, but ASC actually uses +> `Markup - MD Reader` (which the marketing/ version has). This stub is kept as a +> redirect so older links don't break. diff --git a/docs/app-store/privacy-label-and-review.md b/docs/app-store/privacy-label-and-review.md index 59e747d..ee0635f 100644 --- a/docs/app-store/privacy-label-and-review.md +++ b/docs/app-store/privacy-label-and-review.md @@ -1,82 +1,10 @@ -# App Privacy label + App Review notes — Markup (iOS + Mac) - -Exact answers for App Store Connect's **App Privacy** questionnaire and the -**App Review Information** notes, for both products. Markup has **no backend and -no analytics**, so the label is "Data Not Collected" on both platforms. This is -backed in code by the iOS `PrivacyInfo.xcprivacy` (Tracking = false, Collected -data types = none) and by the absence of any analytics SDK in either app. - -## App Privacy questionnaire → answers - -**"Do you or your third-party partners collect data from this app?"** → **No.** -Result label: **Data Not Collected.** - -Rationale you can paste if asked: -- No account system, no server owned by us — there is nowhere for data to be - collected to. -- No analytics, crash-reporting, advertising, or tracking SDKs. -- Notes/files stay on the device (and the user's own iCloud, iOS only). -- The only outbound network is **user-initiated**: - - **GitHub API** (api.github.com / raw.githubusercontent.com) when the user - opens a file/repo from GitHub. Requests go to GitHub, not to us. An optional - OAuth token is stored **on-device** (iOS Keychain; macOS login Keychain) and - sent only to GitHub as an `Authorization` header. - - **Math/diagram CDN** (jsDelivr) only inside *exported/preview* HTML that uses - KaTeX/Mermaid (Mac export; iOS reader bundles these offline). No personal - data is sent. -- This contacts third parties (GitHub, jsDelivr) but does **not** "collect data" - in the App Privacy sense — nothing about the user is gathered, and the calls - fetch content the user explicitly asked for. - -**Tracking** (App Tracking Transparency): **No tracking.** Do not add the -`NSUserTrackingUsageDescription` key — the app never tracks. - -## Export compliance (iOS) — answered in the project - -`ITSAppUsesNonExemptEncryption = NO` is set in the Xcode build settings, so each -upload auto-answers the export-compliance prompt. The app only uses standard -HTTPS (App Transport Security), which is exempt. Nothing to do per-submission. - -## App Review notes (paste into "App Review Information → Notes") - -``` -Markup is a local-first Markdown reader/editor. It has NO account and NO -server of ours — there is no login to Markup itself and no test credentials are -needed. - -HOW TO REVIEW (the app works on a folder of files the user picks): -1. Launch the app. On first run an onboarding card explains the "bring your own - folder" model. -2. Tap "Open a Folder" and choose any folder of .md files. On the simulator you - can use the Files app's "On My iPhone" area; or use the bundled sample below. -3. A sample vault for review is included in the repo at - docs/app-store/reviewer-sample-vault/ — copy it into Files/iCloud and open it, - or download the repo. It demonstrates rendering (code, math, tables, - callouts), wikilinks, search, and editing. - -OPTIONAL GITHUB SIGN-IN: -- "Open from GitHub" works with PUBLIC repos WITHOUT signing in — e.g. paste - github.com/oratis/Markup and browse README.md. No account needed to review. -- Signing in (GitHub OAuth device flow) is OPTIONAL and only unlocks private - repos + higher rate limits. The token is stored in the Keychain on-device and - is sent only to GitHub. - -PRIVACY: no analytics, no tracking, no data collection. See PRIVACY.md. -``` - -(Mac: same notes; instead of Files, the reviewer uses ⌘⇧O / "Open Folder" and -the same sample vault. The Mac App Store build is sandboxed — see -MAS-publishing-plan.md.) - -## Sample vault for reviewers - -A tiny, self-contained vault lives at -[`reviewer-sample-vault/`](./reviewer-sample-vault/) — it exercises the headline -rendering features and gives a reviewer something to open immediately (BYO-folder -apps are commonly rejected when a reviewer opens the app and sees "nothing"). - -## Why this matters (BYO-folder gotcha) - -Markup's whole model is "point me at a folder you already have." A reviewer who -launches it cold sees onboarding, not content. The review notes + bundled sample -vault prevent a "the app appears to be non-functional / incomplete" rejection. +# App Privacy + App Review notes — moved → marketing/app-store/privacy-and-review.md + +> **Not maintained here.** The single source of truth for the App Privacy +> questionnaire answers ("Data Not Collected"), the App Review notes, and the +> export-compliance answer now lives in **`marketing/app-store/`**: +> +> ## → [`marketing/app-store/privacy-and-review.md`](../../marketing/app-store/privacy-and-review.md) +> +> Paste from that file in App Store Connect. This stub is kept as a redirect so +> older links don't break.