Thumbnail logo detection ignores logos already recorded in manifest.shared

Aperta Adatta ai principianti
#246 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
84/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
javascript, node.js
Ambito
backend, data

Direzione di ricerca

Leggi il ciclo che sposta i loghi condivisi in site/thumbs.mjs:311-318 e sharedImageIds in site/lib/thumbs.mjs:162-172, poi esamina il test esistente di sharedImageIds in site/lib/lib.test.mjs. Aggiungi un test per un nuovo record il cui hash esiste già in shared ed esegui npm test. Il lavoro è completato quando il nuovo record viene spostato in shared e il test passa.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug good first issue priority: medium

Summary

The three-or-more shared-hash rule that keeps publisher logos out of thumbnails only counts records fetched in the current run, so a logo that was already dropped into manifest.shared is accepted again when a single new entry from the same site is fetched.

Where

  • site/thumbs.mjs:311-318 (logo drop loop)
  • site/thumbs.mjs:263-266 (shared skip)
  • site/lib/thumbs.mjs:162-172 (sharedImageIds)

Details

for (const id of sharedImageIds(thumbs)) {   // counts hashes in `thumbs` only
  shared[id] = thumbs[id];
  delete thumbs[id];
  pending.delete(id);
}
for (const id of Object.keys(thumbs)) delete shared[id];

Records dropped in an earlier run live in shared, not thumbs, so they never count toward the limit again. The existing test (site/lib/lib.test.mjs, the sharedImageIds case) only covers three records sitting in thumbs together.

Impact

A publisher's site-wide logo or social card is published as an asset preview with a "Preview image shown under " credit, which is the case the shared-hash rule (#132) exists to block.

Steps to reproduce

  1. Entries A, B and C on one site share an og:image; a run drops them into manifest.shared.
  2. Add entry D from the same site (or change A's url).
  3. Run node site/thumbs.mjs: D's image hash appears once in thumbs, below the limit, so D keeps the logo. Pure check: sharedImageIds({ D: { hash: "h" } }) is empty even when shared holds three records with hash h.

Suggested fix

Count hashes across { ...shared, ...thumbs } and drop only the ids that are in thumbs; or keep a set of known logo hashes and reject any fetched image whose hash is in it.

Acceptance criteria

  • A newly fetched record whose hash matches a hash already in shared is moved to shared
  • Unit test: one new record plus an already recorded shared hash

Getting started

  • Relevant files: site/thumbs.mjs, site/lib/thumbs.mjs, site/lib/lib.test.mjs
  • Run the tests: npm test; the full local gate is npm run check (Node 22+, no install step)
  • Related docs: CONTRIBUTING.md, site/README.md

Related: #232, #132


Filed by repo-audit/full-audit at 4adb944. Severity: medium. Effort: S. audit-key: bug|site/thumbs.mjs|sharedImageIds

Lingua principale
JavaScript
Stelle
58
Fork
15
Merge medio
1g 15h
PR unite (30g)
12

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di TMHSDigital/Free-Game-Dev-Assets

Tutte le issue di TMHSDigital/Free-Game-Dev-Assets

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.