796a9fdf40
gates / gates (push) Successful in 4m28s
build.py believed a phone shows 640x360 of the cover. It shows 412x274 =
1.504:1 -- the full height and only the centre 938 px of 1640, 351 px off each
side. PHONE_HDR = (412, 274) now drives CW_PHONE, so SAFE is (391,40)-(1249,584),
858 px wide with a 40 px margin inside each crop edge.
QUIET is no longer one formula for both circles: the computer circle is
left-anchored, the phone circle is CENTRED and hides only its measured box
(637,369,393). The old shared formula, applied to a centred circle, would have
blanked everything from x 0 to x 1054 below y 345.
Every cover draws in a derived BAND (408,48)-(1249,340), and a cap check holds
each headline's capital at >= 4% of the cover height; A/B/C come out at 45, 45
and 37 px against a 25 px floor.
RED-PROOF, and it is permanent: control_old_window() runs on every build and
draws the headline where the old assumption put it (x 328); the check must
reject it. The phone's crop edge is x 351, so 23 px were cut; the measured safe
edge is x 391. Against the covers as committed at a76207945e the new check
convicted 3 of 3 -- A 23/22 px past the left/right edges, B 63/58 px plus 1017
content pixels under the phone circle, C 63/82 px plus 1778.
Covers redrawn inside the band: A one centred line; B the home motif scaled
with two tiles moved into the lower-right strip, the one area below the band a
phone still shows beside the profile circle; C the dashboard screen 470 -> 370
px so frame and base fit. preview.html shows the phone panel at the measured
938x624 with the centred circle and no longer claims 640x360.
Profile pictures untouched -- sha256 identical before and after, and not in the
diff. Built on DooPlex: the PNGs are byte-reproducible there (Pillow 11.1.0) and
not across Pillow versions; the README now says so.
R-919 is VERIFY, not closed: the geometry is measured on ONE emulated device in
the mobile website, so the operator's check in the Facebook app is the
acceptance. Nothing uploaded, no Graph API call, FACEBOOK_API never read.
87 lines
7.5 KiB
Markdown
87 lines
7.5 KiB
Markdown
# marketing — CHANGELOG
|
||
|
||
## facebook — the covers rebuilt to the phone view we measured (R-919) (2026-10-09)
|
||
|
||
R-919's fix, from an operator brief (no TASK file in the repo). The covers shipped on 2026-10-08 were cut
|
||
on every phone; this rebuilds them to the measured geometry. Report: `REPORT-facebook-cover-r919.md`.
|
||
|
||
- **The geometry is measured now, not assumed.** `build.py` believed a phone shows 640 x 360 of the cover.
|
||
It shows **412 x 274 = 1,504 : 1** — the full height and only the **centre 938 px of 1640**, 351 px off
|
||
each side. `PHONE_HDR = (412, 274)` drives `CW_PHONE`, so `SAFE` is now **(391, 40)–(1249, 584)**, 858 px
|
||
wide with a 40 px margin inside each crop edge.
|
||
- **`QUIET` is no longer one formula for both circles.** The computer circle is *left-anchored* (everything
|
||
to its left is under it); the phone circle is **centred** and hides only its own measured box
|
||
`(637, 369, 393)`. The old shared formula would have blanked the whole left half of the cover's bottom.
|
||
- **A derived `BAND`** — inside SAFE, right of the computer circle, above the phone circle — is where every
|
||
cover draws, so a re-measurement moves the three designs with it.
|
||
- **A `cap` check** holds each headline's capital at ≥ 4 % of the cover height (25 px). A, B, C come out at
|
||
45, 45 and 37 px.
|
||
- **The red-proof runs on every build**, beside the circle check's own control: `control_old_window` draws
|
||
the headline where the old assumption put it (x 328) and the check must reject it. Against the covers as
|
||
committed at `a76207945e` the new check convicted **3 of 3** — A 23 px / 22 px past the left and right
|
||
edges, B 63 / 58 px plus 1017 content pixels under the phone circle, C 63 / 82 px plus 1778.
|
||
- **The three covers were redrawn** inside the band: A one centred line; B the headline left with the home,
|
||
its server and now seven app tiles right — two of them in the lower-right strip, the one place below the
|
||
band a phone still shows beside the profile circle; C the headline left with the dashboard, its screen
|
||
470 → 370 px wide to fit. `out/preview.html` shows the phone panel at the measured 938 x 624 with the
|
||
centred circle, labelled MEASURED, and no longer claims 640 x 360.
|
||
- **The profile pictures are untouched** — sha256 identical before and after, and they are not in the diff.
|
||
- **Build it on DooPlex.** The PNGs are byte-reproducible there (Pillow 11.1.0); Pillow 12.3.0 on the Windows
|
||
workstation re-renders text a pixel or two differently and rewrites all six files. Noted in the README.
|
||
- Nothing was uploaded to Facebook and no key was read. **R-919 is VERIFY, not closed:** the geometry is
|
||
measured on one emulated device in the mobile website, so the operator's check in the Facebook **app** is
|
||
the acceptance step.
|
||
|
||
## facebook — the Page's settings set by hand, and Meta's size page read first-hand (2026-10-08, evening)
|
||
|
||
Ran `marketing/facebook/TASK-page-setup-windows.md` from the Windows workstation through Claude in Chrome.
|
||
Evidence: `documentation/audits/facebook-page-setup-2026-10-08/`; report: `REPORT-facebook-page-setup.md`.
|
||
|
||
- **Done, each read back from a different channel than the edit.** Intro → `COPY.md` §1 (Graph `about` now
|
||
hex-equal to §1, 99 chars); action button → „További információ" at `https://felhom.eu/`; Messenger welcome
|
||
→ `COPY.md` §3, hex-equal, automation **on**; Page username → **`felhom.eu`**, so the Page now answers at
|
||
`facebook.com/felhom.eu` (Graph `username` confirms it). The operator typed the password Facebook demanded
|
||
for the username; nothing else needed a human.
|
||
- **Not done — `COPY.md` §2 has no field to go in.** Facebook's current Pages experience has no
|
||
long-description field anywhere, and the Graph `description` reads `null` and is not writable with the
|
||
robot key's scopes. Filed **R-917** with four options; §2 stays in `COPY.md` unused. `facebook/README.md`'s
|
||
„What goes where" row says so.
|
||
- **`facebook/README.md` sizes grade: „READ, second-hand" → „READ, Meta's help page" — and the comparison
|
||
went the other way.** Meta's page (facebook.com/help/125379114252045, quoted verbatim in the audit) carries
|
||
**none** of the 820 x 312 / 640 x 360 figures the section asserted; only the 176 px profile size matched,
|
||
and Meta's mobile profile overlap is ~40 px where we assumed 24. Meta's own page contradicts itself (16:9
|
||
on a computer, 2,4:1 on a phone, one 2,70:1 file recommended for both). What we build is unchanged.
|
||
- **Measured on the live Page at a 1435 px viewport: fine.** The cover renders whole — no crop, no distortion
|
||
— the container caps at 1250 px, and the profile circle sits 16 px clear below the cover.
|
||
- **Measured on an emulated Pixel 9: the cover is CUT on phones (R-919).** The mobile Page header is
|
||
412 x 274 = **1,504:1**, so Facebook shows only the **centre 938 px of the cover's 1640 px width** — 351 px
|
||
off each side. `build.py`'s safe area leaves 306 px clear per side, **45 px too few**, so 18 px of the text
|
||
is lost: the headline reads „aját szabályaid" and the wordmark „elhom.eu" on every phone. Nothing was
|
||
re-cropped on Facebook; the fix is `build.py`'s safe area (≤ 938 px, ~900 for margin) plus the measured
|
||
172 px centred phone profile circle, then the operator re-uploads. **Meta's own page is wrong about Meta's
|
||
own rendering** — it states 2,4:1 for the mobile cover where the header measures 1,504:1, so the first-pass
|
||
arithmetic built on Meta's figure under-predicted the crop about fivefold.
|
||
- **How to see Facebook's phone layout** (it cost several wrong turns, recipe in the audit README): narrowing
|
||
the window never works — `www.facebook.com` has a minimum width and only grows a horizontal scrollbar, and
|
||
`m.facebook.com` redirects to `www` under a desktop user agent. DevTools device mode with a device chosen
|
||
**and then a reload** does it; without the reload the already-booted desktop bundle stays (content 901 px
|
||
wide in a 412 px viewport). `www` then hangs on the splash under the mobile agent — `m.facebook.com` loads.
|
||
- **Gotcha, fixed in the session, no row.** In Business Suite the automatic-reply editor refused the first
|
||
save with „A módosítás nincs mentve." **and still created the automation and switched it on — carrying
|
||
Meta's default Hungarian greeting, not ours.** A red error toast was therefore a partial write. Reopening
|
||
the now-existing automation, pasting §3 again and saving gave „Mentve."; the reopened automation reads back
|
||
hex-equal. Anyone editing this screen must reopen it and read the text back, not trust either toast.
|
||
- Nothing was posted; no ad, no boost, no Meta Verified; the Meta app stays in development mode.
|
||
|
||
## facebook — the Page's pictures and texts (2026-10-08)
|
||
|
||
- `marketing/facebook/build.py` (Pillow only) makes `out/profile-dark.png` + `out/profile-white.png` (932 x 932, the
|
||
logo PNG placed unscaled), three covers `out/cover-{a,b,c}.png` (1640 x 624) and `out/preview.html` (self-contained).
|
||
Checks in the build: profile circle (today's shape 6823 pixels outside radius 0.42 x width → new pictures 0), cover
|
||
safe area + profile-circle clearance (content layer only), sizes read back from the files. The site's tokens and font.
|
||
- `COPY.md`: intro (99 of 100 characters), long description, Messenger welcome, three first posts — each claim cites its
|
||
website page; no price.
|
||
- Fixed in the session: covers B and C first failed the safe-area check (text in the phone profile circle's corner, the
|
||
frame past the phone crop) and were moved; `logo.svg` renders with the wrong lettering here, so the PNG is the master
|
||
(R-916).
|