Novidades

5 min de leitura

Novidades

Informações mais detalhadas sobre as alterações em cada versão podem ser encontradas diretamente em GitHub Releases.

v2.0.2

  • 🔒 Reforço de segurança: Corrigidos vários achados de análise estática — as chaves de cache do pool de autenticação direta agora usam HMAC (em vez de um SHA-256 simples), uma verificação explícita de contenção para o serviço de ficheiros estáticos, escaping de HTML do texto de estado de login do SSE Tester, uma lista de permissões de esquemas de URL para os links de resultados de pesquisa do site de documentação, e permissões de privilégio mínimo no workflow de CI.
  • 📦 Atualização de dependências: Atualizadas todas as dependências Go, incluindo gin-gonic/gin para a v1.12.0 e lib/pq para a v1.12.3 (agora requer Go 1.25).
  • 🌐 3 novos idiomas: O site de documentação já está disponível em polaco, ucraniano e grego — 10 idiomas no total.

v2.0.1

  • 🔒 Correção de segurança: Atualizada a dependência transitiva de HTTP/3 quic-go para a v0.59.1, corrigindo uma vulnerabilidade de expansão de trailers QPACK que podia permitir que um peer malicioso esgotasse a memória do servidor ou do cliente.
  • 🎨 Melhorias no site de documentação: Novo alternador de tema claro/escuro/automático e alternador de idioma apenas com ícones, links de ícone do GitHub/Apoio na barra de navegação, correção dos dados estruturados JSON-LD codificados em duplicidade, e um llms.txt ampliado.

v2.0.0

  • 🔒 Padrões seguros (com quebra de compatibilidade): DB_SSLMODE agora tem como padrão require, ALLOWED_ORIGINS deixou de ter * como padrão, e JWT_SECRET deve ter no mínimo 32 bytes. Implantações existentes devem revisar a configuração antes de atualizar.
  • 🧹 Limpeza de itens legados: Removidas as rotas de redirecionamento /api/… e /sse/… e o alias JSON-RPC obsoleto login. Use diretamente /{prefix}/:database/… e get_jwt.
  • 🛡️ Autenticação e tratamento de erros mais rígidos: Um novo limite de login por IP (LOGIN_RATE_LIMIT_PER_IP) fecha uma brecha de credential spraying, e os erros das ferramentas MCP não expõem mais o texto de erro bruto do PostgreSQL por padrão (pode ser reativado com MCP_SQL_ERROR_DETAIL).
  • ⚙️ Limites de conexão configuráveis: O limite do pool de conexões de autenticação direta agora é configurável via DIRECT_POOL_LIMIT.
  • 🔑 Suporte a IdPs externos (BYO JWT): As novas configurações JWT_ISSUER, JWT_AUDIENCE e JWT_LEEWAY vinculam os tokens emitidos a um emissor/audiência específicos e permitem ajustar a tolerância de desvio de relógio.
  • 🧰 Novas ferramentas: Um JWT Getter (/tools/get-jwt) e um SSE Tester (/tools/test-sse) independentes se juntam ao Explorer para testes manuais rápidos.
  • 🐛 Correções de confiabilidade: Corrigido um bloqueio no encerramento do SSE e um bug na recuperação de conexões mortas que podia deixar o servidor incapaz de reconectar ao PostgreSQL.
  • 🧪 Reforço de CI: Adicionados golangci-lint, o detector de race conditions do Go e govulncheck a cada build, além de maior cobertura de testes.
  • 📦 Processo de lançamento: Adicionado o CHANGELOG.md e dividido o fluxo de lançamento em make release-local (build e verificação) e make release (tag, publicação, atualização do tap Homebrew).

v1.3.0

  • 🌐 PgArachne Explorer – PWA moderno: Renovação visual e funcional completa – tema escuro/claro (automático), layout de cartões responsivo, realce de sintaxe JSON, botão copiar para área de transferência, melhor experiência de autenticação (abas senha/token), suporte à instalação PWA (manifesto, ícones, service worker), links compartilháveis via parâmetro ?url=….
  • 🛠️ Suporte ao Model Context Protocol (MCP): Novo endpoint /{prefix}/{db}/mcp com métodos padrão resources/list, resources/read, prompts/list, prompts/get – totalmente suportado por funções PostgreSQL e reutilizando a autenticação e troca de papel existentes.
  • 🔧 Prefixo de API configurável: O padrão foi alterado para /db/{database}/jsonrpc e /db/{database}/sse, as rotas antigas /api/… e /sse/… permanecem como redirecionamentos 307 por compatibilidade. Controlado pela variável de ambiente API_PREFIX.
  • 🛡️ Proteção de idempotência: Campo opcional idempotencyKey em requisições JSON-RPC – detecção automática de duplicatas (HTTP 409 + código de erro em caso de colisão) usando pgarachne.save_idempotency_key().
  • 📚 Melhorias na documentação: Nova seção /tools/ com cartões (Explorer + futura barra de ferramentas para macOS), nova página «Architectural Decisions», SECURITY.md com instruções para comunicar vulnerabilidades, melhor tipografia em todos os idiomas via TypoLima, suporte aprimorado para página 404 no GitHub Pages.
  • 📝 Renomeação do método de login: O método JSON-RPC login foi renomeado para get_jwt (o nome antigo permanece como alias obsoleto com aviso nos logs).
  • 📊 Limpeza de registros (logging): Ao registrar em arquivo, o console exibe apenas informações mínimas de inicialização → saída mais limpa em ambientes de produção/Docker.

v1.2.0

  • 🛡️ Segurança: A validação do token de acesso ocorre antes de estabelecer uma conexão com o banco de dados. Melhoria na proteção contra falsificação de IP (adicionada a configuração TRUSTED_PROXIES) e ocultação de erros internos do banco de dados para o utilizador final.
  • 📊 Métricas isoladas: O endpoint Prometheus /metrics foi movido da API pública para a sua própria porta segura (por padrão, disponível apenas em 127.0.0.1:9090).
  • 📦 Nova opção de instalação: O projeto conta agora com um tap Homebrew oficial para macOS e Linux. As compilações são assinadas e geradas via GoReleaser.
  • 📚 Documentação reformulada: Visual totalmente novo construído sobre o framework Hugo. Adição de busca rápida de texto completo, opção de copiar código e exemplos de implantação em produção (hardening com Nginx, BYO JWT).
  • ⚙️ Gerenciamento aprimorado de daemon: Adicionado suporte para configuração de caminho personalizado do PID_FILE.

v1.1.0

  • 🔌 API unificada: Chamadas via POST /api/<db> (o método chamado é especificado no corpo JSON-RPC).
  • Notificações em tempo real: Novo endpoint GET /sse/<db>?channels=... para escutar eventos do banco de dados com suporte a múltiplos canais.
  • 📈 Observabilidade: Métricas detalhadas do Prometheus para HTTP, autenticação, JSON-RPC e SSE.
  • 🏋️ Melhoria substancial na estabilidade: Proteção contra clientes lentos, limites de tempo rigorosos e limpeza automática de conexões.