Commit graph

589 commits

Author SHA1 Message Date
Cursor Agent
28525aab4b
B135 — Voltar no wizard usa passo lógico anterior na cadeia (#289)
- wizardPreviousHref em wizardActionChain para todos os elos B98
- Avanço encadeado com router.push; Voltar no chrome com replace
- Testes unitários para href anterior e navegação pending

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 23:04:26 +00:00
Cursor Agent
e731e407ab
style: prettier format B139 files 2026-08-02 23:04:25 +00:00
Cursor Agent
e8f21a9885
B140 — Demandas omnibox: tipo e busca na lista
- Add q param to demand list URL contract and buildDemandListWhere
- Extend demandOmnibox with kind + search chips/suggestions/actions
- Search title and leadership contact name (visible list columns)
- clearDemandOmnibox drops bar filters but keeps activity deep-link
- Unit + int tests; impl plan docs/plans/demandas-omnibox-tipo-busca-impl.md

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 23:03:24 +00:00
Cursor Agent
b509c7d7b3
B141 — filtro por fonte na omnibox de apoiadores (#309)
Adiciona dimensão Fonte ao estado de lista, where-builder, aggregate SQL
e adapter omnibox (B128), com guard isSupporterSource e testes.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 23:03:22 +00:00
Cursor Agent
23e71d2de3
B146 — FAB overlay idle on open; close/handle chrome fixes
- Block Dialog onOpenAutoFocus and Drawer initialFocus so search does not
  steal focus on open (actions stay visible per B132 idle state).
- Reserve md:pr-10 on search chrome so desktop close button does not overlap.
- Enable showSwipeHandle on mobile drawer (no X button).
- Unit tests for idle state, swipe handle, and close spacing.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 23:03:04 +00:00
Cursor Agent
5335f69b43
B134 — motivo opcional (tendência + nível); remove reversalSignals
- Make engagement level note optional in schema and UI
- Remove reversalSignals field from popover, action snapshot and DB
- Add data migration to strip reversalSignals from movimento snapshots
- Wizard trend note step no longer requires text; labels show (opcional)

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 23:02:53 +00:00
Cursor Agent
68ab54756e
B139 — tipo na omnibox de organizações
Adapter organizationOmnibox (q + kind exclusivo), OrganizationFilters
migrado do searchOnly degenerado, testes unit B128.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 23:02:46 +00:00
Francisco Solla
d0cd103b90
Merge pull request #318 from fsolla/cursor/56661d91
B146 — plano: FAB overlay sem autofocus e fechar
2026-08-02 19:52:45 -03:00
Francisco Ignácio Fontoura Solla
e9fee27d58 style: format B146 intention plan with Prettier
Related #317
2026-08-02 19:51:06 -03:00
Francisco Solla
948b8447ef
Merge pull request #316 from fsolla/cursor/b145-detalhe-titulo-header
B145 — Detalhe de entidade — título no header (plano)
2026-08-02 19:50:46 -03:00
Francisco Ignácio Fontoura Solla
ed0710b8ab docs(plans): intenção B146 — FAB overlay sem autofocus e fechar
Related #317
2026-08-02 19:49:47 -03:00
Francisco Ignácio Fontoura Solla
0982492b67 style: format B145 intention plan with Prettier 2026-08-02 19:48:50 -03:00
Francisco Ignácio Fontoura Solla
8f189cdc9c docs(plans): intenção B145 — detalhe com título no header 2026-08-02 19:47:30 -03:00
Francisco Solla
d28abc13b6
Merge pull request #314 from fsolla/cursor/484591d9
B144 — Sidebar entrada para Organizações (plano)
2026-08-02 19:44:25 -03:00
Francisco Ignácio Fontoura Solla
5ab510ba30 style: format B144 intention plan with Prettier 2026-08-02 19:42:31 -03:00
Francisco Ignácio Fontoura Solla
9b30fef2ad docs(plans): intenção B144 — sidebar Organizações
A lista já existe; falta só o item de navegação no staffNav.
2026-08-02 19:40:40 -03:00
Francisco Solla
3413f6c65d
Merge pull request #312 from fsolla/cursor/3913a655
B138–B143 — planos: completar filtros das omniboxes /campanha
2026-08-02 19:37:35 -03:00
Francisco Ignácio Fontoura Solla
d0f4489848 docs(plans): intenção B138–B143 — completar filtros das omniboxes /campanha
Registra o lote pós-inventário (presets/busca em atividades e dimensões
faltantes nas demais listas) para claim via work-issue.
2026-08-02 19:35:05 -03:00
Francisco Solla
5b451af893
Merge pull request #305 from fsolla/cursor/09115594
B137 — plano: Colunas ao lado da omnibox
2026-08-02 19:29:54 -03:00
Francisco Ignácio Fontoura Solla
5a1e4b125f docs(plans): intenção B137 — Colunas ao lado da omnibox
Related #304
2026-08-02 19:27:37 -03:00
Francisco Ignácio Fontoura Solla
73d37be8c2 docs(plans): B136 — grade 3×2 Início/FAB (corrigir orientação)
Sucessor de B122/B132: aceite visual 3 colunas × 2 linhas.

Related #302
2026-08-02 19:19:28 -03:00
Francisco Ignácio Fontoura Solla
699c0f3ba8 docs(plans): intenção OPS18 — promote dual (agente + Action no merge)
Related #296
2026-08-02 18:47:44 -03:00
Francisco Solla
e4df53c47c
Merge pull request #293 from fsolla/cursor/87e90c13
OPS17 — plano de intenção: ciclo de vida plan-issue
2026-08-02 18:44:16 -03:00
Francisco Ignácio Fontoura Solla
c3b121c5ec style: format OPS17 intention plan with Prettier
Related #292
2026-08-02 18:42:54 -03:00
Francisco Ignácio Fontoura Solla
74228789c5 docs(plans): intenção OPS17 — ciclo de vida plan-issue antes de claim
Related #292
2026-08-02 18:41:41 -03:00
Francisco Solla
828bfc04f3
Merge pull request #291 from fsolla/cursor/b135-wizard-voltar-cadeia
B135 — plano: Voltar = passo anterior na cadeia do wizard
2026-08-02 18:36:19 -03:00
Francisco Solla
267c630a20
Merge pull request #290 from fsolla/cursor/c988cf3a
B134 — Motivo opcional tendência/nível (plano)
2026-08-02 18:35:32 -03:00
Francisco Ignácio Fontoura Solla
d92ef9424f docs(plans): format B135 intention plan
Related #289
2026-08-02 18:34:31 -03:00
Francisco Ignácio Fontoura Solla
3f677b407e docs: formatar plano B134 com Prettier 2026-08-02 18:33:56 -03:00
Francisco Solla
345db9474f
Merge pull request #287 from fsolla/cursor/pool-i283-a9b2f259-fcc3
B133 — Listas /campanha — subtítulos curtos (sem prosa; filtro salvo em Municípios)
2026-08-02 18:33:46 -03:00
Francisco Ignácio Fontoura Solla
e72c144eef docs(plans): intenção B135 — Voltar = passo anterior na cadeia do wizard
Related #289
2026-08-02 18:32:51 -03:00
Francisco Ignácio Fontoura Solla
7368bb83a2 docs: plano B134 — motivo opcional tendência/nível e remover voltar atrás
Registra a intenção de produto (#288): soltar Motivo no wizard de tendência e no nível de envolvimento, e apagar do modelo/DB o campo de sinais de reversão.
2026-08-02 18:29:27 -03:00
Francisco Solla
285caba300
Merge pull request #286 from fsolla/cursor/pool-i280-093296a2-744e
B132 — Ações rápidas — grade 3×2 (Início + FAB) e polimento do overlay
2026-08-02 18:23:29 -03:00
Cursor Agent
f98042e656
style: prettier format B133 files 2026-08-02 21:20:55 +00:00
Cursor Agent
f89fc4b81f
feat(campanha): B133 — listas sem subtítulo de prosa + filtro salvo no header
- Remove prose subtitles from list routes, Quadro and create/edit chrome
- Keep subtitles on Organizações, Conceitos, Perfil, Contatos (out of scope)
- MunicipalityListPageChrome: saved filter name as header subtitle when URL matches
- Edit pages: title-only chrome override
- Impl plan: docs/plans/listas-sem-subtitulo-prosa-impl.md

Closes #283

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 21:16:46 +00:00
Francisco Ignácio Fontoura Solla
464a32a6bc docs(plans): B133 — incluir Perfil, Conceitos, Contatos e Organizações
Expande o aceite: tirar subtítulo de prosa também nessas seções.

Related #283
2026-08-02 18:14:14 -03:00
Francisco Solla
62171f5127
Merge pull request #284 from fsolla/cursor/b133-listas-sem-subtitulo-prosa
B133 — Listas /campanha — subtítulos curtos (plano)
2026-08-02 18:13:45 -03:00
Francisco Solla
1771c5c2c4
Merge pull request #282 from fsolla/cursor/pool-i265-cbfa8dec-92a1
B128 — Adotar barra omnibox nas demais listas /campanha
2026-08-02 18:12:49 -03:00
Francisco Ignácio Fontoura Solla
7efa5b5bdc docs(plans): intenção B133 — listas sem subtítulo de prosa
Related #283
2026-08-02 18:11:31 -03:00
Cursor Agent
8d30667c2a
B132 — grade 3×2 no Início/FAB overlay e polimento do drawer
- CampaignHomeActionStrip: grid-cols-3 no mobile; variante grid para overlay
- CampaignQuickActionsOverlay: grade no lugar da strip; altura por conteúdo;
  pt-4 na busca focada; limpa query ao fechar
- CampaignQuickActionsHost: clear() em fechamento e mudança de rota
- Testes unit atualizados; impl plan em docs/plans/

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 21:08:09 +00:00
Francisco Solla
19e7bbffa7
Merge pull request #281 from fsolla/cursor/b132-plan-acoes-grade-3x2
B132 — plano de intenção (grade 3×2 + FAB overlay)
2026-08-02 18:02:47 -03:00
Francisco Ignácio Fontoura Solla
ee6d259ddc docs(plans): intenção B132 — grade 3×2 ações + polimento FAB overlay
Related #280
2026-08-02 18:00:34 -03:00
Cursor Agent
0903576f9e
B128 — Adotar barra omnibox nas demais listas /campanha
Estende o chassis B127 (CampaignListOmnibox + adapters puros por domínio)
para territórios, lideranças, dobradinhas, apoiadores, atividades, demandas,
organizações e assessores. Remove pilhas antigas (search debounced, collapsible,
mobile selects, CampaignFilterChips). URL contracts extraídos para módulos
client-safe onde necessário (demand/organization/advisor). Testes unitários
nos adapters + hook navigate-only.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 20:55:12 +00:00
Francisco Solla
7a0c4376eb
Merge pull request #278 from fsolla/cursor/pool-i264-d5d6724b-72f6
B127 — Barra omnibox de filtros nas listas /campanha (chassis + piloto Municípios)
2026-08-02 17:46:00 -03:00
Francisco Solla
422a886c90
Merge pull request #276 from fsolla/cursor/pool-i272-6a90e6d3-9422
B131 — Sidebar — papel no perfil + Sair como ícone
2026-08-02 17:35:20 -03:00
Cursor Agent
507d817a96
docs: changelog entry for B127 omnibox filter bar
Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 20:30:55 +00:00
Cursor Agent
3b2be37972
fix(campanha): B127 omnibox navigate + keyboard a11y from simplify
Use hook.navigate so draft search cannot clobber chips; replace cmdk with
ARIA combobox keyboard contract; memoize suggestion seeds per facet snapshot.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 20:30:55 +00:00
Cursor Agent
21e20a6719
feat(campanha): B127 omnibox filter bar chassis + Municípios pilot
Replace the stacked município filter controls with a shared omnibox
(chips + suggestions) backed by the frozen list URL contract; scenario
and non-default sort appear as presentation chips.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 20:30:55 +00:00
Cursor Agent
0214f68934
Merge remote-tracking branch 'origin/main' into cursor/pool-i272-6a90e6d3-9422 2026-08-02 20:16:38 +00:00
Cursor Agent
8dc78f48a6
B129 — Fix conflict markers left in intention plan after rebase 2026-08-02 20:03:58 +00:00
Cursor Agent
76597292c9
B129 — Simplify cleanup after overview removal
Fix duplicated JSDoc, trim stale int test, defer perf follow-ups in impl plan.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 20:03:58 +00:00
Cursor Agent
b4f2e2fa0a
B129 — Remove municipality list overview panel
Remove MunicipalityListOverview from /campanha/municipios and drop the
overview field/computation from loadMunicipalityListPageBundle. Filters,
scenario selector, and per-row goal coverage for sorting remain unchanged.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 20:03:58 +00:00
Francisco Solla
f176412e2b
Merge pull request #277 from fsolla/cursor/pool-i271-cbcf1835-00b9
B130 — Sidebar /campanha sem logo nem chip de escopo no topo
2026-08-02 17:03:28 -03:00
Cursor Agent
b6f16557ce
feat(B131): sidebar footer role label + logout icon
Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 19:17:43 +00:00
Cursor Agent
da32b39b47
Format impl plan 2026-08-02 19:17:14 +00:00
Francisco Solla
7839a88a5a
Merge pull request #270 from fsolla/cursor/pool-i250-d89b6314-599f
B123 — Campanha — orientação na shell + aba (sem títulos grandes de seção)
2026-08-02 16:16:58 -03:00
Cursor Agent
a4eadd80aa
B130 — remove logo and scope badge from campaign sidebar top
Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 19:16:20 +00:00
Francisco Solla
0400d0fdc5
Merge pull request #275 from fsolla/cursor/fa87a632
B131 — plano: papel no perfil + Sair ícone
2026-08-02 16:15:28 -03:00
Francisco Solla
5e7219f849
Merge pull request #269 from fsolla/cursor/pool-i260-ac255f26-42ec
B126 — FAB de ações rápidas (substituir bottom drawer persistente)
2026-08-02 16:15:01 -03:00
Francisco Solla
86080d1c77
Merge pull request #274 from fsolla/cursor/84c203ca
B130 — plano: sidebar sem logo nem chip de escopo
2026-08-02 16:14:36 -03:00
Francisco Ignácio Fontoura Solla
005d3d24b5 docs(plans): format B131 intention plan
Related #272
2026-08-02 16:13:48 -03:00
Francisco Ignácio Fontoura Solla
ada1ab1511 docs(plans): B130 scoped to sidebar only
Keep app-wide scope-chip removal as future intention; this issue
accepts only logo/header + sidebar chip removal. Related #271.
2026-08-02 16:13:13 -03:00
Francisco Ignácio Fontoura Solla
f5bc72443b docs(plans): intenção B131 — papel no perfil + Sair ícone
Related #272
2026-08-02 16:12:12 -03:00
Francisco Ignácio Fontoura Solla
c2c18b6f0c docs(plans): B130 — sidebar sem logo e chips de escopo
Intention plan for removing sidebar logo/header and CampaignScopeBadge
chips everywhere in /campanha. Related #271.
2026-08-02 16:10:13 -03:00
Francisco Solla
bb41c59ec9
Merge pull request #268 from fsolla/cursor/97bfd352
B129 — plano: remover overview da lista de municípios
2026-08-02 16:02:23 -03:00
Francisco Ignácio Fontoura Solla
9b330b6aed docs(plans): format B129 intention plan with Prettier 2026-08-02 16:00:55 -03:00
Francisco Solla
b9e1ea799d
Merge pull request #267 from fsolla/cursor/06b2fb9b
B127/B128 — planos: barra omnibox de filtros nas listas
2026-08-02 16:00:33 -03:00
Francisco Ignácio Fontoura Solla
a26f7fd88d docs(plans): intenção B129 — remover overview da lista de municípios 2026-08-02 15:59:37 -03:00
Francisco Ignácio Fontoura Solla
0a3fdaa95b style(plans): format B127/B128 omnibox intention docs 2026-08-02 15:58:52 -03:00
Francisco Ignácio Fontoura Solla
e7d7a53439 docs(plans): B127/B128 barra omnibox de filtros nas listas
Intenção de produto: chassis + piloto Municípios (#264) e adoção nas demais listas (#265), com mapa de variantes e decisões do gate.
2026-08-02 15:57:41 -03:00
Cursor Agent
39f69e603b
fix(B123): pass notification bell as server slot in desktop header
Client component cannot import async CampaignNotificationBellSlot directly;
mirror CampaignMobileTopBar slot pattern to fix staff page hangs in e2e.
2026-08-02 18:48:30 +00:00
Francisco Solla
62fb4c66e8
Merge pull request #263 from fsolla/cursor/pool-i259-b024c8a7-cbc1
OPS16 — CI: cooldown de deploy de produção 30 → 15 min
2026-08-02 15:46:51 -03:00
Cursor Agent
dbce18002c
B126 — FAB de ações rápidas substitui drawer persistente
Remove o bottom drawer não-modal (snap/peek/scroll-coupling) e introduz
um FAB em todas as larguras fora do Início e wizards. Abrir o FAB mostra
overlay modal: Dialog no desktop (busca em cima) e Drawer no mobile
(ações em cima), reutilizando strip e busca globais do Início.

Closes #260

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 18:39:27 +00:00
Cursor Agent
cad3556bce
OPS16: reduce production deploy cooldown from 30 to 15 minutes
Change DEPLOY_COOLDOWN_MS constant, update ci.yml deferral log, and
adjust unit test pins. Closes #259.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 18:38:36 +00:00
Francisco Solla
33d775396e
Merge pull request #258 from fsolla/cursor/pool-i253-48e749f5-b609
B124 — Sidebar Municípios: filtros salvos colados (sem disclosure)
2026-08-02 15:38:01 -03:00
Francisco Solla
cf64e7f77d
Merge pull request #257 from fsolla/cursor/pool-i254-84456924-7f4c
B125 — Município mais próximo no topo das sugestões (busca geral + wizard)
2026-08-02 15:37:35 -03:00
Francisco Solla
be2500afa9
Merge pull request #262 from fsolla/cursor/c50d7ace
OPS16 — plano: cooldown deploy 30→15 min
2026-08-02 15:34:30 -03:00
Francisco Ignácio Fontoura Solla
dabc909d29 style(plans): prettier OPS16 intention plan 2026-08-02 15:32:59 -03:00
Francisco Ignácio Fontoura Solla
2abcb242e1 style(plans): prettier B126 intention plan
Related #260
2026-08-02 15:32:36 -03:00
Francisco Ignácio Fontoura Solla
de87032f85 docs(plans): intenção B126 — FAB no lugar do bottom drawer
Related #260
2026-08-02 15:32:10 -03:00
Francisco Ignácio Fontoura Solla
d9254648aa docs(plans): register OPS16 — deploy cooldown 30→15 min (P0) 2026-08-02 15:31:42 -03:00
Cursor Agent
9f19fb2f88
chore: format 2026-08-02 18:24:31 +00:00
Cursor Agent
7e6bc9d984
B125 — nearest município first in search suggest + wizard
- Restore B117 home search: scopeMunicipalities, merge prefix, session prompt
- Shared useNearestMunicipalitySlug (B14 key) for busca geral + wizard
- Wizard merge uses geoSlug only — no Perto de você / km copy on rows
- Impl plan: docs/plans/municipio-geo-topo-sugestoes-busca-impl.md

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 18:21:52 +00:00
Cursor Agent
9d86510b57
B124: filtros salvos sempre visíveis sob Municípios (sem disclosure)
Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 18:20:27 +00:00
Francisco Solla
540db69d4f
Merge pull request #256 from fsolla/cursor/e50f0b6b
B124 — Sidebar Municípios: filtros salvos colados (plano)
2026-08-02 15:18:23 -03:00
Francisco Solla
50a65de713
Merge pull request #255 from fsolla/cursor/721d8cc6
B125 — plano: município geo no topo das sugestões
2026-08-02 15:18:10 -03:00
Francisco Ignácio Fontoura Solla
b3ca274445 style(plans): prettier B125 intention plan 2026-08-02 15:16:37 -03:00
Francisco Ignácio Fontoura Solla
b80b05e24c docs(B124): format intention plan and critique with Prettier
Related #253
2026-08-02 15:16:23 -03:00
Francisco Ignácio Fontoura Solla
238d9f7b2a docs(plans): B125 — município geo no topo das sugestões
Intention plan for nearest município as first empty-state suggestion in home search and action wizard, with one geo prompt per tab session.
2026-08-02 15:15:16 -03:00
Francisco Ignácio Fontoura Solla
19e0be0e96 docs(B124): intention — sidebar filtros salvos colados sem disclosure
Related #253
2026-08-02 15:13:46 -03:00
Francisco Solla
9ebe55fadb
Merge pull request #252 from fsolla/cursor/pool-i249-19771f24-3b0c
B122 — Início mobile — ações em grade 2×3 (sem scroll)
2026-08-02 15:12:04 -03:00
Cursor Agent
ccfbf592a8
B123 — orientação na shell + aba sem títulos de seção no corpo
Move page title/subtitle to CampaignMobileTopBar, CampaignDesktopHeader,
and tab metadata (Solla - Campanha - %s). Strip section headers and scope
chips from list/create routes; detail pages keep entity h1.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 18:08:47 +00:00
Francisco Ignácio Fontoura Solla
6602ee32cf docs(plans): format B123 intention plan 2026-08-02 14:58:53 -03:00
Francisco Ignácio Fontoura Solla
8f33a9b068 docs(plans): B123 — orientação na shell sem títulos grandes de seção
Related #250
2026-08-02 14:57:44 -03:00
Cursor Agent
5b6af56b22
B122 — Início mobile: ações em grade 2×3 sem scroll
- CampaignHomeActionStrip: variant responsive (grid lt-md, strip md+)
- CampaignHomeActionButton: layout strip/grid/responsive class contracts
- CampaignHomeLayout: remove mobile bleed for grid gutter
- CampaignQuickActionsDrawer: explicit variant=strip
- Plans: inicio-acoes-grid-2x3-mobile + impl
- Tests: unit grid/strip + e2e mobile visibility

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 17:53:39 +00:00
Francisco Ignácio Fontoura Solla
8bca9d8e82 Separate intention plans from engineering execution in agent skills.
plan-issue now shapes product intent only; agent-work-issue (pool) and
work-issue (human gate) deliberate the implementation plan before coding.
2026-08-02 14:02:18 -03:00
Cursor Agent
62b6001ed8
OPS14 — form-action guard sweeps ladder, not filename
Replace the W4d filename-based convention spec with a sweep of every
src/app/(campaign) file that calls mapCampaignFormActionError without
runCampaignFormAction/Redirect. Migrate profile, leaderSupporter, and
convite-login to the shared wrappers; allowlist auth/password and the
existing bespoke formActions exceptions with documented reasons.

Closes #241

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-02 16:47:42 +00:00
Francisco Solla
f66381e09f
Merge pull request #243 from fsolla/cursor/ops-guardrail-plans
OPS13–15 — planos: higiene de guardrails (classname / form-action / TooltipProvider)
2026-08-02 13:42:40 -03:00
Francisco Ignácio Fontoura Solla
97c5ea5e72 style(plans): prettier OPS13–15 plan docs 2026-08-02 13:40:58 -03:00
Francisco Ignácio Fontoura Solla
8a60ab1ec8 docs(plans): register OPS13–15 guardrail hygiene chores
Classname/token pin removal, form-action ladder guard, kill TooltipProvider JSX nesting pin.
2026-08-02 13:40:25 -03:00
Francisco Ignácio Fontoura Solla
a7e1a8f2e7 Drop internal WhatsApp bridge plans; keep wa.me only.
Unofficial linked-device bridges risk banning staff phone numbers; D3–D5 stay wontfix and their plan files are removed.
2026-08-02 13:39:40 -03:00
Francisco Ignácio Fontoura Solla
186950168b Raise agent pool hard max slots from 8 to 12.
Default remains 5; parsePoolConfig now clamps POOL_MAX_SLOTS up to 12.
2026-08-02 13:30:36 -03:00
Francisco Solla
5c21552621
Merge pull request #151 from fsolla/cursor/plans-b109-b111
B109–B111 — planos mobile drawer, wizard return e Início polish
2026-08-01 17:33:12 -03:00
Francisco Ignácio Fontoura Solla
1a4b5b6273 docs(plans): register B109–B111 mobile drawer and Início polish
Capture confirmed product feedback as trackable plans linked to #148–#150.
2026-08-01 17:07:04 -03:00
Francisco Solla
5cdcda98b9
Merge pull request #146 from fsolla/cursor/pool-i141-1ce99b5a-0b74
B106 — Início mobile — Voltar no header + Android back + skeleton das sugestões
2026-08-01 15:59:53 -03:00
Cursor Agent
c524b1f19a
B105: format home search unit + mark plan implementado 2026-08-01 18:40:51 +00:00
Cursor Agent
98a69ab153
B105: bottom drawer handle top, scroll-up dock, discreet search peek
Revert handle to the top of the sheet; recalibrate collapsed/dock snaps
for handle+search and 2-line action labels; scroll ↓ collapses and ↑
re-docks; collapsed keeps a placeholder-less search peek that expands
on focus.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 18:40:51 +00:00
Cursor Agent
d4a7b448ad
docs(plans): mark B106 inicio-busca-voltar-skeleton done
Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 18:38:07 +00:00
Francisco Solla
3babd78d73
Merge pull request #144 from fsolla/cursor/0ce71e2d
B106–B108 — planos polish mobile busca/wizard
2026-08-01 15:34:29 -03:00
Francisco Ignácio Fontoura Solla
a18bbc67d7 docs(plans): B106–B108 polish mobile busca e wizard
Planos para Voltar/Android back/skeleton no Início, município sem título + sticky + skeleton, e autofocus/destaque de votos no wizard.
2026-08-01 15:32:26 -03:00
Cursor Agent
0174ae25db
B102 — pin layout TooltipProvider wrap + mark plan done
Conventions guard prevents regressing provider under CampaignAppScrollChrome.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 18:18:19 +00:00
Cursor Agent
653f04062b
B102 — fix drawer search crash on focus/type (TooltipProvider scope)
Lift TooltipProvider in the campaign app layout so it wraps
CampaignAppScrollChrome (scroll + quick-actions drawer). Focus→suggest
with priority-alta hits mounted CampaignHoverTooltip outside the old
provider and crashed the page. Unit pins cover focus→suggest and type→search.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 18:18:19 +00:00
Francisco Ignácio Fontoura Solla
df48f61cd0 docs: planos B101–B105 — polish strip/drawer, crash busca, Pular, Sugestões
Registra o lote pós-B96/B99/B100 (Issues #128–#132; file-miss #133).
2026-08-01 14:50:04 -03:00
Cursor Agent
0927b21d03
docs: note GET /v13 alias false-positive in AGENT-OPS 2026-08-01 16:15:06 +00:00
Cursor Agent
fdd318692c
fix(ci): clear domain gitBranch so CLI prod deploys can alias
Git-branch-bound domains only move via Git Integration. With Git
auto-deploy OFF, clear the binding, then promote + alias + verify.
2026-08-01 15:59:41 +00:00
Cursor Agent
c59b3fe31d
fix(ci): explicitly alias pt.jorgesolla.com.br after Vercel promote
Promote alone left the staged deployment on *.vercel.app only. Assign the
custom hostname via POST /v2/deployments/{id}/aliases after verifying it is
attached to the project domains list.
2026-08-01 15:37:16 +00:00
Cursor Agent
baa8f14f82
fix(ci): promote Vercel deploy to pt.jorgesolla.com.br
Disabling Git auto-deploy is correct for Actions-gated production. The
separate project toggle "Auto-assign Custom Production Domains" must stay
ON — when OFF, `vercel deploy --prod` only aliases *.vercel.app and leaves
the custom domain on an older Current (exactly what we saw after #122).

After each deploy, ensure-production-alias re-enables auto-assign if needed,
promotes the deployment, and verifies pt.jorgesolla.com.br is attached.
Also adds workflow_dispatch "Vercel promote production" for promote-without-rebuild.
2026-08-01 15:26:31 +00:00
Francisco Solla
f20fca0506
Merge pull request #120 from fsolla/cursor/pool-i106-d9499b1d-9029
B98 — Encadear ajustes após a ação principal do wizard
2026-08-01 09:06:11 -03:00
Cursor Agent
346949d035
B98 — Encadear ajustes do wizard após a ação principal
Após salvar (ou Pular) votos/tendência/sinal/liderança, navega ao
próximo elo da matriz v1 no mesmo município via entryAction, em vez
de voltar ao Início. Helper puro wizardActionChain + skips alinhados.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 11:41:26 +00:00
Cursor Agent
1ad8863994
OPS12 — CI bloqueia Closes/Fixes em PR só docs/plans
- Lógica pura em plansOnlyClosesGuard.mjs + CLI check-plans-only-pr-closes
- Job plans-only-closes em ci-pr.yml (rollup checks)
- Unit tests com fixture do incidente #115
- plan-issue, agent-pr-workflow, PR template e GUARDRAILS atualizados

Closes #116

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 11:26:19 +00:00
Cursor Agent
206c8d99fa
docs: registra OPS12 — proibir Closes em PR só docs/plans (#116)
Plano pós-gate: job CI no rollup checks falha se o diff for apenas
docs/plans/ e o body tiver Closes/Fixes/Resolves #N (incidente #115).
2026-08-01 11:20:16 +00:00
Cursor Agent
4b55c72467
docs: registra B100 — bottom drawer dock + recolhe no scroll (#114)
Plano pós-gate: corrige geometria do snap (conteúdo fora da banda
visível) e define load em dock (ações+busca), collapse no scroll down
e reopen só por tap/pull.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 11:13:00 +00:00
Cursor Agent
746030d253
docs: registra OPS11 + B95–B99 (#102–#107) pós-gate
Matriz B98 confirmada (cadeia completa nos 4 entries). Cabeçalhos
dos planos com Issue # e status registrado.
2026-08-01 10:48:04 +00:00
Cursor Agent
84c8b56a55
style: prettier nos planos B96/B98 2026-08-01 10:40:10 +00:00
Cursor Agent
20b9f336cd
docs: rascunho OPS11 + B95–B99 (deploy cooldown, wizard polish/chain)
Planos locais pré-gate plan-issue: cooldown 30min no deploy Vercel,
polimento busca município, X vs Pular, bug Salvar tendência,
encadeamento de ajustes, strip edge-to-edge.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 10:39:18 +00:00
Francisco Solla
e8f6e34e95
Merge pull request #96 from fsolla/cursor/pool-pin-fast-false-cc24
Pool — pin fast=false so Composer/Grok spawns are not billed as *-fast
2026-08-01 04:06:53 -03:00
Francisco Solla
5e1c091402
Merge pull request #95 from fsolla/cursor/wizard-municipio-sugestoes-174b
B92–B94 — planos: sugestões no empty do wizard de município
2026-08-01 03:59:12 -03:00
Cursor Agent
c53add3f8f
docs: registra B92–B94 (Issues #92–#94) pós-gate
Gate 2026-08-01: sem título de seção; geo só se permission granted;
fatia em três entregáveis confirmada. Planos ready com Issue #N.
2026-08-01 06:57:30 +00:00
Cursor Agent
196e15b827
fix(agent-pool): pin fast=false on Cloud Agent spawns
Cursor's Create-Agent API defaults omitted `fast` to true, so pool
workers requesting composer-2.5 were billed as composer-2.5-fast.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 06:56:57 +00:00
Francisco Solla
bcfd3fe598
Merge pull request #90 from fsolla/cursor/pool-i12-d50dd384-d1b2
B57 — Delta 7 dias do total estimado no Início
2026-08-01 03:49:37 -03:00
Cursor Agent
16d0803c2a
docs: rascunho B92–B94 — sugestões no empty do wizard de município
Quebra o empty state do passo 1 dos wizards (/campanha/acoes) em três
entregáveis: chassis+esquecidos (B92), continuity visitados/última ação (B93),
geo mais próximo (B94). Aguarda gate de confirmação antes do agent:register.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 06:48:37 +00:00
Cursor Agent
406d7ff9fa
OPS8 — bump cancel-workflow-action to 0.13.1 (Node 24 runtime)
checkout/setup-node/pnpm já estavam em v5/v6 (Node 24); o aviso restante
vinha de styfle/cancel-workflow-action@0.12.1 (node20) usado no fail-fast.
Documenta runtimes nativos em AGENT-OPS.md.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 06:42:16 +00:00
Francisco Solla
36ae7fe950
Merge pull request #75 from fsolla/cursor/pool-i18-7fc0009a-d0ee
B82 — Ações rápidas — Lideranças (lista + detalhe)
2026-08-01 03:40:16 -03:00
Cursor Agent
f53d5b9dc2
docs: marca plano B57 como entregue
Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 06:33:45 +00:00
Cursor Agent
8c1ba031f2
C8 — fecha F1–F2 no plano (Issue #37)
Freshness audit confirmou que perf de import/lista de apoiadores já
estava entregue em main desde 2026-07-19; atualiza status do plano
e CHANGELOG-AGENTS.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 06:32:20 +00:00
Cursor Agent
d5d814e1d9
OPS9 — format AGENT-OPS.md 2026-08-01 06:25:47 +00:00
Cursor Agent
8d9e4136f1
OPS9 — CI fail-fast: cancel workflow when any parallel job fails
Add composite action wrapping styfle/cancel-workflow-action@0.12.1 and
invoke it with if: failure() on every parallel job in ci-pr.yml and ci.yml.
Workflow-level actions: write permission enables cancellation. Document
fail-fast behavior in docs/AGENT-OPS.md CI table.

Closes #52

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 06:25:05 +00:00
Cursor Agent
d5da7b0adf
B82 — Ações rápidas em lideranças (lista + detalhe)
Registra catálogo contextual no drawer B79 para /campanha/liderancas:
lista com update-leadership; detalhe com cinco wizards e prefill de
município quando N=1. Adiciona query leadershipId no wizard A4 e
CampaignQuickActionContextSync na ficha.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 06:24:54 +00:00
Cursor Agent
21e5027b8b
B83 — catálogo de ações rápidas para /dobradinhas
Registra no drawer B79: lista (Nova dobradinha + 6 ações Início sem
prefill), detalhe e /nova (só Início). Integra com catálogos B80–B89.

Closes #19
2026-08-01 06:10:07 +00:00
Francisco Ignácio Fontoura Solla
a7a3883bc2 chore: remove cutover residue (stage scripts, checklist, PR template)
Delete dead db:refresh:stage / agent:promote; mark CUTOVER done; drop
STAGE_DATABASE_URL checklist item that no longer applies.
2026-08-01 01:00:39 -03:00
Cursor Agent
b150644d21
OPS: Ready+auto-merge for all agent PRs including audit
Remove the engineering-audit artifact exception; add a GHA safety net
that marks cursor/* → main PRs Ready and arms auto-merge.
2026-08-01 03:55:56 +00:00
Cursor Agent
69aafbb219
fix(agents): alwaysApply Ready+auto-merge; Cloud must pass draft:false
agent-pr-workflow was correct but not alwaysApply, so Cloud agents
followed ManagePullRequest's draft default. Make the rule always-on,
document the ManagePullRequest path, and narrow the engineering-audit
"no auto-merge" exception to the audit sign-off PR only.
2026-08-01 03:51:08 +00:00
Cursor Agent
18fe4f8e9b
fix(agent-pool): ban -fast model slugs
Never map or request fast=true. Slugs ending in -fast are stripped to
the base (with a warn); model-selection and the pool plan document the ban.
2026-08-01 03:34:35 +00:00
Francisco Ignácio Fontoura Solla
b7bb6f1479 style: prettier CUTOVER-MAIN-ONLY.md 2026-07-31 23:06:40 -03:00
Francisco Ignácio Fontoura Solla
68a4f702fb ci(deploy): harden Vercel gated deploy link
Match the Vercel Actions KB (job-level org/project env, global CLI),
validate team_/prj_ secret shapes, and document the misleading
Project Settings 403. Org/project secrets were resynced from local link.
2026-07-31 23:04:33 -03:00
Francisco Ignácio Fontoura Solla
2abcaeaaa5 docs: record cutover checklist progress 2026-07-31 20:57:50 -03:00
Francisco Ignácio Fontoura Solla
f021992de0 ci: main-only cutover with gated Vercel deploy
Remove stage/promote/Neon smoke. PR CI targets main; ci.yml full-suite
verifier deploys via vercel CLI and requeues when HEAD moves. Pool uses
POOL_GITHUB_TOKEN and POOL_BASE_REF=main. Docs/skills/rules retargeted.
2026-07-31 20:57:18 -03:00
Cursor Agent
503a775b9f fix(cloud): ensure-postgres bootstrap before teqo readiness check
Warm Cloud snapshots often have PostgreSQL online without the teqo
role/DBs. start_postgres previously gated on teqo_ready, exited before
bootstrap_databases, and marked the environment INSTALL_FAILED even
though agents still ran. Also pin DATABASE_URL and assert migrations
in cloud-setup so a silent no-op migrate cannot slip through.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-07-31 20:57:18 -03:00
Cursor Agent
84fed02ee5 test(miss-54): deterministic guard for unsettled goto→goto + nav convention
The SavedFilters incident shape — a page.goto fired while the previous
heavy RSC navigation was still in flight (net::ERR_ABORTED) — gets a
build-level guard: two gotos with no settle between them (await expect /
waitForURL / click / reload / login / catch) fail the suite. Measured
baseline on the current tree: 58 gotos across 17 specs, 0 unsettled
pairs — the six SOFT pairs from the miss audit all settle on awaited
assertions, so the guard starts clean without churning them.

TESTING.md records the convention the miss asked for: goto for cold
loads and URL contracts; in-shell navigation for continuity scenarios;
interactive-state waits before dynamic clicks; a dev-mode caveat for the
campaignLeaderships chip spec (deterministic dev failure at the
suggestion/commit step, prod green — ledgered).
2026-07-31 20:57:18 -03:00
Francisco Ignácio Fontoura Solla
d28ecb831a style: prettier A6-pre dobradinha baseline plan 2026-07-31 20:57:18 -03:00