Novinky

7 min čtení

Novinky

Podrobnější informace o změnách v jednotlivých verzích naleznete přímo v GitHub Releases.

v3.0.0

  • 🔑 Nový přihlašovací endpoint (breaking): JSON-RPC metoda get_jwt je nahrazena POST /{prefix}/{database}/token, který přijímá PostgreSQL login a heslo jako HTTP Basic autentizaci — přihlašovací údaje už necestují v těle požadavku a reverzní proxy může omezovat přihlášení podle URL. get_jwt na /jsonrpc nyní vrací 404 / -32601. Migrace: curl -X POST …/token -u login:password.
  • 📥 Stahování souborů: nový endpoint POST /{prefix}/{database}/file vrací binární soubory z PostgreSQL funkcí vracejících množinu řádků — jeden řádek přímo, více řádků jako streamovaný ZIP — se stejnou autentizací, přepínáním rolí a rate limitem jako JSON-RPC. capabilities() hlásí kind: "file". Pro nová pole znovu aplikujte sql/schema.sql (je idempotentní).
  • 🧰 Nástroje: nový JWT Signer, který podepisuje tokeny lokálně v prohlížeči z ručně zadaného JWT_SECRET (bez síťového přístupu, klíč se nikdy neukládá), screenshoty a hostované verze všech nástrojů (explorer., sse-tester., jwt-getter., jwt-signer.pgarachne.com), klikací karty nástrojů a vzájemné odkazy. Složky v tools/ se přejmenovaly na explorer, jwt-getter a sse-tester — pokud je servírujete, upravte STATIC_FILES_PATH.
  • 🐛 Opravy a zpřísnění: funkce vracející SQL NULL nově vrací "result": null místo HTTP 500 a ZIP cesty v /file odmítají názvy nepřátelské Windows a kolize bez ohledu na velikost písmen; prázdné výsledky se vrací zpět (rollback).
  • 📚 Dokumentace a závislosti: Quick Start krok za krokem, stránka JSON-RPC jako čistá reference, architektonické rozhodnutí „Proč PostgreSQL“, doporučení pro reverzní proxy u velkých stahování a aktualizované Go moduly (bezpečnostní update golang.org/x/net).

v2.2.0

  • 🔑 Volitelné JWT: JWT_SECRET už není povinný. Bez něj je podpora JWT vypnutá (get_jwt vrací 404 / -32601) a klienti používají HTTP Basic přihlášení nebo API tokeny.
  • 🛡️ Omezení počtu pokusů pro všechny způsoby přihlášení (bezpečnost): LOGIN_RATE_LIMIT nově pokrývá i HTTP Basic a Bearer (JWT/API token) na všech endpointech, nejen get_jwt. Dříve šlo hesla bez omezení hádat přes Authorization: Basic.
  • 🔒 Přístup řízený pouze oprávněními (breaking): pgarachne.allowed_schemas() byla odstraněna. capabilities() (a tím i MCP tools/list a export OpenAPI) vypisuje každou jsonb funkci, kterou smí volající spustit a jejíž schéma smí používat. Kde to není žádoucí, odeberte EXECUTE/USAGE; viz stránka Zabezpečení.
  • ⚠️ Další breaking změny: save_idempotency_key nově přijímá rozsah (roli) – před upgradem binárky znovu aplikujte sql/schema.sql; universal_update/universal_delete odmítnou prázdné filtry, pokud není předáno "all": true; universal_read v select přijímá jen * nebo prosté názvy sloupců (uzavírá díru pro SQL injection).
  • 🐛 Opravy: deadlock SSE při reconnectu listeneru, pomalá nebo chybná přihlášení blokující ostatní požadavky, vykreslování argumentů v MCP prompts/get, vadný komentář funkce rozbíjející capabilities, „falsy“ výsledky zobrazené v Exploreru jako chyby a XSS ve výsledcích Exploreru.
  • 📚 Dokumentace: nový llms-full.txt, karta GitHub Sponsors, popisky ikon v navigaci a tato stránka nově uvádí i v2.0.3 a v2.1.0.

