Nowości
Nowości
Bardziej szczegółowe informacje o zmianach w każdej wersji znajdziesz w GitHub Releases.
v3.0.0
- 🔑 Nowy endpoint logowania (breaking): metoda JSON-RPC
get_jwtzostała zastąpiona przezPOST /{prefix}/{database}/token, który przyjmuje login i hasło PostgreSQL jako uwierzytelnianie HTTP Basic — dane logowania nie podróżują już w treści żądania, a reverse proxy może ograniczać logowania według URL.get_jwtna/jsonrpcodpowiada teraz 404 /-32601. Migracja:curl -X POST …/token -u login:password. - 📥 Pobieranie plików: nowy endpoint
POST /{prefix}/{database}/filezwraca pliki binarne z funkcji PostgreSQL zwracających zbiory wierszy — jeden wiersz bezpośrednio, wiele wierszy jako strumieniowany ZIP — z tym samym uwierzytelnianiem, przełączaniem ról i limitem żądań co JSON-RPC.capabilities()raportujekind: "file". Zastosuj ponowniesql/schema.sql(jest idempotentny), aby uzyskać nowe pola. - 🧰 Narzędzia: nowy JWT Signer, który podpisuje tokeny lokalnie w przeglądarce z ręcznie wpisanego
JWT_SECRET(bez dostępu do sieci, sekret nigdy nie jest zapisywany), zrzuty ekranu i hostowane wersje każdego narzędzia (explorer.,sse-tester.,jwt-getter.,jwt-signer.pgarachne.com), klikalne karty i wzajemne odnośniki. Katalogi wtools/zmieniły nazwy naexplorer,jwt-getterisse-tester— zaktualizujSTATIC_FILES_PATH, jeśli je serwujesz. - 🐛 Poprawki i utwardzenie: funkcja zwracająca SQL
NULLdaje teraz"result": nullzamiast HTTP 500; ścieżki ZIP w/fileodrzucają nazwy wrogie Windows i kolizje bez rozróżniania wielkości liter; puste wyniki są wycofywane (rollback). - 📚 Dokumentacja i zależności: Quick Start krok po kroku, strona JSON-RPC jako czysta referencja, decyzja architektoniczna „Dlaczego PostgreSQL”, wskazówki dla reverse proxy przy dużych pobraniach i zaktualizowane moduły Go (aktualizacja bezpieczeństwa
golang.org/x/net).
v2.2.0
- 🔑 Opcjonalny JWT:
JWT_SECRETnie jest już wymagany. Bez niego obsługa JWT jest wyłączona (get_jwtzwraca 404 /-32601), a klienci używają danych HTTP Basic lub tokenów API. - 🛡️ Limit prób dla wszystkich metod uwierzytelniania (bezpieczeństwo):
LOGIN_RATE_LIMITobejmuje teraz także HTTP Basic i Bearer (JWT/token API) na wszystkich endpointach, nie tylkoget_jwt. Wcześniej hasła można było zgadywać bez ograniczeń przezAuthorization: Basic. - 🔒 Dostęp wyłącznie na podstawie uprawnień (breaking): usunięto
pgarachne.allowed_schemas().capabilities()(a tym samym MCPtools/listi eksport OpenAPI) wypisuje każdą funkcjęjsonb, którą wywołujący może wykonać i której schematu może używać. Tam, gdzie to niepożądane, odbierzEXECUTE/USAGE; zobacz stronę Bezpieczeństwo. - ⚠️ Inne zmiany niekompatybilne:
save_idempotency_keyprzyjmuje teraz zakres roli (przed aktualizacją binarki zastosuj ponowniesql/schema.sql),universal_update/universal_deleteodrzucają puste filtry, chyba że przekazano"all": true, auniversal_readwselectprzyjmuje tylko*lub zwykłe nazwy kolumn (zamyka lukę SQL injection). - 🐛 Poprawki: zakleszczenie SSE przy ponownym połączeniu listenera, wolne lub błędne logowania blokujące inne żądania, renderowanie argumentów w MCP
prompts/get, wadliwy komentarz funkcji psującycapabilities, wyniki „falsy” pokazywane w Explorerze jako błędy oraz XSS w widoku wyników Explorera. - 📚 Dokumentacja: nowy
llms-full.txt, karta GitHub Sponsors, podpowiedzi przy ikonach w pasku nawigacji; ta strona zawiera teraz także v2.0.3 i v2.1.0.
v2.1.0
- 📄 Eksport OpenAPI per metoda:
generate_openapi_spec()generuje teraz również jedną ścieżkę dokumentacyjną dla każdej udostępnionej metody, dla narzędzi oczekujących jednej operacji na ścieżkę (Swagger UI, Postman, generatory kodu). Nowy endpointopenapi.yamlzwraca tę samą specyfikację w formacie YAML. - 🔒 Uwierzytelniony eksport OpenAPI filtrowany według ról:
/openapi.jsonwymaga teraz tego samego uwierzytelnienia co/jsonrpci wyświetla tylko metody, które rola wywołującego może wykonać — wcześniej endpoint był niezabezpieczony i pokazywał wszystkie metody każdemu. - 🔌 Aktualizacja protokołu MCP: endpoint MCP obsługuje teraz wyłącznie wersję protokołu
2026-07-28; stary handshakeinitialize/pingnie jest już wspierany. Pełny opis znajdziesz wAGENTS.md. - 🐛 Poprawka poolu połączeń: pule połączeń uwierzytelniania bezpośredniego (Basic Auth) są teraz prawidłowo usuwane po bezczynności, co naprawia błąd, przez który rutynowa rotacja haseł mogła ostatecznie zablokować nowe dane uwierzytelniające.
- 📦 Aktualizacja zależności i CI: rutynowe odświeżenie zależności Go (wymaga teraz Go 1.26) oraz odpowiadające aktualizacje narzędzi CI.
v2.0.3
- 🔒 Wzmocnienie bezpieczeństwa: przełączanie ról nie buduje już zapytań SQL przez konkatenację ciągów znaków (używa teraz sparametryzowanej funkcji
set_config()), serwowanie plików statycznych rozwiązuje teraz ścieżki za pomocąos.Root, dzięki czemu dowiązanie symboliczne nie może wyjść poza serwowany katalog, zaostrzono uprawnienia plików logów/PID oraz zaostrzono walidację linków wyników wyszukiwania na stronie dokumentacji. - 🚀 Nowa strona Szybki start (wszystkie 10 języków): szybka ścieżka od instalacji do działającego endpointu, bez pełnego objazdu przez Instalację/Konfigurację.
- 📄 Odnajdywalność
llms.txt: linkowany ze strony głównej, strony MCP, README oraz nagłówka każdej strony, aby ułatwić jego znalezienie robotom LLM. - 🐛 Poprawki: przełącznik menu mobilnego poprawnie pokazuje teraz działający przycisk Home na szerokich ekranach, linki na niestandardowej stronie 404 rozwiązują się teraz poprawnie niezależnie od głębokości adresu URL, a menu mobilne zyskało pozycję „Home”.
v2.0.2
- 🔒 Wzmocnienie bezpieczeństwa: zamknięto kilka wyników analizy statycznej — klucze pamięci podręcznej poolu uwierzytelniania bezpośredniego używają teraz HMAC (a nie zwykłego SHA-256), dodano wyraźną weryfikację, że serwowane pliki statyczne nie mogą wyjść poza skonfigurowany katalog, ucieczkę HTML tekstu statusu logowania w narzędziu SSE Tester, listę dozwolonych schematów URL dla linków wyników wyszukiwania na stronie dokumentacji oraz uprawnienia o minimalnym zakresie w workflow CI.
- 📦 Aktualizacja zależności: zaktualizowano wszystkie zależności Go, w tym
gin-gonic/gindo v1.12.0 ilib/pqdo v1.12.3 (wymaga teraz Go 1.25). - 🌐 3 nowe języki: strona z dokumentacją jest już dostępna w języku polskim, ukraińskim i greckim — łącznie 10 języków.
v2.0.1
- 🔒 Poprawka bezpieczeństwa: zaktualizowano tranzytywną zależność HTTP/3
quic-godo wersji v0.59.1, zamykając podatność w rozszerzaniu trailerów QPACK, która mogła pozwolić złośliwej stronie na wyczerpanie pamięci serwera lub klienta. - 🎨 Usprawnienia strony z dokumentacją: nowy przełącznik motywu jasny/ciemny/automatyczny oraz ikonowy przełącznik języka, ikonowe odnośniki GitHub/Wsparcie w pasku nawigacji, poprawiono podwójnie zakodowane dane strukturalne JSON-LD oraz rozszerzono
llms.txt.
v2.0.0
- 🔒 Bezpieczne wartości domyślne (zmiana niekompatybilna):
DB_SSLMODEma teraz domyślną wartośćrequire,ALLOWED_ORIGINSjuż nie domyślnie ustawia się na*, aJWT_SECRETmusi mieć co najmniej 32 bajty. Istniejące wdrożenia muszą przed aktualizacją sprawdzić swoją konfigurację. - 🧹 Usunięcie przestarzałych elementów: usunięto trasy przekierowań
/api/…i/sse/…oraz przestarzały alias JSON-RPClogin. Używaj bezpośrednio/{prefix}/:database/…iget_jwt. - 🛡️ Ściślejsze uwierzytelnianie i obsługa błędów: nowy limit prób logowania na adres IP (
LOGIN_RATE_LIMIT_PER_IP) zamyka lukę umożliwiającą credential spraying, a błędy narzędzi MCP domyślnie już nie ujawniają surowego tekstu błędów PostgreSQL (można to przywrócić za pomocąMCP_SQL_ERROR_DETAIL). - ⚙️ Konfigurowalne limity połączeń: limit poolu połączeń dla uwierzytelniania bezpośredniego jest teraz konfigurowalny za pomocą
DIRECT_POOL_LIMIT. - 🔑 Wsparcie zewnętrznych dostawców identyfikacji (BYO JWT): nowe ustawienia
JWT_ISSUER,JWT_AUDIENCEiJWT_LEEWAYwiążą wydane tokeny z konkretnym wydawcą/odbiorcą i pozwalają dostroić tolerancję przesunięcia czasowego. - 🧰 Nowe narzędzia: samodzielny JWT Getter (
/tools/get-jwt) i SSE Tester (/tools/test-sse) dołączają do Explorer, umożliwiając szybkie testowanie manualne. - 🐛 Poprawki stabilności: naprawiono zawieszające się zamykanie SSE oraz błąd odzyskiwania martwych połączeń, który mógł uniemożliwić serwerowi ponowne połączenie z PostgreSQL.
- 🧪 Wzmocnienie CI: do każdej kompilacji dodano
golangci-lint, Go race detector orazgovulncheck, a także rozszerzono pokrycie testami. - 📦 Proces wydawania: dodano
CHANGELOG.mdi podzielono workflow wydawniczy namake release-local(kompilacja i weryfikacja) orazmake release(tagowanie, publikacja, aktualizacja Homebrew tap).
v1.3.0
- 🌐 PgArachne Explorer – nowoczesna PWA: kompletne odświeżenie wizualne i funkcjonalne – motyw ciemny/jasny (automatyczny), responsywny układ kart, podświetlanie składni JSON, przycisk kopiowania do schowka, lepsze UX uwierzytelniania (zakładki hasło/token), wsparcie instalacji PWA (manifest, ikony, service worker), odnośniki do udostępniania za pomocą parametru
?url=…. - 🛠️ Wsparcie Model Context Protocol (MCP): nowy endpoint
/{prefix}/{db}/mcpze standardowymi metodamiresources/list,resources/read,prompts/list,prompts/get– w pełni oparty na funkcjach PostgreSQL i ponownie wykorzystujący istniejące uwierzytelnianie oraz przełączanie ról. - 🔧 Konfigurowalny prefiks API: domyślna wartość zmieniona na
/db/{database}/jsonrpci/db/{database}/sse, a starsze ścieżki/api/…i/sse/…zachowane jako przekierowania 307 dla zgodności wstecznej. Kontrolowane za pomocą zmiennej środowiskowejAPI_PREFIX. - 🛡️ Ochrona idempotencji: opcjonalne pole
idempotencyKeyw żądaniach JSON-RPC – automatyczne wykrywanie duplikatów (HTTP 409 + kod błędu przy kolizji) za pomocąpgarachne.save_idempotency_key(). - 📚 Usprawnienia dokumentacji: nowa sekcja /tools/ z kartami (Explorer + zbliżający się macOS Toolbar), nowa strona „Architectural Decisions”, plik SECURITY.md z instrukcjami zgłaszania podatności, lepsza typografia we wszystkich językach dzięki TypoLima, poprawione wsparcie strony 404 dla GitHub Pages.
- 📝 Zmiana nazwy metody logowania: metoda JSON-RPC
loginzostała zmieniona naget_jwt(stara nazwa pozostaje jako przestarzały alias z ostrzeżeniem w logach). - 📊 Uporządkowanie logowania: przy logowaniu do pliku konsola wyświetla tylko minimalne informacje startowe → czystszy wynik w środowiskach produkcyjnych/docker.
v1.2.0
- 🛡️ Bezpieczeństwo: walidacja tokenów dostępu odbywa się teraz przed nawiązaniem połączenia z bazą danych. Ulepszona ochrona przed podszywaniem się pod adresy IP (dodano ustawienie
TRUSTED_PROXIES) oraz ukrywanie wewnętrznych błędów bazy danych przed użytkownikami końcowymi. - 📊 Izolowane metryki: endpoint Prometheus
/metricsprzeniesiono z publicznego API na własny zabezpieczony port (domyślnie dostępny tylko na127.0.0.1:9090). - 📦 Nowa opcja instalacji: projekt ma teraz oficjalny Homebrew tap dla macOS i Linux. Buildy są podpisywane i generowane za pomocą GoReleaser.
- 📚 Odświeżona dokumentacja: całkowicie nowy wygląd oparty na frameworku Hugo. Dodano błyskawiczne wyszukiwanie pełnotekstowe, możliwość kopiowania kodu oraz przykłady wdrożeń produkcyjnych (hardening Nginx, BYO JWT).
- ⚙️ Ulepszone zarządzanie demonem: dodano wsparcie dla konfiguracji własnej ścieżki
PID_FILE.
v1.1.0
- 🔌 Zunifikowane API: wszystkie wywołania przechodzą przez
POST /api/<db>(wywoływana metoda jest określana w treści JSON-RPC). - ⚡ Powiadomienia w czasie rzeczywistym: nowy endpoint
GET /sse/<db>?channels=...do nasłuchiwania zdarzeń bazy danych z obsługą wielu kanałów. - 📈 Obserwowalność: szczegółowe metryki Prometheus dla HTTP, uwierzytelniania, JSON-RPC i SSE.
- 🏋️ Istotne usprawnienia stabilności: ochrona przed wolnymi klientami, ścisłe limity czasowe i automatyczne czyszczenie połączeń.