Τι Νέο Υπάρχει

8 λεπτά ανάγνωσης

Τι Νέο Υπάρχει

Πιο αναλυτικές πληροφορίες σχετικά με τις αλλαγές σε κάθε έκδοση μπορείτε να βρείτε στα GitHub Releases.

v3.0.0

  • 🔑 Νέο endpoint σύνδεσης (breaking): η μέθοδος JSON-RPC get_jwt αντικαθίσταται από το POST /{prefix}/{database}/token, που δέχεται το login και τον κωδικό PostgreSQL ως HTTP Basic authentication — τα διαπιστευτήρια δεν ταξιδεύουν πλέον στο σώμα του αιτήματος και ένας reverse proxy μπορεί να περιορίζει τις συνδέσεις ανά URL. Το get_jwt στο /jsonrpc απαντά πλέον 404 / -32601. Μετάβαση: curl -X POST …/token -u login:password.
  • 📥 Λήψη αρχείων: το νέο endpoint POST /{prefix}/{database}/file σερβίρει δυαδικά αρχεία από συναρτήσεις PostgreSQL που επιστρέφουν σύνολα γραμμών — μία γραμμή απευθείας, πολλές γραμμές ως ZIP σε streaming — με την ίδια πιστοποίηση, εναλλαγή ρόλου και περιορισμό ρυθμού όπως το JSON-RPC. Η capabilities() αναφέρει kind: "file". Εφαρμόστε ξανά το sql/schema.sql (είναι idempotent) για τα νέα πεδία.
  • 🧰 Εργαλεία: νέο JWT Signer, που υπογράφει tokens τοπικά στο πρόγραμμα περιήγησης από χειροκίνητα εισαγόμενο JWT_SECRET (χωρίς πρόσβαση στο δίκτυο, το μυστικό δεν αποθηκεύεται ποτέ), στιγμιότυπα οθόνης και φιλοξενούμενες εκδόσεις κάθε εργαλείου (explorer., sse-tester., jwt-getter., jwt-signer.pgarachne.com), κλικαρίσιμες κάρτες και αμοιβαίοι σύνδεσμοι. Οι φάκελοι στο tools/ μετονομάστηκαν σε explorer, jwt-getter και sse-tester — ενημερώστε το STATIC_FILES_PATH αν τους σερβίρετε.
  • 🐛 Διορθώσεις και ενίσχυση: μια συνάρτηση που επιστρέφει SQL NULL δίνει πλέον "result": null αντί για HTTP 500· οι διαδρομές ZIP του /file απορρίπτουν ονόματα εχθρικά προς τα Windows και συγκρούσεις χωρίς διάκριση πεζών/κεφαλαίων· τα κενά αποτελέσματα αναιρούνται (rollback).
  • 📚 Τεκμηρίωση και εξαρτήσεις: Quick Start βήμα προς βήμα, η σελίδα JSON-RPC ως καθαρή αναφορά, η αρχιτεκτονική απόφαση «Γιατί PostgreSQL», οδηγίες reverse proxy για μεγάλες λήψεις και ενημερωμένα modules Go (ενημέρωση ασφαλείας του golang.org/x/net).

