teqo-backup/src/components/campaign
Francisco Solla 2f247d40a6 fix(C115): revisão /simplify — relógio com baseline de espelho, reopen sem re-cancelamento, hardening do webhook
- lastMirroredChangeAt (activity, migration): clock rule compara contra a
  última mudança espelhada, não updatedAt (task toggle não silencia edição
  pendente do Google)
- snapshot exclui ids que o motor deletou (removedEventIds separado do
  remoteEventIds): reopen pós-cancelamento não vira re-cancelamento fantasma
- cancelamento do Google respeita o relógio: cancel mais novo cancela; Teqo
  mais novo (reopen) limpa o trashed e recria
- escrita reversa sem req.user: autoria do registro correta + sem gate 403
  do deputado; hook de sync pula a própria escrita reversa (sem passada aninhada)
- canal: segredo rotaciona por criação; novo canal persistido antes do stop
  do antigo; identity fields read:false; create admin-only; leitura prefere
  linha configurada; pre-filter do webhook antes do bootstrap do Payload
- testes: all-day ida-e-volta, task-toggle, reopen, slug congelado, e2e dos
  caminhos 200, render tests do dialog/feed; asserções herméticas a
  atividades ambiente dos arquivos irmãos (DB compartilhado)
2026-08-11 22:42:05 -03:00
..
activity fix(C115): revisão /simplify — relógio com baseline de espelho, reopen sem re-cancelamento, hardening do webhook 2026-08-11 22:42:05 -03:00
advisor chore(B197+): picker de colunas de assessores derivado da mesma fonte do AdvisorsTable (#642) 2026-08-11 14:40:24 -03:00
auth feat(push): opt-in automático e fix do prompt nativo no /campanha 2026-08-10 21:14:56 -03:00
dashboard fix(OPS29): estado vazio honesto na busca global sem sugestões curadas (Closes #585) 2026-08-10 12:54:16 -03:00
demand chore(D11): chrome comum dos passos finais do wizard — WizardStepFormChrome + DemandFields 2026-08-11 07:37:44 -03:00
invite style: prettier 2026-08-01 06:09:33 +00:00
leadership feat(C119): status de apoio 'Lembrança' em lideranças — enum, badge e exclusão de pendências 2026-08-11 14:52:49 -03:00
map B13+: concordância LQ, readout de escopo no mapa e DRY do build de agregados. 2026-07-29 16:26:43 -03:00
municipality Merge pull request #648 from fsolla/B196-municipios-mobile-omnibox-colado-ao-header-e-card-mais- 2026-08-11 11:24:10 +00:00
organization feat(B184): omnibox mobile sem moldura como padrão das listas (sticky no form, X de limpar no input, salvar filtro no header, cards edge-to-edge) 2026-08-10 03:11:43 -03:00
people feat(C118): página de detalhe da pessoa — seções montadas pelas capacidades (Closes #657) 2026-08-11 16:32:21 -03:00
shared feat(C125): facet de ausência completo (qualquer_ausencia) e descoberta de ordenação no mobile 2026-08-11 20:34:51 -03:00
shell fix(B199): fechar o drawer mid-stream persiste open:false imediato — reload não ressuscita (Closes #672) 2026-08-11 19:41:48 -03:00
stateDeputy feat(C112): múltiplos telefones por pessoa — Contact.phones array (ordem = prioridade) 2026-08-11 10:47:02 -03:00
suggestion Engineering Pass 3: consolidate patterns and lock them with guards. 2026-07-29 06:11:29 -03:00
supporter feat(C112): múltiplos telefones por pessoa — Contact.phones array (ordem = prioridade) 2026-08-11 10:47:02 -03:00
tour feat(campaign): C14 remodel activity for agenda paradigm (#389) 2026-08-06 05:20:05 -03:00
votePledge test(e2e): assert municipality omnibox instead of Ordenado por label 2026-08-02 20:30:55 +00:00