v2.1.0

  • 📄 Export OpenAPI po jednotlivých metodách: generate_openapi_spec() nyní navíc vygeneruje jednu dokumentační cestu pro každou vystavenou funkci — pro nástroje, které očekávají jednu operaci na cestu (Swagger UI, Postman, generátory kódu). Nový endpoint openapi.yaml vrací stejnou specifikaci ve formátu YAML.
  • 🔒 Autentizovaný a rolí filtrovaný OpenAPI export: /openapi.json nyní vyžaduje stejnou autentizaci jako /jsonrpc a vrací pouze metody, které smí volat role přihlášeného uživatele — dříve byl endpoint neautentizovaný a zobrazoval úplně všechny metody komukoliv.
  • 🔌 Aktualizace protokolu MCP: MCP endpoint nyní podporuje výhradně verzi protokolu 2026-07-28; starší handshake (initialize/ping) už není podporován. Úplný referenční popis najdete v AGENTS.md.
  • 🐛 Oprava poolu spojení: pooly přímé (Basic Auth) autentizace se nyní správně uvolňují, když jsou nečinné — opravuje problém, kdy běžná rotace hesel mohla časem znemožnit přihlášení novým uživatelům.
  • 📦 Aktualizace závislostí a CI: rutinní aktualizace Go závislostí (nyní vyžaduje Go 1.26) a odpovídající aktualizace CI nástrojů.

v2.0.3

  • 🔒 Zpevnění zabezpečení: přepínání rolí už neskládá SQL dotaz spojováním řetězců (používá parametrizovanou funkci set_config()), servírování statických souborů nyní prochází přes os.Root, takže symlink nemůže uniknout z nakonfigurované složky, zpřísněna oprávnění log/PID souborů a přísnější validace odkazů ve vyhledávání na webu s dokumentací.
  • 🚀 Nová stránka Rychlý start (všech 10 jazyků): rychlá cesta od instalace k funkčnímu endpointu bez zacházky přes kompletní Instalaci a Konfiguraci.
  • 📄 Lepší dohledatelnost llms.txt: odkazováno z domovské stránky, stránky MCP, README a hlavičky každé stránky, aby jej LLM prohledávače snadno našly.
  • 🐛 Opravy: přepínač mobilního menu nyní na širokých obrazovkách správně zobrazuje funkční tlačítko Domů, odkazy na vlastní stránce 404 se nyní správně vyhodnocují bez ohledu na hloubku URL a mobilní menu získalo položku „Domů“.

v2.0.2

  • 🔒 Zpevnění zabezpečení: Uzavřeno několik nálezů ze statické analýzy — cache klíče poolu přímé autentizace nyní používají HMAC (namísto pouhého SHA-256), přidána explicitní kontrola, že servírované statické soubory nemohou uniknout z nakonfigurované složky, HTML escapování stavového textu přihlášení v nástroji SSE Tester, whitelist URL schémat pro odkazy ve výsledcích vyhledávání na webu s dokumentací a oprávnění s nejmenšími právy pro CI workflow.
  • 📦 Aktualizace závislostí: Aktualizovány všechny Go závislosti, včetně gin-gonic/gin na v1.12.0 a lib/pq na v1.12.3 (nyní vyžaduje Go 1.25).
  • 🌐 3 nové jazyky: Web s dokumentací je nyní dostupný v polštině, ukrajinštině a řečtině — celkem 10 jazyků.

v2.0.1

  • 🔒 Bezpečnostní oprava: Aktualizována tranzitivní HTTP/3 závislost quic-go na v0.59.1, čímž se uzavírá zranitelnost v expanzi QPACK trailerů, která mohla útočníkovi umožnit vyčerpání paměti serveru nebo klienta.
  • 🎨 Vylepšení webu s dokumentací: Nový přepínač světlého/tmavého/automatického motivu a ikonový přepínač jazyků, ikonové odkazy GitHub/Podpora v navigaci, oprava duplicitně zakódovaných strukturovaných dat JSON-LD a rozšířený llms.txt.

v2.0.0

  • 🔒 Bezpečné výchozí hodnoty (bez zpětné kompatibility): DB_SSLMODE má nyní výchozí hodnotu require, ALLOWED_ORIGINS už nedefaultuje na * a JWT_SECRET musí mít alespoň 32 bajtů. Před upgradem je nutné zkontrolovat konfiguraci stávajících nasazení.
  • 🧹 Odstranění starých cest: Zrušeny přesměrovací cesty /api/… a /sse/… a zastaralý JSON-RPC alias login. Používejte přímo /{prefix}/:database/… a get_jwt.
  • 🛡️ Přísnější autentizace a chybové zprávy: Nový limit přihlašovacích pokusů na IP adresu (LOGIN_RATE_LIMIT_PER_IP) uzavírá mezeru pro credential spraying a chyby MCP nástrojů už standardně nevyzrazují surové chybové zprávy PostgreSQL (lze zapnout zpět pomocí MCP_SQL_ERROR_DETAIL).
  • ⚙️ Konfigurovatelné limity spojení: Limit poolu přímých (Basic Auth) spojení je nyní konfigurovatelný přes DIRECT_POOL_LIMIT.
  • 🔑 Podpora externích IdP (BYO JWT): Nová nastavení JWT_ISSUER, JWT_AUDIENCE a JWT_LEEWAY umožňují navázat vydané tokeny na konkrétního vydavatele/publikum a upravit toleranci časového posunu.
  • 🧰 Nové nástroje: Samostatný JWT Getter (/tools/get-jwt) a SSE Tester (/tools/test-sse) doplňují Explorer pro rychlé manuální testování.
  • 🐛 Opravy stability: Opraveno zaseknuté vypínání SSE a chyba v obnově mrtvého spojení, která mohla serveru znemožnit opětovné připojení k PostgreSQL.
  • 🧪 Zpřísnění CI: Do každého buildu přidán golangci-lint, Go race detector a govulncheck, rozšířeno testovací pokrytí.
  • 📦 Vydávací proces: Přidán CHANGELOG.md a rozdělen release workflow na make release-local (sestavení a ověření) a make release (tag, publikace, aktualizace Homebrew tapu).

