App Store assets and metadata #81
Labels
No labels
domain:backend
domain:devops
domain:frontend
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/westside-app#81
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Feature
Lineage
project-capacitor-mobile→ Board item (westside first consumer)Repo
forgejo_admin/westside-appUser Story
As Lucas
I want App Store listing assets prepared
So that the app has a professional App Store presence
Context
App Store Connect requires: app icon (1024x1024), screenshots (multiple device sizes), privacy policy URL, app description, keywords, categories. Fastlane deliver can automate metadata submission.
Blocked by: Apple Developer enrollment (pal-e-platform #164).
File Targets
Files to create:
fastlane/metadata/— App Store metadata (description, keywords, etc.)fastlane/screenshots/— device screenshotsFiles NOT to touch:
Acceptance Criteria
fastlane delivercan push metadata to App Store ConnectTest Expectations
fastlane deliver --validate_onlypassesConstraints
Checklist
Related
project-capacitor-mobile— App Store Requirements architectureIssue #81 Ticket Scope Review
TEMPLATE COMPLIANCE
Checked against
template-issue(the canonical Forgejo issue template).### Lineageproject-capacitor-mobilewith board context. However, since plans are obsolete (kanban-over-plans), this should reference the board item directly. Acceptable.### Repoforgejo_admin/westside-app### User Story### Context### File Targets### Acceptance Criteria### Test Expectations### Constraints### Checklist- [ ] PR opened,- [ ] Tests pass,- [ ] No unrelated changes. Not present.### Relatedproject-capacitor-mobile.Also note: All sections use bold inline labels ("Type:", "User Story:") instead of H3 markdown headings (
### User Story). This is a cosmetic divergence from template-issue but does not block agent execution.TRACEABILITY
story:cap-appstorecap-appstore: "As Lucas, I want to submit an app to the App Store with correct metadata and pass review"arch:appstoretype:featureconsumer:westsideBoard item #373 on
board-capacitor-mobilelinks to this issue in backlog column. Traceability chain is intact.FILE TARGET SPECIFICITY
This is the main concern. File targets are too vague for agent execution:
fastlane/metadata/-- This is a directory. Fastlane deliver expects a specific structure (en-US/description.txt,en-US/keywords.txt,en-US/release_notes.txt,en-US/name.txt,en-US/subtitle.txt,en-US/promotional_text.txt,en-US/privacy_url.txt,en-US/support_url.txt,en-US/marketing_url.txt,review_information/with review contact info). The agent needs to know which files to create.fastlane/screenshots/-- Directory only. Apple requires specific device screenshot dimensions (6.7" -- iPhone 15 Pro Max at 1290x2796, 6.5" -- iPhone 14 Plus at 1284x2778, 5.5" -- iPhone 8 Plus at 1242x2208, and optionally iPad). The agent needs to know which device sizes are required."App icon assets (1024x1024 source + generated sizes)" -- No file path. Should specify: source file location (e.g.,
assets/icon-1024.png), generated output path (e.g.,ios/App/App/Assets.xcassets/AppIcon.appiconset/), and whether a generation script is expected."Privacy policy page" -- No path. Is this a new SvelteKit route (
src/routes/privacy/+page.svelte)? A static HTML file? A standalone URL hosted elsewhere? Agent cannot execute without this decision.ACCEPTANCE CRITERIA ASSESSMENT
fastlane deliver --validate_onlypassesDEPENDENCY ANALYSIS
Stated dependency: "Blocked by Apple Developer enrollment (pal-e-platform #164)" -- Correct. Apple Developer account is required for App Store Connect access, and #164 is on the board in backlog.
Missing dependency: The Constraints section states "Screenshots sourced from TestFlight builds (production app, not mockups)." This means issue #80 (TestFlight iteration) is ALSO a blocker -- you cannot capture production screenshots without a working TestFlight build. This dependency is not listed in the blocking statement.
Downstream: Issue #82 (App Store submission) correctly lists #81 as a blocker. Chain is: #164 (enrollment) and #80 (TestFlight) block #81 (assets) blocks #82 (submission).
ITEMS TO FIX
Add
### Checklistsection -- Template requires it. Add the standard:- [ ] PR opened,- [ ] Tests pass,- [ ] No unrelated changes.Add
### Relatedsection -- Must referenceproject-capacitor-mobile.Expand File Targets with specific paths:
fastlane/metadata/en-US/files to createAdd #80 (TestFlight iteration) as an explicit blocker -- Constraints say screenshots come from TestFlight builds, so TestFlight must work first.
Specify screenshot device sizes in Acceptance Criteria -- Replace "required device sizes" with the actual Apple-required dimensions (minimum: 6.7" and 6.5" iPhone).
VERDICT: NEEDS WORK
Five items to fix before this ticket is ready for
next_up. The traceability is solid (story and arch labels map correctly toproject-capacitor-mobile), the user story intent is clear, and the fastlane test expectation is excellent. The gaps are in file target specificity (too vague for agent execution) and two missing template sections. Fix those and this is ready to move.Ticket Fix (QA review remediation)
Missing Sections Added
### Checklist
fastlane deliver --validate_onlypasses### Related
project-capacitor-mobile— App Store Requirements architecture sectionsop-capacitor-mobile-lifecycle— pipeline contextFile Targets (specific paths)
Files to create:
fastlane/metadata/en-US/description.txt— App Store descriptionfastlane/metadata/en-US/keywords.txt— search keywordsfastlane/metadata/en-US/name.txt— app display namefastlane/metadata/en-US/privacy_url.txt— privacy policy URLfastlane/screenshots/en-US/— device screenshotsstatic/privacy.html— privacy policy page (static route)fastlane/metadata/app_icon.png— 1024x1024 source iconMissing Dependency (added)
Blocked by #80 (TestFlight iteration) — screenshots must come from real TestFlight builds, not mockups. Also blocked by #164 (Apple Developer enrollment,
blocker:external— budget).Screenshot Device Sizes (specified)
Apple requires:
Minimum: 6.7" and 5.5" required. Others optional.
Issue #81 Re-Review
ORIGINAL FINDINGS (5)
### Checklistsection### Relatedsectionproject-capacitor-mobile(architecture) andsop-capacitor-mobile-lifecycle(pipeline context)fastlane/metadata/en-US/description.txt,keywords.txt,name.txt,privacy_url.txt,fastlane/screenshots/en-US/,static/privacy.html,fastlane/metadata/app_icon.png)All 5 findings addressed.
TRACEABILITY VERIFICATION
story:cap-appstoreexists inproject-capacitor-mobileuser storiesarch:appstoreexists inproject-capacitor-mobilearchitecture tableboard-capacitor-mobilelinks to this issuestory:cap-appstore,arch:appstore,type:feature,consumer:westsideproject-capacitor-mobilenote exists and is activesop-capacitor-mobile-lifecyclenote exists and is activeFull traceability triangle intact: User Story (cap-appstore) <> Architecture (arch:appstore) <> Board Item (#373).
REMAINING OBSERVATIONS (non-blocking)
Cosmetic heading format: Original issue uses bold inline labels instead of H3 markdown headings for some sections. Not a blocker -- content is correct and complete.
Fix delivered as comment, not issue body edit: The Checklist, Related, and file path specifics live in Comment 2 rather than being edited into the issue body. This is functional but means the implementer must read both the issue body and the fix comment to get the full specification. Consider editing the issue body to incorporate the fixes for single-source-of-truth clarity. Non-blocking.
Domain labels: Issue has
domain:backend,domain:devops,domain:frontendwhich is broad. The actual work is primarilydomain:devops(Fastlane metadata) anddomain:frontend(privacy policy page, app icon). Minor.VERDICT: APPROVED
All 5 findings from the original review are resolved. Traceability is verified end-to-end. Ticket is ready to advance to
next_up(subject to blockers #80 and #164 clearing first).