Commit Graph

1374 Commits

Author SHA1 Message Date
github-actions[bot] 24e0053def chore(release): update build metadata files [skip ci] 2026-03-02 15:29:38 +00:00
semantic-release 9f1a86d554 0.75.0
Automatically generated by python-semantic-release
2026-03-02 15:29:36 +00:00
Christian Krakau-Louis 08099f94e4 Merge pull request #470 from christianlouis/copilot/add-pdfa-export-option
feat(pdfa): PDF/A archival conversion with FreeTSA timestamping and per-provider upload control
2026-03-02 16:29:18 +01:00
github-actions[bot] fea8f5c0de 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-03-02 15:26:48 +00:00
Christian Krakau-Louis 8fee5c8d0b Merge branch 'main' into copilot/add-pdfa-export-option 2026-03-02 16:26:31 +01:00
github-actions[bot] 8e0bd50e88 chore(release): update build metadata files [skip ci] 2026-03-02 15:23:30 +00:00
semantic-release a79f7ba50f 0.74.0
Automatically generated by python-semantic-release
2026-03-02 15:23:28 +00:00
Christian Krakau-Louis d43ff23079 Merge pull request #469 from christianlouis/copilot/debug-file-similarity-analysis
feat(similarity): proactive embedding pipeline, context window fix, corpus-wide similarity dashboard
2026-03-02 16:23:09 +01:00
copilot-swe-agent[bot] 144a90fa73 fix(pdfa): address code review - validate pdfa_format, add S3 comment, add format test
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-02 14:01:26 +00:00
copilot-swe-agent[bot] a03b3af933 feat(pdfa): add FreeTSA timestamping, per-provider folder overrides, individual upload toggles
- Add RFC 3161 timestamping via FreeTSA (PDFA_TIMESTAMP_ENABLED, PDFA_TIMESTAMP_URL)
- Replace PDFA_UPLOAD_TO_PROVIDERS with individual PDFA_UPLOAD_ORIGINAL and PDFA_UPLOAD_PROCESSED
- Add PDFA_UPLOAD_FOLDER setting for per-provider subfolder configuration
- Add GOOGLE_DRIVE_PDFA_FOLDER_ID for Google Drive-specific folder override
- Add folder_override parameter to all 8 folder-using upload tasks
- Add folder_overrides dict parameter to send_to_all_destinations
- Add _compute_pdfa_folder_overrides() and _timestamp_file() helpers
- Expand tests to 26 (timestamping, folder overrides, individual toggles)
- Update docs/ConfigurationGuide.md and .env.demo

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-02 13:55:34 +00:00
copilot-swe-agent[bot] 55543be3b0 fix(similarity): address code review - column-only queries, configurable batch size, WCAG touch targets
- Use column-only query in embeddings overview to reduce memory for 100K+ files
- Add embedding_backfill_batch_size config setting (default 50)
- Fix WCAG touch target on backfill button (min-height/min-width 44px)
- Add inline comment explaining 3 chars/token truncation estimate
- Import settings in compute_embedding task for configurable batch size

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-02 13:39:10 +00:00
copilot-swe-agent[bot] eea99eb01d feat(pdfa): add PDF/A archival conversion using ocrmypdf
- Add ENABLE_PDFA_CONVERSION, PDFA_FORMAT, PDFA_UPLOAD_TO_PROVIDERS config settings
- Add original_pdfa_path and processed_pdfa_path columns to FileRecord model
- Create Alembic migration 011_add_pdfa_paths
- Create app/tasks/convert_to_pdfa.py Celery task using ocrmypdf + Ghostscript
- Integrate PDF/A conversion into finalize_document_storage pipeline
- Add comprehensive unit tests (15 tests)
- Update .env.demo and docs/ConfigurationGuide.md

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-02 13:35:13 +00:00
copilot-swe-agent[bot] 8e955f3c81 fix(similarity): truncate text to fit embedding model context window, fix step tracking
- Add EMBEDDING_MAX_TOKENS config (default 8000) for safe text truncation
- Use conservative 3 chars/token estimate (was 4) to prevent ContextWindowExceededError
- Add compute_embedding to REAL_MAIN_STEPS in both get_file_overall_status and get_step_summary
- Fix test_near_duplicates_returned to use pre-computed embeddings
- Update .env.demo and docs with EMBEDDING_MAX_TOKENS setting

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-02 13:27:34 +00:00
copilot-swe-agent[bot] 34b9d529e7 Initial plan 2026-03-02 13:21:15 +00:00
copilot-swe-agent[bot] c724b8d83a feat(similarity): add similarity pairs dashboard, step tracking, and fix tests for pre-computed embeddings
- Add GET /api/similarity/pairs endpoint for corpus-wide pair discovery
- Add /similarity view route and similarity_dashboard.html template
- Add Similarity link to desktop and mobile nav menus
- Register compute_embedding as a tracked FileProcessingStep
- Update compute_embedding task with update_step_status calls
- Add compute_embedding to flow visualization in _compute_processing_flow
- Add backfill_missing_embeddings periodic beat task (every 5 min)
- Return clear message when embedding not yet computed in similar docs API
- Fix all tests to use pre-computed embeddings (no lazy API calls)
- Add tests for similarity pairs, backfill task, and embedding-not-computed

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-02 13:12:59 +00:00
copilot-swe-agent[bot] 8d7c8e7c4e feat(similarity): add embedding pipeline, debug endpoints, backfill task, and scalable similarity search
- Add embedding_model config setting (replaces hardcoded text-embedding-3-small)
- Add compute_document_embedding Celery task for ingestion-time embedding
- Chain embedding task into finalize_document_storage pipeline
- Add backfill_missing_embeddings periodic task (every 5 min) for legacy files
- Add debug API endpoints: embedding-status, compute-embedding, diagnostic/embeddings, diagnostic/compute-all-embeddings
- Refactor find_similar_documents to only use pre-computed embeddings (no lazy API calls)
- Use yield_per(500) and column-only queries for 100K+ scale
- Add embedding status indicator and recompute button in file detail UI

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-02 13:01:57 +00:00
copilot-swe-agent[bot] b435957a9b Initial plan 2026-03-02 12:46:39 +00:00
github-actions[bot] 26d5f99425 chore(release): update build metadata files [skip ci] 2026-03-02 10:54:06 +00:00
semantic-release d7d1175ba5 0.73.0
Automatically generated by python-semantic-release
2026-03-02 10:54:04 +00:00
Christian Krakau-Louis 054b3491e7 Merge pull request #466 from christianlouis/copilot/add-duplicate-document-detection
feat(duplicates): add duplicate document detection and management
2026-03-02 11:53:44 +01:00
github-actions[bot] e98c2ea63e chore(release): update build metadata files [skip ci] 2026-03-02 10:35:06 +00:00
semantic-release bb21486536 0.72.1
Automatically generated by python-semantic-release
2026-03-02 10:35:04 +00:00
Christian Krakau-Louis 7bb7e00927 Merge pull request #468 from christianlouis/copilot/fix-worker-api-startup-error
fix(database): skip create_all for Alembic-tracked databases to prevent OperationalError on webhook_configs
2026-03-02 11:34:48 +01:00
copilot-swe-agent[bot] b87dd6083c fix(database): skip create_all for Alembic-tracked databases to prevent OperationalError on webhook_configs
When init_db() called Base.metadata.create_all() before Alembic migrations,
the ORM model created the webhook_configs table. Alembic migration 009 then
failed with OperationalError: table webhook_configs already exists.