v2.2.0

  • 🔑 Προαιρετικό JWT: το JWT_SECRET δεν είναι πλέον υποχρεωτικό. Χωρίς αυτό το JWT απενεργοποιείται (το get_jwt επιστρέφει 404 / -32601) και οι πελάτες χρησιμοποιούν διαπιστευτήρια HTTP Basic ή API tokens.
  • 🛡️ Περιορισμός προσπαθειών για όλες τις μεθόδους ταυτοποίησης (ασφάλεια): το LOGIN_RATE_LIMIT καλύπτει πλέον και HTTP Basic και Bearer (JWT/API token) σε όλα τα endpoints, όχι μόνο το get_jwt. Παλαιότερα οι κωδικοί μπορούσαν να μαντευτούν χωρίς όριο μέσω Authorization: Basic.
  • 🔒 Πρόσβαση μόνο με βάση τα δικαιώματα (breaking): το pgarachne.allowed_schemas() αφαιρέθηκε. Το capabilities() (και μαζί του το MCP tools/list και η εξαγωγή OpenAPI) εμφανίζει κάθε συνάρτηση jsonb που ο καλών μπορεί να εκτελέσει και της οποίας το σχήμα μπορεί να χρησιμοποιήσει. Ανακαλέστε EXECUTE/USAGE όπου δεν το επιθυμείτε· δείτε τη σελίδα Ασφάλεια.
  • ⚠️ Άλλες ασύμβατες αλλαγές: το save_idempotency_key δέχεται πλέον πεδίο ανά ρόλο (εφαρμόστε ξανά το sql/schema.sql πριν αναβαθμίσετε το εκτελέσιμο), τα universal_update/universal_delete απορρίπτουν κενά φίλτρα εκτός αν δοθεί "all": true, και το universal_read δέχεται στο select μόνο * ή απλά ονόματα στηλών (κλείνει ένα κενό SQL injection).
  • 🐛 Διορθώσεις: αδιέξοδο (deadlock) του SSE κατά την επανασύνδεση του listener, αργές ή αποτυχημένες συνδέσεις που μπλόκαραν άλλα αιτήματα, απόδοση ορισμάτων στο MCP prompts/get, κακοσχηματισμένο σχόλιο συνάρτησης που χαλούσε το capabilities, αποτελέσματα «falsy» που εμφανίζονταν ως σφάλματα στον Explorer και ένα XSS στην προβολή αποτελεσμάτων του Explorer.
  • 📚 Τεκμηρίωση: νέο llms-full.txt, κάρτα GitHub Sponsors, tooltips στα εικονίδια της γραμμής πλοήγησης· η σελίδα αυτή περιλαμβάνει πλέον και τα v2.0.3 και v2.1.0.

v2.1.0

  • 📄 Εξαγωγή OpenAPI ανά μέθοδο: Η generate_openapi_spec() παράγει πλέον και μία διαδρομή τεκμηρίωσης-μόνο ανά εκτεθειμένη μέθοδο, για εργαλεία που αναμένουν μία λειτουργία (operation) ανά διαδρομή (Swagger UI, Postman, codegen). Ένα νέο endpoint openapi.yaml επιστρέφει το ίδιο spec σε μορφή YAML.
  • 🔒 Πιστοποιημένη εξαγωγή OpenAPI με φιλτράρισμα ανά ρόλο: Το /openapi.json απαιτεί πλέον την ίδια πιστοποίηση με το /jsonrpc και παραθέτει μόνο τις μεθόδους που επιτρέπεται να εκτελέσει ο ρόλος του καλούντος — προηγουμένως το endpoint ήταν μη πιστοποιημένο και παρέθετε όλες τις μεθόδους σε οποιονδήποτε.
  • 🔌 Αναβάθμιση πρωτοκόλλου MCP: Το endpoint MCP υποστηρίζει πλέον αποκλειστικά την έκδοση πρωτοκόλλου 2026-07-28· η παλιά χειραψία initialize/ping δεν υποστηρίζεται πλέον. Δείτε το AGENTS.md για την πλήρη αναφορά.
  • 🐛 Διόρθωση δεξαμενής συνδέσεων: Οι δεξαμενές συνδέσεων άμεσης αυθεντικοποίησης (Basic Auth) εκκαθαρίζονται πλέον σωστά όταν παραμένουν αδρανείς, διορθώνοντας ένα ζήτημα όπου η τακτική εναλλαγή κωδικών πρόσβασης μπορούσε τελικά να κλειδώσει έξω νέα διαπιστευτήρια.
  • 📦 Ενημερώσεις εξαρτήσεων και CI: Τακτική ανανέωση εξαρτήσεων Go (απαιτεί πλέον Go 1.26) και αντίστοιχες αναβαθμίσεις εργαλείων CI.

