S4 — Compartilhar conteúdos da home no WhatsApp #86
Loading…
Reference in a new issue
No description provided.
Delete branch "S4-compartilhar-conteudos-da-home-no-whatsapp"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #19
changelog-rewrite: remove a duplicata da entrada OPS67 no agregado docs/CHANGELOG-AGENTS.md (duplicada pelo rebase do OPS68 em main; a fonte única docs/changelog/2026-08-19-ops67.md é preservada — o agregado volta a espelhar as entradas, insert-only)
S4 — Compartilhar conteúdos da home no WhatsApp. Cada card da seção "Acompanhe de perto" (Artigo/YouTube/Instagram) ganha um botão discreto de compartilhar (canto do card, visual 28px sobre área de toque 44px,
aria-label) que abre um popover de 2 ações:wa.medo próprio remetente com mensagem pré-configurada por fonte (decisão B do gate): "Olha isso do Solla: {título} — {link}" / "Olha esse vídeo…" / "Olha esse post…"; link = página canônica do artigo (absoluta viawindow.location.originno cliente) ou URL da plataforma; nova abanoopener noreferrer.aria-livepara leitores de tela.Engenharia (impl plan
docs/plans/compartilhar-conteudos-home-whatsapp-impl.mdaprovado no gate humano):relative) — interactive dentro de anchor seria HTML inválido; zero mudança de layout (absoluto,groupmigra para o wrapper preservando o zoom do cover).ui/Popover, portal) — escapa ooverflow-x-autodo carrossel mobile; sem rolesmenu/menuitem(semântica honesta de popover com 2 ações; Radix emitearia-expanded).buildWhatsAppTextShareUrldo S6 movido parasrc/lib/phone.ts(dono do wa.me) com re-export nohomeSearchShare.ts—src/lib/contentShare.tsreusa, sem twin. Resolução de link fail-soft contra permalink malformado.Testes: 11 units (
contentShare.unit.spec.ts) + e2e novo no describe serial da seção (mensagens por fonte, clipboard real, Escape/clique-fora, mobile ≥44px, portal no viewport). Verificação local: unit 2402 + int 791 verdes; tsc/lint/format/cycles/build verdes; e2e da seção 19/19 (2 runs); knip = limitação P3 pré-existente. Changelog:docs/changelog/2026-08-19-s4.md./simplify (3 revisores) absorvido: owner move do wa.me, máquina de feedback de copiar simplificada, foco/roles honestos,
min-h-11nos itens,aria-live, origin lazy, malformed-href fail-soft, e2e endurecido (pin de identidade do card ativo + unmount antes do próximo trigger). 1 débito deferido no impl plan (dedupe do blob de settings do feed nos testes S2/S3).Nota de fluxo: a PR passou do primeiro run do safety net com rebase conflitante no agregado do changelog (main andou com OPS66/67/68); a branch foi rebaseada em main e o agregado regenerado (dedupe da duplicata OPS67, ver changelog-rewrite acima).
be632e48e0to067d20357d