v0.5.0 — Cleanup do backlog + DNS/Validation com UI
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 Provider —
docs/terraform-provider-design.md(resources, datasources, auth, roadmap) - #16 K8s Operator —
docs/kubernetes-operator-design.md(CRDs IpReservation/SubnetClaim, integração webhook com Service, MetalLB sync) - #26 SNMP + topology —
docs/snmp-topology-design.md(schema NetworkDevice/Port/Neighbor, LLDP discovery, vis-network UI) - #28 gRPC —
docs/grpc-design.md+proto/bagre.proto(schema stub cobrindo subset read-mostly)
🚀 Como atualizar
git pull
docker compose build api web
docker compose up -dSem 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