v2.0.3

  • 🔒 Ενίσχυση ασφαλείας: Η εναλλαγή ρόλων δεν δημιουργεί πλέον SQL μέσω συνένωσης συμβολοσειρών (χρησιμοποιεί αντ’ αυτού την παραμετροποιημένη συνάρτηση set_config()), η εξυπηρέτηση στατικών αρχείων πλέον επιλύει τις διαδρομές μέσω του os.Root ώστε ένας symlink να μην μπορεί να διαφύγει από τον εξυπηρετούμενο κατάλογο, αυστηροποιήθηκαν τα δικαιώματα των αρχείων log/PID, και ενισχύθηκε η επικύρωση των συνδέσμων αποτελεσμάτων αναζήτησης του ιστότοπου τεκμηρίωσης.
  • 🚀 Νέα σελίδα Γρήγορης Εκκίνησης (και στις 10 γλώσσες): Μια γρήγορη διαδρομή από την εγκατάσταση σε ένα λειτουργικό endpoint, χωρίς την πλήρη παράκαμψη Εγκατάστασης/Ρύθμισης.
  • 📄 Ανακαλυψιμότητα του llms.txt: Συνδέεται πλέον από την αρχική σελίδα, τη σελίδα MCP, το README, και την κεφαλίδα κάθε σελίδας, ώστε οι crawlers LLM να μπορούν να το εντοπίσουν.
  • 🐛 Διορθώσεις: Ο εναλλάκτης του μενού για κινητά εμφανίζει πλέον σωστά ένα λειτουργικό κουμπί Αρχικής σε ευρείες οθόνες, οι σύνδεσμοι της προσαρμοσμένης σελίδας 404 πλέον επιλύονται σωστά ανεξάρτητα από το βάθος του URL, και το μενού για κινητά απέκτησε μια καταχώριση «Αρχική».

v2.0.2

  • 🔒 Ενίσχυση ασφαλείας: Διορθώθηκαν αρκετά ευρήματα στατικής ανάλυσης — τα κλειδιά cache της δεξαμενής άμεσης αυθεντικοποίησης χρησιμοποιούν πλέον HMAC (αντί για απλό SHA-256), προστέθηκε ρητός έλεγχος περιορισμού για την εξυπηρέτηση στατικών αρχείων, HTML-escaping του κειμένου κατάστασης σύνδεσης στο SSE Tester, μια λίστα επιτρεπόμενων σχημάτων URL για τους συνδέσμους αποτελεσμάτων αναζήτησης του ιστότοπου τεκμηρίωσης, και δικαιώματα ελάχιστου προνομίου στο workflow CI.
  • 📦 Ενημερώσεις εξαρτήσεων: Αναβαθμίστηκαν όλες οι εξαρτήσεις Go, συμπεριλαμβανομένου του gin-gonic/gin στην v1.12.0 και του lib/pq στην v1.12.3 (απαιτεί πλέον Go 1.25).
  • 🌐 3 νέες γλώσσες: Ο ιστότοπος τεκμηρίωσης είναι πλέον διαθέσιμος στα Πολωνικά, Ουκρανικά και Ελληνικά — 10 γλώσσες συνολικά.

v2.0.1

  • 🔒 Διόρθωση ασφαλείας: Αναβαθμίστηκε η μεταβατική εξάρτηση HTTP/3 quic-go στην έκδοση v0.59.1, κλείνοντας μια ευπάθεια επέκτασης QPACK trailer που θα μπορούσε να επιτρέψει σε έναν κακόβουλο peer να εξαντλήσει τη μνήμη στον server ή στον client.
  • 🎨 Βελτιώσεις στον ιστότοπο τεκμηρίωσης: Νέος εναλλάκτης θέματος light/dark/auto και εναλλάκτης γλώσσας μόνο με εικονίδιο, εικονίδια-συνδέσμους GitHub/Support στη γραμμή πλοήγησης, διόρθωση διπλά κωδικοποιημένων δομημένων δεδομένων JSON-LD, και επέκταση του llms.txt.

