Skip to content

Draw the feature graphic, and fill the 7-inch tablet slot - #607

Merged
andiwand merged 2 commits into
mainfrom
draw-the-feature-graphic
Aug 19, 2026
Merged

Draw the feature graphic, and fill the 7-inch tablet slot#607
andiwand merged 2 commits into
mainfrom
draw-the-feature-graphic

Conversation

@andiwand

@andiwand andiwand commented Aug 19, 2026

Copy link
Copy Markdown
Member

Two listing assets the release never touched, both of them still pictures of the app
as it looked before the 4.14 redesign. Found checking the 4.16.0 listing in the
console.

The 7" tablet slot held five pictures of the old app

sevenInchScreenshots was deliberately left out of the staging table:

# `sevenInchScreenshots` is deliberately not among them: nothing is made for a
# 7" tablet in particular, and play falls back to the phone pictures there.

Play does fall back - where the slot is empty. This one was not, so it went on
showing the pre-4.14 landing screen through every release that rewrote the other two
slots.

The tablet's captures go into both tablet slots now. A 1600x2560 picture is inside
the 7" slot's limits as well as the 10" one's, so nothing new is photographed and the
emulator hour does not move - DIRECTORIES maps a device to a tuple of slots instead
of one, and stage() copies into each. Supply calls clear_screenshots per slot
before uploading, so the five old pictures are deleted rather than left underneath.

The feature graphic is drawn now, not committed

fastlane/metadata/android/en-US/images/featureGraphic.png was the one listing asset
the release uploaded nothing over - checked in, 1024x500, the only en-US one, and
served by Play in all fifteen storefronts. It showed the old UI inside mockup phones.

It is drawn out of the same parts a screenshot is framed from - the ground, the
dashed line, the drawn Pixel and the odt/ods/odp tabs - laid out across the canvas
instead of down. Its capture is the first screenshot's phone-01-recents, and its
headline that screen's, so there is no second line of copy to write and none to
translate fifteen times
. One per locale, where the store had one English picture
for all of them.

That is the point of drawing it rather than replacing it. A picture of the app is
worth what the build it came off is worth, and a listing asset nothing regenerates is
one nobody notices going stale - this one managed three releases. To look at it:

ODR_SCREENSHOT_LANGUAGES=en-US bundle exec fastlane android screenshots
# fastlane/framed/en-US/featureGraphic.png

or the framed-phone artifact of any release run, dry run included.

Around it

  • store_screenshots.py checks it the way it checks a screenshot - 1024x500 exactly,
    present in every locale, or the set is not a set - and stages it to
    <locale>/images/featureGraphic.png, which is where supply reads one from.
  • skip_upload_images becomes !captured, so it rides the rule the screenshots
    already ride: no capture, nothing uploaded, the store keeps what it has. A wedged
    emulator still costs the release its pictures and nothing else.
  • The launcher icon is not staged, and supply does not touch what it cannot find, so
    it stays where it is. Still its own job.
  • The workflow needs no change: the graphic lands in fastlane/framed/<locale>/ and
    rides the artifacts that are already there.

How it was checked

  • A full set built out of the local en-US capture: 285 files staged into the right
    directories, phoneScreenshots / tenInchScreenshots / sevenInchScreenshots and
    the graphic beside them.
  • Both new failure modes reported rather than shipped: de-DE: no featureGraphic.png, fr-FR: no tablet 03-sheet.
  • All fifteen headlines rendered. Every one fits its column and clears the phone,
    Devanagari and CJK included.
  • The gallery screenshots come out unchanged - headline_middle defaults to the
    middle of the canvas, which is where they already were.

🤖 Generated with Claude Code

andiwand and others added 2 commits August 19, 2026 08:12
Two listing assets the release never touched, both still pictures of the app as it
looked before the 4.14 redesign.

The 7" screenshot slot held five of them. `sevenInchScreenshots` was deliberately
left out of the staging table, on the grounds that play falls back to the phone
pictures there - but it only falls back where the slot is *empty*, and this one has
not been for years. So it went on showing the old app through every release that
rewrote the other two slots. The tablet's captures go into both slots now: 1600x2560
is inside the 7" slot's limits as well as the 10" one's, so nothing new is
photographed and the emulator hour does not move.

The feature graphic - the picture play shows above the listing, in all fifteen
storefronts - was a committed 1024x500 png, the one listing asset the release
uploaded nothing over. It is drawn now, out of the same parts a screenshot is framed
from: the ground, the dashed line, the drawn Pixel and the odt/ods/odp tabs, laid out
across the canvas instead of down. Its capture is the first screenshot's, and its
headline that screen's, so there is no second line of copy to write and none to
translate fifteen times - and one per locale, where the store had one English picture
serving all of them.

That is the point of drawing it rather than replacing it: a picture of the app is
worth what the build it came off is worth, and a listing asset nothing regenerates is
one nobody notices going stale. This one took three releases.

`store_screenshots.py` checks it the way it checks a screenshot - 1024x500 exactly,
present in every locale, or the set is not a set - and stages it to
`<locale>/images/featureGraphic.png`. `skip_upload_images` becomes `!captured`, so it
rides the rule the screenshots already ride: no capture, nothing uploaded, the store
keeps what it has. The launcher icon is not staged and supply does not touch what it
cannot find, so it stays where it is - its own job, as before.

Checked against a full set built out of the local en-US capture: 285 files staged
into the right directories, and both new failure modes reported rather than shipped -
a missing feature graphic and a missing tablet screenshot. All fifteen headlines were
rendered and every one fits its column and clears the phone.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DteBNWfCVJ7KueHfTwyo8v
Nine passages saying what used to be the case - the pre-4.14 sideload's
application id, the fastlane lanes the release workflow replaced, v4.9.0's
failed tag push, the padded two-part version, the hand counted version codes,
the GPL this carried before - are gone. Each rule they explained stays; what
went is the account of how it came to be one, which the git history already
holds.

The store's pictures are all generated now, so what is left in the tree are
icons: `icon-web.png` from 2018, superseded by the 2021 icon and referenced
nowhere, and four `ic_launcher.png` under the androidTest resources from the
2017 gradle port, which no test apk has ever declared an icon to use.

`ic_launcher-playstore.png` stays though nothing reads it either: the
foregrounds are per-density PNGs with no vector behind them, so it is the only
512 render of the shipping icon, and Play's listing wants one. The stale copy
in `fastlane/metadata` stays as the placeholder its README describes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HN3brSERAZubtihhrVf5we
@andiwand
andiwand merged commit 233f8c2 into main Aug 19, 2026
2 checks passed
@andiwand
andiwand deleted the draw-the-feature-graphic branch August 19, 2026 09:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant