Commit Graph

1091 Commits

Author SHA1 Message Date
semantic-release aefab18a4e 0.53.1
Automatically generated by python-semantic-release
2026-02-25 01:13:07 +00:00
Christian Krakau-Louis bd112f18a9 Merge pull request #403 from christianlouis/copilot/fix-file-status-sync
Fix file detail workflow steps out of sync after OCR provider abstraction
2026-02-25 02:12:49 +01:00
copilot-swe-agent[bot] 44c9f6dc38 test: fix test_retry_azure_ocr_success to patch process_with_ocr instead of legacy azure task
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-24 22:55:46 +00:00
copilot-swe-agent[bot] 37a3f7aae7 fix(ocr): sync workflow steps with process_with_ocr replacing legacy azure step
- Update _compute_processing_flow to recognize process_with_ocr as the OCR
  stage and remap legacy process_with_azure_document_intelligence log entries
  for backward compatibility
- Normalize legacy OCR step name in _compute_step_summary log fallback
- Add process_with_ocr to REAL_MAIN_STEPS/REAL_STEPS in step_manager,
  file_status, and file_queries (keeping legacy name for old DB entries)
- Update retry logic in api/files.py to retry failed OCR via process_with_ocr
  (handles both step names as aliases)
- Fix process_document.py to log process_with_ocr as skipped (not azure step)
  for the local text extraction path

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-24 22:22:06 +00:00
copilot-swe-agent[bot] f937fd4971 Initial plan 2026-02-24 22:01:47 +00:00
github-actions[bot] 2b7bbd3df5 chore(release): update build metadata files [skip ci] 2026-02-24 22:01:08 +00:00
semantic-release f64c055381 0.53.0
Automatically generated by python-semantic-release
2026-02-24 22:01:06 +00:00
Christian Krakau-Louis 5388c9cb99 Merge pull request #402 from christianlouis/copilot/embed-text-quality-check
feat(ocr): Embedded text quality check with automated OCR remediation
2026-02-24 23:00:48 +01:00
copilot-swe-agent[bot] 0c500e1ec6 fix(ocr): address code review: add model fallback default, remove unused variable
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-24 18:44:20 +00:00
copilot-swe-agent[bot] b03bfb5e02 feat(ocr): add AI-based embedded text quality check with automatic OCR fallback
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-24 18:41:27 +00:00
github-actions[bot] b5fb7da18c docs(changelog): update changelog [skip ci] 2026-02-24 18:26:01 +00:00
copilot-swe-agent[bot] ebdb332117 Initial plan 2026-02-24 18:25:53 +00:00
Christian Krakau-Louis a5985fb135 Merge pull request #396 from christianlouis/copilot/achieve-code-coverage-goals
test: raise overall coverage from 92.6% to 95.4%
2026-02-24 19:25:41 +01:00
copilot-swe-agent[bot] 02ad558330 test: achieve 90%+ code coverage across codebase
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-24 18:17:22 +00:00
github-actions[bot] 1fdd08f628 chore(release): update build metadata files [skip ci] 2026-02-24 18:13:57 +00:00
semantic-release 521c68e959 0.52.2
Automatically generated by python-semantic-release
2026-02-24 18:13:53 +00:00
Christian Krakau-Louis e92e38b52b Merge pull request #399 from christianlouis/copilot/fix-ocr-language-data-issue
fix(ocr): ensure Tesseract language data is available for embed_text_layer regardless of active OCR provider
2026-02-24 19:13:32 +01:00
copilot-swe-agent[bot] 2b2a97c2fa fix(ocr): ensure Tesseract language data for embed_text_layer regardless of active OCR provider
Root cause: ensure_ocr_languages_from_settings() only downloaded tessdata
when the 'tesseract' provider was active, but embed_text_layer() uses
ocrmypdf (which needs tessdata) as a fallback for ALL OCR providers.

- embed_text_layer(): call ensure_tesseract_languages(language) after
  confirming ocrmypdf is on PATH, so language data is present before
  ocrmypdf is invoked (prevents exit code 3 for fra/deu/etc.)
- ensure_ocr_languages_from_settings(): extend the condition from
  'tesseract' in active_providers to also trigger when ocrmypdf is
  on PATH, enabling proactive pre-download at startup for any config
- Tests: mock shutil.which and ensure_tesseract_languages in affected
  test cases; rename azure-only test and add new test for ocrmypdf case

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-24 18:02:19 +00:00
copilot-swe-agent[bot] 8f3b554b0d Initial plan 2026-02-24 17:53:18 +00:00
github-actions[bot] 52478a87f1 chore(release): update build metadata files [skip ci] 2026-02-24 17:38:32 +00:00
semantic-release 3832355c7c 0.52.1
Automatically generated by python-semantic-release
2026-02-24 17:38:29 +00:00
Christian Krakau-Louis e423a491a1 Merge pull request #397 from christianlouis/copilot/fix-git-merge-conflict-settings
fix(ui): resolve merge conflict markers in settings.html; add CI guard
2026-02-24 18:38:07 +01:00
copilot-swe-agent[bot] 66a45703cf fix(ui): resolve merge conflict markers in settings.html and add CI guard
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-24 17:13:44 +00:00
copilot-swe-agent[bot] ca6a1af060 Initial plan 2026-02-24 17:08:36 +00:00
copilot-swe-agent[bot] dbaacfdd9f Initial plan 2026-02-24 16:46:03 +00:00
github-actions[bot] a797374ba4 chore(release): update build metadata files [skip ci] 2026-02-24 16:45:43 +00:00
semantic-release 248cb115e9 0.52.0
Automatically generated by python-semantic-release
2026-02-24 16:45:40 +00:00
Christian Krakau-Louis d64445c84f Merge pull request #391 from christianlouis/copilot/ensure-tesseract-easyocr-languages
feat(ocr): auto-install Tesseract/EasyOCR language data from settings
2026-02-24 17:45:18 +01:00
copilot-swe-agent[bot] 8a2a4dc2b3 feat(ocr): auto-install Tesseract/EasyOCR languages from settings
- Add app/utils/ocr_language_manager.py: detects tessdata dir, downloads
  missing .traineddata files via wget/curl from tessdata_fast GitHub repo,
  pre-downloads EasyOCR models, exposes async background-thread helper
