Novidades
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/ginpara a v1.12.0 elib/pqpara 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-gopara 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.txtampliado.
v2.0.0
- 🔒 Padrões seguros (com quebra de compatibilidade):
DB_SSLMODEagora tem como padrãorequire,ALLOWED_ORIGINSdeixou de ter*como padrão, eJWT_SECRETdeve 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 obsoletologin. Use diretamente/{prefix}/:database/…eget_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 comMCP_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_AUDIENCEeJWT_LEEWAYvinculam 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 egovulnchecka cada build, além de maior cobertura de testes. - 📦 Processo de lançamento: Adicionado o
CHANGELOG.mde dividido o fluxo de lançamento emmake release-local(build e verificação) emake 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}/mcpcom métodos padrãoresources/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}/jsonrpce/db/{database}/sse, as rotas antigas/api/…e/sse/…permanecem como redirecionamentos 307 por compatibilidade. Controlado pela variável de ambienteAPI_PREFIX. - 🛡️ Proteção de idempotência: Campo opcional
idempotencyKeyem requisições JSON-RPC – detecção automática de duplicatas (HTTP 409 + código de erro em caso de colisão) usandopgarachne.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
loginfoi renomeado paraget_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
/metricsfoi movido da API pública para a sua própria porta segura (por padrão, disponível apenas em127.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.