Skip to content

Notificação: aparência, pacote, a notificação-orbe e os toques (NTF-T6..T10) - #93

Merged
yan-vidal merged 17 commits into
mainfrom
equipe/notificacao-b
Oct 31, 2026
Merged

yan-vidal merged 17 commits into
mainfrom
equipe/notificacao-b

Conversation

@yan-vidal

Copy link
Copy Markdown
Contributor

Segunda etapa da feature Notificação (o #88 já está na main).

  • T6: a orbe e os glifos desenhados num Bitmap (tempo fixo), glifos compartilhados com a orbe flutuante, goldens da orbe idênticos.
  • T7: provedor de aparência (skin efetiva, Sistema, cache, orçamento de 1 MB, fallback Ateliê/mínima).
  • T8: seção notification no pacote de skin (FORMAT.md, exemplo-neon, agente de skins), schemaVersion 1.
  • T9: a notificação é a orbe com os botões dos arrastos (substitui RecordingNotification); muda de propósito os 4 goldens notification-*.
  • T10: toques e botões via NotificacaoHost, que consulta o portão da tela bloqueada antes de qualquer comando; conformidade com a OrbButtonView real.
  • P3 da revisão: desligarCopia idempotente; snippet do design; prova de altura robusta.

Testes: suíte unitária, lint, assembleDebug e os instrumentados das classes afetadas verdes; uma mutação por task. Lição em .specs/project/licoes/2026-10-31-notificacao-b.md.

RenderizadorDeOrbe desenha a orbe (Ateliê, Aero, Glitch, Rose Gold, Ouvi, pacote) e o
glifo do estado num Bitmap transparente, com tempo fixo. Pausa, lixeira e X passam a
funções de DrawScope compartilhadas com a orbe flutuante, que desenha as mesmas
operações; centerInkOf reúne a tinta por estilo. Os goldens da orbe seguem idênticos.
…mento de bitmaps

Skin efetiva pela mesma regra da orbe flutuante (a paga sem direito vira o Ateliê sem
apagar a escolha), skin Sistema, cache por bytes com chave de skin, versão dos pacotes,
estado, lado e modo noturno, orçamento de 1 MB e fallback Ateliê e depois mínima.
notification_<estado>.svg e notification.ink/background no manifest, lidos, validados,
instalados e listados; pacote só de orbe também veste a notificação pelo primeiro quadro.
schemaVersion segue 1: a versão antiga importa o pacote com avisos. FORMAT.md, exemplo-neon
e o agente de skins atualizados junto.
… não quebra o CI

desligarCopia devolvia as ações da orbe flutuante numa segunda chamada; agora, com a
cópia já desligada, nada se regrava. O design passa a mostrar o gancho de Fluxos por
contagem de toques. NotificacaoAlturaSpikeTest limpa e rola a gaveta e, sem achar a orbe
por causa de outras notificações, é ignorado em vez de reprovar.
…rrastos

notif_orb (linha de 48 dp provada na T1) com a orbe na skin escolhida, Chronometer no
centro e Pausar, Retomar, Descartar, Desfazer e Encerrar só nos estados em que o arrasto
equivalente age; um PendingIntent por botão, versão pública sem botões, mínima em canal
próprio e nada de texto ditado. RecordingNotification e a barra de chips saem; o
OverlayService monta a notificação pelo novo construtor e passa os toques ao
NotificacaoHost, que consulta o portão da tela bloqueada antes de qualquer comando.
Muda de propósito os goldens notification-*.
…scartam

Testes do host (portão da tela bloqueada antes de qualquer comando, rajada, overflow,
botão atrasado ignorado), do serviço real (gravar, pausar, descartar, desfazer, remapear,
bloqueio com a opção desligada e ligada) e a conformidade entre a OrbButtonView real e a
tabela de arrastos. Status, traceability e lição das tasks T6 a T10.
…do da skin

No Ateliê escuro a tinta e o fundo eram a mesma cor e os botões sumiam. Contraste.legivel
garante 3:1 e o teste passa a desenhar o botão e medir a cor, no lugar de só checar que
há um filtro. A galeria deixa de forçar o modo escuro.
…e agir

A rajada assenta depois da janela e a tela pode bloquear nesse intervalo: o host
revalida o portão antes de executar o comando. Teste virtual com bloqueio aos 100 ms e
controles; o teste do serviço usa um gancho no lugar de mexer no bloqueio do emulador.
…sam a tinta da skin

OutOfMemoryError ao desenhar a skin vai para o Ateliê e depois para a mínima, sem derrubar o
serviço. Lixeira e X dos pacotes e da skin Sistema usam notification.ink; as skins nativas
mantêm as cores da orbe flutuante.
…tempo miúdo legível

Os quatro notification-* recapturados depois da correção de contraste: glifos claros no fundo
escuro e escuros no claro, e o tempo congelado abaixo do glifo passa a contrastar com o fundo
da linha. Conferidos um a um; os demais goldens capturados (orbe, overlay, tour) seguem idênticos.
# Conflicts:
#	app/src/main/java/com/keyflow/ui/orb/VoiceOrb.kt
@yan-vidal
yan-vidal marked this pull request as ready for review October 31, 2026 21:25
@yan-vidal
yan-vidal added this pull request to the merge queue Oct 31, 2026
Merged via the queue into main with commit d6d8118 Oct 31, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant