Skip to content

v0.5.0 — Cleanup do backlog + DNS/Validation com UI

Choose a tag to compare

@fabgcruz fabgcruz released this 28 May 12:06
· 61 commits to main since this release

v0.5.0 — Cleanup do backlog + DNS/Validation com UI

Release que limpa o backlog quase inteiro numa tacada. 8 issues fechadas, 6 features end-to-end, 4 design specs, 1 bug fix da comunidade, 2 páginas admin novas.

✨ Features novas

🌐 DNS sync (PowerDNS) — backend + UI (#17)

Push de hostnames do Bagre como A records numa zona PowerDNS. Records gerenciados pelo Bagre marcados com comment bagre-managed pra não pisar em registros manuais. Página admin com test, preview do diff (a criar / a atualizar / a deletar) e sync com confirmação.

🛡️ Sistema de validação de subnets — backend + UI (#27)

4 regras built-in (no-overlap, within-master, size-range, name-pattern) com severity error/warning, scope global/site/provider. Roda antes de criar subnet — erros bloqueiam (HTTP 422), warnings só avisam. UI admin pra CRUD das regras com toggle inline.

🧮 Calculadora CIDR avançada (#12)

4 tabs: Análise (com detecção de overlap no IPAM), Dividir, Próximas livres, Supernet. Endpoints REST: /api/cidr/parse|split|merge|next-free.

☑️ Operações em lote nos IPs (#14)

Checkboxes, barra de ação flutuante, 3 ações em massa (reservar, liberar, editar campos). Endpoint POST /api/ips/bulk admin-gated, cap 500.

📈 Histórico temporal de utilização (#11)

Gráfico SVG inline com 7d/30d/90d, indicador de tendência, scheduler de snapshots a cada 60min, botão "Capturar agora".

🌍 IPv6 first-class — fase 1 (#10)

Parse IPv6 via BigInt 128-bit, subnets v6 criadas sem pré-enumeração, endpoint POST /api/subnets/:id/ips pra alocação ad-hoc. Split/merge/next-free pra v6 vem na próxima.

📥 Importação universal — fase 1 (#13)

POST /api/import aceita JSON, CSV ou XLSX via upload multipart ou body inline. Limite 25MB. YAML e NetBox na próxima.

🔥 Prometheus discovery (#25)

Já estava em v0.3.0, mas vale lembrar: sugestão do Leonardo Berbert via LinkedIn, implementada em <24h.

🖼️ Screenshots no README (#9)

Galeria 2x2 com dashboard, subnet detail, CIDR calculator, cloud accounts — capturados via Playwright em viewport 1440x900.

📚 Gerador de tutoriais Playwright (#24 partial)

scripts/generate-tutorial-screenshots.mjs automatiza captura + montagem de markdown. 3 tutoriais base. UI com mais tutoriais e workflow CI na próxima.

🐛 Bug fix da comunidade

#29 (reportado por @ruiluna) — criar subnet com CIDR ≥128.0.0.0 (192.168.x.x, 172.16.x.x, qualquer público) dava erro "expandiria para 4294967552 IPs". Causa: & em JS força int32 signed, sem >>> 0 o network voltava negativo e broadcast - network + 1 explodia pra ~4B. Bug long-standing — existia desde v0.1, mas só pegava CIDRs onde o bit alto do primeiro octeto estava setado. 10.x.x.x escapava.

Primeiro bug pago pelo template de issue (#6) — comunidade conseguiu abrir estruturado, eu reproduzi e corrigi.

📐 Design specs (projetos separados)

Pra issues que exigem repositórios Go separados ou são projetos multi-semana, entreguei specs detalhadas:

  • #15 Terraform Providerdocs/terraform-provider-design.md (resources, datasources, auth, roadmap)
  • #16 K8s Operatordocs/kubernetes-operator-design.md (CRDs IpReservation/SubnetClaim, integração webhook com Service, MetalLB sync)
  • #26 SNMP + topologydocs/snmp-topology-design.md (schema NetworkDevice/Port/Neighbor, LLDP discovery, vis-network UI)
  • #28 gRPCdocs/grpc-design.md + proto/bagre.proto (schema stub cobrindo subset read-mostly)

🚀 Como atualizar

git pull
docker compose build api web
docker compose up -d

Sem mudança de env vars. Schema novo (DnsConfig, ValidationRule, SubnetUtilizationSnapshot) propaga via prisma db push no startup do container API.

📊 Resumo da release

Issues fechadas 8 (#9, #10, #11, #12, #13, #14, #17 partial, #18, #24 partial, #27, #29)
Issues abertas 4 (#15, #16, #26, #28 — todas com design doc)
Commits novos 17 (incluindo bug fix, design specs e UI)
Páginas admin novas 2 (DNS Settings, Validation Rules)
Arquivos novos 14
Linhas adicionadas ~3.500

🛣️ Próximo

  • BIND, Route53, Cloudflare como providers DNS (atual só PowerDNS)
  • Plugin custom de validation via apps/api/plugins/validation/*.js
  • Mais tutoriais Playwright + workflow CI que regenera automaticamente
  • IPv6 — split/merge/next-free
  • YAML e NetBox no importer

📦 Código: https://github.com/fabgcruz/bagre — MIT