image-optimizer --check pică pe cele 109 carduri de partajare
tools/image-optimizer --check iese cu 1 și raportează 109 probleme, toate de același
fel — „has no WebP sibling smaller than itself" — și toate în frontend/public/share.
Nimic nu e rupt pentru vizitator; o verificare care pică mereu e o verificare pe care
nimeni n-o mai citește, iar criteriul de acceptare al lui #30 (closed) o cerea curată și nu
putea fi îndeplinit.
Ce am găsit
$ cd tools/image-optimizer && npm run check
109 image(s) out of shape:
...
$ echo $?
1
Distribuția, măsurată:
| mapă | fișiere |
|---|---|
share/hyperhub |
72 |
share/products/shop |
31 |
share/collections |
6 |
$ find frontend/public/share -name '*.jpg' | wc -l
109
$ find frontend/public/share -name '*.webp' | wc -l
0
Cardurile au apărut cu cbbbb70 (2026-08-27, „Build a link-preview card for every
page that has a photo"), generate de tools/image-optimizer/share-cards.mjs. Niciunul
n-a primit vreodată frate .webp.
De ce cererea de .webp nu se aplică aici
Cardurile de partajare nu ajung niciodată într-un <img>. În cele 384 de pagini de
producție descărcate, /share/... apare de 327 de ori, exclusiv în og:image și
twitter:image; căutarea <img[^>]*share/ întoarce zero. Mecanismul <picture>,
care e singurul motiv pentru care există fratele .webp, nu le atinge.
Mai mult, og:image e citit de crawlerele Facebook, LinkedIn, WhatsApp și Telegram,
care se așteaptă la JPEG sau PNG. Un .webp alături n-ar fi folosit de nimeni.
Cealaltă jumătate a problemei
check() doar raportează, dar optimize() scrie: npm run optimize ar crea
109 fișiere .webp pe care nu le cere nimic — exact genul de fișiere moarte pe care
le-a șters #30 (closed). Ambele ramuri ale uneltei tratează share/ ca pe o mapă obișnuită de
imagini de pagină.
Restul verificării e sănătos: dimensiunea (81 KB pentru cel mai greu card hyperhub,
35 KB pentru unul de produs) și lățimea sunt în buget, deci rasterInShape trece
pentru toate 109.
De făcut
-
În tools/image-optimizer/optimize.mjs, scoateshare/din cerința de frate.webp— atât încheck(), cât și înoptimize(), ca unealta să nu mai scrie fișiere pe care nimeni nu le cere. Există deja precedentulFIXED_NAMESpentru fișiere cu regim propriu; aici e nevoie de o excepție pe mapă, cu un comentariu care spune de ce (cardurile se servesc doar prinog:image, nu prin<picture>). -
Verifică buget și lățime mai departe pentru share/— ele rămân valabile.
Criteriu de acceptare
-
cd tools/image-optimizer && npm run checkiese cu 0 și scrie „every image is within budget and has a smaller WebP sibling" (sau textul actualizat, dacă formularea se schimbă). -
npm run optimize -- --dry-runnu propune niciun.webpnou înshare/. -
find frontend/public/share -name '*.webp' | wc -lrămâne 0.