Files
iceglass/Scripts/metadata/README.md
T
rzen a755cce3e2 Add App Store release pipeline, adopt ISC license, add unit test target
- Scripts/release.sh archives and uploads the macOS app via the
  appstore-publish skill's API-driven pipeline (xcodebuild + App Store
  Connect key, no fastlane); ExportOptions-macOS.plist adapts the skill's
  iOS-centric export options for generic/platform=macOS. Scripts/metadata/
  drafts the listing from the README. Canonical asc-*.swift scripts are
  referenced in place from indie-skills, matching Weight/HIIT.
- Replace the all-rights-reserved LICENSE.md with the portfolio-standard
  ISC license (REVIEW2 D2b), preserving the existing copyright year/holder.
- Add an IceGlassTests target (project.yml) with a real smoke test suite
  covering GameState's progression-rank ordering and polling-interval
  mapping — logic MainService relies on to reject stale API regressions.
2026-07-05 10:27:36 -04:00

3.4 KiB
Raw Blame History

App Store metadata

Local source-of-truth for the IceGlass (macOS) App Store listing. The appstore-publish skill's asc-metadata.swift (invoked in place from ../indie-skills) reads this folder and pushes it to App Store Connect via the API; only files that are present get pushed. Then asc-submit.swift attaches the build and submits.

set -a; source .env.release; set +a; swift ../indie-skills/skills/appstore-publish/scripts/asc-metadata.swift --bundle dev.rzen.indie.IceGlass --version X.Y.Z --dry-run   # preview
set -a; source .env.release; set +a; swift ../indie-skills/skills/appstore-publish/scripts/asc-metadata.swift --bundle dev.rzen.indie.IceGlass --version X.Y.Z             # push
set -a; source .env.release; set +a; swift ../indie-skills/skills/appstore-publish/scripts/asc-submit.swift --bundle dev.rzen.indie.IceGlass --version X.Y.Z --submit      # submit

Note: this metadata set is for the macOS app record only. IceGlass also ships an iOS companion (IceGlass-iOS, bundle ID dev.rzen.indie.IceGlass.iOS) that isn't wired into the release pipeline yet — when it's ready to publish, give it its own App Store Connect app record and its own sibling metadata directory (e.g. Scripts/metadata-ios/), since asc-metadata.swift currently queries the IOS platform filter when looking up versions, not MAC_OS.

Layout & character limits

File Field Limit API resource
app/<locale>/name.txt App name 30 appInfoLocalizations
app/<locale>/subtitle.txt Subtitle 30 appInfoLocalizations
app/<locale>/privacy_url.txt Privacy policy URL appInfoLocalizations
app/categories.json Categories appInfos
version/<locale>/description.txt Description 4000 appStoreVersionLocalizations
version/<locale>/keywords.txt Keywords (comma-sep) 100 appStoreVersionLocalizations
version/<locale>/promotional_text.txt Promotional text 170 appStoreVersionLocalizations
version/<locale>/whats_new.txt What's New 4000 appStoreVersionLocalizations
version/<locale>/support_url.txt Support URL appStoreVersionLocalizations
version/review.json Review contact / demo / notes appStoreReviewDetails
screenshots/<locale>/<DISPLAY_TYPE>/*.png Screenshots appScreenshotSets

name + subtitle are app-level; description + keywords are version-level. whats_new.txt only applies after the first version — leave it out for 1.0. No whats_new.txt or screenshots/ are checked in yet — screenshots still need to be captured (see the appstore-publish skill's "Step 3 — Screenshots" for the simulator-capture recipe; macOS screenshots are plain screencapture/window captures at the App Store's required pixel sizes, not simulator grabs).

Screenshot display types (macOS)

Common types: APP_DESKTOP (1280×800 or larger, 16:10). One folder per device class; filenames sort the order. The local set is authoritative — re-running replaces the remote set for any display type you provide.

Not handled here (separate resource families)

Age rating (ageRatingDeclarations), pricing/availability (appPriceSchedules / appAvailabilities), and App Privacy labels (appDataUsages). asc-submit.swift --submit (see the appstore-publish skill) reports any of these that block the submission.