The Go client struct expected a nested document object and top-level
page/section fields, but the engine returns flat results with metadata
in chunk_metadata. This caused empty display for title, type, tags,
page, and section in human output mode.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Two changes:
1. structured-add-commands: The implicit note shorthand (kb "text") caused
accidental note creation from mistyped commands. Replaced with explicit
kb addnote <text> command. Root command reverts to standard Cobra
behaviour. Updated examples, tests, SKILL.md, and specs.
2. split-readme-developer-docs: Moved build-from-source instructions, release
process, API reference, and ROCm migration notes from README.md into a
new DEVELOPER.md. README now links to DEVELOPER.md for dev workflows.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Single unrecognized words now print an error with usage hint instead of
being submitted as a note. Prevents typos from creating junk notes.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds enriched_text column to chunks table that prepends document title
(and section header when present) to chunk text. Embeddings and FTS now
use enriched text for better search relevance. Includes schema migration
with backfill for existing data.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Persist uploaded files to {data_dir}/documents/{content_hash}{ext} after
successful ingestion. Add GET /documents/{id}/file endpoint for retrieval,
delete stored files on document deletion, and add `kb export` client command.
Includes schema migration, tests, and spec updates.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Reject duplicate uploads at the API boundary (HTTP 409) instead of
silently skipping in the background worker. Checks both ingested
documents and in-flight jobs via content_hash on the jobs table.
- Go client handles 409 with distinct messages for already-imported
documents vs already-queued jobs.
- Sanitize FTS5 search queries by quoting each token to prevent syntax
errors from special characters like ?, *, ", (), AND, OR, NOT.
- Add try/except safety net around FTS5 execute for edge cases.
- Add main branch guard to release.sh to prevent releasing from
feature branches.
- Update specs and README to reflect new behaviour.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove v1 Python CLI (src/kb_search/, tests/, root pyproject.toml, uv.lock, .venv)
- Add Go client with cross-platform build (client/)
- Add FastAPI engine with NVIDIA and multi-stage ROCm Dockerfiles (engine/)
- Add VERSION files for client and engine, wired into builds
- Add release.sh for automated build, tag, release, and Docker push
- Update README with build/release docs and ROCm migration note
- Clean up .gitignore for v2 project structure
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>