shinalok and Claude Sonnet 4.6
7f50333bdb
Phase 17: Add image upload to chat UI
...
- app.py: image_input gr.Image component, respond() accepts image_path,
all yields updated to 7 outputs
- api_client.py: chat(image_path=None), base64-encodes image for API
- services/chat.py: chat(image_path=None) passes through to api_client
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-02 13:52:21 +09:00
shinalok and Claude Sonnet 4.6
148211e236
Phase 27: P2 quality improvements — logging, httpx pooling, validation, tests
...
- app.py: replace print() with logging, basicConfig with LOG_LEVEL env var
- api_client.py: shared AsyncClient instance (connection pooling), URL-encode
delete_document path parameter, aclose() for cleanup
- services/document.py: validate file exists and extension before ingest
- tests/: ChatService (4) + DocumentService (6) unit tests via pytest-asyncio
- pyproject.toml: asyncio_mode = auto
- requirements-dev.txt: pytest, pytest-asyncio
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-01 17:52:43 +09:00
shinalok and Claude Sonnet 4.6
7eed70d7f7
chore: add .gitignore rules for IDE and cache files, remove tracked artifacts
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-01 17:40:08 +09:00
shinalok and Claude Sonnet 4.6
1e93def909
Refactor: split services.py into services/ package
...
ChatService → services/chat.py
DocumentService → services/document.py
TTSService → services/tts.py
services/__init__.py re-exports all three for backward-compatible imports
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-01 17:39:52 +09:00