Repository navigation
Commit 2d018cf
instagram-ios: eight user-profile screens, measured (#79)
* instagram-ios: eight user-profile screens, measured
A six-phase clone-prototype run against eight Mobbin captures of the
Instagram iOS profile: one account at the top of its scroll and scrolled
until the tab bar sticks, its Reels, Reposts and Tagged tabs, a private
account, and two verified profiles.
Ten committed boards -- a token board and an evidence board for 36 tokens,
then the eight replicas -- from one gen.py, plus probes.json (23 probes)
and crops.json (74 boxes) as the measurement behind them. Mean absolute
delta against the captures is 5.06-7.82 levels whole-frame and 1.85-4.79
below the status bar; about three of those levels are the Dynamic Island
Mobbin strips and this repo's shared status bar draws.
Two things worth the next run's time. The story ring is an angular sweep,
not a linear one -- twelve samples at 30 degrees round c01's ring do not
mirror about any axis, which a linear gradient on a circle always does --
and the four tab glyphs are eight, because an active tab is a different
drawing rather than a recolour. Settling the second needed stroke widths
solved on coverage against the core ink level rather than against 255, and
per-row solves in place of a threshold bbox, which biases black shapes
wider than grey ones.
Only photography is cropped. The two brand-mark avatars are the original
1080 and 720 px files from the profile API, and the grid badges and reels
view counts set over the crops are inpainted out and redrawn live.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* instagram-ios: twelve icons are Instagram's own drawings, not traces
The whole IGDS set ships as IGDS*Icon.react modules inside the JS the
logged-out instagram.com shell loads. verified, threads, tab-reels,
tab-reels-on, badge-play, badge-carousel, badge-pin, bell, link, more,
chevron-down and chevron-left are now those paths verbatim.
icon() injects preserveAspectRatio="none", so each file's viewBox is the
glyph's ink box rather than the module's design grid -- `more` is 15.07 x
3.07 of ink on a 24 x 24 grid and would otherwise land at 13% of height.
The boxes are measured by rasterizing each candidate, because arcs and
stroked polylines cannot be read off a `d` string.
Every board improves: whole-frame 5.06-7.77 against 5.06-7.82, and
1.84-4.73 below the status bar against 1.85-4.79. IGDSLockOutline96Icon is
a different drawing (a padlock inside a circle board 06 draws in CSS, and
38.4 x 49.33 of padlock against the capture's 40.67 x 50.67); it cost 06
0.18 levels and was reverted. The grid, tagged and crown tab glyphs,
threads-note and the plain eye are not in the logged-out bundle set at all,
so those 11 stay traces.
Also splits the evidence table in two: at EV_ROWS 40 the single board
clipped its own sheet by 55px, which --check-overflow had been reporting
and which hid three rows of evidence. 18 rows a board fits.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* instagram-ios: the Threads note glyph is Threads' own drawing
instagram.com's 202 icon modules carry nothing for the Threads row's second
glyph -- no Barcelona, thread, comment or note name draws it. threads.com's
logged-out profile page names 489 bundles, 466 of which instagram.com never
loads, and ThreadsCommentsOutline24Icon there is the drawing exactly: a back
bubble knocked out by the front one, tail bottom-right. The trace it replaces
drew the back bubble as a closed ring fused into the front one, a different
picture rather than a rougher one.
Its ink is square on a 24 grid and the capture's span is 14.67 x 13.33 pt, so
this is the one glyph that ships stretched, measured off c01 and c08 rather
than inherited. 08 goes 6.44 -> 6.42 whole-frame, 3.31 -> 3.29 below the
status bar; 01 is unchanged at 7.77 / 4.73. refkit tokens, refkit batch and
--check-overflow are all unchanged.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* instagram-ios: three review fixes -- layout, brand provenance, verify block
layout.json is the same three rows whether or not the reference boards were
built. They need assets/refs/, which is gitignored, so a clean clone builds
none of them, and a row written only when they exist rewrote the committed
file on every such run -- generator and output out of sync on a fresh
checkout. The canvas already drops a layout entry whose file is missing, and
a row that empties out with it, so the row can just always be written. Checked
by regenerating a copy of the folder with assets/refs/ removed: 11 boards, and
a byte-identical layout.json.
assets/brand/ is 516 px square, not the 1080 and 720 the README and brand()
both claimed. Those are the sizes the profile API serves and the files are an
exact Lanczos resample of them, which is twice what an 86pt circle needs at 3x
and small enough to inline in two boards -- so the provenance is what was
wrong, not the choice. Said so in all three places.
The verify block shot only 01-profile, and the probe set also names
02-grid-scrolled, 06-private and 08-agnezmo; `batch --against` exits non-zero
on a missing render, so the advertised replay could not finish. It now shoots
all four and runs clean: 13 colour probes mean 3.2, 8 box probes mean |dw|
0.52.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>1 parent 69da8e1 commit 2d018cf
117 files changed
Lines changed: 2547 additions & 0 deletions
File tree
- mockups/canvases
- instagram-ios
- assets
- art
- brand
- icons
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
293 | 293 | | |
294 | 294 | | |
295 | 295 | | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
296 | 330 | | |
297 | 331 | | |
298 | 332 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
0 commit comments