Fix: check for alembic_version table before calling create_all(). Tracked
databases skip create_all and let Alembic handle all schema changes instead.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-02 10:25:34 +00:00
copilot-swe-agent[bot] ebea83a750 feat(duplicates): add duplicate document detection and management
- Add near_duplicate_threshold config setting (default 0.85)
- New GET /api/duplicates endpoint listing all exact-duplicate groups
- New GET /api/files/{id}/duplicates endpoint returning exact + near-duplicates
- POST /api/ui-upload now returns immediate exact-duplicate warning (respects ENABLE_DEDUPLICATION)
- New /duplicates management UI with Exact Duplicates tab and Near-Duplicate Finder tab
- Add Duplicates link in admin nav menu (desktop + mobile)
- Document new config options in ConfigurationGuide.md and .env.demo
- 20 new tests covering all acceptance criteria

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-02 10:21:57 +00:00
copilot-swe-agent[bot] c0a3753e55 Initial plan 2026-03-02 10:14:21 +00:00
copilot-swe-agent[bot] 3361042186 Initial plan 2026-03-02 10:04:21 +00:00
github-actions[bot] 716efcf73d chore(release): update build metadata files [skip ci] 2026-03-02 10:03:51 +00:00
semantic-release ffc795e5b1 0.72.0
Automatically generated by python-semantic-release
2026-03-02 10:03:48 +00:00
Christian Krakau-Louis c938a7c219 Merge pull request #463 from christianlouis/copilot/add-document-similarity-detection
fix(migrations): resolve multiple Alembic heads causing CI test crash
2026-03-02 11:03:31 +01:00
github-actions[bot] 744a433cc9 docs(changelog): update changelog [skip ci] 2026-03-02 10:03:30 +00:00
Christian Krakau-Louis e8e91fd29a Refactor CI workflow stages and steps
Updated CI workflow for improved clarity and efficiency.
2026-03-02 11:03:09 +01:00
github-actions[bot] fe9f84ac05 docs(changelog): update changelog [skip ci] 2026-03-02 09:54:22 +00:00
Christian Krakau-Louis 7cb5407bcf Refactor CI workflow for clarity and efficiency
Refactor CI workflow to simplify configuration and improve readability. Consolidate steps, update job dependencies, and enhance linting and testing stages.
2026-03-02 10:54:05 +01:00
copilot-swe-agent[bot] f7cf7e2a4c fix(migrations): resolve multiple Alembic heads causing CI test crash
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-02 09:50:59 +00:00
github-actions[bot] 3d38813da5 docs(changelog): update changelog [skip ci] 2026-03-02 09:47:27 +00:00
Christian Krakau-Louis fc72532aea Merge pull request #465 from christianlouis/copilot/optimize-ci-pipeline
ci: restructure pipeline into 5-stage fail-fast architecture
2026-03-02 10:47:08 +01:00
copilot-swe-agent[bot] ea0f7fb54f ci: optimize pipeline for fail-fast feedback loop
- Move mypy to Stage 1 (runs in parallel with lint & html-lint, no needs)
- Decouple dependency-scan from test-quick; tests now start as soon as
  static analysis passes (needs: [lint, html-lint, mypy])
