Neuigkeiten
Neuigkeiten
Detailliertere Informationen zu den Änderungen in den einzelnen Versionen finden Sie direkt in GitHub Releases.
v3.0.0
- 🔑 Neuer Login-Endpunkt (Breaking): Die JSON-RPC-Methode
get_jwtwird durchPOST /{prefix}/{database}/tokenersetzt, der PostgreSQL-Login und -Passwort als HTTP-Basic-Authentifizierung entgegennimmt — Zugangsdaten reisen nicht mehr im Request-Body, und ein Reverse-Proxy kann Logins per URL begrenzen.get_jwtauf/jsonrpcantwortet jetzt mit 404 /-32601. Migration:curl -X POST …/token -u login:password. - 📥 Dateidownloads: Der neue Endpunkt
POST /{prefix}/{database}/fileliefert Binärdateien aus mengenliefernden PostgreSQL-Funktionen — eine Zeile direkt, mehrere Zeilen als gestreamtes ZIP — mit derselben Authentifizierung, Rollenumschaltung und Ratenbegrenzung wie JSON-RPC.capabilities()meldetkind: "file". Wenden Siesql/schema.sqlerneut an (idempotent), um die neuen Felder zu erhalten. - 🧰 Werkzeuge: neuer JWT Signer, der Tokens lokal im Browser aus einem von Hand eingegebenen
JWT_SECRETsigniert (kein Netzwerkzugriff, Secret wird nie gespeichert), Screenshots und gehostete Versionen aller Werkzeuge (explorer.,sse-tester.,jwt-getter.,jwt-signer.pgarachne.com), klickbare Karten und Querverweise. Die Ordner intools/heißen jetztexplorer,jwt-getterundsse-tester— passen SieSTATIC_FILES_PATHan, falls Sie sie ausliefern. - 🐛 Fixes und Härtung: Eine Funktion, die SQL-
NULLliefert, ergibt jetzt"result": nullstatt HTTP 500; ZIP-Pfade in/filelehnen Windows-feindliche Namen und Kollisionen ohne Beachtung der Groß-/Kleinschreibung ab; leere Ergebnisse werden zurückgerollt. - 📚 Doku und Abhängigkeiten: Schritt-für-Schritt-Quick-Start, JSON-RPC-Seite als reine Referenz, die Architekturentscheidung „Warum PostgreSQL“, Reverse-Proxy-Hinweise für große Downloads und aktualisierte Go-Module (Sicherheitsupdate
golang.org/x/net).
v2.2.0
- 🔑 Optionales JWT:
JWT_SECRETist nicht mehr erforderlich. Ohne ihn ist JWT deaktiviert (get_jwtliefert 404 /-32601) und Clients nutzen HTTP-Basic-Zugangsdaten oder API-Tokens. - 🛡️ Rate Limiting für alle Auth-Methoden (Sicherheit):
LOGIN_RATE_LIMITgilt jetzt auch für HTTP Basic und Bearer (JWT/API-Token) an allen Endpunkten, nicht nur fürget_jwt. Zuvor ließen sich Passwörter überAuthorization: Basicunbegrenzt erraten. - 🔒 Zugriff nur über Berechtigungen (Breaking):
pgarachne.allowed_schemas()wurde entfernt.capabilities()(und damit MCPtools/listund der OpenAPI-Export) listet jedejsonb-Funktion, die der Aufrufer ausführen darf und deren Schema er nutzen darf. Entziehen SieEXECUTE/USAGE, wo das unerwünscht ist; siehe Seite Sicherheit. - ⚠️ Weitere Breaking Changes:
save_idempotency_keyerhält jetzt einen Rollen-Scope (sql/schema.sqlvor dem Binary-Upgrade erneut anwenden),universal_update/universal_deletelehnen leere Filter ab, außer"all": truewird übergeben, unduniversal_readakzeptiert inselectnur*oder einfache Spaltennamen (schließt eine SQL-Injection-Lücke). - 🐛 Fixes: SSE-Deadlock beim Listener-Reconnect, langsame oder fehlerhafte Logins blockierten andere Anfragen, Argument-Rendering in MCP
prompts/get, ein fehlerhafter Funktionskommentar brachcapabilities, „falsy“-Ergebnisse wurden im Explorer als Fehler angezeigt, und eine XSS-Lücke in der Explorer-Ergebnisansicht. - 📚 Doku: neue
llms-full.txt, GitHub-Sponsors-Karte, Tooltips für Navbar-Icons; diese Seite listet nun auch v2.0.3 und v2.1.0.
v2.1.0
- 📄 OpenAPI-Export pro Methode:
generate_openapi_spec()erzeugt nun zusätzlich pro exponierter Methode einen rein dokumentarischen Pfad, für Tools, die einen Vorgang pro Pfad erwarten (Swagger UI, Postman, Codegenerierung). Ein neueropenapi.yaml-Endpunkt liefert dieselbe Spezifikation als YAML. - 🔒 Authentifizierter, rollengefilterter OpenAPI-Export:
/openapi.jsonerfordert nun dieselbe Authentifizierung wie/jsonrpcund listet nur die Methoden auf, die die Rolle des Aufrufers ausführen darf — zuvor war der Endpunkt unauthentifiziert und listete jedem alle Methoden auf. - 🔌 MCP-Protokoll-Upgrade: Der MCP-Endpunkt spricht nun ausschließlich Protokollversion
2026-07-28; der alteinitialize/ping-Handshake wird nicht mehr unterstützt. SieheAGENTS.mdfür die vollständige Referenz. - 🐛 Korrektur am Connection-Pool: Direct-Auth-Connection-Pools (Basic Auth) werden nun korrekt entfernt, wenn sie inaktiv sind — dies behebt ein Problem, bei dem eine routinemäßige Passwort-Rotation letztlich neue Zugangsdaten aussperren konnte.
- 📦 Abhängigkeits- und CI-Updates: Routinemäßige Aktualisierung der Go-Abhängigkeiten (erfordert nun Go 1.26) sowie entsprechende Aktualisierungen der CI-Tools.
v2.0.3
- 🔒 Sicherheitshärtung: Der Rollenwechsel baut SQL nicht mehr durch String-Konkatenation zusammen (stattdessen wird die parametrisierte Funktion
set_config()verwendet), das Ausliefern statischer Dateien löst Pfade nun überos.Rootauf, sodass ein Symlink das ausgelieferte Verzeichnis nicht mehr verlassen kann, verschärfte Berechtigungen für Log-/PID-Dateien sowie strengere Validierung der Suchergebnis-Links der Doku-Website. - 🚀 Neue Schnellstart-Seite (alle 10 Sprachen): Ein schneller Weg von der Installation zu einem funktionierenden Endpunkt, ohne den vollständigen Umweg über Installation und Konfiguration.
- 📄
llms.txt-Auffindbarkeit: Verlinkt von der Startseite, der MCP-Seite, der README und dem Header jeder Seite, damit LLM-Crawler sie finden können. - 🐛 Fehlerbehebungen: Der mobile Menü-Umschalter zeigt nun auf breiten Bildschirmen korrekt eine funktionierende Home-Schaltfläche an, die Links der benutzerdefinierten 404-Seite lösen nun unabhängig von der URL-Tiefe korrekt auf, und das mobile Menü hat einen „Home“-Eintrag erhalten.
v2.0.2
- 🔒 Sicherheitsverbesserungen: Mehrere Befunde aus der statischen Analyse behoben — die Cache-Schlüssel des Direct-Auth-Pools verwenden jetzt HMAC statt eines reinen SHA-256, eine explizite Containment-Prüfung für das Ausliefern statischer Dateien, HTML-Escaping des Login-Statustexts im SSE Tester, eine URL-Schema-Allowlist für Suchergebnis-Links der Doku-Website und Least-Privilege-Berechtigungen im CI-Workflow.
- 📦 Abhängigkeits-Updates: Alle Go-Abhängigkeiten aktualisiert, u. a.
gin-gonic/ginauf v1.12.0 undlib/pqauf v1.12.3 (erfordert nun Go 1.25). - 🌐 3 neue Sprachen: Die Dokumentations-Website ist jetzt auch auf Polnisch, Ukrainisch und Griechisch verfügbar — insgesamt 10 Sprachen.
v2.0.1
- 🔒 Sicherheitskorrektur: Die transitive HTTP/3-Abhängigkeit
quic-gowurde auf v0.59.1 aktualisiert und schließt damit eine QPACK-Trailer-Expansionslücke, die es einem böswilligen Peer ermöglichen konnte, den Speicher von Server oder Client zu erschöpfen. - 🎨 Verbesserungen an der Doku-Website: Neuer Hell/Dunkel/Auto-Theme-Umschalter und ein reiner Icon-Sprachumschalter, GitHub/Support-Icon-Links in der Navigationsleiste, Behebung doppelt kodierter JSON-LD-Strukturdaten und ein erweitertes
llms.txt.
v2.0.0
- 🔒 Sichere Standardwerte (breaking):
DB_SSLMODEist nun standardmäßigrequire,ALLOWED_ORIGINSist nicht mehr standardmäßig*, undJWT_SECRETmuss mindestens 32 Byte lang sein. Bestehende Deployments müssen ihre Konfiguration vor dem Upgrade prüfen. - 🧹 Legacy-Bereinigung: Die Weiterleitungspfade
/api/…und/sse/…sowie der veraltete JSON-RPC-Aliasloginwurden entfernt. Verwenden Sie direkt/{prefix}/:database/…undget_jwt. - 🛡️ Strengere Authentifizierung & Fehlerbehandlung: Ein neues Login-Rate-Limit pro IP (
LOGIN_RATE_LIMIT_PER_IP) schließt eine Lücke für Credential-Spraying, und MCP-Tool-Fehler geben standardmäßig keine rohen PostgreSQL-Fehlermeldungen mehr weiter (mitMCP_SQL_ERROR_DETAILwieder aktivierbar). - ⚙️ Konfigurierbare Verbindungslimits: Das Limit für den Direct-Auth-Verbindungspool ist nun über
DIRECT_POOL_LIMITkonfigurierbar. - 🔑 Unterstützung externer IdPs (BYO JWT): Neue Einstellungen
JWT_ISSUER,JWT_AUDIENCEundJWT_LEEWAYbinden ausgestellte Token an einen bestimmten Aussteller/Zielgruppe und ermöglichen eine anpassbare Uhr-Toleranz. - 🧰 Neue Tools: Ein eigenständiger JWT Getter (
/tools/get-jwt) und SSE Tester (/tools/test-sse) ergänzen den Explorer für schnelle manuelle Tests. - 🐛 Stabilitätskorrekturen: Ein blockierendes SSE-Shutdown-Problem und ein Fehler bei der Wiederherstellung toter Verbindungen wurden behoben, der den Server dauerhaft von PostgreSQL trennen konnte.
- 🧪 CI-Härtung:
golangci-lint, der Go-Race-Detector undgovulnchecklaufen nun bei jedem Build, zusätzlich erweiterte Testabdeckung. - 📦 Release-Prozess:
CHANGELOG.mdhinzugefügt und der Release-Workflow inmake release-local(Build & Verifikation) undmake release(Tag, Veröffentlichung, Aktualisierung des Homebrew-Taps) aufgeteilt.
v1.3.0
- 🌐 PgArachne Explorer – moderne PWA: Komplette visuelle und funktionale Überarbeitung – dunkles/helles Farbschema (automatisch), responsives Kartenlayout, JSON-Syntaxhervorhebung, Kopieren-in-die-Zwischenablage-Schaltfläche, bessere Auth-Benutzerführung (Passwort/Token-Tabs), PWA-Installationsunterstützung (Manifest, Icons, Service Worker), freigebbare Links über
?url=…-Parameter. - 🛠️ Model Context Protocol (MCP) Unterstützung: Neuer Endpunkt
/{prefix}/{db}/mcpmit Standardmethodenresources/list,resources/read,prompts/list,prompts/get– vollständig von PostgreSQL-Funktionen unterstützt und unter Wiederverwendung der bestehenden Authentifizierung & Rollenumschaltung. - 🔧 Konfigurierbares API-Präfix: Standard wurde auf
/db/{database}/jsonrpcund/db/{database}/ssegeändert, die Legacy-Pfade/api/…und/sse/…bleiben als 307-Weiterleitung für Abwärtskompatibilität erhalten. Gesteuert über die UmgebungsvariableAPI_PREFIX. - 🛡️ Idempotenzschutz: Optionales
idempotencyKey-Feld in JSON-RPC-Anfragen – automatische Duplikatserkennung (HTTP 409 + Fehlercode bei Kollision) mittelspgarachne.save_idempotency_key(). - 📚 Dokumentationsverbesserungen: Neuer /tools/-Bereich mit Karten (Explorer + kommende macOS Toolbar), neue Seite“Architectural Decisions”, SECURITY.md mit Anweisungen zur Meldung von Schwachstellen, bessere Typografie in allen Sprachen durch TypoLima, verbesserte 404-Seitenunterstützung für GitHub Pages.
- 📝 Umbenennung der Login-Methode: JSON-RPC-Methode
loginumbenannt inget_jwt(alter Name bleibt als veralteter Alias mit Warnung im Log erhalten). - 📊 Logging-Bereinigung: Bei der Protokollierung in eine Datei zeigt die Konsole nur minimale Startinformationen an → sauberere Ausgabe in Produktions-/Docker-Umgebungen.
v1.2.0
- 🛡️ Sicherheit: Die Validierung des Zugriffstokens erfolgt nun vor dem Herstellen einer Datenbankverbindung. Verbesserter Schutz gegen IP-Spoofing (Einstellung
TRUSTED_PROXIEShinzugefügt) und Verbergen interner Datenbankfehler vor dem Endbenutzer. - 📊 Isolierte Metriken: Der Prometheus-Endpunkt
/metricswurde von der öffentlichen API auf einen eigenen, sicheren Port verschoben (standardmäßig nur unter127.0.0.1:9090verfügbar). - 📦 Neue Installationsmöglichkeit: Das Projekt verfügt nun über einen offiziellen Homebrew-Tap für macOS und Linux. Builds werden signiert und über GoReleaser generiert.
- 📚 Überarbeitete Dokumentation: Komplett neues Erscheinungsbild basierend auf dem Hugo-Framework. Blitzschnelle Volltextsuche, Möglichkeit zum Kopieren von Code und Beispiele für den Produktiveinsatz (Nginx-Hardening, BYO JWT) hinzugefügt.
- ⚙️ Verbesserte Daemon-Verwaltung: Unterstützung für die benutzerdefinierte Pfadkonfiguration der
PID_FILEhinzugefügt.
v1.1.0
- 🔌 Vereinheitlichte API: Aufrufe über
POST /api/<db>(die aufgerufene Methode wird im JSON-RPC-Body angegeben). - ⚡ Echtzeit-Benachrichtigungen: Neuer Endpunkt
GET /sse/<db>?channels=...zum Abhören von Datenbankereignissen mit Mehrkanalunterstützung. - 📈 Observability (Beobachtbarkeit): Detaillierte Prometheus-Metriken für HTTP, Auth, JSON-RPC und SSE.
- 🏋️ Wesentliche Stabilitätsverbesserungen: Schutz vor langsamen Clients, strikte Timeouts und automatische Verbindungsbereinigung.