A correção está em produção desde 21/10/2026 às 21:50 UTC.
E os cards pararam de invadir o vizinho. Não era dois bugs: era um só.
Os filhos do card são itens flex. No flexbox, o
min-width default é auto — o item nunca encolhe abaixo do
próprio conteúdo. A descrição do projeto (que costuma ser uma URL, sem espaços) empurrava o
card 28 a 82px para fora da sua coluna, por cima do card vizinho.
O 3 pontinhos usa opacity-0 group-hover:opacity-100.
Como ele caía sobre o vizinho, o mouse ficava sobre o card errado — o card de origem
perdia o hover, o botão sumia no instante exato do clique, e o clique que sobrava caía
no link esticado do título. Em vez do menu, abria o projeto.
correção min-w-0 nas três
linhas flex do card + wrap-anywhere na descrição (a URL quebra em vez de esticar).
| O que | Antes | Agora |
|---|---|---|
| Bundle dos cards | Home-HiFcmfBb.js | Home-luCh0W6u.js |
| Commit em produção | 02967533 | 2ac3ae5e |
| Container | b3615c6a886b | 0d4025ac2543 |
CSS .min-w-0 | ausente | min-width:0 |
CSS .wrap-anywhere | ausente | overflow-wrap:anywhere |
| Comparação byte a byte | bundle servido = build local do mesmo commit, idêntico | |
Cada parte é uma defesa diferente. Tirar uma não quebra as outras — por isso o gate novo mede as quatro separadamente, e cada medição morre se a parte correspondente for removida.
O gate antigo media geometria — e 3 das 4 partes da correção podiam ser removidas sem que nenhum assert caísse. Foi medido, mutante a mutante. Agora cada parte tem uma medição que morre sem ela, e a matriz inteira morre:
| Mutante | O que some | Gate |
|---|---|---|
| M0 | a base inteira (o bug) | morre (6 de 7 caem) |
| M1 | wrap-anywhere da descrição | morre |
| M2 | min-w-0 do topo | morre (6 de 7 caem) |
| M3 | min-w-0 do manifesto | morre |
| M4 | min-w-0 do rodapé | morre |
| M5 | os três min-w-0 | morre (6 de 7 caem) |
A medição nova do sintoma: elementFromPoint no
canto onde a pessoa mira tem que devolver o 3 pontinhos, e não o link esticado do
título — que é exatamente o defeito que o dono sentiu.
| No celular o 3 pontinhos é invisível | O group-hover compila dentro de @media (hover:hover).
Medido num iPhone 13: (hover: hover) = false, wrapper com opacity: 0.
Mas continua clicável (visibility: visible, tabIndex: 0, o
hit-test acerta). Invisível, não quebrado — e pré-existente em 19 telas do app.
O defeito que você viu era no desktop (o log de prod mostra seus acessos em Chrome
desktop). |
| Cards de Tokens (tela do Render) | Mesmo padrão (grid auto-fit + flex sem min-w-0).
Não medido — merece a própria tarefa. |
A tela que medi é a de produção, com dados de mentira — os seus projetos reais é que têm as URLs longas. Abra a tela de Projetos e clique no 3 pontinhos de um card. Precisa abrir o menu, sem pular para o projeto.
https://agentpack-v0.mp.serendiped.com