Nowości
Nowości
Bardziej szczegółowe informacje o zmianach w każdej wersji znajdziesz w GitHub Releases.
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ń.