Changelog
Select a version below to view the full changelog.
Note: The changelog for versions older than 3.0 can be found here: Changelog Archive
Version 3.17 (Latest)
| Version | Date |
|---|---|
| v3.17.0 | 2026-06-10 |
- New plugin
NpgsqlRest.Mcp— expose opted-in PostgreSQL routines as MCP tools (tools/list/tools/callover Streamable HTTP) via the@mcpannotation; a bare@mcpwith no HTTP tag is an MCP-only tool with no public route - MCP OAuth 2.1 resource-server authorization: Protected Resource Metadata (RFC 9728), audience binding (RFC 8707), per-tool
@authorizeenforcement ontools/call - Neutral plugin extension points on
RoutineEndpoint(HandleCommentLine,Items,UnhandledCommentLines) and newCommentsMode.OnlyAnnotated(now the client default) - New:
{name}annotation substitution can resolve allowlisted environment variables (NpgsqlRest:AvailableEnvVars); matching is now case-insensitive, unknown placeholders log a build-time warning - New: optional
{NAME}and required{!NAME}environment-variable placeholders in config values — missing optional variables no longer crash typed reads - Breaking: safer configuration defaults —
Cors:AllowCredentialsis nowfalse, passkeyUserVerificationRequirement/ResidentKeyRequirementdefault to"required",TestConnectionStringsdefaults totrue - Breaking (C# API only):
RoutineEndpoint.OpenApiHide/OpenApiTagsremoved — the OpenAPI plugin parses the@openapiannotation itself; annotation users are unaffected - 🔴 Security fix: SSE per-event
USING HINTscopes were not enforced — hint-scoped events were delivered to every subscriber; upgrade strongly recommended for hint-based SSE scoping - Fix: bare
@cached(no parameter list) keyed only on the routine name, serving the first cached response to all inputs - Fix: HybridCache silently bypassed the cache on null cached parameters (
Cache key contains invalid content) - Fix: malformed JSON request body now returns
400 Bad Request(was404) - Fix: JSON command parameters accept
json,jsonb, ortexttarget types
Version 3.16
New:
AvailableEnvVarsunderStaticFiles:ParseContentOptionstemplates environment-variable values into served static content (same{NAME}tags as claims) — build a SPA bundle once, inject per-environment values from pod env vars at bootNew: rate-limiter rejection
StatusCode/StatusMessageare now overridable per policy (the global values stay as defaults); ships a ready-to-use disabledlogin_throttlepolicyFix: cache stampede protection now actually fires for cached routine responses (
IRoutineCache.GetOrCreateAsync); a burst of identical cold-cache requests collapses to a single database executionFix: JSON-to-parameter parsers for
timestamp,timestamptz,time, andtimetzare now host-TZ-independent (silent host-offset shift removed)Fix:
TryParseDatefalls back to aDateTimeparse whenDateOnlyrejects offset/Z-bearing inputsBreaking: JSON timestamps are now interpreted as UTC by default (naive ISO strings assumed UTC,
Z/ offset-bearing strings converted to UTC)New
NpgsqlRest:JsonTimestampsAreUtcconfig key — opt-out escape hatch to restore the pre-3.16.0 host-local interpretation
Version 3.15
- Auth: named cookie schemes now actually authenticate requests (cookie-aware policy-scheme dispatch)
- New
Auth:CookieSameSiteandAuth:CookieSecureconfig keys for cross-origin SPA / mobile clients (root + per-scheme) - OpenAPI filtering:
IncludeSchemas,ExcludeSchemas,NameSimilarTo,NameNotSimilarTo,RequiresAuthorizationOnly - New
@openapiannotation —@openapi hideand@openapi tag <name>for per-routine OpenAPI control - Fix:
Auth:Schemeskeys validated byType, not by name — custom schemes named like the docs examples no longer fail startup (3.15.1) - Fix:
--configand--validateCLI commands honorValidateConfigKeysmode (3.15.1) - Fix:
RateLimiterOptions:PoliciesandCacheOptions:Profilesvalidate by shape — custom policy / profile names no longer fail startup underValidateConfigKeys: "Error"(3.15.2) - Improvement:
ValidationOptions:Rulesrule bodies validated for typos (3.15.2)
Version 3.14
| Version | Date |
|---|---|
| v3.14.0 | 2026-05-09 |
- Standalone client no longer wires the
NpgsqlRest.CrudSourceplugin (library use unchanged) - New SSE annotations
@sse_publishand@sse_subscribe— split publisher and subscriber roles - Warning when a
RAISElooks like a missed@sse_publish - Reliable SSE connection handshake
- Startup error when claim-mapped parameters use a non-text type
- Warning when a request value is overridden by claim auto-bind
- Lower-allocation JSON conversion for arrays and composites
- Hardening:
ArrayPoolrentals released intry/finally, column-decryption failures logged at Trace
Version 3.13
| Version | Date |
|---|---|
| v3.13.0 | 2026-04-24 |
- Auth Schemes — named additional authentication schemes (Cookies / BearerToken / Jwt)
- Login functions can select a scheme via the
schemecolumn
Version 3.12
| Version | Date |
|---|---|
| v3.12.0 | 2026-03-23 |
- New endpoint source plugin:
NpgsqlRest.SqlFileSource— generate REST API endpoints directly from.sqlfiles - Multi-command SQL files with batched execution and named result sets
- New
@param/@parameterannotation for renaming and retyping parameters across all endpoint types - Glob pattern
**recursive matching support - Interface refactoring:
IEndpointSource/IRoutineSourcesplit - TsClient: multi-command SQL file endpoint support
- Composite type cache public API
Version 3.11
proxy_outannotation (post-execution proxy)- TsClient:
proxyandproxy_outpassthrough endpoint support authorizeannotation now matches user ID and user name claims
Version 3.10
| Version | Date |
|---|---|
| v3.10.0 | 2026-02-25 |
- Resolved parameter expressions for server-side secret handling
- HTTP Client Type retry logic (
@retry_delay) - Data Protection encrypt/decrypt annotations
Version 3.9
| Version | Date |
|---|---|
| v3.9.0 | 2026-02-23 |
- Commented configuration output (
--config) - Configuration search and filter (
--config [filter]) - CLI improvements and test suite
Version 3.8
| Version | Date |
|---|---|
| v3.8.0 | 2025-02-11 |
- Configuration key validation
- Optional path parameters
- Machine-readable CLI commands for tool integration
- Universal
fallback_handlerfor all upload handlers
Version 3.7
| Version | Date |
|---|---|
| v3.7.0 | 2025-02-07 |
- Pluggable table format renderers (HTML, Excel)
- TsClient per-endpoint URL export control
- Excel upload handler
fallback_handler
Version 3.6
- Security headers middleware
- Forwarded headers middleware
- Health check endpoints
- PostgreSQL statistics endpoints
Version 3.5
| Version | Date |
|---|---|
| v3.5.0 | 2025-01-28 |
- PasskeyAuth (WebAuthn/FIDO2)
- Response compression fix for static files
- Separate core and client logging
Version 3.4
- Composite type support (arrays, nested JSON)
- Deep nested composite type resolution
- Multidimensional array support
- Performance optimizations (type category lookup, StringBuilder pooling, CancellationToken propagation)
Version 3.3
- Parameter validation
- Linux ARM64 build and Docker image
- Proxy response caching
- Optional
@prefix for comment annotations
Version 3.2
- Reverse proxy feature
- JWT authentication support
- HybridCache support
- Docker image with Bun runtime
Version 3.1
- HTTP Types (external API calls from PostgreSQL functions)
- Path parameters support
- SIMD-accelerated string processing
- Routine caching improvements
- Multi-host connection support
Version 3.0
- .NET 10 target framework
- Rate limiter
- OpenAPI 3.0 support
- Error handling improvements (RFC 7807 Problem Details)
- TsClient improvements
- SSE (Server-Sent Events) naming refactor