teqo/src
Francisco Solla 2cc8f2c14d feat(C143): demandas visíveis apenas para responsáveis explícitos + candidato/coordenador
- campaignDemand.responsibles (hasMany → campaignUser, staff elegível) com
  hook beforeValidate que descarta ids não-staff (fail-closed)
- canRead/UpdateCampaignDemand por membership: assessor só vê demandas onde
  é responsável; unrestricted/admin sempre; leader nunca (fim do escopo
  municipal de demandas)
- criador entra automaticamente como responsável no hook de criação (form,
  wizard, rascunhos C90); migration com backfill created_by_id → responsável
- UI: picker multi-select na criação (nova + wizard) e card de gestão no
  detalhe com save full-replace + advisory lock; sugestões = assessores do
  município; rótulo 'Visível para: Responsáveis · Candidato · Coordenador'
- int tests reescritos para a regra nova + 5 casos novos; e2e novo de
  visibilidade (lista/URL/gestão); fixture e2e com createCampaignDemand
- impl plan + changelog; importMap regenerado com S3_* dummy (OPS69)
2026-08-19 23:55:07 -03:00
..
app feat(C143): demandas visíveis apenas para responsáveis explícitos + candidato/coordenador 2026-08-19 23:55:07 -03:00
collections feat(C143): demandas visíveis apenas para responsáveis explícitos + candidato/coordenador 2026-08-19 23:55:07 -03:00
components feat(C143): demandas visíveis apenas para responsáveis explícitos + candidato/coordenador 2026-08-19 23:55:07 -03:00
globals feat(S3): seção de conteúdos da home de campanha inclui os posts do Instagram 2026-08-18 20:29:50 -03:00
hooks feat(C95): seletor de modo de visualização no header do app (agenda) 2026-08-09 12:34:04 -03:00
lib feat(C143): demandas visíveis apenas para responsáveis explícitos + candidato/coordenador 2026-08-19 23:55:07 -03:00
migrations feat(C143): demandas visíveis apenas para responsáveis explícitos + candidato/coordenador 2026-08-19 23:55:07 -03:00
utilities feat(C143): demandas visíveis apenas para responsáveis explícitos + candidato/coordenador 2026-08-19 23:55:07 -03:00
css-modules.d.ts Adopt TypeScript 6 for tooling and TypeScript 7 for typecheck. 2026-07-21 20:32:15 -03:00
payload-types.ts feat(C143): demandas visíveis apenas para responsáveis explícitos + candidato/coordenador 2026-08-19 23:55:07 -03:00
payload.config.ts feat(S2): seção de conteúdos da home de campanha inclui os vídeos do YouTube 2026-08-18 15:23:50 -03:00