Skip to content

listing-kit v0.3.0

Choose a tag to compare

@bilal- bilal- released this 04 Oct 03:44
· 22 commits to main since this release

⚠️ Upgrade note

Play graphics now go where fastlane supply actually uploads them: images/featureGraphic.png and images/icon.png directly under the Play locale. Earlier versions wrote images/featureGraphic/featureGraphic.png and images/icon/icon.png, which supply silently skipped. The validator fails on the old folders and tells you where to move the files.

Store rules (re-verified against Apple/Google docs, Oct 2026)

  • App Store sizes updated: 6.9" adds 1260×2736, the 6.7" class is gone, and 6.3"/6.1"/4.7"/11"/10.5" are recognized. The size table lives in one place (scripts/lib/apple-screenshot-sizes.tsv).
  • Checks run per locale and per display class: you need a 6.9" or 6.5" iPhone set (at most 10 per class) and a 13" iPad set when the app runs on iPad. An 11" set no longer counts.
  • Apple keywords are measured in bytes. Support and privacy URLs are required and must be real http(s) URLs. Values in metadata/default/ are used as fallbacks.
  • Play needs at least 2 screenshots across all device types (at most 8 per type). Tablet, TV and Wear folders are checked too. You get a warning below promotion eligibility (4 screenshots at 1080 px or more). The icon must be a 512×512 8-bit PNG.
  • JPEGs are validated. Upper-case extensions, PNGs with tRNS transparency, sizes the App Store doesn't recognize, and copy that isn't UTF-8 all fail.

New

  • scripts/capture/normalize-screenshot.sh flattens raw RGBA captures to 24-bit RGB. With --play it also crops to Play's 2:1 limit.
  • Device overrides for detection edge cases: LK_SUPPORTS_IPAD=0|1 and LK_SUPPORTS_IPHONE=0.

Fixes

  • Review hook:
    • Your existing pre-commit hooks are left as they were, so a failing hook still blocks the commit.
    • The page is built from the staged tree, not from unstaged edits.
    • Works with linked worktrees, core.hooksPath, Husky 9, several app roots per repo, deletion-only commits, and app paths with spaces or glob characters.
    • A moved plugin install prints a warning instead of blocking commits.
  • Secret scan: no longer reports "clean" when grep hits an error.
  • visual-diff: works with ImageMagick 6.
  • grant-permissions: says plainly when the device isn't reachable or the app isn't installed.
  • gemini-extension.json: generated with a real JSON encoder.
  • Pipeline order: Assemble now runs before Validate, so validation checks the tree that was actually written.
  • Docs: fixed the argument order for grant-permissions.sh, the Flutter iOS-simulator build (simulators only run debug builds), and Release builds for native/RN.
  • Example app: npm ci installs cleanly. Bundle id is now sh.bilal.recipebox.

Validation

  • bash tests/run.sh: 296 passed, 0 failed across 13 test files (also under macOS bash 3.2). CI is green on Ubuntu and macOS.