Skip to content
Written with Claude
IMPORTANT

As you may notice, this page and pretty much the entire website were obviously created with the help of AI. I wonder how you could tell? Was it a big "Written With Claude" badge on every page? I moved it to the top now (with the help of AI of course) to make it even more obvious. There are a few blogposts that were written by me manually, the old-fashioned way, I hope there will be more in the future, and those have a similar "Human Written" badge. This project (not the website), on the other hand, is a very, very different story. It took me more than two years of painstaking and unpaid work in my own free time. A story that, hopefully, I will tell someday. But meanwhile, what would you like me to do? To create a complex documentation website with a bunch of highly technical articles with the help of AI and fake it, to give you an illusion that I also did that manually? Like the half of itnernet is doing at this point? How does that makes any sense? Is that even fair to you? Or maybe to create this website manually, the old-fashioned way, just for you? While working a paid job for a salary, most of you wouldn't even get up in the morning. Would you like me to sing you a song while we're at it? For your personal entertainment? Seriously, get a grip. Do you find this information less valuable because of the way this website was created? I give my best to fix it to keep the information as accurate as possible, and I think it is very accurate at this point. If you find some mistakes, inaccurancies or problems, there is a comment section at the bottom of every page, which I also made with the help of the AI. And I woould very much appreciate if you leave your feedback there. Look, I'm just a guy who likes SQL, that's all. If you don't approve of how this website was constructed and the use of AI tools, I suggest closing this page and never wever coming back. And good riddance. And I would ban your access if I could know how. Thank you for your attention to this matter.

Changelog v3.5.0 (2025-01-28)

Version 3.5.0 (2025-01-28)

Full Changelog

New Feature: PasskeyAuth (WebAuthn/FIDO2)

Added WebAuthn/FIDO2 Passkey Authentication support, enabling phishing-resistant, passwordless authentication using device-native biometrics or PINs. This feature allows users to authenticate using passkeys stored on their devices without requiring any external authentication libraries.

Bugfix: Response Compression for Static Files

Fixed an issue where ResponseCompression middleware was not compressing static files served by AppStaticFileMiddleware. The middleware was setting Content-Length header before writing the response body, which prevented the compression middleware from compressing the response. Also added text/javascript to the default list of compressible MIME types.

Added Client Integration Tests

Added automated integration tests for NpgsqlRestClient configuration features to catch configuration bugs in the CI/CD pipeline:

  • ResponseCompression Tests - Verify compression works correctly for static files and API responses
  • CORS Tests - Verify CORS headers, preflight requests, and origin validation
  • StaticFiles Tests - Verify content parsing, claims replacement, and file serving

Separate Core and Client Logging

Added ability to configure separate log levels for the core NpgsqlRest library and the NpgsqlRestClient application. This allows fine-grained control over logging verbosity:

json
json
"MinimalLevels": {
  "NpgsqlRest": "Information",
  "NpgsqlRestClient": "Debug",
  "System": "Warning",
  "Microsoft": "Warning"
}
  • NpgsqlRest - Controls log level for the core library (endpoint creation, SQL execution, etc.)
  • NpgsqlRestClient - Controls log level for the client application (configuration, authentication setup, passkeys, etc.)

Debug Log Filtering Options

Added two new boolean options to control debug-level logging verbosity:

  • DebugLogEndpointCreateEvents (default: true) - When false, suppresses "Created endpoint" debug logs
  • DebugLogCommentAnnotationEvents (default: true) - When false, suppresses comment annotation parsing debug logs

These options allow users to reduce log noise while keeping the log level at Debug for other important information.


Comments