v2.0.0

  • 🔒 Ασφαλείς προεπιλογές (breaking): Το DB_SSLMODE έχει πλέον προεπιλογή require, το ALLOWED_ORIGINS δεν έχει πλέον προεπιλογή *, και το JWT_SECRET πρέπει να είναι τουλάχιστον 32 bytes. Οι υπάρχουσες εγκαταστάσεις πρέπει να ελέγξουν τη ρύθμισή τους πριν από την αναβάθμιση.
  • 🧹 Καθαρισμός παλαιού κώδικα: Αφαιρέθηκαν οι διαδρομές ανακατεύθυνσης /api/… και /sse/… και το ξεπερασμένο JSON-RPC alias login. Χρησιμοποιήστε απευθείας τα /{prefix}/:database/… και get_jwt.
  • 🛡️ Αυστηρότερη πιστοποίηση & χειρισμός σφαλμάτων: Νέο όριο ρυθμού συνδέσεων ανά IP (LOGIN_RATE_LIMIT_PER_IP) κλείνει ένα κενό ασφαλείας απέναντι σε credential spraying, και τα σφάλματα εργαλείων MCP δεν διαρρέουν πλέον το ανεπεξέργαστο κείμενο σφάλματος της PostgreSQL από προεπιλογή (μπορείτε να το ενεργοποιήσετε ξανά με το MCP_SQL_ERROR_DETAIL).
  • ⚙️ Ρυθμιζόμενα όρια συνδέσεων: Το ανώτατο όριο του connection pool για άμεση πιστοποίηση είναι πλέον ρυθμιζόμενο μέσω του DIRECT_POOL_LIMIT.
  • 🔑 Υποστήριξη εξωτερικού IdP (BYO JWT): Οι νέες ρυθμίσεις JWT_ISSUER, JWT_AUDIENCE, και JWT_LEEWAY συνδέουν τα εκδοθέντα tokens με συγκεκριμένο εκδότη/audience και ρυθμίζουν την ανοχή απόκλισης ρολογιού.
  • 🧰 Νέα εργαλεία: Ένα αυτόνομο JWT Getter (/tools/get-jwt) και SSE Tester (/tools/test-sse) προστίθενται στο Explorer για ταχεία χειροκίνητη δοκιμή.
  • 🐛 Διορθώσεις αξιοπιστίας: Διορθώθηκε ένα κολλημένο shutdown SSE και ένα σφάλμα ανάκτησης νεκρής σύνδεσης που μπορούσε να αφήσει τον server ανίκανο να επανασυνδεθεί στην PostgreSQL.
  • 🧪 Ενίσχυση CI: Προστέθηκαν τα golangci-lint, ο Go race detector, και το govulncheck σε κάθε build, μαζί με διευρυμένη κάλυψη δοκιμών.
  • 📦 Διαδικασία έκδοσης: Προστέθηκε το CHANGELOG.md και το release workflow χωρίστηκε σε make release-local (build & επαλήθευση) και make release (tag, δημοσίευση, ενημέρωση του Homebrew tap).

