Francisco Solla
d896041a32
Merge pull request #379 from fsolla/agent/b159-generalizar-colunas-relacao-municipios
...
B159 — Generalizar colunas de relação nos municípios
2026-08-05 05:25:24 +00:00
Francisco Ignácio Fontoura Solla
9fa701633e
feat(campaign): unify municipality relation editors
2026-08-05 02:01:40 -03:00
Francisco Solla
ab1d3a4ac0
Merge pull request #377 from fsolla/fsolla/move-cursor-bootstrap-to-dot-cursor
...
chore: move Cursor hooks and cloud bootstrap to .cursor/
2026-08-05 04:41:18 +00:00
Francisco Solla
7700bff39d
chore: update references to .cursor bootstrap paths
...
Point environment.json, hooks, skills, and docs at the relocated .cursor/ files.
2026-08-05 01:39:42 -03:00
Francisco Solla
7312f155b6
chore: move Cursor hooks and cloud bootstrap to .cursor/
...
Relocate environment.json, hooks, and Postgres setup scripts so Cursor discovers them from the canonical project paths.
2026-08-05 01:38:52 -03:00
Francisco Solla
58e35ad0c6
Merge pull request #376 from fsolla/plan/b159-clarify-ui-alignment
...
docs(plan): clarify B159 UI alignment intent
2026-08-05 04:12:46 +00:00
Francisco Ignácio Fontoura Solla
84abfa1a7e
docs(plan): clarify B159 UI alignment intent
...
The plan previously suggested the UI wouldn't change — only the code would be
refactored. Updated to make explicit that:
- Dobradinhas editor changes from RelationChipCell to the same
CampaignCellEditOverlay + Command + chips as Assessores/Liderancas.
- Liderancas display gains an avatar stack matching Assessores/Dobradinhas.
- Inline create is always name-only across all three columns (leadership
phone is added later on the detail page).
- Assessores is the reference — its UI doesn't change.
Related #374
2026-08-05 00:20:48 -03:00
Francisco Ignácio Fontoura Solla
896d957497
chore: migrate .cursor/ references to .agents/ folder
...
Replace all project-local .cursor/ path references with .agents/ across
rules, skills, environment config, hooks, and ignore files. Keep Cursor
editor paths (~/.cursor/, window.cursor, CURSOR_API_KEY) and vendored
Impeccable editor-hook paths unchanged.
2026-08-05 00:09:09 -03:00
Francisco Solla
ac74145acd
Merge pull request #358 from fsolla/feat/model-selection-deepseek
...
feat(model-selection): add two-environment split with DeepSeek V4 local alternatives
2026-08-04 23:37:28 -03:00
Francisco Ignácio Fontoura Solla
781360bcf9
docs(plan): B159 — promover status para ready
...
Related #374
2026-08-04 06:39:59 -03:00
Francisco Ignácio Fontoura Solla
35907e02f0
docs(plan): B159 — generalizar colunas de relação na lista de municípios
...
Related #374
2026-08-04 06:39:15 -03:00
Francisco Solla
4b79f00125
Merge pull request #373 from fsolla/feature/ai-chat-sollinha
...
feat: AI chat 'Sollinha' — campaign data assistant (v1 read-only)
2026-08-04 06:26:48 -03:00
Francisco Ignácio Fontoura Solla
f9cd1df7b2
feat: AI chat 'Sollinha' — campaign data assistant (v1 read-only)
...
- Streaming AI endpoint at /campanha/api/ai-chat with DeepSeek V4 Flash
- 8 tools: calculate, getMunicipalityVotes, getTopDeputies, getDobradinhas,
getMunicipalityOverview, getLeaderships, getOrganizations, searchEntities
- In-memory rate limiter (50 msgs / 15 min per user)
- Desktop: resizable right sidebar via react-resizable-panels
- Mobile: full-screen Drawer opened by FAB (2/3 size of quick-actions FAB)
- Markdown rendering with react-markdown + remark-gfm (tables, bold, lists)
- Session-bound context (clean slate each open)
- Auth via existing campaign-token cookie, tools respect user RBAC
- Architecture doc: docs/plans/ai-chat-sollinha.md
- E2E tests: campaignAiChat.e2e.spec.ts (mocked endpoint)
2026-08-04 06:17:31 -03:00
Francisco Solla
a5f9548b9f
Merge pull request #372 from fsolla/agent/360-assessores-dobradinhas
...
B156 — Assessores por dobradinha (campo, coluna e seção; RelationOptionCell extraído)
2026-08-04 05:15:49 -03:00
Francisco Ignácio Fontoura Solla
6b8864debb
B156 — assessores por dobradinha (campo, coluna e seção; RelationOptionCell extraído)
2026-08-04 04:57:15 -03:00
Francisco Ignácio Fontoura Solla
8e434c14af
docs(plan): impl B156 — assessores por dobradinha
2026-08-04 04:39:48 -03:00
Francisco Solla
6f81fd3e82
Merge pull request #370 from fsolla/agent/362-dobradinhas-coluna-municipios
...
B157 — coluna de dobradinhas na lista de municípios (+ criação inline)
2026-08-04 04:07:46 -03:00
Francisco Ignácio Fontoura Solla
bd3ba5c2a5
style: format após rebase com B155
2026-08-04 02:56:05 -03:00
Francisco Ignácio Fontoura Solla
9780bb23df
style: format campaignComponents unit spec
2026-08-04 02:53:44 -03:00
Francisco Ignácio Fontoura Solla
086a9c8ee0
B157 — coluna de dobradinhas na lista de municípios (+ criação inline)
2026-08-04 02:53:43 -03:00
Francisco Solla
2e80270d3e
Merge pull request #369 from fsolla/plan/b155-padrao-rota
...
docs(plan): B155+ — padrão de escrita de célula (form action → rota)
2026-08-04 02:31:07 -03:00
Francisco Ignácio Fontoura Solla
6b689ea12f
docs(plan): B155+ — débito padrão de escrita de célula (form action → rota)
2026-08-04 02:29:30 -03:00
Francisco Solla
4cccc4608c
Merge pull request #367 from fsolla/agent/359-liderancas-coluna-municipios
...
B155 — Coluna de lideranças na tabela de municípios (espelho de Assessores)
2026-08-04 02:23:11 -03:00
Francisco Ignácio Fontoura Solla
596085c977
feat(campanha): B155 — coluna de lideranças na lista de municípios
...
Espelho da coluna de Assessores: chips com nome do contato, popover/sheet
com Command + delta otimista e criação inline (Nome + Celular). Sem
migration — leitura reversa de leadership.municipalities no bundle e
escrita reusando as actions B34/wizard; rota POST
/campanha/municipios/leaderships via campaignJsonMutationRoute.
2026-08-04 01:49:55 -03:00
Francisco Solla
d2fa396717
Merge pull request #366 from fsolla/agent/353-escala-dry-acoes-rapidas
...
C86+ — pathname de lista das ações rápidas em fonte única (isListPath)
2026-08-04 01:40:08 -03:00
Francisco Ignácio Fontoura Solla
b74268714c
C86+ — simplify: JSDoc do contrato home, testes de borda e nota no impl plan
...
Fixes do /simplify (3 revisores read-only): JSDoc de normalizePathname/isListPath
documentando o invariante (homes nunca são '/' nem terminam em slash), teste de
multi-slash e inputs degenerados, comentário de isCampaignHomePath encurtado.
Sem mudança de comportamento.
2026-08-04 01:17:53 -03:00
Francisco Ignácio Fontoura Solla
4a90fb19ec
C86+ — pathname de lista das ações rápidas em fonte única (isListPath)
...
Extrai isListPath + normalizePathname exportados em campaignQuickActionPaths.ts
e migra os 9 wrappers (7 públicos + 2 privados) + a 3a cópia de normalize em
campaignPageChrome.ts. Refactor estrutural sem mudança de comportamento;
derivação de regex de detalhe numérico adiada (gatilho: 3o vertical [id]).
Inclui docs/plans/escala-dry-pos-acoes-rapidas-impl.md e o fix de format
pré-existente de docs/plans/liderancas-coluna-municipios.md (bloqueava format:check).
2026-08-04 01:14:35 -03:00
Francisco Solla
53a6c49a96
Merge pull request #365 from fsolla/plan/municipios-table-columns
...
docs: plano B158 — colunas responsivas municipios (sem scroll horizontal)
2026-08-04 00:54:13 -03:00
Francisco Ignácio Fontoura Solla
236853aeaf
docs: plano B158 — colunas responsivas municipios (sem scroll horizontal)
...
Related #364
2026-08-04 00:52:23 -03:00
Francisco Ignácio Fontoura Solla
22038380cb
docs: plano B158 — colunas responsivas municipios (sem scroll horizontal)
...
Related #364
2026-08-04 00:51:31 -03:00
Francisco Solla
720ba8bb4b
Merge pull request #363 from fsolla/plan/b157-dobradinhas-coluna-municipios
...
docs(plan): B157 — coluna de dobradinhas na lista de municípios (+ criação inline)
2026-08-04 00:47:55 -03:00
Francisco Ignácio Fontoura Solla
58670bbb16
docs(plan): B157 — coluna de dobradinhas na lista de municípios (+ criação inline)
2026-08-04 00:46:33 -03:00
Francisco Solla
d10ef3fb42
Merge pull request #361 from fsolla/agent/plan-360-dobradinha-advisors
...
docs(plan): B156 — Assessores por dobradinha (Related #360 )
2026-08-04 00:24:15 -03:00
Francisco Ignácio Fontoura Solla
c84dce4ed1
style: format liderancas-coluna-municipios.md
2026-08-04 00:22:19 -03:00
Francisco Ignácio Fontoura Solla
086d2412c8
docs(plan): B156 — Assessores por dobradinha
...
Related #360
2026-08-04 00:22:11 -03:00
Francisco Ignácio Fontoura Solla
04c2a5276b
plan: B155 — coluna de lideranças na tabela de municípios
...
Related #359
2026-08-04 00:12:11 -03:00
Francisco Ignácio Fontoura Solla
f1e0dcbc31
feat(model-selection): add two-environment split with DeepSeek V4 local alternatives
...
- Split canonical table into Pool (remote) vs Local (Zed) environments
- Every Issue now declares both model: (pool) and model-local: (DeepSeek)
- DeepSeek V4 Flash pairs with Composer 2.5 (fast, cheap execution)
- DeepSeek V4 Pro pairs with Grok 4.5 (deliberation); Pro-max for Grok High
- Kimi K3 Low maps to Pro-max (more capable than Grok 4.5)
- Flash/pro-max are pool-excluded; consumed only by the local Zed agent
2026-08-04 00:00:22 -03:00
Francisco Solla
464b69884c
Merge pull request #357 from fsolla/agent/352-criar-assessor-inline-popover-municipios
...
B154 — criar assessor inline no popover da lista de municípios
2026-08-03 23:33:40 -03:00
Francisco Ignácio Fontoura Solla
5a52bb0efa
fix(int): batch B19 usa municípios alocados — remove raça com cap de assessores
...
O teste 'assigns and removes multiple municipalities in one batch' escolhia o
segundo município com id not_equals cru; sob ~48 workers paralelos podia cair
num município que um spec paralelo (cap 10 do B27/B154) acabara de encher,
fazendo o batch estourar o teto. getMunicipality() aloca município
globalmente único e purga resíduo.
2026-08-03 23:13:01 -03:00
Francisco Ignácio Fontoura Solla
26b2205c3a
B154 — criar assessor inline no popover da lista de municípios
...
Closes #352
- POST /campanha/municipios/advisors aceita body de criação (name) na union;
createMunicipalityAdvisorRecord cria campaignUser advisor (stub
<slug>@criado.invalid, senha aleatória) e atribui ao município na mesma
transação (cap 10 com rollback, lock municipality-advisors:{id})
- MunicipalityAdvisorCreateProvider compartilha o assessor criado entre linhas;
opção "+ Criar assessor" e chip otimista com id temporário no control
- advisorNameSchema unificado em primitives.ts; predicado de placeholder cobre
@criado.invalid (reset de senha e célula de e-mail tratam stubs inline)
- Destrava o spec e2e de municipios (falhas pré-existentes em main): key
warning do fragment trailing de MunicipalityFilters; settle-wait da animação
do Drawer no teste B136
2026-08-03 22:46:06 -03:00
Francisco Solla
5663cbc769
Merge pull request #356 from fsolla/chore/agent-skills-reorg
...
chore(agents): reorganiza árvore de skills — .claude/.cursor → .agents
2026-08-03 21:27:00 -03:00
Francisco Ignácio Fontoura Solla
a2fbcb9c00
chore(agents): reorganiza árvore de skills — .claude/.cursor → .agents
...
- Remove .claude/skills (symlinks) e a árvore .cursor (rules, hooks, skills)
- Adiciona .agents/ com skills (+ references/), rules/, hooks/ e scripts
- Adiciona .codex/hooks.json (hook do impeccable)
- Corrige referências .cursor → .agents em environment.json, hooks.json e AGENTS.md
2026-08-03 21:24:11 -03:00
Francisco Solla
ca53da5cdc
Merge pull request #355 from fsolla/agent/22-acoes-rapidas-apoiadores
...
docs(changelog): B86 — ações rápidas apoiadores (staff)
2026-08-03 21:17:40 -03:00
Francisco Ignácio Fontoura Solla
18c9f34bb1
docs(changelog): B86 — ações rápidas apoiadores (staff)
2026-08-03 21:16:18 -03:00
Francisco Solla
8f88c93429
Merge pull request #354 from fsolla/agent/22-acoes-rapidas-apoiadores
...
B86 — Ações rápidas — Apoiadores (staff): catálogo no FAB/overlay
2026-08-03 21:14:36 -03:00
Francisco Ignácio Fontoura Solla
cf09cb548d
format: Prettier
2026-08-03 21:06:52 -03:00
Francisco Ignácio Fontoura Solla
d200a1b012
B86 — ações rápidas — apoiadores (staff): catálogo no FAB/overlay
2026-08-03 21:03:13 -03:00
Francisco Ignácio Fontoura Solla
ad3c185d52
docs(plan): B154 — criar assessor inline no popover da lista de municípios
...
Related #352
2026-08-03 20:40:24 -03:00
Francisco Solla
d9db139719
Merge pull request #351 from fsolla/cursor/pool-i349-c89de3ae-f9e7
...
B153 — Editar nome, e-mail e celular da liderança (lista + detalhe)
2026-08-03 11:54:41 -03:00
Cursor Agent
199c83533b
format: Prettier
2026-08-03 14:10:07 +00:00