- TesseractOCRProvider.process() calls ensure_tesseract_languages() before
  running pytesseract; raises clear error if languages remain unavailable
- EasyOCRProvider.process() logs informational message when models download
- app/main.py: calls ensure_ocr_languages_async() at startup
- app/utils/settings_sync.py: triggers language re-check after every
  settings reload so UI changes take effect without container restart
- app/api/settings.py: adds POST /api/settings/install-ocr-languages
  endpoint for on-demand language installation from the admin UI
- Dockerfile: adds wget for runtime tessdata downloads
- docs/ConfigurationGuide.md: documents automatic language download
- tests/test_ocr_language_manager.py: 29 unit tests

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-24 16:28:14 +00:00
copilot-swe-agent[bot] fb6988db01 Initial plan 2026-02-24 16:12:27 +00:00
github-actions[bot] 801254422d chore(release): update build metadata files [skip ci] 2026-02-24 13:46:13 +00:00
semantic-release 6a2882a503 0.51.0
Automatically generated by python-semantic-release
2026-02-24 13:46:09 +00:00
Christian Krakau-Louis d3a090dcaa Merge pull request #390 from christianlouis/copilot/embed-ocr-text-layer-pdf
feat(ocr): embed searchable text layer for providers without native PDF output
2026-02-24 14:45:47 +01:00
copilot-swe-agent[bot] 50573ec7be fix(ocr): address code review - add subprocess security comment and type hints in tests
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-24 13:22:39 +00:00
copilot-swe-agent[bot] fec032643b feat(ocr): embed searchable text layer for providers without native PDF output
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-24 13:19:52 +00:00
copilot-swe-agent[bot] e0c28e834f Initial plan 2026-02-24 13:10:12 +00:00
github-actions[bot] 2f5ab13fe8 chore(release): update build metadata files [skip ci] 2026-02-24 12:54:13 +00:00
semantic-release 4dd4e1ffa3 0.50.1
Automatically generated by python-semantic-release
2026-02-24 12:54:10 +00:00
Christian Krakau-Louis 33cb43635b Merge pull request #387 from christianlouis/copilot/fix-mistral-ai-ocr-compatibility
Fix Mistral OCR: use native /v1/ocr API with proper PDF upload flow
2026-02-24 13:53:54 +01:00
copilot-swe-agent[bot] c7423834d5 fix(ocr): rewrite MistralOCRProvider to use native Mistral OCR API
- PDFs are now uploaded to Mistral Files API (POST /v1/files) and
  processed via a signed document_url, resolving the 422 error caused
  by passing data:application/pdf;base64,... to an image endpoint
- Images (JPEG/PNG/GIF/WEBP/BMP/TIFF) use base64 image_url directly
- Unsupported MIME types raise a clear ValueError
- Magic-byte fallback detects PDFs with no file extension
- Switches from openai chat completions to requests HTTP calls
- Adds helper method _upload_pdf_and_get_document()
- Adds TestMistralOCRProvider with 9 unit tests covering all paths

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-24 12:13:38 +00:00
copilot-swe-agent[bot] 2703221b9c Initial plan 2026-02-24 12:03:16 +00:00
github-actions[bot] ab5656877a chore(release): update build metadata files [skip ci] 2026-02-24 11:53:57 +00:00
semantic-release 415397b404 0.50.0
Automatically generated by python-semantic-release
2026-02-24 11:53:54 +00:00
Christian Krakau-Louis e3cff12f93 Merge pull request #385 from christianlouis/copilot/increase-codecov-coverage
feat(tests): Increase CodeCov test coverage above 90%
2026-02-24 12:53:30 +01:00
github-actions[bot] 4f36a81f40 chore(release): update build metadata files [skip ci] 2026-02-24 08:17:23 +00:00
semantic-release a5e3524417 0.49.0
Automatically generated by python-semantic-release
2026-02-24 08:17:19 +00:00
Christian Krakau-Louis 28ec319817 Merge pull request #384 from christianlouis/copilot/clean-up-redundant-api-endpoints
Remove redundant /env view and /api/diagnostic/settings endpoint
2026-02-24 09:16:56 +01:00
copilot-swe-agent[bot] 1f080a8a43 style(tests): rename _SESSION_SECRET to TEST_SESSION_SECRET; tighten non-admin redirect assertions to == 302
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-24 00:04:42 +00:00
copilot-swe-agent[bot] a1b9ac1db6 feat(tests): increase code coverage from 89.28% to 92.15%
- Add comprehensive tests for app/views/filemanager.py (14% → 97%)
- Add tests for app/views/settings.py credentials_page and audit_log_page (53% → 100%)
- Add tests for base.py kwargs context CSRF injection (66% → 100%)
- Add tests for general.py DB error, favicon 404, license fallback (89% → 100%)
- Add tests for status.py Docker exception branches (89% → 96%)
- Add tests for config_validator/providers.py alternative AI providers (45% → 90%+)
- Add tests for settings_sync.py reload failure and signal handler (80% → 100%)

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-23 23:59:50 +00:00
github-actions[bot] 0827b6eaa9 style: apply ruff auto-fix
- Auto-formatted code with ruff format
- Applied ruff linting fixes with --fix

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-23 23:24:27 +00:00