Thumbnail logo detection ignores logos already recorded in manifest.shared
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
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
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
- Entries A, B and C on one site share an og:image; a run drops them into
manifest.shared. - Add entry D from the same site (or change A's
url). - Run
node site/thumbs.mjs: D's image hash appears once inthumbs, below the limit, so D keeps the logo. Pure check:sharedImageIds({ D: { hash: "h" } })is empty even whensharedholds three records with hashh.
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
sharedis moved toshared - 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 isnpm 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
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de TMHSDigital/Free-Game-Dev-Assets
-
enhancement good first issue priority: medium
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
TMHSDigital/Free-Game-Dev-Assets#272 ·
Mantenedores costumam responder em até 1 dia
-
documentation good first issue priority: low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
TMHSDigital/Free-Game-Dev-Assets#270 ·
Mantenedores costumam responder em até 1 dia
-
documentation priority: medium
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
TMHSDigital/Free-Game-Dev-Assets#269 ·
Mantenedores costumam responder em até 1 dia
-
good first issue priority: low tests
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
TMHSDigital/Free-Game-Dev-Assets#267 ·
Mantenedores costumam responder em até 1 dia
-
good first issue priority: low tests
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
TMHSDigital/Free-Game-Dev-Assets#266 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de TMHSDigital/Free-Game-Dev-Assets
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
guybedford/es-module-lexer#266 ·
-
bug documentation
Dificuldade 1/5 1-3 horas Facilidade para iniciantes 88/100
apify/apify-docs#3206 ·
Mantenedores costumam responder em até 1 dia
-
enhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 90/100
anhnt256/cursor-swarm#21 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
documentation good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 74/100
zerohourzulu/irontrellis#16 ·