Commit graph

2426 commits

Author SHA1 Message Date
Francisco Solla
ce808be72a refactor(C216-FOLLOWUP-DRY): heading único dos resultados do acervo (F2) (Related #1325) 2026-09-24 19:29:27 -03:00
Francisco Solla
02329fa5eb refactor(C216-FOLLOWUP-DRY): dono único do gate de mídia privada (F1) (Related #1325) 2026-09-24 19:29:27 -03:00
Francisco Solla
b119d203aa feat(S37): liderancas que aparecem nas pecas na Central de Conteudos (Closes #1303)
Some checks are pending
Deploy / preflight (push) Waiting to run
Deploy / verify (push) Blocked by required conditions
Deploy / deploy staging (teqo-staging) (push) Blocked by required conditions
Deploy / requeue when main advanced (push) Blocked by required conditions
Deploy / deploy production (teqo-1313) (push) Blocked by required conditions
2026-09-24 17:40:57 -03:00
Francisco Solla
ebe1a98e85 style(C216): aplica a crítica visual do designer (paridade com o artefato) (Related #1292) 2026-09-24 17:01:42 -03:00
Francisco Solla
d0063d39f3 refactor(C216): aplica achados do simplify (Related #1292) 2026-09-24 17:01:42 -03:00
Francisco Solla
425361d278 feat(C216): terceira fonte do acervo — falas na internet (Closes #1292) 2026-09-24 17:01:42 -03:00
Francisco Solla
13b5a3c1d1 feat(S38): alterna peças e cards no board e certifica o design (Closes #1304) 2026-09-24 16:57:03 -03:00
Francisco Solla
e7055ae33d refactor(S38): reusa o label do dono, fidelidade ao artefato e simplifica o filtro (Related #1304) 2026-09-24 16:57:03 -03:00
Francisco Solla
e8d88803fe test(S38): ajusta o board misto e a navegação do e2e do catálogo (Related #1304) 2026-09-24 16:57:03 -03:00
Francisco Solla
bf2c7a25c4 feat(S38): cards personalizáveis como itens do catálogo (Closes #1304) 2026-09-24 16:57:03 -03:00
Francisco Solla
9233fbfb96 docs: main voltou ao verde (S40) — re-run do CI no merge ref corrigido 2026-09-24 16:41:18 -03:00
Francisco Solla
b1712dbe41 docs: registra o bloqueio de CI herdado da main no post-mortem 2026-09-24 16:41:18 -03:00
Francisco Solla
bc42bed685 style: prettier do post-mortem 2026-09-24 16:41:18 -03:00
Francisco Solla
66a24e3e28 docs: registra o PR #1321 no post-mortem 2026-09-24 16:41:18 -03:00
Francisco Solla
f750084c41 fix(cards): tiles da home usam espaçador de proporção (WebKit #265243)
No Orion/Safari os seis tiles de modelos colapsavam (só os rótulos
ficavam): a caixa do CardModelTile tirava a altura de um `aspect-ratio`
inline sendo filha de um flex com `overflow: hidden` — o construto do
bug WebKit #265243 (fix só no WebKit main 2026-05), invisível para o CI
Chromium-only.

O tile passa a tirar a altura de um espaçador em fluxo com
padding-bottom percentual (data-card-tile-ratio). Guardas: unit por
modelo (RED sem o fix), sweep de convenção nos cards e e2e de geometria
após relayout forçado. Post-mortem + changelog na mesma entrega.
2026-09-24 16:41:18 -03:00
Francisco Solla
59f70dccf3 fix(C221): "Limpar" do omnibox não quebra linha no mobile (Closes #1313) 2026-09-24 16:35:13 -03:00
Francisco Solla
02ca466469 feat(S40): arte genérica do Time do estadual e janela vazia sem silhueta (Closes #1316) 2026-09-24 16:23:44 -03:00
Francisco Solla
275dd15f95 fix(S40): arte aprovada do modelo genérico no arquivo público (main red do pino do catálogo) 2026-09-24 15:51:37 -03:00
Francisco Solla
cdd188755c style(C218): plano de implementação e spec no formato do prettier 2026-09-24 15:51:37 -03:00
Francisco Solla
9c0b44a2c0 feat(C218): skill catalogo-falas-web — atualização incremental do catálogo (Closes #1294) 2026-09-24 15:51:37 -03:00
Francisco Solla
11de48f726 feat(S39): seção da Central de Conteúdos na home (Closes #1305) 2026-09-24 14:53:36 -03:00
Francisco Solla
2515e86b14 docs(S40): plano + design hi-fi — time do estadual com a arte de modelo genérica e sem silhueta desenhada 2026-09-24 14:43:12 -03:00
Francisco Solla
38e6742673 feat(C219): paridade de busca e filtros nas gravações do acervo (Closes #1295)
Some checks are pending
Deploy / preflight (push) Waiting to run
Deploy / verify (push) Blocked by required conditions
Deploy / deploy staging (teqo-staging) (push) Blocked by required conditions
Deploy / requeue when main advanced (push) Blocked by required conditions
Deploy / deploy production (teqo-1313) (push) Blocked by required conditions
Classificação automática com proveniência (job + CLI recordings:classify), facetas ano/tema/alcance/município/duração na URL canônica, busca por tema no corpus próprio, ordenação e a barra de filtros portada do design aprovado sobre os shells compartilhados. Deep-links existentes byte-idênticos; Câmara intocada.
2026-09-24 04:00:06 -03:00
Francisco Solla
8f3118312a fix(C220): link do proprio Instagram baixa e cataloga a peca (Closes #1302) 2026-09-24 03:51:17 -03:00
Francisco Solla
76416c77b0 docs(C215): triage do simplify no plano de implementação 2026-09-24 03:26:10 -03:00
Francisco Solla
8318fb5fce feat(C215): ingestão de falas da internet no acervo — origem web, espelho privado e catálogo (Closes #1291) 2026-09-24 03:26:10 -03:00
Francisco Solla
772a5cf050 fix(S36): logo do header da Central no tamanho da marca (Closes #1301) 2026-09-24 02:58:49 -03:00
Francisco Solla
2c8b38f2be feat(S34): colinha usa a arte exata com a linha do estadual preenchida (Closes #1298) 2026-09-24 02:20:44 -03:00
Francisco Solla
9069d23d88 feat(S33): ajuste da foto do card do time sem limite (Closes #1297) 2026-09-24 01:38:06 -03:00
Francisco Solla
133136dda3 fix(S35): header do modal de criacao de card ocupa a largura com fechar na borda (Closes #1299) 2026-09-24 01:19:58 -03:00
Francisco Solla
c320e04de8 docs(S36,C220,S37,S38,S39): corrige os IDs nos planos e designs (colisão de reserva) 2026-09-24 01:02:15 -03:00
Francisco Solla
f8010b41a2 style(S36,C220,S37,S38,S39): formata os designs hi-fi dos planos 2026-09-24 00:46:32 -03:00
Francisco Solla
d576aa6871 docs(S36,C220,S37,S38,S39): planos + designs hi-fi — Central de Conteúdos (logo, link do Instagram, lideranças, cards e seção na home) 2026-09-24 00:46:32 -03:00
Francisco Solla
d0823043ed style(S33,S34,S35): formata os designs hi-fi dos planos
Some checks are pending
Deploy / preflight (push) Waiting to run
Deploy / verify (push) Blocked by required conditions
Deploy / deploy staging (teqo-staging) (push) Blocked by required conditions
Deploy / requeue when main advanced (push) Blocked by required conditions
Deploy / deploy production (teqo-1313) (push) Blocked by required conditions
2026-09-24 00:29:27 -03:00
Francisco Solla
684efaa631 docs(S33,S34,S35): planos + designs hi-fi — ajuste da foto sem limite, colinha com a arte exata e header do modal (Related #1297, #1298, #1299) 2026-09-24 00:29:27 -03:00
Francisco Solla
a068c575c9 docs(C215-C219): planos do acervo de falas — fonte web, cortes, skill e paridade 2026-09-24 00:25:20 -03:00
Francisco Solla
3864a823ff fix(S32): e2e do C213 acompanha a coluna variant do evento 2026-09-23 18:12:42 -03:00
Francisco Solla
7c377a2cf1 style(S32): formata os componentes do resumo da home 2026-09-23 18:12:42 -03:00
Francisco Solla
e8a190005a feat(S32): contadores anônimos de download dos cards na home staff (Closes #1273) 2026-09-23 18:12:42 -03:00
Francisco Solla
68065032f5 fix(S28): lê os headers só no caminho de tema e estabiliza o e2e do streaming
Some checks are pending
Deploy / preflight (push) Waiting to run
Deploy / verify (push) Blocked by required conditions
Deploy / deploy staging (teqo-staging) (push) Blocked by required conditions
Deploy / requeue when main advanced (push) Blocked by required conditions
Deploy / deploy production (teqo-1313) (push) Blocked by required conditions
2026-09-23 15:35:21 -03:00
Francisco Solla
8d81883509 feat(S28): busca por tema na Central de Conteúdos pública 2026-09-23 15:35:21 -03:00
Francisco Solla
f47c2645ac feat(C213): contadores anônimos de circulação por peça na Central de Conteúdos (Closes #1258)
Collection contentEvent (hidden, sem hooks, sem PII) + beacon público
POST /api/content-events fail-soft, download contado no servidor na rota
de mídia, agregação em uma query group-by e a coluna "Circulação" na lista
interna + painel na ficha (port classe-a-classe do artefato estendido,
crítica final do designer certificada).
2026-09-23 15:29:43 -03:00
Francisco Solla
75e5825b05 refactor(S27-FOLLOWUP-DRY): dono único do OG image de fallback do frontend público (Closes #1276)
O fallback de imagem OG (própria → global `metadata` → null, sempre absoluto
no deployment origin) deixa de estar copiado em 6–7 páginas públicas e ganha
o dono server-only `src/utilities/ogImageReads.ts` (`resolveOgImage(configured)
→ { url, media }`), com `resolveShareLinkOgImageUrl` delegando (sem twin) e os
8 consumidores migrados — 2 do S27, jingles, corte, abaixo-assinado ×2, artigo
e layout. `seo.ts` segue puro; sem migration, sem Consent/access, Impeccable A.

- unit novo do resolver (8 casos) + pin do módulo em codebaseConventions; int
  do shareLink verde sem tocar asserção; e2e frontendConteudos/frontendJingles/
  campaignSpeechCut/frontendShareLink/frontend verdes, com asserts novos de
  og:image (helper `metaContent` extraído do spec do share-link)
- dono novo entra no E2E_AFFECTED_MANIFEST nas 4 entradas de OG públicas
- deltas intencionais registrados: deployment origin no lugar do canônico em
  corte/abaixo-assinado/artigo e OG absoluto no layout
2026-09-23 14:30:40 -03:00
Francisco Solla
48a01de58b fix(S29-FOLLOWUP): .ics do link de anúncio e feed — folding RFC 5545 (75 octets) no owner ical.ts (Closes #1281) 2026-09-23 14:16:25 -03:00
Francisco Solla
c6620c2511 feat(C214): briefing 100% recorte — 4 folhas do recorte + âncora item-level (Closes #1284)
Replaneja o Briefing de capacitação C210: saem capa/objetivo/trajetória e as
recomendações genéricas (roteiro de 5 passos, justificativa científica, evitar,
conferir, limites); as 4 folhas passam a ser todas do recorte — defesas
(princípios + posições com fonte), essencial (fatos-âncora com fase + pedido
literal e uma linha de plano), qa 1/2 e qa 2/2.

- briefingContent: contrato novo (plan no lugar de script.steps; avoid/checklist
  removidos; shed qa → defesas) e âncora item-level por sourceUrl — o id de
  checklist repete e o ledger resolvia pelo primeiro item; par errado falha
  fechado (normalizeQa não repassava o sourceUrl, corrigido).
- briefingRender: 4 folhas novas (defesas/essencial/qa/qa-2) e companion .md;
  CSS portado do design (principles-copy/request-block/request-plan).
- build-dossie-solla-briefing: âncoras e comentários do fluxo novo.
- Design hi-fi refeito (4 cenas do recorte), skill e agente autor atualizados.
- Specs briefingContent/briefingRender reescritos; gate:fast verde (lint,
  typecheck, 389 arquivos / 4310 testes).
2026-09-23 13:17:37 -03:00
Francisco Solla
2a0dca6243 fix(S29): achados da review — snapshot pós-rebase, manifest e2e e a11y do anúncio
- snapshot drizzle da migration regenerado pós-rebase (inclui as tabelas do
  S27; sem ele o próximo migrate:create recriaria content_piece)
- manifest e2e: CampaignFooter/jingleReads/campaignTime acordam o
  frontendShareLink; dynamicParams inerte removido da rota .ics
- anúncio: dl válido (Local sem dd), aria-live só no status/chip, sem
  hasImage/cast; hook direct deixa o erro de URL falar antes (+ teste int)
- débitos triados no impl plan (folding .ics -> #1281; deferidos com gatilho)

Related #1268
2026-09-23 12:37:00 -03:00
Francisco Solla
b0bac78090 feat(S31): colinha de voto — 6º modelo com o estadual escolhido (Closes #1272) 2026-09-23 12:33:04 -03:00
Francisco Solla
b8051bb7e0 feat(S29): link com destino trocável e página de anúncio da atividade
- shareLink ganha modo (direct|announcement), pool de destinos com "Destino no
  ar" por linha e dados do evento; destination escalar sai via migration com
  backfill lossless (legado vira direct com destino no ar)
- página de anúncio pública portada classe-a-classe, header campaign-site
  extraído (CampaignPageHeader) e ativação/troca sem reload por poll da rota
  /api/share-link/<slug>/live (fail-closed, no-store)
- agenda Google (action=TEMPLATE) + .ics por rota sob o slug; compartilhar o
  link curto (kind event); S19 intacto e 404 uniforme preservado

Related #1268
2026-09-23 11:48:12 -03:00
Francisco Solla
dda55adc27 feat(S27): Central de Conteúdos pública — Peça voto pra Solla 1313
/conteudos + /conteudos/<slug>: catálogo filtrável (Tipo · Cidade · Região ·
Tema · Instituição + termo na URL canônica), play sob demanda (Vídeo/Áudio só
carregam no toque; Foto com preview leve), Baixar e Compartilhar do próprio
card com a mensagem de voto por tipo (wa.me sem destinatário, editável; "A
mídia" usa a folha nativa e cai em download onde o aparelho não suportar) e o
card personalizado como peça sintética do catálogo → /cards.

- leitura pública nova (contentPieceReads) cacheada na tag contentPieces com o
  gate where status=publicado + contentPieceIsPublic; a rota GET
  /conteudos/<slug>/midia reusa buildPrivateMediaResponse (range, disposition,
  private no-store, 404 uniforme) com download jorge-solla-1313-<slug>.<ext> e
  a allowlist inline do dono estendida (webp/gif/avif + áudios das peças)
- contrato público puro do catálogo (filtros/VM/download) + mensagens de voto
  (contentPieceShare); OG com fallback do global; conteudos entra nos slugs
  reservados; kill switch por peça vale na hora (lista, página, rodapé/selo);
  descoberta condicional no CampaignFooter e no header local
- UI portada classe-a-classe do design aprovado (cenas 01–08, com as cenas
  06–08 estendidas no trigger a); sem migration, sem Consent e sem access novo;
  contentMedia segue privada (sem segunda cópia de mídia)
- testes: 2 unit specs novos, 18 casos int (leitura pública + rota de mídia) e
  e2e frontendConteudos (5 casos); manifest e curado atualizados
- follow-up de engenharia: #1276 (docs/plans/escala-dry-pos-s27.md)

Closes #1255
2026-09-23 11:13:57 -03:00
Francisco Solla
e72bfe8f8f fix(S30): TeamCardSubject é tipo interno do renderer 2026-09-23 10:06:17 -03:00