github Crosstalk-Solutions/project-nomad v1.35.0

one hour ago

Version 1.35.0 - September 29, 2026

Features

  • AI: support local vision attachments in chat (#1288). Thanks @gabegraves and @chriscrosstalk for the contribution!
  • AI: show source document and date as citations under RAG answers (#1287). Thanks @chriscrosstalk for the contribution!
  • AI: budget the prompt and actually set the context window on a native Ollama chat path (#1253). Thanks @jakeaturner for the contribution!
  • AI: give chat a sampler with four response-style profiles instead of backend defaults (#1282). Thanks @jakeaturner for the contribution!
  • AI: constrain the structured task calls (titles, chips, query rewrite) instead of asking nicely (#1259). Thanks @jakeaturner for the contribution!
  • AI: let retrieval decline via a post-rerank relevance floor (#1281). Thanks @jakeaturner for the contribution!
  • AI: add opt-in relevance check for off-topic retrieval (#1365). Thanks @jakeaturner for the contribution!
  • AI: specify a lightweight model for ancillary tasks (#1244). Thanks @jakeaturner for the contribution!
  • AI: make RAG retrieval optional per chat (#1247). Thanks @jakeaturner for the contribution!
  • Dashboard: user-added link tiles for services NOMAD does not manage (#1293). Thanks @chriscrosstalk for the contribution!
  • KB: per-file active toggle plus collection grouping and bulk toggle (#1286). Thanks @just-jbc and @chriscrosstalk for the contribution!
  • Kiwix Library: browse the remote Kiwix catalog in any language, not just English (#1299). Thanks @chriscrosstalk for the contribution!
  • Maps: full marker management (visibility, search/sort, per-marker icon and colour, coordinate navigation, delete confirmation) (#1291). Thanks @kennethbrewer3 and @chriscrosstalk for the contribution!
  • Translate: offline machine translation for the Information Library, shipped as a Supply Depot app (#1292). Thanks @chriscrosstalk for the contribution!

Bug Fixes

  • AI: stop <think> output leaking into titles, chips, and the RAG rewrite (#1254). Thanks @jakeaturner for the contribution!
  • AI: report a failed Ollama model pull as a failure instead of a success (#1274). Thanks @chriscrosstalk for the contribution!
  • AI: don't probe the native embed endpoint on a non-Ollama backend (#1284). Thanks @chriscrosstalk for the contribution!
  • AI: don't classify the backend as non-Ollama when it is merely unreachable (#1357). Thanks @chriscrosstalk for the contribution!
  • AI: bump the Ollama pin to 0.33.3 to fix the disconnect hang (#1356). Thanks @chriscrosstalk for the contribution!
  • AI: remove the long-dead default rewrite model warning (#1249). Thanks @jakeaturner for the contribution!
  • Benchmark: show the v2 score in Benchmark History (#1210). Thanks @chriscrosstalk for the contribution!
  • Benchmark: stop WSL2 submitting "Microsoft Basic Render Driver" as the GPU model (#1277). Thanks @chriscrosstalk for the contribution!
  • Chat: abort abandoned response streams (#1220). Thanks @NgoQuocViet2001 for the contribution!
  • Chat: stop capping answers at 1024 tokens and surface truncation (#1360). Thanks @jakeaturner for the contribution!
  • Chat: render the user's message before creating the session (#1301). Thanks @chriscrosstalk for the contribution!
  • Content: re-download content updates after a failed attempt (#1213). Thanks @Osamaali313 for the contribution!
  • Database: allow dataset in installed_resources.resource_type (#1243). Thanks @rcorvus for the contribution!
  • Downloads: guard orphaned model jobs (#1245). Thanks @NgoQuocViet2001 for the contribution!
  • GPU: detect Ollama CPU fallback from logs so auto-remediation fires (#1109). Thanks @fpolica91 for the contribution!
  • GPU: detect Ollama CPU fallback on AMD and offer the right fix (#1370). Thanks @jakeaturner for the contribution!
  • GPU: stop a missing /dev/kfd blocking the AI Assistant install entirely (#1276). Thanks @chriscrosstalk for the contribution!
  • GPU: keep an existing AMD HSA override across reinstall and update (#1390). Thanks @jakeaturner for the contribution!
  • Install: time out Redis readiness probes (#1347). Thanks @dajiaohuang for the contribution!
  • Install: match the HawkPoint1 lspci string for gfx1103 AMD GPU detection (#1385). Thanks @Yi-111-a for the contribution!
  • KB: stop leaking Qdrant vectors when a ZIM is deleted or replaced (#1227). Thanks @just-jbc for the contribution!
  • KB: stop the orphan sweep purging an empty but present scan root (#1393). Thanks @jakeaturner for the contribution!
  • KB: persist the source active toggle when no ingest state row exists (#1395). Thanks @jakeaturner for the contribution!
  • Maps: stop world basemap provisioning running pmtiles extract twice (#1394). Thanks @jakeaturner for the contribution!
  • Queue: clear terminal jobs before re-dispatch so downloads aren't silently dropped (#1225). Thanks @chriscrosstalk for the contribution!
  • Queue: stop stalled-job recovery forking the embedding chain (#1270). Thanks @chriscrosstalk for the contribution!
  • RAG: don't abandon a ZIM after one sparse batch (#1242). Thanks @rcorvus for the contribution!
  • Security: reject oversized custom URLs (#1354). Thanks @dajiaohuang for the contribution!
  • Seeder: keep an installed app's host port across catalog sync (#1300). Thanks @johno10661 and @chriscrosstalk for the contribution!
  • System: resolve a placeholder GPU name on the System page too (#1285). Thanks @chriscrosstalk for the contribution!
  • UI: restore dark mode text contrast (#1358). Thanks @Tiancheng-Xu for the contribution!
  • ZIM: resolve flavoured and non-English ZIMs in the update check (#1298). Thanks @chriscrosstalk for the contribution!

Improvements

  • Brand: replace the retired N.O.M.A.D. badge with the new logo (#1375). Thanks @chriscrosstalk for the contribution!
  • CI: add a weekly schedule trigger to collection URL validation (#1217). Thanks @cclavin for the contribution!
  • Dashboard: tighten the Drug Reference tile description (#1297). Thanks @chriscrosstalk for the contribution!
  • Docs: add SECURITY.md and tighten .gitignore for credential files (#1223). Thanks @chriscrosstalk for the contribution!
  • Docs: state how much disk NOMAD needs before any content (#1278). Thanks @chriscrosstalk for the contribution!
  • Eval: standardized RAG quality evaluation harness with a frozen corpus and golden question set (#1233). Thanks @jakeaturner for the contribution!
  • Install: add the Project NOMAD ASCII banner to the installer (#1310). Thanks @chriscrosstalk for the contribution!

📝 All Changes

  • docs: update release notes (ddb0235)
  • fix(kb): keep chunk active flags in sync with toggles during embedding (c65198c)
  • fix(kb): persist source active toggle when no ingest state row exists (152d1ee)
  • fix(maps): stop world basemap provisioning from running pmtiles extract twice (bc24508)
  • fix(install): match HawkPoint1 lspci string for gfx1103 AMD GPU detection (25a5f82)
  • fix(kb): stop orphan sweep from purging an empty but present scan root (ae1eae7)
  • fix(gpu): keep an existing AMD HSA override across reinstall and update (a1b899f)
  • chore(branding): replace the retired N.O.M.A.D. badge with the new logo (4c75eb5)
  • fix(gpu): detect Ollama CPU fallback on AMD and offer the right fix (ac437f8)
  • fix: bound custom URL length before persistence (7dabc40)
  • feat(AI): add opt-in relevance check for off-topic retrieval (a915cdc)
  • fix(chat): stop capping answers at 1024 tokens and surface truncation (a013eb6)
  • fix(ui): cover dark accent interaction states (99fe2ef)
  • fix(ui): restore dark mode contrast (8d821f3)
  • fix(kb): confine the orphan sweep to roots the scan actually walked (52d12a2)
  • test(kb): extract orphan allowlist into a tested pure fn (d4f0f07)
  • fix(kb): batch the orphan sweep's Qdrant/state deletes into one round trip (6712251)
  • fix(kb): make purge self-healing and allowlist the orphan sweep's roots (50b42fe)
  • fix(kb): guard ZIM delete purge and dedupe reconcile's delete pair (7e24c7a)
  • fix(kb): purge qdrant points when a zim is deleted (#1170) (8eb172e)
  • fix(rag): reap orphaned qdrant sources during sync (#1170) (18986e0)
  • fix(drug-reference): backfill the missing dataset install row on boot (5bc47a4)
  • fix(db): allow 'dataset' in installed_resources.resource_type (9fcade9)
  • fix(chat): render the user's message before creating the session (fa34d6d)
  • feat(AI): give chat a sampler instead of the backend's defaults (27be71b)
  • fix(install): time out Redis readiness probes (5e69350)
  • fix(ai): don't classify the backend as non-Ollama when it is merely unreachable (447b174)
  • fix(ai): bump the Ollama pin to 0.33.3 to fix the disconnect hang (18e403b)
  • feat(translate): offline translation for the Information Library (#1292) (1b67a87)
  • fix(downloads): guard orphaned model jobs (a131e63)
  • ci(collections): add weekly schedule trigger to url validation (e367967)
  • fix(chat): abort abandoned response streams (613ad9a)
  • fix(content): re-download content updates after a failed attempt (dd8df4c)
  • fix(gpu): detect Ollama CPU fallback from logs so auto-remediation fires (c366300)
  • feat(zim): let users browse the Kiwix library in any language (576464a)
  • feat(kb): per-file active toggle + collection grouping/bulk toggle (#1286) (880c80f)
  • install: add Project NOMAD ASCII banner to the installer (1b5d73f)
  • fix(zim): drop the dead keyword-scan fallback (f97de2c)
  • fix(zim): resolve flavoured and non-English ZIMs in the update check (41c9551)
  • fix(zim): extract Kiwix catalog URL into system-wide constant (a1b39cd)
  • fix(zim): use the OPDS catalog host, not Kiwix's gated browse host (d1a4e9a)
  • fix(seeder): derive ui_location from the merged config, not the live row (e468cf3)
  • fix(seeder): keep an installed app's host port across catalog sync (32eea2e)
  • fix(dashboard): show the color picker swatches solid (34b4542)
  • chore(dashboard): label the link tile field URL, drop the scheme hint (ce7c82a)
  • chore(dashboard): reword the link tile color helper, and use US spelling (c33af6a)
  • feat(dashboard): let a link tile carry a brand colour (400d64a)
  • fix(dashboard): exempt link tiles from container reconciliation (a6edaf7)
  • feat(dashboard): user-added link tiles for services NOMAD does not manage (b7b973e)
  • copy(dashboard): tighten the Drug Reference tile description (d417590)
  • fix(maps): undef func call, flyTo issue, visible column, and silent save failures (1d1945d)
  • fix(maps): cap marker notes at 500 characters server-side (78017a3)
  • chore(deps): restore dev's package-lock (821f952)
  • feat(maps): confirm before deleting a pin, after flying to it (f1e442f)
  • fix(maps): restore the icon picker's width so the grid does not collapse (20f65c0)
  • refactor(maps): curate the marker icon set, drop the tree view (9c1e945)
  • feat(maps): map marker management (72e0fcf)
  • test(ai): run the controller vision spec under Japa (0a93e7d)
  • feat(ai): support local vision attachments (8a92018)
  • Revert "fix(zim): use the OPDS catalog host, not Kiwix's gated browse host" (e23417b)
  • Revert "fix(zim): extract Kiwix catalog URL into system-wide constant" (318fe07)
  • feat: show source document and date as citations under RAG chat answers (9fde7f7)
  • fix(system): resolve a placeholder GPU name on the System page too (bf7e4b3)
  • fix(ai): don't probe the native embed endpoint on a non-Ollama backend (b0be0de)
  • docs: trim the quickstart note to one line plus a link (c1d527d)
  • docs: answer the RAM question alongside disk (4aa70c7)
  • docs: state how much disk NOMAD needs before any content (f7e6041)
  • fix(benchmark): WSL2 submits "Microsoft Basic Render Driver" as the GPU model (4c4071e)
  • fix(gpu): a missing /dev/kfd blocks the AI Assistant install entirely (9b90fcf)
  • fix(ai): a failed Ollama model pull is reported to the user as a success (c2fb809)
  • fix(queue): clear terminal jobs before re-dispatch so downloads aren't silently dropped (08e1b86)
  • fix(queue): stop stalled-job recovery forking the embedding chain (baf94bb)
  • fix(rag): don't abandon a ZIM after one sparse batch (a3811ad)
  • fix(benchmark): show the v2 score in Benchmark History (01ca77c)
  • docs: add SECURITY.md and tighten .gitignore for credential files (5ecec51)
  • feat(AI): let retrieval decline instead of making the prompt paper over it (ae06a29)
  • fix(AI): tell a broken grammar apart from a backend that never had one (06941e7)
  • feat(AI): constrain the structured task calls instead of asking nicely (5e9bd5a)
  • fix(AI): stop output leaking into titles, chips, and the RAG query (#1254) (5c97bf6)
  • feat(AI): budget the prompt and actually set the context window (#1253) (9a95f7b)
  • fix(UI): remove deprecated prop from type dec (3eaddfe)
  • fix(AI): removes long-dead default rewrite model warning (b3e695f)
  • feat(AI): make RAG retreival optional per chat (#1247) (251362e)
  • feat(AI): specify a model for ancillary tasks (#1244) (86ef96b)
  • feat(eval): standardized RAG quality evaluation harness (#1233) (81db4e8)
  • ci: add Build Translate Proxy Image workflow (85da928)

Don't miss a new project-nomad release

NewReleases is sending notifications on new releases.