Android: an identifier-only leaf paints its sibling layer over the whole screen, marking everything covered
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
- 79/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- android, react-native, typescript
Direção de pesquisa
Comece em packages/capture-kit/src/snapshot/android-replacement-surface-occlusion.ts e acompanhe como semanticPaintRect e semanticShowRect lidam com folhas que contêm apenas um identificador. A issue inclui uma condição proposta e explica por que o identificador deve continuar utilizável como alvo sem contar como área pintada. Verifique os testes de snapshot ou de oclusão do Android, se houver, e confirme que os botões irmãos não são mais marcados como cobertos, enquanto a visualização do identificador ainda pode ser marcada como coberta.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Version: 0.21.36 (the same code is on main at packages/capture-kit/src/snapshot/android-replacement-surface-occlusion.ts)
Platform: Android (emulator, android-36), React Native app
What happens
On Android every element on our chat screen comes back interactionBlocked: "covered", so locator taps refuse with "Ref @e88 is covered by another visible element and cannot be tapped safely". The screen itself is fine: a coordinate click on the same button opens it.
Why
The screen is a React Native stack of full-screen sibling layers under one parent: background, message list, header buttons, composer. The composer layer is
#117 ViewGroup (0,0,1080,2150) not hittable
#119 ViewGroup id=coach-container (0,0,1080,2150) leaf, not hittable, no label/value
#120 ... composer buttons (hittable)
coach-container is a <View testID pointerEvents="box-none" style={absoluteFill}>: transparent, no handlers, and it has only an identifier. In semanticPaintRect the clause childCount === 0 && hasSemanticContent(node) counts it as painting its whole rect, because hasSemanticContent accepts identifier. Its layer has an action (the composer buttons), so the layer's paint footprint covers 100% of every earlier sibling, and the header buttons and every message bubble get marked covered.
Suggested fix
Don't let an identifier-only leaf paint. An identifier is a test hook, not something drawn, and a non-hittable leaf with no label or value carries no evidence that it's opaque or catches touches:
function semanticPaintRect(node: RawSnapshotNode, childCount: number): Rect | undefined {
if (!isPositiveFiniteRect(node.rect)) return undefined;
return node.hittable === true ||
isScrollableType(node.type) ||
(childCount === 0 && Boolean(node.label?.trim() || node.value?.trim()))
? node.rect
: undefined;
}
semanticShowRect keeps hasSemanticContent, so such a view can still be the target that gets covered. We're carrying this as a pnpm patch on 0.21.36 for now. I'll comment here with the result once our Android coach flows have run with it.
- Linguagem predominante
- TypeScript
- Estrelas
- 5.3k
- Forks
- 377
- Merge médio
- 14h 6min
- PRs com merge (30d)
- 650
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem 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 callstack/agent-device
-
bug ready-for-agent
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 90/100
callstack/agent-device#4212 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
iOS alert wait: the last poll can get ~30 ms and turns "no alert" into a failed readTalvez já em andamento @pcbeingused333 assumiu há 6 dias. Abertabug ready-for-agent
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 77/100
callstack/agent-device#4018 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
callstack/agent-device#1869 ·
Mantenedores costumam responder em até 1 dia
-
bug ready-for-agent
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
callstack/agent-device#4247 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Android recording cleanup stays pending after the recorder PID is reusedTalvez já em andamento @thymikee assumiu hoje. Abertaneeds-triage
Dificuldade 4/5 1-2 dias Facilidade para iniciantes 25/100
callstack/agent-device#4242 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de callstack/agent-device
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
Mantenedores costumam responder em até 1 dia
-
"Claude Code request is missing its initial user message" when the prompt starts with an image pathAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
earendil-works/pi-claude-code#31 ·
Mantenedores costumam responder em até 8 dias
-
bug pending triage
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
privatenumber/cleye#48 ·
-
Google text documents are base64-encoded twiceTalvez já em andamento @feiiiiii5 assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia