Commit graph

804 commits

Author SHA1 Message Date
Cursor Agent
dcce160a4d
fix(ci): lazy-load dotenv in cli.mjs for deploy cooldown
vercel-deploy-cooldown.mjs only needs dieWithLabel from cli.mjs, but the
module eagerly imported dotenv. The deploy job runs the cooldown check
before pnpm install, so Node failed with ERR_MODULE_NOT_FOUND.

Require dotenv inside loadCliEnv() so lightweight CI steps can import
dieWithLabel without node_modules.
2026-08-01 14:13:10 +00:00
Francisco Solla
ced9441fee
Merge pull request #121 from fsolla/cursor/fix-deploy-pnpm-setup-1749
fix(ci) — deploy job pnpm ENOENT on cooldown setup-node
2026-08-01 11:06:12 -03:00
Cursor Agent
07c9b9c571
fix(ci): disable pnpm cache on deploy cooldown setup-node
OPS11 added an early setup-node@v5 before pnpm/action-setup for the
cooldown script. setup-node v5 defaults package-manager-cache to true
and tries to invoke pnpm from package.json, which is not on PATH yet —
deploy failed with "Unable to locate executable file: pnpm".

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 14:04:12 +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
ca623e7aee
B98 — e2e espera a cadeia após save; knip limpa exports
Atualiza campaignHomeActions para navegar ao próximo elo
(votos→tendência, sinal→tendência, liderança→sinal) e remove
exports de skip de votos não usados.
2026-08-01 11:52:50 +00:00
Francisco Solla
a7394d3b9e
Merge pull request #119 from fsolla/cursor/pool-i114-36b6c1a5-2d0b
B100 — Bottom drawer mobile — dock visível + recolhe no scroll
2026-08-01 08:49:14 -03:00
Cursor Agent
d8f54a5d73
B98 — format Prettier nos arquivos do encadeamento 2026-08-01 11:42:08 +00: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
Francisco Solla
b809bf71dd
Merge pull request #118 from fsolla/cursor/pool-i116-2df83301-bbe5
OPS12 — CI bloqueia Closes/Fixes em PR só docs/plans
2026-08-01 08:39:47 -03:00
Cursor Agent
a056616d4a
Fix drawer snap geometry: handle at bottom, scroll on content ref
- Reorder drawer so handle sits at the screen bottom (snap shows bottom band)
- Hide dock content when collapsed instead of clipping through search
- Attach scroll-collapse listener directly on campaign-content-scroll ref
2026-08-01 11:35:09 +00:00
Francisco Solla
7fbb63f9d4
Merge pull request #111 from fsolla/cursor/pool-i104-ee2b3c89-b1c8
B96 — Header wizard: X na config principal, Pular só nas encadeadas
2026-08-01 08:31:52 -03: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
Francisco Solla
3d3644e249
Merge pull request #117 from fsolla/cursor/ops12-plans-only-closes-guard-188c
OPS12 — plano: proibir Closes em PR só docs/plans (#116)
2026-08-01 08:21:45 -03:00
Cursor Agent
923a0eb885
Tweak GlobalSearchBody doc comment after mount removal 2026-08-01 11:21:02 +00:00
Cursor Agent
838ea62327
Remove unused CampaignGlobalSearchMount export (provider lifted to scroll chrome) 2026-08-01 11:20:55 +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
0e510e2658
Map Drawer.tsx to campaignMunicipalities e2e in affected manifest 2026-08-01 11:20:14 +00:00
Cursor Agent
e09f01e683
Format + e2e manifest for Drawer/shell B100 2026-08-01 11:20:08 +00:00
Cursor Agent
1bb3fc7303
B100 — bottom drawer dock on load + collapse on scroll
- Replace expanded 55dvh snap with fixed DOCK height (12rem) + COLLAPSED handle
- Fix Base UI snap geometry via padding-bottom on Drawer popup
- Lift snap state to CampaignQuickActionsSnapProvider with pathname reset
- Collapse drawer when campaign-content-scroll passes threshold; reopen only via handle/pull
- Block collapse while global search is focused or active
- Dynamic content-scroll padding for dock vs collapsed peek
- Unit tests for dock default, scroll collapse, handle toggle; e2e on municipality detail

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 11:19:13 +00:00
Cursor Agent
5181116d84
B96 — Header wizard: X na tendência standalone, Pular só encadeada
resolveWizardTrendSkip(entryAction) espelha resolveWizardSignalSkip:
skip só quando entryAction presente e diferente de change-trend.
WizardTrendChoiceStep e WizardTrendNoteStep condicionam skip/trailingAction.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 11:18:13 +00:00
Francisco Solla
317935b128
Merge pull request #115 from fsolla/cursor/b100-bottom-drawer-dock-scroll-188c
B100 — Bottom drawer mobile — dock visível + recolhe no scroll (#114)
2026-08-01 08:14:59 -03:00
Francisco Solla
270c58424b
Merge pull request #113 from fsolla/cursor/pool-i107-0e9a1b5f-b248
B99 — Strip de ações do Início — edge-to-edge no mobile + gap menor
2026-08-01 08:14:36 -03: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
Francisco Solla
18bcee4454
Merge pull request #112 from fsolla/cursor/pool-i103-cc23cd9a-d9c9
B95 — Polimento busca município no wizard (bullets, gaps, título mobile)
2026-08-01 08:10:02 -03:00
Francisco Solla
36b39ffdd9
Merge pull request #110 from fsolla/cursor/pool-i105-88d1d9e1-68c5
B97 — Salvar tendência fecha o wizard (não volta ao começo)
2026-08-01 08:07:41 -03:00
Francisco Solla
9f53b88255
Merge pull request #109 from fsolla/cursor/pool-i102-833e3200-b18f
OPS11 — cooldown 30 min entre deploys de produção (Vercel)
2026-08-01 08:04:27 -03:00
Cursor Agent
f7d6a6d77d
style: format vercel-deploy-cooldown.mjs 2026-08-01 10:55:36 +00:00
Cursor Agent
67336c9d9d
B95 — reuse HOME_SEARCH_GROUP_LIST_CLASS for wizard hit list
Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 10:55:35 +00:00
Cursor Agent
cbddd8c796
OPS11 — cooldown de 30 min entre deploys de produção (Vercel)
- Script vercel-deploy-cooldown consulta último deploy READY via API Vercel
- Job deploy em ci.yml adia upload quando idade < 30 min (sucesso, não falha)
- Job requeue espera o residual e re-dispara ci.yml
- vercel deploy passa --archive=tgz para reduzir pressão de upload
- Testes unitários para computeCooldownWait e fetch da API

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 10:54:55 +00:00
Cursor Agent
5ce82e2229
B97 — Salvar tendência fecha wizard (redirect home quando status já aplicado)
Após salvar a nota, o RSC refresh via server action via
redirecionava à etapa de escolha. Agora  manda
para Início nesse caso; o client usa  no sucesso.

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 10:54:51 +00:00
Cursor Agent
afa05fd5fc
B99 — strip de ações edge-to-edge no mobile + gap menor
- Bleed do slot home-actions com -mx-4 (compensa p-4 do scroll) só no mobile
- Gap horizontal da strip: gap-3 → gap-2
- Unit pin das classes de bleed em campaignHomeLayout

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 10:54:39 +00:00
Cursor Agent
7b3d3096cd
B95 — unit test for mobile wizard shell padding
Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 10:53:33 +00:00
Cursor Agent
cce3d4ab3e
B95 — polimento busca município no wizard (bullets, gaps, título mobile)
- Remove list bullets from municipality search hits (list-none + reset)
- Tighten gap between search input and results (gap-4 → gap-2)
- Reduce mobile top padding in CampaignWizardShell (pt-3 pb-6 md:py-6)

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 10:53:27 +00:00
Francisco Solla
73f256e227
Merge pull request #108 from fsolla/cursor/register-ops11-b95-b99-1367
OPS11 + B95–B99 — registra Issues #102–#107 pós-gate
2026-08-01 07:51:45 -03: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
Francisco Solla
e47eef07af
Merge pull request #101 from fsolla/cursor/plan-wizard-deploy-ops-1367
OPS11 + B95–B99 — planos (deploy cooldown, wizard, strip)
2026-08-01 07:41:36 -03: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
3f7172f119
Merge pull request #100 from fsolla/cursor/pool-i94-64346b65-f089
B94 — Empty state do wizard: município mais próximo (geo)
2026-08-01 05:32:21 -03:00
Cursor Agent
5c99379ba0
fix(B94): remove leftover rebase conflict markers 2026-08-01 08:16:26 +00:00
Cursor Agent
4df1d68f3d
fix(B94): restore typed search results in wizard municipality step 2026-08-01 07:44:13 +00:00
Cursor Agent
8f52e17396
chore: map B94 paths in e2e affected manifest 2026-08-01 07:44:00 +00:00
Cursor Agent
2fc73aa7a4
style: prettier B94 files 2026-08-01 07:44:00 +00:00
Cursor Agent
20c69bd0de
B94 — wizard empty state: município mais próximo (geo)
No idle do passo de busca de município, resolve client-side o município
mais próximo no escopo do ator quando a permissão de geo já está granted
(reuso B14: campaignGeolocation + municipalityProximity + malha lazy).

- Prop RSC accessibleMunicipalities na rota acoes/[slug]
- Hook useWizardNearestMunicipality (fail-soft, só inScope)
- Merge geo no topo da lista B92 via wizardMunicipalitySuggestMerge
- Unit tests do merge/format

Closes #94

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 07:43:42 +00:00
Francisco Solla
eb80f8c32c
Merge pull request #99 from fsolla/cursor/pool-i93-28926117-13a5
B93 — Empty state do wizard — continuity (visitados + última ação)
2026-08-01 04:37:44 -03:00
Cursor Agent
ed7a69995b
chore: trim unused knip exports 2026-08-01 07:24:40 +00:00
Cursor Agent
8a720b0285
style: prettier 2026-08-01 07:24:10 +00:00
Cursor Agent
0114c348d5
test: fix wizard votes step props and continuity scope filter spec
Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 07:23:30 +00:00
Cursor Agent
dbf6a7fdce
B93 — wizard empty state continuity (visitados + última ação)
Merge client-side recent visits and last-acted municipality storage into
wizard municipality suggest idle list ahead of B92 server rankings.

- Add campaignLastActedMunicipality + wizardMunicipalitySuggestMerge libs
- Extend wizard-municipality-suggest with scopeMunicipalities for hit lookup
- Record last-acted on wizard write success (votes, signal, trend, leadership)
- Clear last-acted on logout alongside recent visits

Co-authored-by: Francisco Solla <fsolla@users.noreply.github.com>
2026-08-01 07:21:56 +00:00
Francisco Solla
7f7c707d4d
Merge pull request #98 from fsolla/cursor/pool-i92-174dd43e-5e6f
B92 — Empty state do wizard: chassis + ranking de esquecidos
2026-08-01 04:17:53 -03:00