Commit graph

1681 commits

Author SHA1 Message Date
Francisco Solla
ac405ea2ec
Merge pull request #709 from fsolla/C129-pessoas-nome-de-legenda-da-dobradinha-campo-display-dis
C129: nome de legenda da dobradinha — campo + display discreto sob o nome
2026-08-12 13:10:04 -03:00
Francisco Solla
3593d84b30 refactor(C129): simplify — CampaignNameSubline compartilhado (a11y sr-label), guard legenda==nome, sem plumb morto, spec mais forte 2026-08-12 12:52:35 -03:00
Francisco Solla
d7acb5aa48 feat(C129): nome de legenda da dobradinha — campo ballotName + display discreto sob o nome (Closes #696) 2026-08-12 12:52:35 -03:00
Francisco Solla
8fbf2c6018
Merge pull request #701 from fsolla/C115-google-calendar-edicao-pela-agenda-pessoal-volta-para-t
C115 — Google Calendar: edição pela agenda pessoal volta para Teqo (bidirecional)
2026-08-12 12:42:27 -03:00
Francisco Solla
1bad0d96c7 fix(C115): e2e do FAB do espelho assere o FAB, não o título mobile (C101 troca por rótulo do período — flake sob carga) 2026-08-12 12:22:06 -03:00
Francisco Solla
9d330f48e4 merge(C115): rebase em main (C126 activityWhere, C124 tasks, C122 e2e estados, OPS40/41) — spec portado para runSync escopado 2026-08-11 22:48:14 -03:00
Francisco Solla
1fb62039d8 style(C115): format pós-rebase no CHANGELOG 2026-08-11 22:42:36 -03:00
Francisco Solla
6a83dbcc25 docs(C115): débito pós-review — corrida do snapshot + hermeticidade int (#694) 2026-08-11 22:42:05 -03:00
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
Francisco Solla
7629a505e0 feat(C115): edição pelo Google Calendar volta para o Teqo (motor bidirecional + webhook push)
- runSyncPass bidirecional: regra do relógio decide direção (Google mais novo
  aplica título/horário; Teqo re-asserta), cancelamento via showDeleted +
  snapshot lastSeenEventIds, registro no updates feed
- webhook público /campanha/agenda/google-webhook/[secret] fail-closed
  (secret + X-Goog headers constant-time), canal lazy sem cron (ensure em
  toda passada, renovação com id novo + stop do antigo)
- migration hand-written (campos de canal/snapshot em googleCalendarSync);
  mutationKind dedicado libera título via Google sem quebrar slug canônico
- UI: seção 'Edições pelo Google' no dialog + autor 'Google Calendar' no feed
- testes: unit (reverse mapping, validação webhook), int (motor bidirecional
  com stub, 10 cenários), e2e (webhook 404 fail-closed)
2026-08-11 22:38:53 -03:00
Francisco Solla
e43c71b2fd
Merge pull request #693 from fsolla/C126-c126-int-specs-do-espelho-google-c114-flakeam-em-parale
fix(C126): isola o escopo do espelho Google nos int specs (fim do flake paralelo)
2026-08-12 00:50:39 +00:00
Francisco Solla
c69990a3f0 fix(C126): isola o escopo do espelho Google nos int specs (fim do flake paralelo) 2026-08-11 21:33:07 -03:00
Francisco Solla
c08be6c46a
Merge pull request #707 from fsolla/C125-c125-pessoas-pos-c117-ux-descoberta-de-ordenacao-no-mob
C125: Pessoas pós-C117 UX — descoberta de ordenação no mobile e facet de ausência completo
2026-08-12 00:04:50 +00:00
Francisco Solla
6d41517a05
Merge pull request #705 from fsolla/C122-c114-follow-up-cobertura-de-testes-dos-estados-do-espel
C122 — cobertura de testes dos estados do espelho Google (componente + e2e + action)
2026-08-11 23:49:39 +00:00
Francisco Solla
e3ffb9d8a7
Merge pull request #706 from fsolla/plans/plan-issue-39
docs(plans): B200 — Municípios mobile: encaixes dos cards (densidade, labels, avatares)
2026-08-11 23:42:01 +00:00
Francisco Solla
d004a2b0eb chore(plan-issue): formata o rascunho UI do B200 (prettier) 2026-08-11 20:39:45 -03:00
Francisco Solla
4ad644d8ca
Merge pull request #702 from fsolla/B199-sollinha-fechar-o-drawer-durante-streaming-pode-reabri-
fix(B199): fechar o drawer mid-stream persiste open:false imediato — reload não ressuscita
2026-08-11 23:37:59 +00:00
Francisco Solla
0bc8226d01
Merge pull request #703 from fsolla/OPS41-agents-md-em-main-com-marcadores-de-conflito-commitado
fix(OPS41): resolve marcadores de conflito commitados no AGENTS.md + guardrail anti-reincidência
2026-08-11 23:37:31 +00:00
Francisco Solla
7fabb72df8 feat(C125): facet de ausência completo (qualquer_ausencia) e descoberta de ordenação no mobile
- PEOPLE_ABSENCES ganha o 4º valor qualquer_ausencia ("Qualquer ausência"),
  a união exata das três ausências em UM chip — o 3º clique dos específicos
  deixa de colapsar o facet (3 de 4 membros) e o parse absorve o guarda-chuva
  sobre os específicos, sem tocar no B18 genérico de capacity/status
- peopleListSortPrimaryOptions: seeds do grupo Ordenação viram as 7 direções
  primárias com emptyQueryVisible, então o mobile descobre as 7 chaves ao
  tocar no bar (e "ordenar" não corta aliada/assessorado/base no cap 8)
- CampaignListOmnibox reabre o popover no mousedown: clicar num input já
  focado (logo após commitar busca com Enter) não disparava focus, deixando
  a descoberta morta no mobile até digitar
- tests: contrato de URL (absorção + não-colapso), predicado + AND, novo spec
  de omnibox, e2e do 3º clique e da descoberta mobile (390×844)
2026-08-11 20:34:51 -03:00
Francisco Solla
980f66983a docs(plans): B200 — Municípios mobile: encaixes dos cards (densidade, labels, avatares) 2026-08-11 20:34:13 -03:00
Francisco Solla
d6dfdf70ed fix(OPS41): resolve marcadores de conflito commitados no AGENTS.md + guardrail anti-reincidência (#689)
O commit OPS33 (f0f5b73f) entrou com o arquivo já conflitado na região do
bullet 'Per-worktree environments' (<<<<<<< HEAD indentado + lado HEAD
pré-OPS33 com artefato '- # ' + fechamento corrompido '> > > > > > >'; o
======= foi removido no próprio commit) e o OPS37 herdou o estado.

Resolução perda zero validada por diff: manter o lado superset (OPS28 +
OPS31 + OPS33 — claim determinístico, --issue N, prompt citado) e
descartar o lado HEAD; -3 linhas no total; scan de todos os trackeados
confirmou AGENTS.md como único arquivo afetado.

Guardrail: describe 'no conflict markers in committed files' em
codebaseConventions.unit.spec.ts — varre git ls-files e falha em
<<<<<<< / >>>>>>> (tolerante a indentação) e na forma corrompida
^\s*(> ){7}; validado negativo contra o estado sujo (AGENTS.md:37, 40).
2026-08-11 20:23:50 -03:00
Francisco Solla
3ac5dbe0bd
Merge pull request #692 from fsolla/OPS40-worktree-dev-port-do-env-local-nao-e-honrado-pelo-next
fix(OPS40): pnpm dev honra o PORT do .env.local (next dev -p via scripts/dev.mjs)
2026-08-11 23:16:26 +00:00
Francisco Solla
5940c4c61e fix(OPS40): pnpm dev honra o PORT do .env.local — next dev -p via scripts/dev.mjs (Closes #682)
next dev resolve a porta antes de @next/env carregar env-files (commander
.env('PORT') no bin/next), então o PORT=3100+slot do provisionador de
worktree era ignorado e todo dev server subia em 3000. pnpm dev/devsafe
passam por scripts/dev.mjs: preflight do guard-dev-db inline, env com a
mesma precedência (real > .env.local > .env, override:false) e porta como
flag CLI -p (resolveDevPort/nextDevArgs em scripts/lib/cli.mjs,
unit-testados). Sem PORT → nenhum -p → default 3000 + allowRetry intactos.
2026-08-11 20:04:07 -03:00
Francisco Solla
1ed585a084
Merge pull request #700 from fsolla/plans/plan-issue-38
docs(plans): C128–C132 — ajustes de Pessoas (capacidades, legenda, tabela, Salvador, criação rápida)
2026-08-11 22:59:53 +00:00
Francisco Solla
1a71e5d021 docs(plans): C128–C132 — ajustes de Pessoas (capacidades, legenda, tabela, Salvador, criação rápida) 2026-08-11 19:54:13 -03:00
Francisco Solla
d3c747299b test(C122): cobertura dos estados do espelho Google — unit do chrome, e2e dos 4 estados + FAB, int da action de desativar 2026-08-11 19:47:43 -03:00
Francisco Solla
9b8680b00e
Merge pull request #690 from fsolla/work/5
chore(plan-issue): rascunho UI/UX do gate vira HTML+Tailwind commitado no repo (ad-hoc)
2026-08-11 22:46:22 +00:00
Francisco Solla
c7c9556ff3 test(C122): cobertura dos estados do espelho Google — unit do chrome, e2e dos 4 estados + FAB, int da action de desativar 2026-08-11 19:43:19 -03:00
Francisco Solla
54205fb093 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
Francisco Solla
631635ee89 chore(plan-issue): rascunho UI/UX do gate vira HTML+Tailwind commitado no repo (ad-hoc) 2026-08-11 19:14:21 -03:00
Francisco Solla
b604157fc7
Merge pull request #685 from fsolla/OPS39-prewarm-e2e-dev-adicionar-campanha-home-search-post-e-
OPS39 — Prewarm e2e: home-search POST e mudar-tendencia GET no setup spec
2026-08-11 20:14:51 +00:00
Francisco Solla
4cf10c9ff3
Merge pull request #684 from fsolla/C118-pessoas-pagina-de-detalhe-da-pessoa-secoes-montadas-pel
C118 — Pessoas — página de detalhe da pessoa (seções montadas pelas capacidades)
2026-08-11 19:45:09 +00:00
Francisco Solla
4043573152 fix(C118): fecha describe do e2e campaignPeople (merge com C117) e formata changelog 2026-08-11 16:32:49 -03:00
Francisco Solla
c0ffc22026 feat(C118): página de detalhe da pessoa — seções montadas pelas capacidades (Closes #657) 2026-08-11 16:32:21 -03:00
Francisco Solla
e68e4f6eda
Merge pull request #687 from fsolla/C124-atividades-tarefa-so-com-texto-responsavel-e-concluida-
feat(C124): tarefa de atividade só com texto, responsável e concluída (sem prazo)
2026-08-11 19:25:33 +00:00
Francisco Solla
94c89a57a1 feat(C124): tarefa de atividade só com texto, responsável e concluída (sem prazo) 2026-08-11 16:05:07 -03:00
Francisco Solla
15461d7abf
Merge pull request #679 from fsolla/B197+-assessores-menu-do-picker-de-colunas-derivado-da-mesma
B197+: picker de colunas de assessores derivado da mesma fonte do AdvisorsTable
2026-08-11 18:53:09 +00:00
Francisco Solla
93e57a6ed7
Merge pull request #674 from fsolla/C117-pessoas-ordenacao-header-omnibox-e-filtros-de-ausencia-
C117 — Pessoas: ordenação (header + omnibox) e filtros de ausência
2026-08-11 18:51:16 +00:00
Francisco Solla
fdca8ff9c4 format: prettier no impl plan OPS39 2026-08-11 15:47:12 -03:00
Francisco Solla
21b4b4d0c6 fix(gate): seleção e2e contendo apenas o spec setup vira none (setup é dev-only; OPS39) 2026-08-11 15:47:12 -03:00
Francisco Solla
2fec6a407e test(OPS39): prewarm POST /campanha/home-search e GET /campanha/acoes/mudar-tendencia no setup e2e (Closes #645) 2026-08-11 15:47:12 -03:00
Francisco Solla
a8414a49f1 Merge origin/main into C117 (C116/C119/OPS40) — sortable heads sobre células editáveis 2026-08-11 15:43:23 -03:00
Francisco Solla
b17ba00b51 chore(C117): re-trigger CI (docs-only commit não disparou o workflow PR) 2026-08-11 15:32:32 -03:00
Francisco Solla
421a680402
Merge pull request #683 from fsolla/plans/plan-issue-40
plans(OPS40): worktree dev — PORT do .env.local não honrado pelo next dev
2026-08-11 18:27:28 +00:00
Francisco Solla
f1405b04a5
Merge pull request #680 from fsolla/C119-status-de-apoio-lembranca-em-liderancas
C119 — Status de apoio 'Lembrança' em lideranças
2026-08-11 18:25:18 +00:00
Francisco Solla
7768b366f9 merge: main into B197+ (CHANGELOG C116) 2026-08-11 15:24:56 -03:00
Francisco Solla
2ef0d38dd9 plans(OPS40): PORT do .env.local não é honrado pelo next dev no worktree 2026-08-11 15:24:33 -03:00
Francisco Solla
9e5637fa7c plans(C125): débitos UX pós-C117 — descoberta de ordenação mobile e facet de ausência completo (depends 656) 2026-08-11 15:23:45 -03:00
Francisco Solla
11605a2ef3
Merge pull request #676 from fsolla/C116-pessoas-edicao-onde-voce-ve-na-lista-desktop-celulas-se
C116 — Pessoas — edição onde você vê na lista desktop
2026-08-11 18:17:53 +00:00
Francisco Solla
04d9940317 fix(C116): editor de Contato convive com o shape phones do C112 (primary phone via reorderWithPrimaryPhone) 2026-08-11 15:09:56 -03:00