Markdown image src with relative paths (/images/...) now resolves to
backend API URL instead of frontend port. Added SVG favicon to eliminate
404 on /favicon.ico.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add global FastAPI exception handler for unhandled errors
- Add get_current_user_obj() dependency for cleaner auth patterns
- Switch VLM image description from serial to asyncio.gather concurrency
- Extract score conversion to shared score_utils module
- Docker: use env vars for passwords, remove hardcoded API key default
- Add .gitattributes and update .gitignore for tar.gz and tsbuildinfo
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Extract images from PDFs using pymupdf, generate descriptions via
Qwen3-VL-8B, store in ChromaDB alongside text chunks, and render
images in chat answers. Includes image proxy rewrite, force re-process
endpoint, and VLM API timeout.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>