v1.3.0

  • 🌐 PgArachne Explorer – μοντέρνο PWA: Πλήρης οπτική & λειτουργική ανανέωση – θέμα dark/light (αυτόματο), responsive διάταξη καρτών, επισήμανση σύνταξης JSON, κουμπί αντιγραφής στο clipboard, καλύτερη εμπειρία χρήστη πιστοποίησης (καρτέλες κωδικού/token), υποστήριξη εγκατάστασης PWA (manifest, εικονίδια, service worker), κοινοποιήσιμοι σύνδεσμοι μέσω της παραμέτρου ?url=….
  • 🛠️ Υποστήριξη Model Context Protocol (MCP): Νέο endpoint /{prefix}/{db}/mcp με τυπικές μεθόδους resources/list, resources/read, prompts/list, prompts/get – πλήρως υποστηριζόμενο από συναρτήσεις PostgreSQL και επαναχρησιμοποιώντας την υπάρχουσα πιστοποίηση & εναλλαγή ρόλων.
  • 🔧 Ρυθμιζόμενο πρόθεμα API: Η προεπιλογή άλλαξε σε /db/{database}/jsonrpc και /db/{database}/sse, με τις παλαιές διαδρομές /api/… και /sse/… να διατηρούνται ως ανακατευθύνσεις 307 για συμβατότητα με το παρελθόν. Ελέγχεται μέσω της μεταβλητής περιβάλλοντος API_PREFIX.
  • 🛡️ Προστασία idempotency: Προαιρετικό πεδίο idempotencyKey στα αιτήματα JSON-RPC – αυτόματη ανίχνευση διπλότυπων (HTTP 409 + κωδικός σφάλματος σε σύγκρουση) χρησιμοποιώντας το pgarachne.save_idempotency_key().
  • 📚 Βελτιώσεις τεκμηρίωσης: Νέα ενότητα /tools/ με κάρτες (Explorer + επικείμενο macOS Toolbar), νέα σελίδα «Architectural Decisions», SECURITY.md με οδηγίες αναφοράς ευπαθειών, καλύτερη τυπογραφία σε όλες τις γλώσσες μέσω του TypoLima, βελτιωμένη υποστήριξη σελίδας 404 για το GitHub Pages.
  • 📝 Μετονομασία μεθόδου σύνδεσης: Η μέθοδος JSON-RPC login μετονομάστηκε σε get_jwt (το παλιό όνομα διατηρείται ως ξεπερασμένο alias με προειδοποίηση στα logs).
  • 📊 Καθαρισμός καταγραφής: Κατά την καταγραφή σε αρχείο, η κονσόλα εμφανίζει μόνο ελάχιστες πληροφορίες εκκίνησης → καθαρότερη έξοδος σε περιβάλλοντα παραγωγής/docker.

v1.2.0

  • 🛡️ Ασφάλεια: Η επαλήθευση του access token πραγματοποιείται πλέον πριν από τη δημιουργία σύνδεσης με τη βάση δεδομένων. Βελτιωμένη προστασία έναντι IP spoofing (προστέθηκε η ρύθμιση TRUSTED_PROXIES) και απόκρυψη εσωτερικών σφαλμάτων βάσης δεδομένων από τους τελικούς χρήστες.
  • 📊 Απομονωμένες μετρήσεις: Το endpoint Prometheus /metrics μετακινήθηκε από το δημόσιο API στη δική του ασφαλή θύρα (διαθέσιμο εξ ορισμού μόνο στο 127.0.0.1:9090).
  • 📦 Νέα επιλογή εγκατάστασης: Το έργο διαθέτει πλέον επίσημο Homebrew tap για macOS και Linux. Τα builds είναι υπογεγραμμένα και δημιουργούνται μέσω του GoReleaser.
  • 📚 Ανασχεδιασμένη τεκμηρίωση: Εντελώς νέα εμφάνιση βασισμένη στο framework Hugo. Προστέθηκε αστραπιαία αναζήτηση πλήρους κειμένου, δυνατότητα αντιγραφής κώδικα, και παραδείγματα ανάπτυξης σε παραγωγικό περιβάλλον (Nginx hardening, BYO JWT).
  • ⚙️ Βελτιωμένη διαχείριση daemon: Προστέθηκε υποστήριξη για προσαρμοσμένη ρύθμιση διαδρομής PID_FILE.

v1.1.0

  • 🔌 Ενοποιημένο API: Όλες οι κλήσεις γίνονται μέσω POST /api/<db> (η καλούμενη μέθοδος καθορίζεται στο σώμα JSON-RPC).
  • ⚡ Ειδοποιήσεις σε πραγματικό χρόνο: Νέο endpoint GET /sse/<db>?channels=... για ακρόαση συμβάντων βάσης δεδομένων με υποστήριξη πολλών καναλιών.
  • 📈 Παρατηρησιμότητα: Λεπτομερείς μετρήσεις Prometheus για HTTP, auth, JSON-RPC, και SSE.
  • 🏋️ Σημαντικές βελτιώσεις σταθερότητας: Προστασία έναντι αργών clients, αυστηρά timeouts, και αυτόματος καθαρισμός συνδέσεων.