What's Changed
- Fix self-hosted runner: disable osxkeychain and clean stale build art… by @maqeel75 in #141
- fix(check-sources): preserve PR approvals on re-run with idempotent push by @maqeel75 in #146
- fix(check-sources): insert new entries inside sources block, not at end of file by @maqeel75 in #150
- sync: fix kb-builder drift against SSOT by @maqeel75 in #151
- fix(http): return 202 Accepted with empty body for JSON-RPC notifications by @richyen in #143
- fix(database): tolerate NULL columns in metadata LEFT JOIN by @richyen in #144
- sync: fix kb-builder drift against SSOT by @maqeel75 in #155
- sync: fix kb-builder drift against SSOT by @maqeel75 in #156
- sync: fix kb-builder drift against SSOT by @maqeel75 in #159
- Fix tag/branch selection in drift-fix script and nginx permissions in Dockerfile.web by @maqeel75 in #162
- sync: fix kb-builder drift against SSOT by @maqeel75 in #166
- feat: smart Postgres detection and context-aware installer menu by @AntTheLimey in #127
- fix(mcp): implement ping handler to satisfy client health checks by @davevg in #167
- Extract KB Builder into standalone pgedge-ai-kb project by @dpage in #158
- Update TODO.md by @dpage in #177
- Add in-repo RPM/DEB packaging and full release pipeline by @maqeel75 in #180
- package cells: native arm64 runners to avoid QEMU ldconfig segfault by @maqeel75 in #181
- fix(stdio): treat "id": null as a request, not a notification by @dpage in #169
- fix: machine-safe built-in resource name + env vars for builtins (#139) by @dpage in #168
- docs: fix typo in help guide by @meichuanyi in #179
- feat(devcontainer): refresh dev image and auto-update Claude Code by @dpage in #154
- fix(installer): resolve latest stable v* release, not GitHub "latest" by @AntTheLimey in #182
- refactor(database): split LoadMetadataFor into orchestration + helpers by @dpage in #170
- feat: replace hand-rolled LLM clients with pgedge-go-llm-lib (PR 1 of 4) by @dpage in #172
- feat: adopt pgedge-go-llm-lib HTTP proxy and update web client wire format (PR 3 of 4) by @dpage in #174
- feat: streaming chat, Gemini support, and embedding wrapper cleanup (PR 4 of 4) by @dpage in #175
- feat: remove chat.LLMClient wrapper and use pgedge-go-llm-lib directly (PR 5 of 5) by @dpage in #176
- feat: adopt pgedge-go-llm-lib v0.1.0 follow-ups (PR 6 of 6) by @dpage in #178
- Adds ubuntu resolute in platforms list by @maqeel75 in #185
- ci: use latest=auto so only GA release tags get the Docker tag by @maqeel75 in #190
- fix: install SBOMs under /usr/share// instead of flat /usr/share by @maqeel75 in #191
- fix: detect secret rotation via atomically-swapped symlinks (#186) by @moizpgedge in #192
- fix: show configured display name instead of raw connection details (… by @moizpgedge in #193
- Support client certificate authentication for database connections by @moizpgedge in #194
- Return consistent JSON error responses on every HTTP path by @moizpgedge in #195
- Relocate Save/Delete conversation actions to status banner menu by @dpage in #183
- Aggregate multiple foreign-key references per column in metadata loader by @dpage in #184
- Harden the read-only guardrails against transaction-mode bypass by @dpage in #196
- Upgrade pgx and other dependencies with reachable CVEs, add make vulncheck by @dpage in #197
- Treat retrieved content as untrusted and confirm custom tool writes by @dpage in #198
- Redact provider credentials from error output by @dpage in #199
- Resolve client addresses from the connection, not caller headers by @dpage in #205
- docs: pre-RC catch-up for undocumented and stale behaviour by @dpage in #206
- fix(security): reject subqueries in count_rows where clause by @moizpgedge in #201
- fix(security): reject count_rows subquery injection and raise go.mod floor by @moizpgedge in #207
- fix(security): refresh postgres-mcp Trivy ignore list by @moizpgedge in #208
- fix(security): trim unused packages from nla-web, refresh ignore list by @moizpgedge in #209
- fix(security): refresh nla-cli Trivy ignore list by @moizpgedge in #210
- fix: return tools/prompts/resources in a deterministic sorted order by @moizpgedge in #213
- fix: negotiate protocolVersion instead of echoing the client's request by @moizpgedge in #214
- fix: infer tool_use stop reason from streamed content blocks by @dpage in #221
- fix: reload expired metadata instead of reporting DATABASE_NOT_READY by @dpage in #222
- fix(web): label the header conversation action as Clear, not Delete by @dpage in #224
- chore: update dependencies across Actions, Go, npm, and the docs stack by @dpage in #225
- fix(llm): stop sending a sampling temperature by @dpage in #226
- feat: add dual-era support for the MCP 2026-07-28 spec revision by @moizpgedge in #215
- fix: list configured databases in a deterministic sorted order by @dpage in #227
- test: make the shared-failed-reload test deterministic by @dpage in #228
- fix(web): derive the client version from package.json by @dpage in #229
- fix(security): validate the Origin header to prevent DNS rebinding by @dpage in #232
- fix(security): confirm writes whose first keyword reads by @dpage in #233
- chore: run the web client suite from make test by @dpage in #234
- feat(embeddings): add Gemini as a supported embedding provider by @dpage in #239
- fix(web): stop repeating a tool call that keeps failing by @dpage in #240
- feat(cli): add Gemini as an LLM provider by @dpage in #241
- docs: show the SSL certificate settings in the example configs by @dpage in #242
- fix(web): carry Gemini's tool-call arguments and signature through sseChat by @moizpgedge in #247
- fix(web): block sending while the new provider's model list loads by @moizpgedge in #248
- chore: even up the provider credential options by @moizpgedge in #249
- fix(config): resolve configuration the way the documentation describes by @dpage in #252
- fix(web): explain that a chosen model cannot be used for chat by @dpage in #254
- style: repair the copyright headers and test that they stay repaired by @dpage in #253
- fix(chat): stop the model fallback choosing a non-chat model by @dpage in #257
- fix(embed): default the OpenAI embedding model to text-embedding-3-small by @dpage in #263
- fix: connect immediately when switching database connections by @dpage in #264
- fix(tools): stop query_database's LIMIT/OFFSET cap being defeated by plain text by @dpage in #265
- Speak the MCP 2026-07-28 modern protocol in the web and CLI clients by @dpage in #266
- fix(docker): create multi-database config file with mode 600 by @dpage in #267
- feat(tracing): add metadata-only trace mode by @dpage in #268
- fix(http): guard nil userStore in /api/user/info handler by @dpage in #270
New Contributors
- @richyen made their first contribution in #143
- @davevg made their first contribution in #167
- @meichuanyi made their first contribution in #179
- @moizpgedge made their first contribution in #192
Full Changelog: kb-2026-04-27...v1.1.0-beta1