diff --git a/CHANGELOG.md b/CHANGELOG.md index adbe641c..da2bdc04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,369 @@ +## 0.1.0 (2026-06-02) + + +### Features + +* add admin dashboard with stats expansion and stuck-source retry ([#548](https://github.com/manavgup/wikimind/issues/548)) ([b865bf2](https://github.com/manavgup/wikimind/commit/b865bf2d55f2b24978867e0810ce99ca10d69581)) +* add admin-only guard and system-wide dashboard stats ([1628c85](https://github.com/manavgup/wikimind/commit/1628c851ab49588d0f6485cf69e47629f2cc0651)) +* add ambient capture adapter framework with browser history adapter ([#442](https://github.com/manavgup/wikimind/issues/442)) ([#786](https://github.com/manavgup/wikimind/issues/786)) ([4b0116f](https://github.com/manavgup/wikimind/commit/4b0116f9c4ec4cbbaaac5c9cf3ef1c86b30b1616)) +* add API token auth to browser extension ([#459](https://github.com/manavgup/wikimind/issues/459)) ([17f9126](https://github.com/manavgup/wikimind/commit/17f9126202c0029e420f05bcd828d28bf6191b8b)) +* add Google Gemini provider to LLM router ([#165](https://github.com/manavgup/wikimind/issues/165)) ([b719fd1](https://github.com/manavgup/wikimind/commit/b719fd1b2b6d7434180c75e3ef29e8e539d98328)) +* add human-in-the-loop discussion before compilation ([#418](https://github.com/manavgup/wikimind/issues/418)) ([#787](https://github.com/manavgup/wikimind/issues/787)) ([921968d](https://github.com/manavgup/wikimind/commit/921968d46b2961d1f30e71ba8a61c545297edf02)) +* add magic link (passwordless email) login ([#379](https://github.com/manavgup/wikimind/issues/379)) ([9b16410](https://github.com/manavgup/wikimind/commit/9b1641044aaea4b54896eab896dad4ebabdabef6)) +* add magic link (passwordless email) login ([#379](https://github.com/manavgup/wikimind/issues/379)) ([f516496](https://github.com/manavgup/wikimind/commit/f5164968eb4ad88212cc3666a3d0d147c968d273)) +* add make dev-parity target for production-topology local dev ([#629](https://github.com/manavgup/wikimind/issues/629)) ([f6b867a](https://github.com/manavgup/wikimind/commit/f6b867ae9a8cbf6bbe209ca3def73ed40b345e03)) +* add OAuth2 authentication with Google and GitHub (Multi-user PR 1/5) ([#204](https://github.com/manavgup/wikimind/issues/204)) ([7b32890](https://github.com/manavgup/wikimind/commit/7b32890766cd34227a072826e3f62a05a9454d45)) +* add OpenAI-compatible provider support ([a69ee30](https://github.com/manavgup/wikimind/commit/a69ee3075a516cac096b4f9eac09d9d0c405afa9)) +* add OpenAI-compatible provider support ([52d6430](https://github.com/manavgup/wikimind/commit/52d64307b5b3cefa7721ffbeb0ab19eb292f7233)) +* add per-user background jobs and WebSocket scoping ([#208](https://github.com/manavgup/wikimind/issues/208)) ([f437ee5](https://github.com/manavgup/wikimind/commit/f437ee509c8dd469c232583ff480a3c6e374019e)) +* add POST /auth/token endpoint for long-lived API tokens ([#391](https://github.com/manavgup/wikimind/issues/391)) ([9e30886](https://github.com/manavgup/wikimind/commit/9e308860de9c8ff6c3f599d4cf390b4a33cb50d1)) +* add POST /auth/token endpoint for long-lived API tokens ([#391](https://github.com/manavgup/wikimind/issues/391)) ([d1219a7](https://github.com/manavgup/wikimind/commit/d1219a71ba16b4edf9f25804166895f4712d29bb)) +* add PostgreSQL compatibility for production deployments (PR 2/3) ([#174](https://github.com/manavgup/wikimind/issues/174)) ([02b1319](https://github.com/manavgup/wikimind/commit/02b131964a45f271a600eccbfd0c41ba9485b233)) +* add production monitoring ([#547](https://github.com/manavgup/wikimind/issues/547)) ([#550](https://github.com/manavgup/wikimind/issues/550)) ([1ed4deb](https://github.com/manavgup/wikimind/commit/1ed4deb952d6379b2b118bdd3e6de22b7c085eaf)) +* add SourceSpan model and citation API endpoint ([#450](https://github.com/manavgup/wikimind/issues/450)) ([#783](https://github.com/manavgup/wikimind/issues/783)) ([cc231e6](https://github.com/manavgup/wikimind/commit/cc231e6895998eac8452f8801f127483144687e4)) +* add WikiMind CLI for terminal-based workflow ([#390](https://github.com/manavgup/wikimind/issues/390)) ([#498](https://github.com/manavgup/wikimind/issues/498)) ([2210c5a](https://github.com/manavgup/wikimind/commit/2210c5aa79d075725db812f6c6547e337bd696a9)) +* **admin:** add per-user details to admin dashboard ([#772](https://github.com/manavgup/wikimind/issues/772)) ([#773](https://github.com/manavgup/wikimind/issues/773)) ([7d4e35f](https://github.com/manavgup/wikimind/commit/7d4e35ff5104a735db6089a8d48e86e679949472)) +* ambient capture adapters for always-on knowledge ingest ([#442](https://github.com/manavgup/wikimind/issues/442)) ([#514](https://github.com/manavgup/wikimind/issues/514)) ([2e076ee](https://github.com/manavgup/wikimind/commit/2e076eee568f7ef888f4968a09bf135823ff669a)) +* article export — PDF, LinkedIn draft, and slides ([#294](https://github.com/manavgup/wikimind/issues/294)) ([dbcebeb](https://github.com/manavgup/wikimind/commit/dbcebeb75fb8f1aae6b707d475ed2b4ae8cdf3c5)) +* article-level confidence scoring with decay ([#422](https://github.com/manavgup/wikimind/issues/422)) ([#463](https://github.com/manavgup/wikimind/issues/463)) ([0c40d3f](https://github.com/manavgup/wikimind/commit/0c40d3fc97111980bfba75bc3cac5664f2242b16)) +* **ask:** streaming Q&A + clickable sources + related articles ([#125](https://github.com/manavgup/wikimind/issues/125)) ([4a3f9aa](https://github.com/manavgup/wikimind/commit/4a3f9aa932b88eeb2a35f93daab24e3ba0c13790)) +* auto-deploy docling-serve sidecar in CI ([#278](https://github.com/manavgup/wikimind/issues/278)) ([596b936](https://github.com/manavgup/wikimind/commit/596b936c5dd6a626cc61bf8b703e86d2f30d9172)) +* auto-file high-quality Q&A answers as wiki pages ([#414](https://github.com/manavgup/wikimind/issues/414)) ([#462](https://github.com/manavgup/wikimind/issues/462)) ([0639c74](https://github.com/manavgup/wikimind/commit/0639c7495fd6c46a1cd467709f05743e70b1f4b0)) +* auto-provision users on /auth/me, add DELETE /auth/account ([223864e](https://github.com/manavgup/wikimind/commit/223864e3e4f4e6629d4b7aad6e29c528cd4cf492)) +* auto-recompile articles on new contradiction detection ([#489](https://github.com/manavgup/wikimind/issues/489)) ([d90a0b9](https://github.com/manavgup/wikimind/commit/d90a0b9a70e6b130a8d428da1ef089185c982fd3)) +* auto-tune gunicorn workers with horizontal scaling prep ([#213](https://github.com/manavgup/wikimind/issues/213)) ([9191af9](https://github.com/manavgup/wikimind/commit/9191af9997dea487d3cccd2930339cd6c630b903)) +* **billing:** add admin endpoint to update plan LLM model ([#774](https://github.com/manavgup/wikimind/issues/774)) ([#777](https://github.com/manavgup/wikimind/issues/777)) ([01c4554](https://github.com/manavgup/wikimind/commit/01c4554b3bc3732be6a98c3907be56a069636b41)) +* **billing:** add tiered billing with Lemon Squeezy payments ([#775](https://github.com/manavgup/wikimind/issues/775)) ([315caf3](https://github.com/manavgup/wikimind/commit/315caf31f3800566428a963af34c80bef5cdd444)) +* **billing:** sync price changes from Lemon Squeezy ([#793](https://github.com/manavgup/wikimind/issues/793)) ([#796](https://github.com/manavgup/wikimind/issues/796)) ([ee82172](https://github.com/manavgup/wikimind/commit/ee821729e8a8a8d4f5d353cfcb4d1450fa488693)) +* browser extension — Chrome + Firefox web clipper ([#284](https://github.com/manavgup/wikimind/issues/284)) ([3f6fd34](https://github.com/manavgup/wikimind/commit/3f6fd3469d803cacae629ee0fd28a7214f6688bf)) +* BYOK — user-configurable LLM API keys with encryption ([#296](https://github.com/manavgup/wikimind/issues/296)) ([3b42632](https://github.com/manavgup/wikimind/commit/3b4263246cc0c85300aac5a74911516ea7ff315f)) +* BYOK providers auto-enable and set as default ([#325](https://github.com/manavgup/wikimind/issues/325)) ([604bcad](https://github.com/manavgup/wikimind/commit/604bcad0210e047df5806277920e589df736c339)) +* concept page prominence, recompile targeting, settings polish ([#244](https://github.com/manavgup/wikimind/issues/244)) ([52e8cc3](https://github.com/manavgup/wikimind/commit/52e8cc39ef6b2a5b6200173990656e303a8b5809)) +* conversation crystallization endpoint ([#484](https://github.com/manavgup/wikimind/issues/484)) ([4282b6a](https://github.com/manavgup/wikimind/commit/4282b6a9d9cb3db90cdd8ffbc2c65b60641ea3f4)) +* **debug:** add opt-in LLM trace storage and viewer ([#745](https://github.com/manavgup/wikimind/issues/745)) ([831452d](https://github.com/manavgup/wikimind/commit/831452d0c61f5457a1ddf4feff90a5923195f4cf)) +* Docker smoke tests for production image verification ([#242](https://github.com/manavgup/wikimind/issues/242)) ([6e4d006](https://github.com/manavgup/wikimind/commit/6e4d0065923709cea142169cb04f7f36630eb1ec)) +* **docs:** add MkDocs features hook and update deploy-pages ([#655](https://github.com/manavgup/wikimind/issues/655), [#613](https://github.com/manavgup/wikimind/issues/613)) ([#697](https://github.com/manavgup/wikimind/issues/697)) ([5deca8a](https://github.com/manavgup/wikimind/commit/5deca8abb48852fe1d2ba962190a111dfb36c9c9)) +* **docs:** publish evidence pages to GitHub Pages ([#769](https://github.com/manavgup/wikimind/issues/769)) ([#770](https://github.com/manavgup/wikimind/issues/770)) ([875cc33](https://github.com/manavgup/wikimind/commit/875cc33478f0baa4256703f6f10df73c2c905955)) +* enable horizontal gateway scaling with Redis pub/sub ([#295](https://github.com/manavgup/wikimind/issues/295)) ([e63c549](https://github.com/manavgup/wikimind/commit/e63c5494d8fbaabe7c6a8a163dd10354bc844bb4)) +* **engine:** add claim-level span citations in compiler ([#450](https://github.com/manavgup/wikimind/issues/450)) ([#817](https://github.com/manavgup/wikimind/issues/817)) ([cbded74](https://github.com/manavgup/wikimind/commit/cbded74cd47dc307c7eb64e613b2ee03cda6712f)) +* **engine:** add per-claim confidence persistence ([#465](https://github.com/manavgup/wikimind/issues/465)) ([#812](https://github.com/manavgup/wikimind/issues/812)) ([2955682](https://github.com/manavgup/wikimind/commit/295568295dbe9cf524d03c24f4c84c9e39fffb23)) +* **engine:** add per-claim confidence scoring with persistence ([#465](https://github.com/manavgup/wikimind/issues/465)) ([#800](https://github.com/manavgup/wikimind/issues/800)) ([5a5395d](https://github.com/manavgup/wikimind/commit/5a5395d8a430ee0212239ae8ff3e39967a30239c)) +* **engine:** complete wikilink resolution pipeline ([#95](https://github.com/manavgup/wikimind/issues/95), [#96](https://github.com/manavgup/wikimind/issues/96)) ([d760ea3](https://github.com/manavgup/wikimind/commit/d760ea3ea0702e78da388f4313d5ac9d8ec576dd)) +* expand admin dashboard overview cards ([274591c](https://github.com/manavgup/wikimind/commit/274591c78a593f512892fb35b1fede534aa9e367)) +* expand admin dashboard with users, claims, compile rate, confidence ([5bca519](https://github.com/manavgup/wikimind/commit/5bca519f306d705b4f18c04691e51d68db957e6e)) +* **export:** add export dropdown to article detail view ([#751](https://github.com/manavgup/wikimind/issues/751)) ([55b4170](https://github.com/manavgup/wikimind/commit/55b4170c01912fa51c00df1aa96f00c7a70b14ac)) +* faceted browse and in-article search ([#455](https://github.com/manavgup/wikimind/issues/455)) ([#515](https://github.com/manavgup/wikimind/issues/515)) ([c0fd68d](https://github.com/manavgup/wikimind/commit/c0fd68deaf61c3358fda710709f15359d04dd497)) +* first-run onboarding wizard ([#291](https://github.com/manavgup/wikimind/issues/291)) ([633865c](https://github.com/manavgup/wikimind/commit/633865c5699d76b2ca7d6b9e71c7e06c1f0aa42e)) +* **frontend:** add code splitting and lazy loading for routes ([#709](https://github.com/manavgup/wikimind/issues/709)) ([#717](https://github.com/manavgup/wikimind/issues/717)) ([f3af526](https://github.com/manavgup/wikimind/commit/f3af5266fe6e960c72d3b40817ce36443b56b86e)) +* FTS5 full-text search for wiki articles ([#490](https://github.com/manavgup/wikimind/issues/490)) ([67d438f](https://github.com/manavgup/wikimind/commit/67d438f0e2f4255c030f42d62dd15787e65b7f18)) +* **graph:** force-directed knowledge graph visualization ([#126](https://github.com/manavgup/wikimind/issues/126)) ([c226037](https://github.com/manavgup/wikimind/commit/c226037f1b49f041d16156e55a09404c24c80800)) +* **health:** finding actions — view, resolve, recompile ([#137](https://github.com/manavgup/wikimind/issues/137)) ([#149](https://github.com/manavgup/wikimind/issues/149)) ([3e6cf20](https://github.com/manavgup/wikimind/commit/3e6cf2063ca612e995bd15643842a6da08d35859)) +* human-in-the-loop discussion before compilation ([#418](https://github.com/manavgup/wikimind/issues/418)) ([#516](https://github.com/manavgup/wikimind/issues/516)) ([25666b2](https://github.com/manavgup/wikimind/commit/25666b2503574e22243eaa97be4956a0ca3196a9)) +* implement BFF HttpOnly cookie auth replacing localStorage JWT ([#254](https://github.com/manavgup/wikimind/issues/254)) ([400229c](https://github.com/manavgup/wikimind/commit/400229c268009ee921db4ad64ea8cd4bf4ce7ba0)) +* **inbox:** add source detail view with pipeline artifacts ([#740](https://github.com/manavgup/wikimind/issues/740)) ([8a60528](https://github.com/manavgup/wikimind/commit/8a60528f7e67ac05152de423e382c903ec935453)) +* **infra:** self-host Redis on Fly.io to replace managed Upstash ([#821](https://github.com/manavgup/wikimind/issues/821)) ([#822](https://github.com/manavgup/wikimind/issues/822)) ([38d4ce7](https://github.com/manavgup/wikimind/commit/38d4ce7c623884ce2a1968efc37242f011d8a3aa)) +* **ingest:** add span re-anchoring and stale-span linter (Phase 5) ([#450](https://github.com/manavgup/wikimind/issues/450)) ([#819](https://github.com/manavgup/wikimind/issues/819)) ([f59b160](https://github.com/manavgup/wikimind/commit/f59b160afad2bffa85478ca29547648f18037302)) +* **ingest:** add span-level citation extraction (Phase 1) ([#450](https://github.com/manavgup/wikimind/issues/450)) ([#801](https://github.com/manavgup/wikimind/issues/801)) ([e194561](https://github.com/manavgup/wikimind/commit/e194561c28bbabefe791bc915dfbe1a731474f62)) +* **ingest:** show real progress during Docling PDF extraction ([#119](https://github.com/manavgup/wikimind/issues/119)) ([858acdf](https://github.com/manavgup/wikimind/commit/858acdf040f089910310bd7e873d9c01021fb6dc)) +* **ingest:** vision-enhanced slide deck ingestion ([#68](https://github.com/manavgup/wikimind/issues/68)) ([#133](https://github.com/manavgup/wikimind/issues/133)) ([61176d9](https://github.com/manavgup/wikimind/commit/61176d9cd4fe35226324e8fa77c4ac744de33a85)) +* **jobs:** run wikilink sweep after every compilation ([b7d3a63](https://github.com/manavgup/wikimind/commit/b7d3a63121fcbce9dfb5b56c35646eec447e8a6e)) +* knowledge staleness detection and decay (Phase 1) ([#486](https://github.com/manavgup/wikimind/issues/486)) ([51a04db](https://github.com/manavgup/wikimind/commit/51a04db7cff9c3905c7416c8ef7ac24fbe900332)) +* landing page and login overlay ([#252](https://github.com/manavgup/wikimind/issues/252)) ([0911fd7](https://github.com/manavgup/wikimind/commit/0911fd7288381aed0064c397498b48c70e3d84a0)) +* **linter:** backlink enforcer integration with auto-repair ([#151](https://github.com/manavgup/wikimind/issues/151)) ([ec88b7f](https://github.com/manavgup/wikimind/commit/ec88b7f543543d077c21ac5a9cd3f48b831ece91)) +* **linter:** batch LLM calls for contradiction detection ([#138](https://github.com/manavgup/wikimind/issues/138)) ([#150](https://github.com/manavgup/wikimind/issues/150)) ([066bcae](https://github.com/manavgup/wikimind/commit/066bcaeb965a8b09c6c498ce42a5358e2e8ae342)) +* **linter:** structured wiki health audit + Health Dashboard ([#26](https://github.com/manavgup/wikimind/issues/26), [#27](https://github.com/manavgup/wikimind/issues/27)) ([#131](https://github.com/manavgup/wikimind/issues/131)) ([4555d1a](https://github.com/manavgup/wikimind/commit/4555d1a820210508aa42d3cff3419dc71a1f1172)) +* manual article editing with recompile-safe user edits ([#487](https://github.com/manavgup/wikimind/issues/487)) ([24e3793](https://github.com/manavgup/wikimind/commit/24e379355e15e184657eb8c0c1dc59b62f89a9d4)) +* **mcp:** add MCP client mode for external tool integration ([#762](https://github.com/manavgup/wikimind/issues/762)) ([c695c86](https://github.com/manavgup/wikimind/commit/c695c864be674156c25d5845ce6da77525d6bfdf)) +* **mcp:** comprehensive MCP server — 13 tools, 3 resources, 4 prompts, JWT auth ([#447](https://github.com/manavgup/wikimind/issues/447)) ([#756](https://github.com/manavgup/wikimind/issues/756)) ([0da16d3](https://github.com/manavgup/wikimind/commit/0da16d3175cc41693e8ca1adafa5f60524291c71)) +* **mcp:** OAuth 2.1 Authorization Server for remote MCP connections ([#765](https://github.com/manavgup/wikimind/issues/765)) ([de5eb89](https://github.com/manavgup/wikimind/commit/de5eb8931540ec8a7e34e990a59953ac65c72e52)) +* per-article public share and portable wiki export ([#457](https://github.com/manavgup/wikimind/issues/457)) ([#518](https://github.com/manavgup/wikimind/issues/518)) ([4a06ac8](https://github.com/manavgup/wikimind/commit/4a06ac8b4d6beba7bf1154a273c4014634c9fe4f)) +* per-user data isolation with user_id FK on all tables (Multi-user PR 2/5) ([#206](https://github.com/manavgup/wikimind/issues/206)) ([7d91a12](https://github.com/manavgup/wikimind/commit/7d91a12fca65f52fae2e649fb64ee1dcaec6ac80)) +* per-user file storage namespacing (Multi-user PR 3/5) ([#209](https://github.com/manavgup/wikimind/issues/209)) ([24a3f67](https://github.com/manavgup/wikimind/commit/24a3f67a475f7136ef09ae10b96528b0f50ba3e9)) +* persist contradictions as navigable wiki content ([#483](https://github.com/manavgup/wikimind/issues/483)) ([363ae50](https://github.com/manavgup/wikimind/commit/363ae501b59715a78c3da9ce1fddcffc6a495b21)) +* production Docker deployment with Postgres + Redis ([#203](https://github.com/manavgup/wikimind/issues/203)) ([ad5274f](https://github.com/manavgup/wikimind/commit/ad5274f61c3c5fa61e93ff0d792eb1c102182b52)) +* production Fly.io deployment config ([#216](https://github.com/manavgup/wikimind/issues/216)) ([6005a70](https://github.com/manavgup/wikimind/commit/6005a7073a990e0ddd1930d937e47e5b6e48a91a)) +* promote CompiledClaim reads to database table with migration ([#466](https://github.com/manavgup/wikimind/issues/466)) ([#784](https://github.com/manavgup/wikimind/issues/784)) ([d582065](https://github.com/manavgup/wikimind/commit/d582065ce77d56e7609e1e4669756c13a226495d)) +* **qa:** add conversation export — download Q&A threads as markdown without saving to wiki ([#108](https://github.com/manavgup/wikimind/issues/108)) ([736a1ae](https://github.com/manavgup/wikimind/commit/736a1aeea1ae42eeb7f4da7c703f3a4fbec9941f)) +* **qa:** edit and branch from a prior conversation turn ([#89](https://github.com/manavgup/wikimind/issues/89)) ([#132](https://github.com/manavgup/wikimind/issues/132)) ([d86c52d](https://github.com/manavgup/wikimind/commit/d86c52df1324b6468e491e163c78f8c841e67458)) +* **qa:** partial-thread and multi-thread file-back ([#90](https://github.com/manavgup/wikimind/issues/90)) ([#134](https://github.com/manavgup/wikimind/issues/134)) ([0102dc7](https://github.com/manavgup/wikimind/commit/0102dc70a5460d180aea87ad2ea0ff951fd2f4b7)) +* **qa:** stream Q&A responses token-by-token (backend) ([#121](https://github.com/manavgup/wikimind/issues/121)) ([348878e](https://github.com/manavgup/wikimind/commit/348878e592d3e9e201b5b90b8fa17e0dcb63a2e5)) +* reading mode with outline, breadcrumbs, and random article ([#485](https://github.com/manavgup/wikimind/issues/485)) ([584ca13](https://github.com/manavgup/wikimind/commit/584ca1311eeea7fe7e0d2aa96555466957f2dadb)) +* replace in-process Docling with docling-serve sidecar ([#277](https://github.com/manavgup/wikimind/issues/277)) ([e7724d4](https://github.com/manavgup/wikimind/commit/e7724d4737157789a401b0fd03e48b10de589e52)) +* retry/delete failed sources, format-aware View Source ([#239](https://github.com/manavgup/wikimind/issues/239)) ([1451446](https://github.com/manavgup/wikimind/commit/14514462d16c076ba35ae98e516fac2ff52396b3)) +* rich content rendering — math, tables, images, code ([#452](https://github.com/manavgup/wikimind/issues/452)) ([#511](https://github.com/manavgup/wikimind/issues/511)) ([ddfc430](https://github.com/manavgup/wikimind/commit/ddfc430a54d84fe437f542edea0a1093dac11b4a)) +* schema overhaul Phase 1 — models, enums, registry ([#146](https://github.com/manavgup/wikimind/issues/146)) ([b3e774b](https://github.com/manavgup/wikimind/commit/b3e774b5e4f7101b909bc0c26fe143060a16ad61)) +* schema overhaul Phase 2 — source compiler evolution ([#148](https://github.com/manavgup/wikimind/issues/148)) ([960f2ed](https://github.com/manavgup/wikimind/commit/960f2ed21c6e375bc1dcf9582b92ebbfd8bd0d10)) +* schema overhaul Phase 3 -- concept page compiler ([#147](https://github.com/manavgup/wikimind/issues/147)) ([4c04251](https://github.com/manavgup/wikimind/commit/4c0425193fe62c041d18a0f641f878b1e0fdd772)) +* schema overhaul Phase 4 -- typed links & linter integration ([#145](https://github.com/manavgup/wikimind/issues/145)) ([9bb0bdd](https://github.com/manavgup/wikimind/commit/9bb0bdd9dc1295122f6d8175d3b13e98a130a7e3)) +* schema overhaul Phase 5 -- answer pages, index/meta, frontend ([#144](https://github.com/manavgup/wikimind/issues/144)) ([c6a678f](https://github.com/manavgup/wikimind/commit/c6a678f7f9892f935b4c5830cc6f8780534960f0)) +* **search:** hybrid keyword + semantic search with ChromaDB ([#127](https://github.com/manavgup/wikimind/issues/127)) ([2d71cd4](https://github.com/manavgup/wikimind/commit/2d71cd4a678dd979adb19ac8623bb7b690f54484)) +* **security:** add rate limiting to auth, query, and ingest endpoints ([#758](https://github.com/manavgup/wikimind/issues/758)) ([53ec771](https://github.com/manavgup/wikimind/commit/53ec7714b1e160e802ce86e9c2ff7f2ba6a5238f)) +* **settings:** add Docling connection status endpoint ([#621](https://github.com/manavgup/wikimind/issues/621)) ([#735](https://github.com/manavgup/wikimind/issues/735)) ([3fa3da2](https://github.com/manavgup/wikimind/commit/3fa3da2ab1ecbf4becdc0c23c7943eea22b2119a)) +* **settings:** Settings UI with providers, cost dashboard, budget warnings ([#29](https://github.com/manavgup/wikimind/issues/29)) ([#161](https://github.com/manavgup/wikimind/issues/161)) ([0adde6d](https://github.com/manavgup/wikimind/commit/0adde6d1cfe16939adbd85bf9db4d08b1e9c38fc)) +* **sharing:** add share expiry UI and management page ([#752](https://github.com/manavgup/wikimind/issues/752)) ([b3be45a](https://github.com/manavgup/wikimind/commit/b3be45adf93b98c917b78a5e6ca3c45a686db69e)) +* source reader — view original sources alongside compiled articles ([#488](https://github.com/manavgup/wikimind/issues/488)) ([3d7053b](https://github.com/manavgup/wikimind/commit/3d7053b973fcd8e20361bbaa0d0ba0c64d265e23)) +* span-level citations with claim-source anchoring ([#450](https://github.com/manavgup/wikimind/issues/450)) ([#517](https://github.com/manavgup/wikimind/issues/517)) ([2b676f6](https://github.com/manavgup/wikimind/commit/2b676f6faaf5f76be66de21b4d7bedafdc78e9bb)) +* stub pages and wikilink resolution ([#451](https://github.com/manavgup/wikimind/issues/451)) ([#503](https://github.com/manavgup/wikimind/issues/503)) ([7d48c2c](https://github.com/manavgup/wikimind/commit/7d48c2cf5e769011dce3f0dbb008822e040f91d5)) +* synthesis pages for cross-cutting analysis ([#415](https://github.com/manavgup/wikimind/issues/415)) ([#513](https://github.com/manavgup/wikimind/issues/513)) ([179dabf](https://github.com/manavgup/wikimind/commit/179dabf05c7715d35b4caf4d612c3ae8686d8028)) +* **synthesis:** add auto-detection of synthesis opportunities ([#759](https://github.com/manavgup/wikimind/issues/759)) ([7559fcf](https://github.com/manavgup/wikimind/commit/7559fcf6d4ec72d3d9ca49e0d365ddff8dc51a46)) +* **synthesis:** add multi-step synthesis creation wizard ([#415](https://github.com/manavgup/wikimind/issues/415)) ([#761](https://github.com/manavgup/wikimind/issues/761)) ([9ad85af](https://github.com/manavgup/wikimind/commit/9ad85af08891273f55bba4f0a75e4b7bdbce1d57)) +* **synthesis:** add preview/draft workflow with iterative refinement ([#757](https://github.com/manavgup/wikimind/issues/757)) ([c81c353](https://github.com/manavgup/wikimind/commit/c81c353094fb6a9c31ee3918717f5066f17b3838)) +* **synthesis:** add synthesis type selection with specialized prompts ([#755](https://github.com/manavgup/wikimind/issues/755)) ([4fd2070](https://github.com/manavgup/wikimind/commit/4fd207099a175b17490d13a9dfe4a12d7b24c342)) +* tags and saved searches for user-asserted organization ([#454](https://github.com/manavgup/wikimind/issues/454)) ([#501](https://github.com/manavgup/wikimind/issues/501)) ([27347ae](https://github.com/manavgup/wikimind/commit/27347ae5ec8cc48fdce5c3c2e23b0259de90d4a0)) +* **taxonomy:** auto-generate concept taxonomy from compiler output ([#120](https://github.com/manavgup/wikimind/issues/120)) ([138a428](https://github.com/manavgup/wikimind/commit/138a4283927d859f111a1bc7ca018f666efb9a0f)) +* typed relationship filtering on graph API + edge coloring ([#423](https://github.com/manavgup/wikimind/issues/423)) ([#464](https://github.com/manavgup/wikimind/issues/464)) ([431c3a9](https://github.com/manavgup/wikimind/commit/431c3a9ea57ef86d29314aec3a89eb3f96facf41)) +* user-defined schema layer for wiki compilation rules ([#420](https://github.com/manavgup/wikimind/issues/420)) ([#521](https://github.com/manavgup/wikimind/issues/521)) ([4c47461](https://github.com/manavgup/wikimind/commit/4c47461223ba038ae3af8dafc995e3b6c751dfef)) +* view original source document (PDF, HTML) in-app ([#215](https://github.com/manavgup/wikimind/issues/215)) ([cc4a184](https://github.com/manavgup/wikimind/commit/cc4a1844721081ca9b75fdbb0c0ed662a79196e5)) +* **web:** add span-level citation UI — popovers, source highlight, inline markers ([#450](https://github.com/manavgup/wikimind/issues/450)) ([#818](https://github.com/manavgup/wikimind/issues/818)) ([bfe0b8f](https://github.com/manavgup/wikimind/commit/bfe0b8f82e6edc126850ac4f63c593c9a3f98009)) +* **web:** align UI to WikiMind design system ([#224](https://github.com/manavgup/wikimind/issues/224)) ([bdb59bd](https://github.com/manavgup/wikimind/commit/bdb59bd80a93427d3f1a6ce5fca3dea6cbe330e2)) +* **wiki:** add index.md — Karpathy-style content catalog for Obsidian and agent navigation ([34eaf6c](https://github.com/manavgup/wikimind/commit/34eaf6cf393a5185b2d9ad36255c7bbe8dc5e254)) +* **wiki:** emit index.md content catalog from wiki article set ([616e3bd](https://github.com/manavgup/wikimind/commit/616e3bd2a98e1ed9536b9ce093e8cdb3ff01caa2)), closes [#100](https://github.com/manavgup/wikimind/issues/100) +* **wiki:** emit log.md chronological append log ([a1ae33d](https://github.com/manavgup/wikimind/commit/a1ae33d8b0406f7dfd08dbbf5adbf9ad45c897aa)) +* **wiki:** emit log.md chronological append log from ingest/query/compile events ([1f479b0](https://github.com/manavgup/wikimind/commit/1f479b0ddeb2c343eb5cd88d8caa19d34f9ab3d8)) +* WikiMind MCP server with read-only tools -- Phase 1 ([#447](https://github.com/manavgup/wikimind/issues/447)) ([#512](https://github.com/manavgup/wikimind/issues/512)) ([bad1197](https://github.com/manavgup/wikimind/commit/bad119792ea40751afddc6750eef8060b039c812)) + + +### Bug Fixes + +* add --yes to flyctl deploy commands in CI ([#633](https://github.com/manavgup/wikimind/issues/633)) ([f6bd23b](https://github.com/manavgup/wikimind/commit/f6bd23bcb9efbc0e82f4ccc6e5f45fb2aa8e6237)) +* add Alembic migration for concept-layer tables ([#546](https://github.com/manavgup/wikimind/issues/546)) ([#549](https://github.com/manavgup/wikimind/issues/549)) ([8c6ee6f](https://github.com/manavgup/wikimind/commit/8c6ee6f262b30a5e68bb407a600592b640f9f16d)) +* add assert guards for str | None user_id passed to str-only functions ([b60f127](https://github.com/manavgup/wikimind/commit/b60f127d4e987516e5131d2785a8eff62b261938)) +* add config validators, extract magic numbers to settings ([#647](https://github.com/manavgup/wikimind/issues/647), [#671](https://github.com/manavgup/wikimind/issues/671), [#672](https://github.com/manavgup/wikimind/issues/672)) ([#701](https://github.com/manavgup/wikimind/issues/701)) ([ec69181](https://github.com/manavgup/wikimind/commit/ec69181b03183c992f5e8defe9398a0585ad220b)) +* add libnghttp2-14 to Dockerfile to patch CVE-2026-27135 ([#686](https://github.com/manavgup/wikimind/issues/686)) ([#687](https://github.com/manavgup/wikimind/issues/687)) ([8ddbd5a](https://github.com/manavgup/wikimind/commit/8ddbd5aebcc492110ec244f51f06d9bcb948b068)) +* add missing _min_score attr in embedding search test ([#235](https://github.com/manavgup/wikimind/issues/235)) ([3830306](https://github.com/manavgup/wikimind/commit/38303065b534ad11adaa82e0c08c55f7b2e81dc8)) +* add missing ADRs to MkDocs nav and enable docs build on PRs ([#311](https://github.com/manavgup/wikimind/issues/311)) ([4039a00](https://github.com/manavgup/wikimind/commit/4039a00461af9d69c8f8c163076b16c73ab9d6eb)), closes [#300](https://github.com/manavgup/wikimind/issues/300) +* add missing Alembic migrations and schema-drift CI check ([#625](https://github.com/manavgup/wikimind/issues/625)) ([690abc8](https://github.com/manavgup/wikimind/commit/690abc8252f849e29d245f67102a6e15f8b2eb81)) +* add missing getDoclingStatus export to api/admin.ts ([a7013e6](https://github.com/manavgup/wikimind/commit/a7013e6232c6ed15bc8e5f9217507ff578e1950b)) +* add missing imports in admin.py (structlog, BaseModel, httpx, get_admin_service) ([0493344](https://github.com/manavgup/wikimind/commit/0493344d5a45a3565093eb070b7e0c62403728d3)) +* add ownership check to file_back_conversation ([9ee26f4](https://github.com/manavgup/wikimind/commit/9ee26f499979d64d78d38345a2aa551d76ec9f5e)) +* add ownership checks to Q&A conversation endpoints ([#341](https://github.com/manavgup/wikimind/issues/341)) ([881c942](https://github.com/manavgup/wikimind/commit/881c94215a7f1751aa5b548b5ff0248ee6f6cc63)) +* add port-in-use check to make dev ([#435](https://github.com/manavgup/wikimind/issues/435)) ([#436](https://github.com/manavgup/wikimind/issues/436)) ([81ec3d3](https://github.com/manavgup/wikimind/commit/81ec3d34f0c04afa92c57acaab74c342969b1c02)) +* add Redis connectivity and queue depth to /health/deep ([#587](https://github.com/manavgup/wikimind/issues/587)) ([#604](https://github.com/manavgup/wikimind/issues/604)) ([8bda1aa](https://github.com/manavgup/wikimind/commit/8bda1aa198e6a955cf123152d428422757a17592)) +* add skip buttons and global dismiss to onboarding wizard ([4b0c0fb](https://github.com/manavgup/wikimind/commit/4b0c0fbc9b1e83950b62e36b10d1a455fdc3dc99)) +* add skip buttons and global dismiss to onboarding wizard ([d08476a](https://github.com/manavgup/wikimind/commit/d08476a4a6a1c4bedd9eca68f275022df724d65d)), closes [#327](https://github.com/manavgup/wikimind/issues/327) +* add trailing newline to empty __init__.py files ([#525](https://github.com/manavgup/wikimind/issues/525)) ([b53408a](https://github.com/manavgup/wikimind/commit/b53408a3a649d4c5702b7110071ed4471de40489)) +* add user_id checks to recompile_article and get_article_tags ([#692](https://github.com/manavgup/wikimind/issues/692)) ([94af5cc](https://github.com/manavgup/wikimind/commit/94af5ccd1a5e1d681a3ea8304a4f1889505b2e97)) +* add user_id ownership checks to get_job and trigger_compile ([#690](https://github.com/manavgup/wikimind/issues/690)) ([6ef3cd6](https://github.com/manavgup/wikimind/commit/6ef3cd61ac8ccc69000f54443b8183623665fb16)) +* add user_id to 9 unprotected API endpoints ([#339](https://github.com/manavgup/wikimind/issues/339)) ([e67fc7d](https://github.com/manavgup/wikimind/commit/e67fc7d006c4ff25136b8724792fefa918ac13a7)) +* add user_id to Backlink rows created by concept_compiler ([0e01079](https://github.com/manavgup/wikimind/commit/0e01079356b2d21e78f59b0228c8264404493de9)) +* add user_id to file storage reads and ingest source ownership checks ([#338](https://github.com/manavgup/wikimind/issues/338), [#342](https://github.com/manavgup/wikimind/issues/342)) ([01d2b3f](https://github.com/manavgup/wikimind/commit/01d2b3f22f86256a55002da4bee2ae1ca9d86872)) +* address PR [#216](https://github.com/manavgup/wikimind/issues/216) code review follow-up items ([#228](https://github.com/manavgup/wikimind/issues/228)) ([b4c5c57](https://github.com/manavgup/wikimind/commit/b4c5c57567709b7b4c78574701ba179fdb7ff50e)) +* address review findings — scope concept pages, fast-path chown ([c03579d](https://github.com/manavgup/wikimind/commit/c03579d7053bb3b88399c8d1358cf36f653825d5)) +* allow deploy jobs to run on workflow_dispatch trigger ([#324](https://github.com/manavgup/wikimind/issues/324)) ([b1bf36d](https://github.com/manavgup/wikimind/commit/b1bf36d653410d7b6048daa733e046464655b05d)) +* always chown data dir subdirs in entrypoint ([f9c5ea4](https://github.com/manavgup/wikimind/commit/f9c5ea43561d5b0f74057a631c0f472080610a3f)) +* auto-resolve .secrets.baseline merge conflicts ([#283](https://github.com/manavgup/wikimind/issues/283)) ([8866552](https://github.com/manavgup/wikimind/commit/8866552a2fc4db76fa1bc44433605f683712b176)) +* avoid slug collisions in article compilation ([#185](https://github.com/manavgup/wikimind/issues/185), [#167](https://github.com/manavgup/wikimind/issues/167)) ([#238](https://github.com/manavgup/wikimind/issues/238)) ([5ffaad4](https://github.com/manavgup/wikimind/commit/5ffaad4510faf488166cb76d0349cd5dcbe7bb82)) +* block compile retry for zombie sources ([#554](https://github.com/manavgup/wikimind/issues/554)) ([bdb6aef](https://github.com/manavgup/wikimind/commit/bdb6aef290f809559d1a1bced67c179459dd3f19)) +* block compile retry for zombie sources and mark failed ([#554](https://github.com/manavgup/wikimind/issues/554)) ([16ef797](https://github.com/manavgup/wikimind/commit/16ef79705a16aaf9631c0cc0a3080c2a03d46d3b)) +* bump python-multipart to resolve CVE-2026-42561 ([#469](https://github.com/manavgup/wikimind/issues/469)) ([#478](https://github.com/manavgup/wikimind/issues/478)) ([beda4e6](https://github.com/manavgup/wikimind/commit/beda4e65ee1abf28d44c405d659b0849ccd8eb70)) +* cache Redis connection pool in BackgroundCompiler ([#669](https://github.com/manavgup/wikimind/issues/669)) ([#693](https://github.com/manavgup/wikimind/issues/693)) ([22eba97](https://github.com/manavgup/wikimind/commit/22eba97b3b7db5ca8d9be71af282870f4f5d07c2)) +* **ci:** add alembic/** to Docker workflow path filter ([#792](https://github.com/manavgup/wikimind/issues/792)) ([b2ddd59](https://github.com/manavgup/wikimind/commit/b2ddd598b9fe7831cedc4830df6a77263772ddad)) +* **ci:** add fly.redis.toml to Docker workflow path filters ([#826](https://github.com/manavgup/wikimind/issues/826)) ([31b7fd8](https://github.com/manavgup/wikimind/commit/31b7fd867fd0a62052e3e13814b9d9efe42bbc0b)) +* **ci:** add production background job E2E verification ([#799](https://github.com/manavgup/wikimind/issues/799)) ([21ddd39](https://github.com/manavgup/wikimind/commit/21ddd3961e3909ba21d45c17c06c5a4f01d66f6a)) +* **ci:** add schema-aware rollback policy ([#589](https://github.com/manavgup/wikimind/issues/589)) ([#795](https://github.com/manavgup/wikimind/issues/795)) ([0d1949d](https://github.com/manavgup/wikimind/commit/0d1949de1112f5652ba4cfa503d7a63cae12a3e8)) +* **ci:** allow-list CVE-2026-46333 (linux-libc-dev kernel read vuln) ([447d7ec](https://github.com/manavgup/wikimind/commit/447d7ec1e2b261627f6ac1338fca0359596ab12c)) +* **ci:** configure semantic-release to push via SSH deploy key ([852988f](https://github.com/manavgup/wikimind/commit/852988fdf996c2344e4d6e6dd281f53a04fefa0c)) +* **ci:** resolve Trivy, deploy-pages, docling endpoint, and doc-sync drift ([#748](https://github.com/manavgup/wikimind/issues/748)) ([d4b3b05](https://github.com/manavgup/wikimind/commit/d4b3b05168c9f16966711b304e9a7377fb1451d0)) +* **ci:** rewrite HTTPS to SSH for semantic-release push ([c057034](https://github.com/manavgup/wikimind/commit/c0570346fb467cebb1db3fb96512f6120f789a68)) +* **ci:** rewrite token-embedded HTTPS URL to SSH for git push ([df96ae2](https://github.com/manavgup/wikimind/commit/df96ae248d644a3312a2af618f61485d3b86d6eb)) +* **ci:** rotate Docker cache weekly to prevent stale CVE scan failures ([#776](https://github.com/manavgup/wikimind/issues/776)) ([499d84f](https://github.com/manavgup/wikimind/commit/499d84ff4e868a2552f0539dc11cca1de7db7a65)) +* **ci:** scope concurrency groups to prevent cross-PR cancellation ([#539](https://github.com/manavgup/wikimind/issues/539)) ([#733](https://github.com/manavgup/wikimind/issues/733)) ([670b964](https://github.com/manavgup/wikimind/commit/670b9647c990d60d31b68f060d26dc1ae85b24b6)) +* **ci:** split version/publish to use SSH for push, HTTPS for API ([0d29e4b](https://github.com/manavgup/wikimind/commit/0d29e4b409ef0d5603885e4b8e17a462deeadf62)) +* **ci:** stabilize CI/CD pipeline — pin images, guard create_all, configurable pools ([#634](https://github.com/manavgup/wikimind/issues/634)) ([#798](https://github.com/manavgup/wikimind/issues/798)) ([90f7709](https://github.com/manavgup/wikimind/commit/90f7709acf257b70849c15fd0b244320f17ce097)) +* **ci:** stabilize main CI — Wave 1 fixes ([#534](https://github.com/manavgup/wikimind/issues/534)) ([#782](https://github.com/manavgup/wikimind/issues/782)) ([76f7941](https://github.com/manavgup/wikimind/commit/76f7941f645a6f2f69a0dd81da2de01a64560d7e)) +* **ci:** stage secrets baseline after regeneration so detect-secrets-hook passes ([94e0d2d](https://github.com/manavgup/wikimind/commit/94e0d2df1864194dc014f1fca447a3e752a810ec)) +* **ci:** switch from semantic-release to release-please ([#540](https://github.com/manavgup/wikimind/issues/540)) ([51db5ce](https://github.com/manavgup/wikimind/commit/51db5ce065ae43a3110c96761f345578842eb37b)) +* **ci:** use correct release-please-action v5 SHA ([bc54284](https://github.com/manavgup/wikimind/commit/bc54284532912c75c816fcb12fc39c3a77a1a475)) +* **ci:** use lowercase 'name' key in fly volume existence checks ([#827](https://github.com/manavgup/wikimind/issues/827)) ([d241996](https://github.com/manavgup/wikimind/commit/d241996f825ef5c7b490a62f08dd2c5731ab826b)) +* **ci:** use SSH deploy key for semantic-release push ([#540](https://github.com/manavgup/wikimind/issues/540)) ([57180a1](https://github.com/manavgup/wikimind/commit/57180a1b1e1139b338b223782b87d17190b6e429)) +* clean up orphan concept-page rows missing markdown files ([#286](https://github.com/manavgup/wikimind/issues/286)) ([210f576](https://github.com/manavgup/wikimind/commit/210f576b87077066e93e99c37a67edab7d333e59)), closes [#169](https://github.com/manavgup/wikimind/issues/169) +* CLI token generator now uses user UUID from DB instead of email ([#482](https://github.com/manavgup/wikimind/issues/482)) ([2580c3c](https://github.com/manavgup/wikimind/commit/2580c3c42d614fb2df6dc1b5dbbe5d4688e3f708)), closes [#468](https://github.com/manavgup/wikimind/issues/468) +* cold start too slow for Fly.io — pre-compile bytecode, reduce workers ([#302](https://github.com/manavgup/wikimind/issues/302)) ([a9486d0](https://github.com/manavgup/wikimind/commit/a9486d02e421ecd5a80d24749e8b32de745ddc2b)) +* **compiler:** use json.dumps for concept_ids and source_ids — fixes malformed JSON breaking index.md grouping ([0a41ef5](https://github.com/manavgup/wikimind/commit/0a41ef509c2419e906b8e44c11a2acf33948f8c3)) +* **compiler:** use json.dumps for concept_ids and source_ids serialization ([b78d541](https://github.com/manavgup/wikimind/commit/b78d5415b350690c594b3232a397ac4023dddada)), closes [#112](https://github.com/manavgup/wikimind/issues/112) +* concept upsert race condition and user scoping ([#688](https://github.com/manavgup/wikimind/issues/688)) ([74f01f6](https://github.com/manavgup/wikimind/commit/74f01f637b6bd9fdf497499ec29b2d81c94b5a1a)) +* consolidate Alembic migration heads into linear chain ([#533](https://github.com/manavgup/wikimind/issues/533)) ([bdbee8a](https://github.com/manavgup/wikimind/commit/bdbee8a3ec80164a60bc55ce90b96f281a508986)) +* correct flyctl redis create flags (--disable-eviction, no free plan) ([#575](https://github.com/manavgup/wikimind/issues/575)) ([0a836f0](https://github.com/manavgup/wikimind/commit/0a836f066ba4af365ca52d19da958bd7f0a512fd)) +* correct smoke test URL /api/concepts → /api/wiki/concepts ([b0306bf](https://github.com/manavgup/wikimind/commit/b0306bf0a24227de94996f0bb2dd055821e77a0c)) +* cover article_b_id in cascade delete, add TODO for deferred checks ([512daeb](https://github.com/manavgup/wikimind/commit/512daeb42038fa0b4966648cbdbec2b2a1091941)) +* create data subdirs in entrypoint before chown for Fly.io volumes ([68786f6](https://github.com/manavgup/wikimind/commit/68786f6ecf2f38f3f852e81491230f42e67a1381)) +* create data subdirs in entrypoint before chown for Fly.io volumes ([59fd4a9](https://github.com/manavgup/wikimind/commit/59fd4a9bf3f5b2980ccc7f14ddd0efdce6184eac)), closes [#347](https://github.com/manavgup/wikimind/issues/347) +* **db:** chain 0019-0022 migrations to resolve multiple Alembic heads ([738823b](https://github.com/manavgup/wikimind/commit/738823b339f1ac474686b2d029d5632d0f973da3)) +* **db:** harden backfill migration against storage errors on Fly.io ([8a246dc](https://github.com/manavgup/wikimind/commit/8a246dcc3c565f228aee9dc601d6a8b1f8222061)) +* default AnthropicConfig.enabled to False (closes [#172](https://github.com/manavgup/wikimind/issues/172)) ([#231](https://github.com/manavgup/wikimind/issues/231)) ([5696312](https://github.com/manavgup/wikimind/commit/569631243c24273f74b2f61b1257b80e9e4678c3)) +* defer User import in deps.py to avoid cyclic-import (CodeQL) ([6ec941e](https://github.com/manavgup/wikimind/commit/6ec941eb54d0db24fa7e04148704229ef3b57025)) +* deploy pipeline stability (Redis URL, urllib3/Trivy, secrets, release token, smoke E2E) ([#579](https://github.com/manavgup/wikimind/issues/579)) ([b2f994e](https://github.com/manavgup/wikimind/commit/b2f994ef0225efa334a59b0807ca87035342a937)) +* deploy workflow hardening ([#584](https://github.com/manavgup/wikimind/issues/584), [#590](https://github.com/manavgup/wikimind/issues/590), [#591](https://github.com/manavgup/wikimind/issues/591), [#595](https://github.com/manavgup/wikimind/issues/595), [#598](https://github.com/manavgup/wikimind/issues/598)) ([#605](https://github.com/manavgup/wikimind/issues/605)) ([94cf8ca](https://github.com/manavgup/wikimind/commit/94cf8ca4cac4df5a16df6ae72d640b9b231758da)) +* disable asyncpg statement cache for PgBouncer compatibility ([#622](https://github.com/manavgup/wikimind/issues/622)) ([87bf338](https://github.com/manavgup/wikimind/commit/87bf3389eca56d6732061cd9670bfb24723a38a0)) +* disable SSL for asyncpg on Fly.io when no sslmode is set ([#272](https://github.com/manavgup/wikimind/issues/272)) ([6914bf9](https://github.com/manavgup/wikimind/commit/6914bf96bff81fe1f5bd8525935938e554cfa690)) +* Docker + CI hardening ([#596](https://github.com/manavgup/wikimind/issues/596), [#599](https://github.com/manavgup/wikimind/issues/599), [#600](https://github.com/manavgup/wikimind/issues/600)) ([#602](https://github.com/manavgup/wikimind/issues/602)) ([4d9c137](https://github.com/manavgup/wikimind/commit/4d9c137bf74818dd3e0741fef6e808b0604de9c8)) +* Docker workflow triggers on frontend and deploy config changes ([#568](https://github.com/manavgup/wikimind/issues/568)) ([#571](https://github.com/manavgup/wikimind/issues/571)) ([273c722](https://github.com/manavgup/wikimind/commit/273c722beb00c5dc08c7a7cc3830f3ef6a6677b9)) +* drop stale single-column UNIQUE index on concept.name ([#433](https://github.com/manavgup/wikimind/issues/433)) ([#437](https://github.com/manavgup/wikimind/issues/437)) ([9d0ab11](https://github.com/manavgup/wikimind/commit/9d0ab11b30764f942927cd732f3489038f09a946)) +* dynamic alembic head + full production verification ([#550](https://github.com/manavgup/wikimind/issues/550) follow-up) ([#576](https://github.com/manavgup/wikimind/issues/576)) ([3ead77a](https://github.com/manavgup/wikimind/commit/3ead77ad22f8016f104fe2f359c904102fdf0a4b)) +* enforce user_id ownership when dismissing lint findings ([#691](https://github.com/manavgup/wikimind/issues/691)) ([35f8593](https://github.com/manavgup/wikimind/commit/35f85934971e8b5ee5f94c569e204969b5a96ca0)) +* exchange dev_token for JWT in deploy verification steps ([#623](https://github.com/manavgup/wikimind/issues/623)) ([da5056b](https://github.com/manavgup/wikimind/commit/da5056bdf3aec04d406ba4faed55d77f9f8c06b1)) +* explicitly disable SSL for asyncpg on Fly.io ([#271](https://github.com/manavgup/wikimind/issues/271)) ([fc10a7f](https://github.com/manavgup/wikimind/commit/fc10a7f9a41dba123a983211647ccc8c3f243011)) +* extract shared slug generation and fix unbounded loop ([#712](https://github.com/manavgup/wikimind/issues/712)) ([#779](https://github.com/manavgup/wikimind/issues/779)) ([d506c68](https://github.com/manavgup/wikimind/commit/d506c681b34c1870eca49965764b028df5b6f89e)) +* extract WebSocket user_id from JWT cookie instead of query param ([#340](https://github.com/manavgup/wikimind/issues/340)) ([7a2cd4a](https://github.com/manavgup/wikimind/commit/7a2cd4a18b22a6a549bf830b88029e13c4f8fe93)) +* filter backlinks by both source and target article_id in health page ([de11939](https://github.com/manavgup/wikimind/commit/de11939352b2915c92e409806e309fb7d66ca758)) +* forward user_id in get_health and get_latest linter calls ([b7612e8](https://github.com/manavgup/wikimind/commit/b7612e8585aa203122b6137e94ca656032f62cee)) +* **frontend:** add accessibility labels, toast auto-dismiss, and ESLint a11y ([#713](https://github.com/manavgup/wikimind/issues/713)) ([#718](https://github.com/manavgup/wikimind/issues/718)) ([97f0aaf](https://github.com/manavgup/wikimind/commit/97f0aaf5eede4a4d1e457bfc23fb5a1a9ae8ac6b)) +* **frontend:** add React error boundary to prevent white-screen crashes ([#707](https://github.com/manavgup/wikimind/issues/707)) ([#716](https://github.com/manavgup/wikimind/issues/716)) ([2696f85](https://github.com/manavgup/wikimind/commit/2696f855015564cc536638501c4eae6c0232d0c9)) +* **frontend:** sanitize dangerouslySetInnerHTML with DOMPurify ([#708](https://github.com/manavgup/wikimind/issues/708)) ([#715](https://github.com/manavgup/wikimind/issues/715)) ([70fc201](https://github.com/manavgup/wikimind/commit/70fc20107b3569337e81642a9717b5e3b6a9e7ab)) +* functional staging smoke tests + manual approval gate ([#553](https://github.com/manavgup/wikimind/issues/553)) ([#563](https://github.com/manavgup/wikimind/issues/563)) ([272bf12](https://github.com/manavgup/wikimind/commit/272bf12dbb4d44f2d03391ed66f93ea3d47606e1)) +* generate missing concept pages and clean up orphaned DB rows ([#237](https://github.com/manavgup/wikimind/issues/237)) ([0e49ce0](https://github.com/manavgup/wikimind/commit/0e49ce0415e739b1b952821a0f56557a88ccf353)) +* graph concept filter matches visible node count ([#399](https://github.com/manavgup/wikimind/issues/399)) ([#480](https://github.com/manavgup/wikimind/issues/480)) ([588d4c0](https://github.com/manavgup/wikimind/commit/588d4c0240432f603b962040ceb2013f2790f0c3)) +* greenlet_spawn error — isolate concept compilation session ([#152](https://github.com/manavgup/wikimind/issues/152)) ([#153](https://github.com/manavgup/wikimind/issues/153)) ([a760f23](https://github.com/manavgup/wikimind/commit/a760f230b5f2f874593026a41b972670eacadd76)) +* guard dev_token with environment check, default to production ([#632](https://github.com/manavgup/wikimind/issues/632), [#670](https://github.com/manavgup/wikimind/issues/670)) ([#714](https://github.com/manavgup/wikimind/issues/714)) ([6ab434c](https://github.com/manavgup/wikimind/commit/6ab434c1102e365540892570c13fb419e4796b21)) +* guard write check by storage_backend, align entrypoint fallback path ([27e05f1](https://github.com/manavgup/wikimind/commit/27e05f1b4ebddffc7af20c1629d1877e3ff608de)) +* handle "already contains" error from fly postgres attach ([#322](https://github.com/manavgup/wikimind/issues/322)) ([c0fa0bb](https://github.com/manavgup/wikimind/commit/c0fa0bb86fa23b63fbbdb35964fee45d242a257d)) +* handle single-result dict in contradiction batch parser ([#259](https://github.com/manavgup/wikimind/issues/259)) ([#260](https://github.com/manavgup/wikimind/issues/260)) ([289523e](https://github.com/manavgup/wikimind/commit/289523e529c85e856acbb4204f714895246f57d1)) +* handle unreachable backend gracefully in Chrome extension ([#421](https://github.com/manavgup/wikimind/issues/421)) ([0f9c812](https://github.com/manavgup/wikimind/commit/0f9c812c1ba6686ed5b26187d759970a2214ef48)) +* harden production config — fail loudly when Redis missing ([#556](https://github.com/manavgup/wikimind/issues/556)) ([#561](https://github.com/manavgup/wikimind/issues/561)) ([8323c1a](https://github.com/manavgup/wikimind/commit/8323c1a12c2371660934e8b2ebca3de47938b05d)) +* increase Playwright CI backend startup timeout to 60s ([#270](https://github.com/manavgup/wikimind/issues/270)) ([d7d8b6d](https://github.com/manavgup/wikimind/commit/d7d8b6d8f6d4cb4a5dbfc508070c64f30a487a06)) +* **infra:** remove invalid [[services]] block from fly.redis.toml ([#825](https://github.com/manavgup/wikimind/issues/825)) ([0b69295](https://github.com/manavgup/wikimind/commit/0b6929568efdbfe4ab5224b6dec854e108dd9959)) +* **ingest:** add token-aware fallback to chunk_text for headingless documents ([50b6682](https://github.com/manavgup/wikimind/commit/50b66822e644c4803986f466ec80645c26d90983)), closes [#110](https://github.com/manavgup/wikimind/issues/110) +* **ingest:** add token-aware fallback to chunk_text for large headingless documents ([6b07aee](https://github.com/manavgup/wikimind/commit/6b07aeea6e239e2123317ff23431d821f31ea51e)) +* **ingest:** extract meaningful PDF title from metadata ([#129](https://github.com/manavgup/wikimind/issues/129)) ([b935c54](https://github.com/manavgup/wikimind/commit/b935c5471901defe7c7acb567e5999edc6dd6895)) +* **ingest:** route PDF URLs to PDF adapter instead of HTML extractor ([#115](https://github.com/manavgup/wikimind/issues/115)) ([ed8e9ca](https://github.com/manavgup/wikimind/commit/ed8e9ca779c006458e605065674e55d88e62802e)) +* **ingest:** warm up Docling converter at startup ([#122](https://github.com/manavgup/wikimind/issues/122)) ([777d52a](https://github.com/manavgup/wikimind/commit/777d52a9532bc264d6bb12b3bd3139064f9be5a3)) +* isolate staging Docling sidecar from production ([#603](https://github.com/manavgup/wikimind/issues/603)) ([7fcec1f](https://github.com/manavgup/wikimind/commit/7fcec1f7d274634d56ddef1c19472a34893a95f6)), closes [#585](https://github.com/manavgup/wikimind/issues/585) +* isolate sweep sessions to prevent greenlet and identity-map errors ([#163](https://github.com/manavgup/wikimind/issues/163)) ([#166](https://github.com/manavgup/wikimind/issues/166)) ([d6198ff](https://github.com/manavgup/wikimind/commit/d6198ff8fcdc780b70cdfd262c2cacb81a2a32ac)) +* isolate sweep_wikilinks sessions to prevent greenlet crash ([#287](https://github.com/manavgup/wikimind/issues/287)) ([7f15199](https://github.com/manavgup/wikimind/commit/7f15199b880e97d71b8550e8a48d56a1a620fc1c)), closes [#168](https://github.com/manavgup/wikimind/issues/168) +* **jobs:** set source status to processing on compile retry ([f900c81](https://github.com/manavgup/wikimind/commit/f900c814d7e0e004e8f5108df778c70590f57e91)) +* **jobs:** set source status to processing on compile retry ([e3ec632](https://github.com/manavgup/wikimind/commit/e3ec6320a57909c793ac823bdbce781f516c0110)), closes [#111](https://github.com/manavgup/wikimind/issues/111) +* keep staging machine running (min_machines_running = 1) ([#580](https://github.com/manavgup/wikimind/issues/580)) ([4710b6c](https://github.com/manavgup/wikimind/commit/4710b6c94e6d9fb0adbcb3285c493d0fbab219db)) +* key LLMRouter budget cache by user_id ([#666](https://github.com/manavgup/wikimind/issues/666)) ([#694](https://github.com/manavgup/wikimind/issues/694)) ([c2ca4e5](https://github.com/manavgup/wikimind/commit/c2ca4e55077b2a1b419edb19cef6f689f1edcb8f)) +* **linter:** address code review findings from [#131](https://github.com/manavgup/wikimind/issues/131) ([#139](https://github.com/manavgup/wikimind/issues/139)) ([3e85d4b](https://github.com/manavgup/wikimind/commit/3e85d4bf96126cc0f4df721d768649d6488a169f)) +* make /auth/token endpoint auth-exempt ([#434](https://github.com/manavgup/wikimind/issues/434)) ([#438](https://github.com/manavgup/wikimind/issues/438)) ([fab0317](https://github.com/manavgup/wikimind/commit/fab031752cb2686cd277f3aa1cab4ac63456472c)) +* make docker-down clean up orphan containers ([#400](https://github.com/manavgup/wikimind/issues/400)) ([8447613](https://github.com/manavgup/wikimind/commit/8447613f35174e42df9864f6991ec8f791f46961)) +* make init_db() idempotent and fix Redis TLS for Upstash ([#583](https://github.com/manavgup/wikimind/issues/583)) ([0544ed1](https://github.com/manavgup/wikimind/commit/0544ed1ae8d5ce0b4545070b40d056f242c19567)) +* make pre-commit hooks auto-fix and align make verify with CI ([#494](https://github.com/manavgup/wikimind/issues/494)) ([c523bf9](https://github.com/manavgup/wikimind/commit/c523bf91eec0997eb1d566a54872710ccd56237c)) +* make staging and production smoke tests hard-fail ([#567](https://github.com/manavgup/wikimind/issues/567)) ([#573](https://github.com/manavgup/wikimind/issues/573)) ([300bcb7](https://github.com/manavgup/wikimind/commit/300bcb7ac5aa75689af119c8e5079e8d87066e48)) +* make user_id required on _set_preference, remove ANONYMOUS_USER_ID default ([6dcc363](https://github.com/manavgup/wikimind/commit/6dcc363910a7817bcea172cfff77bc102ddb8532)) +* make WikiMind logo link to home page ([#176](https://github.com/manavgup/wikimind/issues/176)) ([#178](https://github.com/manavgup/wikimind/issues/178)) ([4efd8f4](https://github.com/manavgup/wikimind/commit/4efd8f4d956918e722a0f7d4da90504480666b75)) +* migrate frontend to BYOK endpoint for API key storage ([#321](https://github.com/manavgup/wikimind/issues/321)) ([687300c](https://github.com/manavgup/wikimind/commit/687300c04a4c88b531c97068c2689aa1c7953698)) +* move migrations to Fly release command with advisory lock ([#586](https://github.com/manavgup/wikimind/issues/586)) ([#606](https://github.com/manavgup/wikimind/issues/606)) ([0603ab8](https://github.com/manavgup/wikimind/commit/0603ab8fd67839cb8ede663fdf44c952c57b79f8)) +* normalize error response envelopes to standard format ([#680](https://github.com/manavgup/wikimind/issues/680)) ([#723](https://github.com/manavgup/wikimind/issues/723)) ([ac78658](https://github.com/manavgup/wikimind/commit/ac786585b51d021bf4169138b0af591cdb6e79c7)) +* Ollama JSON parsing failures that break compilation and onboarding ([ad70ca6](https://github.com/manavgup/wikimind/commit/ad70ca6ef0e806d6b567a8d8f6dfeae1e1fe0bbc)) +* Ollama JSON parsing failures that break compilation and onboarding ([#297](https://github.com/manavgup/wikimind/issues/297)) ([f75e683](https://github.com/manavgup/wikimind/commit/f75e683811706a344bfc434f4811d5f9fb9b7009)) +* P0 multi-user data isolation — Epic [#337](https://github.com/manavgup/wikimind/issues/337) ([a7ef64d](https://github.com/manavgup/wikimind/commit/a7ef64dbc32d9755b81daa0c459227310f405082)) +* persist CompiledClaim rows during save_article ([#529](https://github.com/manavgup/wikimind/issues/529)) ([0499fc1](https://github.com/manavgup/wikimind/commit/0499fc10bcc9d5d9bbd7617f2a56cb94f0b5f207)) +* Postgres-compatible INSERT in Alembic migration 0003 ([#309](https://github.com/manavgup/wikimind/issues/309)) ([a630e76](https://github.com/manavgup/wikimind/commit/a630e763a4e09a9b2c606b72e1cd19e0749d3112)) +* prevent duplicate compilation-complete notifications ([#479](https://github.com/manavgup/wikimind/issues/479)) ([71de18a](https://github.com/manavgup/wikimind/commit/71de18acacd4b518368d4833a1e3059bdd2d079c)), closes [#460](https://github.com/manavgup/wikimind/issues/460) +* propagate user_id from source to article during compilation ([#258](https://github.com/manavgup/wikimind/issues/258)) ([d400a35](https://github.com/manavgup/wikimind/commit/d400a35b3b374ac3ffdd84e0a092e0c6710e9c36)) +* raise Docker image size limit ([#527](https://github.com/manavgup/wikimind/issues/527)) ([#528](https://github.com/manavgup/wikimind/issues/528)) ([184ea68](https://github.com/manavgup/wikimind/commit/184ea68d5fe28fe459141f232112fc838a3c8535)) +* re-implement PDF image extraction in ingest pipeline ([#378](https://github.com/manavgup/wikimind/issues/378)) ([#509](https://github.com/manavgup/wikimind/issues/509)) ([fdb0ffa](https://github.com/manavgup/wikimind/commit/fdb0ffa46f60c55c6a1df9a6df76565dd25d303b)) +* recompile updates article in place instead of creating orphan ([#492](https://github.com/manavgup/wikimind/issues/492)) ([#493](https://github.com/manavgup/wikimind/issues/493)) ([56c4a2f](https://github.com/manavgup/wikimind/commit/56c4a2fe169fbdffb8247950311237a548968422)) +* regenerate OpenAPI spec, fix mypy type errors ([dae18d9](https://github.com/manavgup/wikimind/commit/dae18d9c3d42c044b0d0fe556754d790d57c46dc)) +* regenerate uv.lock with fastmcp dependency ([#523](https://github.com/manavgup/wikimind/issues/523)) ([d18d3c1](https://github.com/manavgup/wikimind/commit/d18d3c17ce6c98d4ec28aaa6c8e91cc95bf24c69)) +* **release:** rewrite github.com HTTPS to PAT for semantic-release push ([57254d4](https://github.com/manavgup/wikimind/commit/57254d4b0f9e8d2d52c2589398250924c3419553)) +* remove falsy user_id guards to enforce unconditional isolation ([#665](https://github.com/manavgup/wikimind/issues/665)) ([#700](https://github.com/manavgup/wikimind/issues/700)) ([f21fcd3](https://github.com/manavgup/wikimind/commit/f21fcd336b8aaf2947f820a4c3206d0449643569)) +* remove interactive flyctl redis create from deploy pipeline ([#577](https://github.com/manavgup/wikimind/issues/577)) ([5356093](https://github.com/manavgup/wikimind/commit/5356093d8ef958353a8d244b32f61d5c562474e7)) +* remove Redis TLS auto-upgrade (breaks Fly private network) ([77520d2](https://github.com/manavgup/wikimind/commit/77520d24118b19ef601ee3823531303420db0986)) +* remove unused urlparse import ([c0b0a20](https://github.com/manavgup/wikimind/commit/c0b0a204b7188b11b057f7989c1f14f160c38439)) +* remove WEB_CONCURRENCY override and set min_machines_running=1 ([#601](https://github.com/manavgup/wikimind/issues/601)) ([fe8b435](https://github.com/manavgup/wikimind/commit/fe8b435c0e26b175af8edf06d394ab6da5b62f44)) +* remove WIKIMIND_REDIS_URL from preflight check (auto-provisioned) ([#566](https://github.com/manavgup/wikimind/issues/566)) ([cf889aa](https://github.com/manavgup/wikimind/commit/cf889aaa10979cdb5b362a834b6c77845874e297)) +* repair indentation error in worker.py from rebase ([1af3722](https://github.com/manavgup/wikimind/commit/1af37224f18eb22dc47ea96fe9a0a76392510a12)) +* repair rebase damage — restore missing imports, methods, and test fixtures ([42dcbc5](https://github.com/manavgup/wikimind/commit/42dcbc5192b5003afb0a527da94c77869c82d211)) +* replace HTTPException with domain errors in sharing service ([#645](https://github.com/manavgup/wikimind/issues/645)) ([#698](https://github.com/manavgup/wikimind/issues/698)) ([66c34a6](https://github.com/manavgup/wikimind/commit/66c34a6485c3e0a192efc8c4b8da0c0f838d2bb6)) +* reset budget flags at month boundary, log budget check errors ([#232](https://github.com/manavgup/wikimind/issues/232)) ([9b58e73](https://github.com/manavgup/wikimind/commit/9b58e73199c7b224dedfc9a9d4f86b828b1ffb2f)) +* resolve 11 basedpyright type errors ([#210](https://github.com/manavgup/wikimind/issues/210)) ([#211](https://github.com/manavgup/wikimind/issues/211)) ([8f81097](https://github.com/manavgup/wikimind/commit/8f810974d8cff951025d9173d180b5f833dfad97)) +* resolve CI failures on main (mypy, tests, doc-sync, pydocstyle) ([#519](https://github.com/manavgup/wikimind/issues/519)) ([803e18e](https://github.com/manavgup/wikimind/commit/803e18e838800eb8f5ecdeaa8865936a46a32212)) +* resolve GHCR image tag for workflow_dispatch deploys ([9aeb53a](https://github.com/manavgup/wikimind/commit/9aeb53a32fa9a19983897a800d39909ad7a33d35)) +* resolve lint and mypy errors from cherry-pick assembly ([2c93598](https://github.com/manavgup/wikimind/commit/2c935982ee04c49d3a176668f82c1fda630f9de1)) +* respect COMPOSE_CMD variable in docker-* targets ([#802](https://github.com/manavgup/wikimind/issues/802)) ([ccd431b](https://github.com/manavgup/wikimind/commit/ccd431b9236057f364bf69aae60b558aa6ec9249)) +* restore feature code from empty squash merges ([#751](https://github.com/manavgup/wikimind/issues/751)-[#761](https://github.com/manavgup/wikimind/issues/761)) ([#768](https://github.com/manavgup/wikimind/issues/768)) ([09b5b39](https://github.com/manavgup/wikimind/commit/09b5b39f582a1c8e0ddccbc86f7ec57b8acaac2c)) +* restore Redis TLS auto-upgrade for Upstash ([5e348a0](https://github.com/manavgup/wikimind/commit/5e348a07cfe30690526c35c55f0cb6cdc77ca717)) +* revert WEB_CONCURRENCY to 4 for Fly.io deploy health checks ([#304](https://github.com/manavgup/wikimind/issues/304)) ([fa6a1c1](https://github.com/manavgup/wikimind/commit/fa6a1c10e1af833c663a793d630e555b37665438)), closes [#303](https://github.com/manavgup/wikimind/issues/303) +* review findings — import order, dismiss_finding no-op, delete_account auth ([691858a](https://github.com/manavgup/wikimind/commit/691858adb560f11f3b6adf22db1e9b6d6cf4cb9e)) +* run create_all() on Postgres too so migrationhistory table exists ([#280](https://github.com/manavgup/wikimind/issues/280)) ([47dd7c4](https://github.com/manavgup/wikimind/commit/47dd7c40aa19d2943fed3ffe78fd176dc3f16e13)), closes [#279](https://github.com/manavgup/wikimind/issues/279) +* run entrypoint as root with gosu to fix Fly.io volume permissions ([9632241](https://github.com/manavgup/wikimind/commit/9632241dd93b5da8d52e6e7886e52e06260535b8)) +* sanitize internal error messages in API responses ([#355](https://github.com/manavgup/wikimind/issues/355)) ([c34038c](https://github.com/manavgup/wikimind/commit/c34038cdd28dab861344e54cf919bfc4a67efd39)) +* sanitize internal error messages in API responses ([#355](https://github.com/manavgup/wikimind/issues/355)) ([3a2c681](https://github.com/manavgup/wikimind/commit/3a2c6819c7993099adf2c3349d4268ef3abb58bb)) +* sanitize user_id in activity log to prevent path traversal (CodeQL) ([f609153](https://github.com/manavgup/wikimind/commit/f609153ea8247b9af132384c942aec3ab8b4734f)) +* scope concurrent-run guard and orphan backlink JOINs by user_id ([3145593](https://github.com/manavgup/wikimind/commit/31455939f9cd81ca86c23dd6018ca9eb709735c1)) +* scope CostLog budget check and logging by user_id ([#344](https://github.com/manavgup/wikimind/issues/344)) ([d4136b3](https://github.com/manavgup/wikimind/commit/d4136b3814bc4c95020b89bba8dbea997facbc5c)) +* scope CostLog by user_id + store relative file paths ([#344](https://github.com/manavgup/wikimind/issues/344), [#345](https://github.com/manavgup/wikimind/issues/345)) ([9972de8](https://github.com/manavgup/wikimind/commit/9972de816f3fb1670ebde8946192840a8005b72f)) +* scope linter engine queries by user_id for multi-user isolation ([6f17b9e](https://github.com/manavgup/wikimind/commit/6f17b9e84456d2272c6770c2c4578791b6c53fa1)) +* scope onboarding status per user so new users see the wizard ([b68e49b](https://github.com/manavgup/wikimind/commit/b68e49be84a0de752afc446c7d0b6eed4b935247)) +* scope P1 engine/service queries by user_id (Epic [#337](https://github.com/manavgup/wikimind/issues/337)) ([c732258](https://github.com/manavgup/wikimind/commit/c7322589c0a09a4bcf905691d74abba0b2704ac3)) +* scope service-layer queries, file paths, and ChromaDB by user_id ([49d88ea](https://github.com/manavgup/wikimind/commit/49d88eaf8986c640c99c77a7f58279b9706fb307)) +* scope source dedup by user_id to prevent cross-tenant collision ([#664](https://github.com/manavgup/wikimind/issues/664)) ([#696](https://github.com/manavgup/wikimind/issues/696)) ([cbc26e4](https://github.com/manavgup/wikimind/commit/cbc26e4a2338aaeaf2f0bd22c8cb43d35116d81f)) +* scope wikilink resolver and backlink enforcer by user_id ([87fe40f](https://github.com/manavgup/wikimind/commit/87fe40f8b0296ffe844e512c4188b61365dc8ad0)) +* **security:** add Content-Security-Policy and HSTS headers ([#703](https://github.com/manavgup/wikimind/issues/703)) ([#725](https://github.com/manavgup/wikimind/issues/725)) ([32c2525](https://github.com/manavgup/wikimind/commit/32c25250109b095e4b599807d047d1bcd0428ad0)) +* **security:** add path traversal guard to LocalFileStorage._resolve ([#685](https://github.com/manavgup/wikimind/issues/685)) ([24de5b1](https://github.com/manavgup/wikimind/commit/24de5b1653dfb9fa557a63c9ffdfc6034b5ef8bc)) +* **security:** add PDF size limit, pagination bounds, and field max_length ([#705](https://github.com/manavgup/wikimind/issues/705)) ([#722](https://github.com/manavgup/wikimind/issues/722)) ([531e8f5](https://github.com/manavgup/wikimind/commit/531e8f5d2010d5c9ed54139c417e5220c75585a6)) +* **security:** add URL scheme and host validation to prevent SSRF ([#683](https://github.com/manavgup/wikimind/issues/683)) ([cb01439](https://github.com/manavgup/wikimind/commit/cb014399a077e0dbaf075ac96ec805006dbf1873)) +* **security:** reject empty jwt_secret_key when auth is enabled ([#682](https://github.com/manavgup/wikimind/issues/682)) ([0fc2091](https://github.com/manavgup/wikimind/commit/0fc2091a857e6c6779566e2c8a9cc238f9eb8b4a)) +* **security:** remove .png from auth bypass extensions ([#689](https://github.com/manavgup/wikimind/issues/689)) ([990330b](https://github.com/manavgup/wikimind/commit/990330b77d3d7c9e99fb908d76900b36afb4cbb3)) +* **security:** resolve 16 CodeQL code scanning alerts ([#728](https://github.com/manavgup/wikimind/issues/728)) ([f790e4c](https://github.com/manavgup/wikimind/commit/f790e4c10848190df9268ada40d636aeb5088d65)) +* **security:** resolve P0 code scanning alerts ([#803](https://github.com/manavgup/wikimind/issues/803)) ([#815](https://github.com/manavgup/wikimind/issues/815)) ([c7135ff](https://github.com/manavgup/wikimind/commit/c7135fff37fcfc171a44d854068c2e314c1b829f)) +* **security:** resolve path injection alerts and source detail improvements ([#749](https://github.com/manavgup/wikimind/issues/749)) ([9415cb8](https://github.com/manavgup/wikimind/commit/9415cb8fd7230dc348331f5f6c5e7d7dfae54d2a)) +* **security:** sanitize compiler guidance, add session commit, cap slug loop ([#684](https://github.com/manavgup/wikimind/issues/684)) ([3c26772](https://github.com/manavgup/wikimind/commit/3c267724af2c3141f9ab47542520359279fbf0cf)) +* **security:** sanitize URL schemes in markdown link rendering ([#702](https://github.com/manavgup/wikimind/issues/702)) ([#720](https://github.com/manavgup/wikimind/issues/720)) ([1478fac](https://github.com/manavgup/wikimind/commit/1478fac19f5b8c55c6dc6e1d600cd1f01ccf355c)) +* separate staging and production Redis instances ([#570](https://github.com/manavgup/wikimind/issues/570)) ([#572](https://github.com/manavgup/wikimind/issues/572)) ([160da45](https://github.com/manavgup/wikimind/commit/160da458f90ace0e4ecb1c393c7a7306e44c2b2b)) +* serve SPA for browser navigations to top-level routes ([13bfbe9](https://github.com/manavgup/wikimind/commit/13bfbe9a19f3a1a5bd65aed20a928d231f794282)) +* serve SPA index.html for browser navigations to top-level API routes ([#332](https://github.com/manavgup/wikimind/issues/332)) ([36b5244](https://github.com/manavgup/wikimind/commit/36b5244d15fc966b5a15d8ee3ebb8e9e70db2e90)) +* set TypeScript target to ES2020 in tsconfig.node.json for Docker build ([#261](https://github.com/manavgup/wikimind/issues/261)) ([cc5a18b](https://github.com/manavgup/wikimind/commit/cc5a18b24bc9f65d7825bbcdab0b39633496748c)) +* shorten extension description to fit Chrome Web Store 132-char limit ([#475](https://github.com/manavgup/wikimind/issues/475)) ([11b28c3](https://github.com/manavgup/wikimind/commit/11b28c39bc9f3f41bb586d81b193cef6cf15dcdb)) +* simplify staging smoke test to 10 API checks ([69c0c5e](https://github.com/manavgup/wikimind/commit/69c0c5e295569afa0d26c7a6445ac2270485f623)) +* skip SSL cert verification for Upstash Redis private endpoints ([#611](https://github.com/manavgup/wikimind/issues/611)) ([f46cf28](https://github.com/manavgup/wikimind/commit/f46cf287145f03ade95ba19d7eb702cd8acf3556)) +* skip unchanged concept pages on ingestion ([#162](https://github.com/manavgup/wikimind/issues/162)) ([#164](https://github.com/manavgup/wikimind/issues/164)) ([152c277](https://github.com/manavgup/wikimind/commit/152c277a7122ac89f6f954299a0c38926cb7acd3)) +* stabilize main — Wave 1 (pyright, postgres FK, multi-user backfill) ([#541](https://github.com/manavgup/wikimind/issues/541)) ([f980375](https://github.com/manavgup/wikimind/commit/f98037595b3fb1c92132626095507649735b06cb)) +* store PDF extracted images in Postgres ([#638](https://github.com/manavgup/wikimind/issues/638)) ([#639](https://github.com/manavgup/wikimind/issues/639)) ([cdb93f5](https://github.com/manavgup/wikimind/commit/cdb93f5302f8033fee557861b258a1dfe3b6a39e)) +* store relative file path for Q&A answer articles ([#345](https://github.com/manavgup/wikimind/issues/345)) ([48ed65d](https://github.com/manavgup/wikimind/commit/48ed65d02a7eab18d3160791cd7385d707bd3177)) +* store source content in Postgres for multi-machine compatibility ([#630](https://github.com/manavgup/wikimind/issues/630)) ([098173d](https://github.com/manavgup/wikimind/commit/098173d2b01db63bb7d168b1a0b3e0b6671a3258)) +* strict migration replay — assert all tables + upgrade-path test ([#569](https://github.com/manavgup/wikimind/issues/569)) ([#574](https://github.com/manavgup/wikimind/issues/574)) ([9013d26](https://github.com/manavgup/wikimind/commit/9013d2637158f6372a0b9a6fcec37cf2fd2d08fb)) +* strip sslmode from DATABASE_URL in Alembic migrations ([#305](https://github.com/manavgup/wikimind/issues/305)) ([a3cfab2](https://github.com/manavgup/wikimind/commit/a3cfab2f958240913928d8ae603f7acbba3cceb7)) +* suppress ruff S608 false positive and regenerate openapi.yaml ([083fbe0](https://github.com/manavgup/wikimind/commit/083fbe0c25867352192232a860c0117dec65ee00)) +* **sweep:** use sqlmodel AsyncSession import, add type: ignore for factory mismatch ([25ea4e4](https://github.com/manavgup/wikimind/commit/25ea4e4daeb0d2bf3156dee6b68c9b7f28336ed7)) +* **tests:** fix 4 pre-existing test failures — mock patch paths ([ddd2bff](https://github.com/manavgup/wikimind/commit/ddd2bfffb8d2f19662a88edb1f4506ded028363a)) +* thread user_id into LLM router so BYOK keys work at runtime ([#331](https://github.com/manavgup/wikimind/issues/331)) ([40664f2](https://github.com/manavgup/wikimind/commit/40664f29e4851341af11453643863d3e89c9ed09)) +* unblock deploy pipeline — bump lxml, add failure notifications ([#299](https://github.com/manavgup/wikimind/issues/299)) ([4fc3e14](https://github.com/manavgup/wikimind/commit/4fc3e146fb42e5d5148c3af209171592fcf9f543)) +* unify pre-commit and CI Python environments to eliminate drift ([#543](https://github.com/manavgup/wikimind/issues/543)) ([#559](https://github.com/manavgup/wikimind/issues/559)) ([6ab5d0b](https://github.com/manavgup/wikimind/commit/6ab5d0b0b73ff09a8792a36e997e8a3089a78f93)) +* update smoke test to check gunicorn worker user, not container default ([c69fa57](https://github.com/manavgup/wikimind/commit/c69fa57234b8ecca05c049752733578440345a6e)) +* use /proc/1/status to check app runs as non-root in smoke test ([544a6b8](https://github.com/manavgup/wikimind/commit/544a6b88b854329ef66c832d4bbe4d883abb9e00)) +* use cryptographic random for OAuth state parameter ([#354](https://github.com/manavgup/wikimind/issues/354)) ([d4d8cbf](https://github.com/manavgup/wikimind/commit/d4d8cbf536310db4481c837fba77bfd84aba9413)) +* use cryptographic random for OAuth state parameter ([#354](https://github.com/manavgup/wikimind/issues/354)) ([1cd2cd5](https://github.com/manavgup/wikimind/commit/1cd2cd51898cf4a7fca128c8540560910ccca695)) +* use enum name for Postgres provider column queries ([#326](https://github.com/manavgup/wikimind/issues/326)) ([64120ba](https://github.com/manavgup/wikimind/commit/64120ba1c5e201771843d8d8fb07f71ff207db50)) +* use latest successful Docker build SHA for workflow_dispatch deploy ([d9c5172](https://github.com/manavgup/wikimind/commit/d9c5172a991eda180964612cb6e9e9bdb1f34726)) +* use ON CONFLICT DO NOTHING for backlink persistence ([#706](https://github.com/manavgup/wikimind/issues/706)) ([#721](https://github.com/manavgup/wikimind/issues/721)) ([fb8c706](https://github.com/manavgup/wikimind/commit/fb8c70659246c7ef321f3986a15f3a4cbbeceecf)) +* use ORM for migration recording — datetime/str type mismatch on Fly.io ([#310](https://github.com/manavgup/wikimind/issues/310)) ([b09f6cc](https://github.com/manavgup/wikimind/commit/b09f6cc4b683a48874211b64f8b146ccd95a07a5)) +* use PAT on git remote for semantic-release push ([c3cf18f](https://github.com/manavgup/wikimind/commit/c3cf18f35129e64011acfa14639dc15ed6c86cd2)) +* use pg_advisory_xact_lock for auto-release on transaction end ([#668](https://github.com/manavgup/wikimind/issues/668)) ([#695](https://github.com/manavgup/wikimind/issues/695)) ([890d99b](https://github.com/manavgup/wikimind/commit/890d99bb5e9d5331f3034a0fbf886e3b75e98b3d)) +* use plain redis:// for Upstash Fly private endpoint (no TLS) ([#612](https://github.com/manavgup/wikimind/issues/612)) ([50a61ec](https://github.com/manavgup/wikimind/commit/50a61ec3ae06947651ed4a691ddfd575f08ee50a)) +* use Postgres-compatible INSERT syntax in join table backfill ([#308](https://github.com/manavgup/wikimind/issues/308)) ([088a7ba](https://github.com/manavgup/wikimind/commit/088a7ba9e5d774741622c14158e6584ad24c8ca7)) +* use resolve_raw_path() for user-scoped raw file storage ([#288](https://github.com/manavgup/wikimind/issues/288)) ([2f44637](https://github.com/manavgup/wikimind/commit/2f4463780451984f18d5b5bd21431e604e58b860)), closes [#253](https://github.com/manavgup/wikimind/issues/253) +* **web:** resolve BacklinkPanel showing raw UUIDs instead of titles ([1c5ff30](https://github.com/manavgup/wikimind/commit/1c5ff3040521faecaef42431da8dd61f26044203)) +* **web:** resolve BacklinkPanel showing raw UUIDs instead of titles ([bd036c5](https://github.com/manavgup/wikimind/commit/bd036c58a5ba4f7d40309cd0f6314de6b63565f1)), closes [#104](https://github.com/manavgup/wikimind/issues/104) +* **web:** safe markdown truncation in TurnCard ([#809](https://github.com/manavgup/wikimind/issues/809)) ([#814](https://github.com/manavgup/wikimind/issues/814)) ([2c650e3](https://github.com/manavgup/wikimind/commit/2c650e344cf935a2d483679f97d46c64fcf894f0)) +* **wiki:** concept sidebar filtering + explorer layout ([#128](https://github.com/manavgup/wikimind/issues/128)) ([#130](https://github.com/manavgup/wikimind/issues/130)) ([062e96d](https://github.com/manavgup/wikimind/commit/062e96d1050582fa6ed2569bc153cc72bd983a8d)) +* **wiki:** fall back to raw concept names when Concept table is empty ([fb4c768](https://github.com/manavgup/wikimind/commit/fb4c768a6818c94baa3c62d26ce13ec326832acb)) +* worker auto-stop and DB connection drops during compile ([#616](https://github.com/manavgup/wikimind/issues/616), [#617](https://github.com/manavgup/wikimind/issues/617)) ([#618](https://github.com/manavgup/wikimind/issues/618)) ([4e7f77e](https://github.com/manavgup/wikimind/commit/4e7f77ee449762342265ea5aa1bba2818a597d7a)) +* wrap sync file I/O in asyncio.to_thread to unblock event loop ([#427](https://github.com/manavgup/wikimind/issues/427)) ([d39330d](https://github.com/manavgup/wikimind/commit/d39330d4ffab7435371d138a8bbdca488214b32d)) +* wrap YouTube transcript fetch in asyncio.to_thread ([#230](https://github.com/manavgup/wikimind/issues/230)) ([f96cb27](https://github.com/manavgup/wikimind/commit/f96cb27e04051d876195c048807e92a0f58d4409)) +* write new file before deleting old to prevent data loss ([#183](https://github.com/manavgup/wikimind/issues/183)) ([#234](https://github.com/manavgup/wikimind/issues/234)) ([d1a4570](https://github.com/manavgup/wikimind/commit/d1a4570030c76cdebfe939b1a92950dff9483d9a)) + + +### Documentation + +* add browser extension store publishing guide ([#313](https://github.com/manavgup/wikimind/issues/313)) ([7087926](https://github.com/manavgup/wikimind/commit/70879261d666b26c09d394ce81fc00815ed3685d)) +* add demo GIF, feature table, comparison, and MIT license ([761b845](https://github.com/manavgup/wikimind/commit/761b845bb92c12b53d3bd59b0210d5d91ac4e9b2)) +* add demo GIF, feature/comparison tables, MIT license ([3bae743](https://github.com/manavgup/wikimind/commit/3bae743b4a39d015f7ccc54a0177b9ca1ab20b7e)) +* modernize README and replace demo GIF ([#771](https://github.com/manavgup/wikimind/issues/771)) ([fea0259](https://github.com/manavgup/wikimind/commit/fea025965e64743252864beb1853cd1b3cba6e52)) +* regenerate README make-targets ([8d8f842](https://github.com/manavgup/wikimind/commit/8d8f842afea489775945626b2e347e8f89443733)) +* regenerate README make-targets ([ecc2c4f](https://github.com/manavgup/wikimind/commit/ecc2c4f8bc3006ffb065dea2ed64a594e0e5abe1)) +* regenerate README make-targets ([396c6c3](https://github.com/manavgup/wikimind/commit/396c6c3d9bc319ebbf595d5759233025ca804f9b)) +* regenerate README targets after main merge ([697fa57](https://github.com/manavgup/wikimind/commit/697fa57b77e4f12963d9263fc54b01168485f654)) +* restore test workflow comments ([054f75d](https://github.com/manavgup/wikimind/commit/054f75d964174074891086fb0480e580d44e2259)) +* set up Material for MkDocs documentation site ([#282](https://github.com/manavgup/wikimind/issues/282)) ([00195d6](https://github.com/manavgup/wikimind/commit/00195d66b0094e9dba472da67e9be555c958875a)) +* **sweep:** fix misleading regex comment — no lookbehind exists ([de5b91f](https://github.com/manavgup/wikimind/commit/de5b91feb5f3b7e371b98c35fa1cb41236067fe5)) +* update ROADMAP.md completion status ([#806](https://github.com/manavgup/wikimind/issues/806)) ([#813](https://github.com/manavgup/wikimind/issues/813)) ([738b2a3](https://github.com/manavgup/wikimind/commit/738b2a3b9a0781fa5f1ddec23c71da0a50adc75b)) + ## v1.0.0 (2026-05-12) - Initial Release