teqo-backup/src/components
Francisco Solla 9e9864f420 feat(C234): busca por selfie no álbum público — índice A/C consentido, selfie on-device
- /fotos/encontre + POST /api/fotos/selfie: só o vetor 128-d, sem imagem, sem score e
  sem nomes de terceiros; fail-closed pela flag photoAlbum.selfieSearchEnabled (default
  false) e pelos Consents por chave estável (busca-selfie-fotos/busca-selfie-indice, não
  seedados — a superfície nasce fechada até o aval jurídico/DPIA).
- Índice A/C do gate (PR #1370): só quem aderiu é indexado; descriptors do acervo são
  transitórios. Collection faceSubject (admin-only, sem vínculo com Contact), vínculos
  matchedPhotos e marker faces.checkedKey no archivePhoto (modelo + enrolledAt).
- Engine @vladmandic/face-api nos dois lados: browser lazy com modelos same-origin
  (copy-face-vision-assets no prebuild/predev/Docker) e CLI node-wasm sem tfjs-node.
  CLIs ops-only faces:enroll / faces:index --apply|--verify com guardas C231/C232.
- Opt-out self-service por reconhecimento (leave-index) + canal de remoção do C233;
  rate limit próprio (namespace selfie:<hash>) e bounded body extraído do beacon.
- UI portada classe-a-classe do design estendido (paridade certificada, tier primário);
  e2e frontendFotosSelfie (manifest+curado+projeto, engine stubada) e canário do engine
  real; runbook §C234, contrato em AGENTS-public.md e changelog.
- Migration aditiva add_face_subject (SQL revisado); hard-stops aprovados na sessão.
2026-09-27 20:04:41 -03:00
..
admin feat(S29): link com destino trocável e página de anúncio da atividade 2026-09-23 11:48:12 -03:00
campaign feat(C199-large): gravações do acervo sem o teto de 4 GB 2026-09-26 14:40:16 -03:00
cards fix(cards): tiles da home usam espaçador de proporção (WebKit #265243) 2026-09-24 16:41:18 -03:00
conteudos feat(C233): álbum público de fotos com busca por data, local, atividade e pessoa pública 2026-09-26 23:54:50 -03:00
fotos feat(C234): busca por selfie no álbum público — índice A/C consentido, selfie on-device 2026-09-27 20:04:41 -03:00
jingles feat(S29): link com destino trocável e página de anúncio da atividade 2026-09-23 11:48:12 -03:00
shareLink feat(C233): álbum público de fotos com busca por data, local, atividade e pessoa pública 2026-09-26 23:54:50 -03:00
ui feat(C199): gravações enviadas no acervo de comunicação (Closes #1166) 2026-09-18 23:42:30 -03:00
CampaignCarousel.tsx feat(S6): home de campanha sem carrossel no desktop — grade estática em ≥1024px, mobile preservado 2026-08-18 19:32:50 +00:00
CampaignContentCard.tsx fix(social-feed): capas do Instagram voltam a carregar e legendas longas não esticam o card 2026-09-11 18:09:03 -03:00
CampaignContentCarousel.tsx feat(S2): seção de conteúdos da home de campanha inclui os vídeos do YouTube 2026-08-18 15:23:50 -03:00
CampaignContentSection.tsx refactor(S11): quebra o ciclo config→feed — getInstagramFeed muda para instagramFeedView 2026-08-20 00:54:58 -03:00
CampaignFlagCard.tsx feat(S6): home de campanha sem carrossel no desktop — grade estática em ≥1024px, mobile preservado 2026-08-18 19:32:50 +00:00
CampaignFooter.tsx feat(C233): álbum público de fotos com busca por data, local, atividade e pessoa pública 2026-09-26 23:54:50 -03:00
CampaignHashScroll.tsx fix(S12): deep link #novidades aterrissa no formulário no mobile 2026-08-23 14:27:15 -03:00
CampaignHero.tsx feat(S9): captura de novidades da campanha na home pública (form + CTA do hero) 2026-08-20 02:19:58 +00:00
CampaignLogoLink.tsx feat(C233): álbum público de fotos com busca por data, local, atividade e pessoa pública 2026-09-26 23:54:50 -03:00
CampaignNewsletterForm.tsx merge(OPS75): convergência Forgejo→GitHub — GitHub como fonte única 2026-08-21 01:41:18 -03:00
CampaignPageHeader.tsx feat(S29): link com destino trocável e página de anúncio da atividade 2026-09-23 11:48:12 -03:00
CampaignProblemCard.tsx feat(S6): home de campanha sem carrossel no desktop — grade estática em ≥1024px, mobile preservado 2026-08-18 19:32:50 +00:00
CampaignStorySection.tsx feat(S8): seção 'Nossa história' na home — vídeo da trajetória embutido do YouTube (Closes #91) 2026-08-20 02:19:58 +00:00
CitySelect.tsx feat(S9): captura de novidades da campanha na home pública (form + CTA do hero) 2026-08-20 02:19:58 +00:00
ContentShareButton.tsx feat(S4): compartilhar conteúdos da home no WhatsApp 2026-08-19 12:50:19 -03:00
CopyLinkButton.tsx feat(C213): contadores anônimos de circulação por peça na Central de Conteúdos (Closes #1258) 2026-09-23 15:29:43 -03:00
EmailInput.tsx Improve Inputs 2026-03-20 12:36:16 -03:00
Footer.tsx style: Prettier (O0+ #34) 2026-08-01 06:04:44 +00:00
FormattedInput.tsx Ship /campanha nuclei MVP with RBAC, invites, and vote estimates. 2026-07-18 15:01:56 -03:00
FormCombobox.tsx Replace state/city selects with type-to-filter comboboxes 2026-07-15 14:41:58 -03:00
FormInput.tsx Ship /campanha nuclei MVP with RBAC, invites, and vote estimates. 2026-07-18 15:01:56 -03:00
MetaPixel.tsx Add the tooling gate: knip, CI, zero-warning lint, as-never ban 2026-07-23 23:06:12 -03:00
NameInput.tsx Improve NameInput 2026-03-20 15:44:11 -03:00
PetitionForm.tsx react-audit(família 2): view model mínimo cruza o fio RSC — PetitionForm.tsx:29 deixa de receber o doc Petition inteiro (richText/consent/tracking ficam no server) 2026-08-25 13:40:32 -03:00
PetitionSuccessDialog.tsx Tooling: prettier como autoridade de formatacao (organize-imports deterministico, scripts format/format:check, normalizacao mecanica de 312 arquivos; artefatos gerados e migrations excluidos via .prettierignore) 2026-07-25 17:22:20 -03:00
PhoneInput.tsx Pass 2 W2: correcoes de fronteira lib/utilities e client boundary 2026-07-25 14:38:41 -03:00
PostalCodeInput.tsx fix zip code input field 2026-05-01 00:22:18 -03:00
PostCard.tsx Tooling: prettier como autoridade de formatacao (organize-imports deterministico, scripts format/format:check, normalizacao mecanica de 312 arquivos; artefatos gerados e migrations excluidos via .prettierignore) 2026-07-25 17:22:20 -03:00
RefreshRouteOnSave.tsx Break up the god modules into deep domain modules 2026-07-23 23:44:45 -03:00
ShareLinkRedirect.tsx feat(S19): links de compartilhamento com miniatura OG (Closes #1207) 2026-09-19 14:02:17 -03:00
SignatureCounter.tsx Tooling: prettier como autoridade de formatacao (organize-imports deterministico, scripts format/format:check, normalizacao mecanica de 312 arquivos; artefatos gerados e migrations excluidos via .prettierignore) 2026-07-25 17:22:20 -03:00
SiteHeader.tsx Guardas programaticas: fronteira lib/ (no-restricted-imports), ban de consent id hardcoded, codebaseConventions.unit.spec (server-only, copy Praca/Nucleo, listas legadas do eslint, wrappers de formActions), ciclo do payload.config quebrado (documents/globals divididos em tags+reads), timeout global do int suite, personName schema-valido, consent drafts Onda 0 p/ Municipio 2026-07-25 18:02:02 -03:00
socialIcons.tsx Add ThankStep 2026-03-18 23:55:28 -03:00
socialLinks.tsx Guardas programaticas: fronteira lib/ (no-restricted-imports), ban de consent id hardcoded, codebaseConventions.unit.spec (server-only, copy Praca/Nucleo, listas legadas do eslint, wrappers de formActions), ciclo do payload.config quebrado (documents/globals divididos em tags+reads), timeout global do int suite, personName schema-valido, consent drafts Onda 0 p/ Municipio 2026-07-25 18:02:02 -03:00
SpeechCutShareActions.tsx feat(C217): cortes e links compartilhaveis na fonte "Falas na internet" (Closes #1293) 2026-09-24 20:17:54 -03:00
StateSelect.tsx feat(S9): captura de novidades da campanha na home pública (form + CTA do hero) 2026-08-20 02:19:58 +00:00
ThemeProvider.tsx Tooling: prettier como autoridade de formatacao (organize-imports deterministico, scripts format/format:check, normalizacao mecanica de 312 arquivos; artefatos gerados e migrations excluidos via .prettierignore) 2026-07-25 17:22:20 -03:00
WhatsappForm.tsx Tooling: prettier como autoridade de formatacao (organize-imports deterministico, scripts format/format:check, normalizacao mecanica de 312 arquivos; artefatos gerados e migrations excluidos via .prettierignore) 2026-07-25 17:22:20 -03:00