v1.3.0

  • 🌐 PgArachne Explorer – moderní PWA: Kompletní vizuální a funkční obnova – tmavý/světlý motiv (automaticky), responzivní rozložení karet, zvýrazňování syntaxe JSON, tlačítko pro kopírování, lepší UX přihlašování (záložky heslo/token), podpora instalace PWA (manifest, ikony, service worker), sdílitelné odkazy pomocí parametru ?url=….
  • 🛠️ Podpora Model Context Protocol (MCP): Nový endpoint /{prefix}/{db}/mcp se standardními metodami resources/list, resources/read, prompts/list, prompts/get – plně podporovaný funkcemi PostgreSQL a znovu využívající stávající autentizaci a přepínání rolí.
  • 🔧 Konfigurovatelný prefix API: Výchozí hodnota změněna na /db/{database}/jsonrpc a /db/{database}/sse, původní cesty /api/… a /sse/… zůstaly zachovány jako přesměrování 307 pro zpětnou kompatibilitu. Řízeno proměnnou prostředí API_PREFIX.
  • 🛡️ Ochrana idempotence: Volitelné pole idempotencyKey v JSON-RPC požadavcích – automatická detekce duplicit (HTTP 409 + chybový kód při kolizi) pomocí pgarachne.save_idempotency_key().
  • 📚 Vylepšení dokumentace: Nová sekce /tools/ s kartami (Explorer + chystaný macOS Toolbar), nová stránka“Architectural Decisions”, SECURITY.md s instrukcemi pro hlášení zranitelností, lepší typografie ve všech jazycích díky TypoLima, vylepšená podpora stránky 404 pro GitHub Pages.
  • 📝 Přejmenování metody přihlášení: JSON-RPC metoda login byla přejmenována na get_jwt (starý název zůstává jako zastaralý alias s varováním v logu).
  • 📊 Vyčištění logování: Při logování do souboru se na konzoli zobrazují pouze minimální informace o spuštění → čistší výstup v produkčních/docker prostředích.

v1.2.0

  • 🛡️ Bezpečnost: Validace přístupových tokenů probíhá ještě před navázáním spojení s databází. Zlepšena ochrana proti podvržení IP adres (přidáno nastavení TRUSTED_PROXIES) a skrytí interních databázových chyb před koncovým uživatelem.
  • 📊 Izolované metriky: Prometheus endpoint /metrics se přesunul z veřejného API na vlastní zabezpečený port (ve výchozím stavu dostupný pouze na 127.0.0.1:9090).
  • 📦 Nová možnost instalace: Projekt má nyní oficiální Homebrew tap pro macOS a Linux. Buildy jsou podepsané a generované přes GoReleaser.
  • 📚 Přepracovaná dokumentace: Zcela nový vzhled postavený na frameworku Hugo. Přidáno bleskové full-textové vyhledávání, možnost kopírování kódu a příklady pro produkční nasazení (Nginx hardening, BYO JWT).
  • ⚙️ Vylepšená správa démona: Přidána podpora pro vlastní konfiguraci cesty k PID_FILE.

v1.1.0

  • 🔌 Sjednocené API: Volání přes POST /api/<db> (volaná metoda je specifikována v JSON-RPC body).
  • ⚡ Real-time notifikace: Nový endpoint GET /sse/<db>?channels=... pro poslouchání událostí z databáze s podporou více kanálů.
  • 📈 Pozorovatelnost: Podrobné Prometheus metriky pro HTTP, auth, JSON-RPC a SSE.
  • 🏋️ Zásadní zvýšení stability: Ochrana proti pomalým klientům, přísné časové limity a automatické čištění spojení.