Thumbnail logo detection ignores logos already recorded in manifest.shared

Aberta Para iniciantes
#246 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
84/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
javascript, node.js
Domínio
backend, data

Direção de pesquisa

Leia o loop que move os logos compartilhados em site/thumbs.mjs:311-318 e sharedImageIds em site/lib/thumbs.mjs:162-172; depois, examine o teste existente de sharedImageIds em site/lib/lib.test.mjs. Adicione um teste para um novo registro cujo hash já exista em shared e execute npm test. A tarefa estará concluída quando o novo registro for movido para shared e o teste passar.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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

Linguagem predominante
JavaScript
Estrelas
58
Forks
15
Merge médio
1d 15h
PRs com merge (30d)
12

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de TMHSDigital/Free-Game-Dev-Assets

Todas as issues de TMHSDigital/Free-Game-Dev-Assets

Issues semelhantes

Mais issues de JavaScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.