Commit Graph

1106 Commits

Author SHA1 Message Date
copilot-swe-agent[bot] c428a7ec00 feat(ui): add dark mode support with system preference detection and localStorage persistence
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-25 13:59:49 +00:00
copilot-swe-agent[bot] 9cbffc4acb Initial plan 2026-02-25 13:47:41 +00:00
github-actions[bot] b79b4b92b5 chore(release): update build metadata files [skip ci] 2026-02-25 13:46:38 +00:00
semantic-release 3ed009f1d5 0.55.0
Automatically generated by python-semantic-release
2026-02-25 13:46:36 +00:00
Christian Krakau-Louis 16d487e33b Merge pull request #406 from christianlouis/copilot/add-full-text-search-feature
feat: full-text search (Meilisearch) + Helm chart for Kubernetes deployment
2026-02-25 14:46:15 +01:00
github-actions[bot] 093076515e 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-25 13:39:01 +00:00
copilot-swe-agent[bot] a08bfb9f1a feat(helm): add Helm chart for Kubernetes deployment and update DeploymentGuide
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-25 13:31:54 +00:00
copilot-swe-agent[bot] ff96340154 fix(config): default meilisearch_url to http://meilisearch:7700 for Docker/K8s service discovery
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-25 13:27:09 +00:00
copilot-swe-agent[bot] cc4d26aacd Initial plan 2026-02-25 13:20:11 +00:00
github-actions[bot] 44a6459b63 chore(release): update build metadata files [skip ci] 2026-02-25 13:18:04 +00:00
semantic-release 1d351f2053 0.54.0
Automatically generated by python-semantic-release
2026-02-25 13:18:01 +00:00
Christian Krakau-Louis 875b5a8607 Merge pull request #405 from christianlouis/copilot/fine-tune-ocr-criteria
feat(ocr): Fine-tune OCR quality acceptance criteria with strict threshold and head-to-head comparison
2026-02-25 14:17:43 +01:00
copilot-swe-agent[bot] 89d5df71c8 feat(ocr): fine-tune OCR quality criteria with stricter threshold and head-to-head comparison
- Raise quality acceptance threshold from 65→85 (configurable via TEXT_QUALITY_THRESHOLD)
- Reject text with significant issues (excessive_typos, garbage_characters,
  incoherent_text, fragmented_sentences) even when score is above threshold
  (configurable via TEXT_QUALITY_SIGNIFICANT_ISSUES)
- Add compare_text_quality() for AI-powered head-to-head comparison of
  original embedded text vs fresh OCR output
- Update process_document to pass original text to OCR task for comparison
- Update process_with_ocr to run comparison and keep the higher-quality text
- Add new settings to settings_service.py metadata
- Update docs/ConfigurationGuide.md with new settings
- Add comprehensive tests for new threshold and comparison logic

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-25 13:03:21 +00:00
copilot-swe-agent[bot] d1c60c5ac5 Initial plan 2026-02-25 12:51:38 +00:00
github-actions[bot] 009f291686 chore(release): update build metadata files [skip ci] 2026-02-25 01:13:09 +00:00
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