- dependency-scan runs as a parallel background track and still gates
  build/deploy to prevent shipping with known CVEs
- Integration tests remain sequentially after quick tests pass (Stage 4)
- Build & deploy remain gated on ALL stages including dependency-scan (Stage 5)
- Reorder job definitions to match logical stage flow for readability
- Update section comments to reflect the new 5-stage architecture

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-02 09:45:59 +00:00
copilot-swe-agent[bot] 0fc8148c47 Initial plan 2026-03-02 09:41:10 +00:00
github-actions[bot] ed8579757c docs(changelog): update changelog [skip ci] 2026-03-02 09:37:44 +00:00
Christian Krakau-Louis c8d456e6eb Merge pull request #464 from christianlouis/dependabot/pip/ocrmypdf-gte-16.0.0-and-lt-18.0.0
Update ocrmypdf requirement from <17.0.0,>=16.0.0 to >=16.0.0,<18.0.0
2026-03-02 10:37:27 +01:00
dependabot[bot] 25532aad87 Update ocrmypdf requirement from <17.0.0,>=16.0.0 to >=16.0.0,<18.0.0
Updates the requirements on [ocrmypdf](https://github.com/ocrmypdf/OCRmyPDF) to permit the latest version.
- [Release notes](https://github.com/ocrmypdf/OCRmyPDF/releases)
- [Commits](https://github.com/ocrmypdf/OCRmyPDF/compare/v16.0.0...v17.3.0)

---
updated-dependencies:
- dependency-name: ocrmypdf
  dependency-version: 17.3.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-01 23:09:06 +00:00
Christian Krakau-Louis 1e1ba1d8d7 Merge branch 'main' into copilot/add-document-similarity-detection 2026-03-01 22:06:55 +01:00
github-actions[bot] 698c6a222e chore(release): update build metadata files [skip ci] 2026-03-01 21:06:18 +00:00
semantic-release c7c9040321 0.71.0
Automatically generated by python-semantic-release
2026-03-01 21:06:16 +00:00
Christian Krakau-Louis 1b3f35d77d Merge pull request #462 from christianlouis/copilot/add-webhook-support
feat(webhooks): implement webhook support for external integrations
2026-03-01 22:05:57 +01:00
copilot-swe-agent[bot] a85992ee79 docs(webhooks): fix spelling - Behaviour to Behavior
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 20:47:51 +00:00
copilot-swe-agent[bot] b7c78177e9 docs(similarity): add API documentation and fix template accessibility
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 20:46:13 +00:00
copilot-swe-agent[bot] a953b726fc docs(webhooks): add webhook API and configuration documentation
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 20:45:20 +00:00
copilot-swe-agent[bot] e60914127c feat(webhooks): add webhook support for external integrations
Add WebhookConfig model, CRUD API endpoints, HMAC-SHA256 signed delivery,
and Celery-based async dispatch with retry/backoff for document events
(document.uploaded, document.processed, document.failed).

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 20:42:57 +00:00