Nowości

4 min czytania

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/gin do v1.12.0 i lib/pq do 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-go do 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_SSLMODE ma teraz domyślną wartość require, ALLOWED_ORIGINS już nie domyślnie ustawia się na *, a JWT_SECRET musi 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-RPC login. Używaj bezpośrednio /{prefix}/:database/… i get_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_AUDIENCE i JWT_LEEWAY wiążą 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 oraz govulncheck, a także rozszerzono pokrycie testami.
  • 📦 Proces wydawania: dodano CHANGELOG.md i podzielono workflow wydawniczy na make release-local (kompilacja i weryfikacja) oraz make 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}/mcp ze standardowymi metodami resources/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}/jsonrpc i /db/{database}/sse, a starsze ścieżki /api/… i /sse/… zachowane jako przekierowania 307 dla zgodności wstecznej. Kontrolowane za pomocą zmiennej środowiskowej API_PREFIX.
  • 🛡️ Ochrona idempotencji: opcjonalne pole idempotencyKey w żą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 login została zmieniona na get_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 /metrics przeniesiono z publicznego API na własny zabezpieczony port (domyślnie dostępny tylko na 127.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ń.