Skip to content

feat(app-store): App Store creative assets: header, search results, universal and In-App Event media, from the icon or row artwork, with looping videos - #10

Merged
keiver merged 11 commits into
mainfrom
feat/app-store-creative-assets
Oct 6, 2026
Merged

keiver merged 11 commits into
mainfrom
feat/app-store-creative-assets

Conversation

@keiver

@keiver keiver commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

App Store creative assets for iOS 27 and iPadOS 27 (--app-store, config appStore, plugin prop appStore).

  • Images: header.png 3840x1646, search-results.png 3840x2560, universal.png 5244x2950, opt-in event-card.png 3840x2160 and event-details.png 2160x3840. Opaque, art placed in the safe areas from Apple's templates.
  • Per placement: the icon on a backdrop, finished artwork (source), row artwork re-tiled to each canvas, a row-motion loop video (animate), or a recording cut into a seamless loop (video); enabled skips a placement.
  • Row artwork: one SVG (a <mask> of repeated cards) serves every placement; each rule of the format is checked and named on failure. What is drawn through the mask stays put; a shape drawn on top inside one card rides its row and hands over to the next card at the loop seam. SVG <animate> on a shape plays in videos. When the card under the fixed layer would not fit a safe area whole, the artwork moves until it does.
  • Row-motion frames are blended from layers drawn once (open/shut mask, row strips per sub-pixel phase, rider sprites), several at a time, and checked against a full render; art the blend cannot reproduce gets full renders.
  • Videos: H.264 High via libx264 (steady quality across keyframes, so loops close without a hitch), or ProRes 422 HQ (VideoToolbox on a Mac). video.audio adds music to every video, looped with a 1 s crossfade from a stretch picked between video.audioStart and video.audioEnd; otherwise a silent stereo track.
  • .tvos-assets-store.json records what each output was made from; unchanged outputs are skipped.
  • preview.html outlines each safe area and plays the videos; App Store paths in its resolved config stay relative.
  • Docs: README sections, six example row artwork files, and the TomoTV example regenerated from the app's current config, with Live TV In-App Event media.

Closes #11

keiver added 7 commits October 6, 2026 07:19
…artwork, with row-motion and recorded videos

Writes the iOS 27 creative assets: header (3840x1646), search results (3840x2560), universal (5244x2950) and opt-in In-App Event card (3840x2160) and details (2160x3840), opaque, art in Apple's template safe areas. A placement takes the icon composition, finished artwork (source), row artwork re-tiled to its canvas, a row-motion loop video (animate) or a recording cut into a seamless loop (video). The row-artwork contract is validated rule by rule. Unchanged outputs are skipped. CLI, config, schema and Expo plugin.
@keiver keiver added the version:minor 1.x.0 label Oct 6, 2026
@keiver keiver self-assigned this Oct 6, 2026
@keiver
keiver merged commit 28e4492 into main Oct 6, 2026
2 checks passed
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Released as v1.6.0 and published to npm.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support the iOS 27 App Store creative assets: header, search results, universal and In-App Event images and videos

1 participant