Commit Graph

1288 Commits

Author SHA1 Message Date
copilot-swe-agent[bot] 7f06d94f74 Initial plan 2026-03-01 17:34:25 +00:00
github-actions[bot] 97cd1cdb92 chore(release): update build metadata files [skip ci] 2026-03-01 17:23:28 +00:00
semantic-release 25df15bdda 0.67.2
Automatically generated by python-semantic-release
2026-03-01 17:23:25 +00:00
Christian Krakau-Louis 0134ed37d5 Merge pull request #446 from christianlouis/copilot/optimize-test-timeouts
fix(ci): split test pipeline into quick/integration stages, fix hanging test
2026-03-01 18:23:06 +01:00
Christian Krakau-Louis 8ac4179b8b Merge pull request #445 from christianlouis/copilot/enforce-database-upgrades-migration
refactor(database): enforce Alembic-only schema migrations, deprecate manual migration code
2026-03-01 18:22:48 +01:00
copilot-swe-agent[bot] 8d81ed6c74 fix: address code review feedback - use specific exceptions, dynamic revision IDs in tests
- Replace bare Exception catches with sa.exc.OperationalError in migration 007
- Use ScriptDirectory.get_heads() for dynamic revision ID assertions in tests
- Make migration count assertion flexible (>= 8 instead of == 8)
- Rewrite pending migrations test to actually test upgrade from revision 006

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 16:57:19 +00:00
copilot-swe-agent[bot] 87d1b9d935 refactor(database): enforce Alembic-only database migrations, deprecate manual schema migrations
- Create alembic.ini and migrations/env.py for full Alembic CLI + programmatic support
- Add Alembic migration 006: detail column on processing_logs
- Add Alembic migration 007: ocr_quality_score column + drop unique filehash index
- Add Alembic migration 008: performance indexes
- Replace _run_schema_migrations() call in init_db() with _run_alembic_upgrade()
- Deprecate _run_schema_migrations() with DeprecationWarning
- Update tests for new Alembic-based approach and deprecation
- Update DatabaseConfiguration.md documentation

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 16:47:41 +00:00
copilot-swe-agent[bot] 6a21adcdd4 fix(ci): increase quick test job timeout to 15 minutes for CI runner headroom
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 16:46:57 +00:00
copilot-swe-agent[bot] c100250b23 docs: update CI workflow and integration test documentation for two-stage pipeline
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 16:45:44 +00:00
copilot-swe-agent[bot] 6c643e9962 fix(ci): add pytest-timeout, fix hanging test, split CI into quick + integration stages
- Add pytest-timeout>=2.3.0 to requirements-dev.txt with 120s global default
- Fix test_fallback_file_id_lookup: add missing _should_upload_* mocks that
  caused .delay() calls to hang on Redis broker connection
- Split CI test job into two stages:
  - Quick Tests (timeout: 10min, ~2min run): unit + basic integration
  - Integration Tests (timeout: 20min): Docker containers, external services
- Quick tests gate integration tests for fast-fail feedback
- Build job now depends on both test stages

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 16:43:56 +00:00
github-actions[bot] 08b24e3e66 chore(release): update build metadata files [skip ci] 2026-03-01 16:27:22 +00:00
semantic-release 297d435be5 0.67.1
Automatically generated by python-semantic-release
2026-03-01 16:27:19 +00:00
Christian Krakau-Louis 91bd4ad837 Merge pull request #444 from christianlouis/copilot/optimize-database-queries
fix(db): check column existence before creating indexes; fix mypy error in cache.py
2026-03-01 17:27:03 +01:00
copilot-swe-agent[bot] 069be988ab Initial plan 2026-03-01 16:23:46 +00:00
copilot-swe-agent[bot] d45d0a424e fix: add type: ignore for redis.scan() mypy false positive in cache.py
redis.Redis.scan() returns a tuple at runtime but mypy infers
Awaitable[Any] from the generic ResponseT return type, causing
a "not iterable" error on tuple unpacking.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 15:22:50 +00:00
copilot-swe-agent[bot] febdf41469 fix(db): check column existence before creating performance indexes
_ensure_indexes() now verifies the target column exists in the table
before executing CREATE INDEX IF NOT EXISTS. This prevents failures
when migrating legacy database schemas that don't yet have all columns
(e.g. files table without created_at or mime_type).

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 15:09:32 +00:00
copilot-swe-agent[bot] 5c098d2ac7 Initial plan 2026-03-01 14:52:59 +00:00
github-actions[bot] 5b9f78d2d5 chore(release): update build metadata files [skip ci] 2026-03-01 14:52:47 +00:00
semantic-release 3a2a5a728f 0.67.0
Automatically generated by python-semantic-release
2026-03-01 14:52:44 +00:00
Christian Krakau-Louis 2223700404 Merge pull request #442 from christianlouis/copilot/add-feature-flag-gmail-processing
feat(imap): add IMAP_READONLY_MODE to prevent preprod from modifying shared mailboxes
2026-03-01 15:52:28 +01:00
copilot-swe-agent[bot] ce87b53331 style: fix spelling (British to American English)
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 14:41:29 +00:00
copilot-swe-agent[bot] d5a95e9270 docs: add Performance & Caching section to ConfigurationGuide
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 14:40:19 +00:00
copilot-swe-agent[bot] b79ba81e05 perf(db): add indexes on query-hot columns and Redis caching layer
- Add database indexes on FileRecord.created_at, FileRecord.mime_type,
  ProcessingLog.file_id, ProcessingLog.timestamp, and
  FileProcessingStep.status for faster filtering, sorting, and joins.
- Add _ensure_indexes() migration for existing databases.
- Create app/utils/cache.py with fail-open Redis GET/SET/DELETE helpers.
- Cache MIME types dropdown query in files view (120s TTL).
- Optimize batch status query to load only needed columns.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 14:38:28 +00:00
copilot-swe-agent[bot] a4fafe5c56 Initial plan 2026-03-01 14:30:22 +00:00
copilot-swe-agent[bot] f8c5dd539d feat(imap): add IMAP_READONLY_MODE feature flag to safeguard shared mailboxes
When enabled, IMAP processing will fetch and process attachments but
will NOT modify the mailbox state (no starring, labeling, deleting,
or flag changes). This allows preprod instances to safely share a
Gmail inbox with production without interfering with production
email processing.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 14:28:51 +00:00
copilot-swe-agent[bot] 88cd8c4098 Initial plan 2026-03-01 14:23:18 +00:00
github-actions[bot] 70579bc9b6 chore(release): update build metadata files [skip ci] 2026-03-01 14:20:18 +00:00
semantic-release a973855fcd 0.66.0
Automatically generated by python-semantic-release
2026-03-01 14:20:15 +00:00
Christian Krakau-Louis 96b14ec74f Merge pull request #440 from christianlouis/copilot/update-search-functionality
feat(search): add content-finding filters, saved searches, and text quality to Search view
2026-03-01 15:19:57 +01:00
copilot-swe-agent[bot] 68857c1785 style(search): address code review - use const/let, fix date timezone, deduplicate filter keys
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 13:59:23 +00:00
github-actions[bot] b71f021860 chore(release): update build metadata files [skip ci] 2026-03-01 13:58:23 +00:00
semantic-release 46033ff7c2 0.65.0
Automatically generated by python-semantic-release
2026-03-01 13:58:20 +00:00
Christian Krakau-Louis b65d937a36 Merge pull request #439 from christianlouis/copilot/add-bulk-file-operations
feat: bulk operations (delete, reprocess, Cloud OCR, ZIP download) + persisted OCR quality score filter
2026-03-01 14:58:01 +01:00
copilot-swe-agent[bot] de09dba285 docs: update API and User Guide with search filters and saved searches
- Document new /api/search endpoint with all filter parameters
- Update saved searches docs with new allowed filter keys
- Update User Guide with search view filters and saved searches usage

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 13:55:55 +00:00
copilot-swe-agent[bot] 83c3405c98 feat: persist ocr_quality_score and use it for numeric filtering
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 13:46:43 +00:00
copilot-swe-agent[bot] 5bf0a4c0b9 feat(search): add content-finding filters, saved searches, and text quality to Search view
- Add tags, sender, text_quality filters to search API and Meilisearch client
- Add sender and ocr_text_length to Meilisearch filterable attributes
- Expand saved search allowed filter keys to include q, document_type, language, sender, text_quality
- Add filters panel and saved searches UI to the Search view template
- Add tests for new search filters, saved search keys, and search view elements

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 13:46:15 +00:00
copilot-swe-agent[bot] 705b970522 feat: add bulk download, cloud OCR, and basic OCR quality filter
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 13:38:42 +00:00
github-actions[bot] fbfd2edc9e chore(release): update build metadata files [skip ci] 2026-03-01 13:34:41 +00:00
semantic-release 9cd1206c3b 0.64.1
Automatically generated by python-semantic-release
2026-03-01 13:34:39 +00:00
Christian Krakau-Louis 4e5a3ad973 Merge pull request #438 from christianlouis/copilot/fix-upload-queue-overwrite
fix: append new drag-and-drop batches to upload queue instead of replacing it
2026-03-01 14:34:23 +01:00
copilot-swe-agent[bot] e797832561 Initial plan 2026-03-01 13:32:57 +00:00
copilot-swe-agent[bot] 81c08ed9d0 fix: append new drops to upload queue instead of overwriting it
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 13:26:49 +00:00
copilot-swe-agent[bot] e8ed375bba Initial plan 2026-03-01 13:25:10 +00:00
copilot-swe-agent[bot] f11b5e74b5 Initial plan 2026-03-01 13:23:51 +00:00
github-actions[bot] 3eb3b9f8db chore(release): update build metadata files [skip ci] 2026-03-01 12:30:52 +00:00
semantic-release 11724b5500 0.64.0
Automatically generated by python-semantic-release
2026-03-01 12:30:49 +00:00
Christian Krakau-Louis 05c35a6775 Merge pull request #437 from christianlouis/copilot/add-file-download-endpoint
fix(api): change download endpoint default version from `original` to `processed`
2026-03-01 13:30:30 +01:00
github-actions[bot] dc93cde437 chore(release): update build metadata files [skip ci] 2026-03-01 12:30:20 +00:00
semantic-release eb695116e2 0.63.0
Automatically generated by python-semantic-release
2026-03-01 12:30:18 +00:00
Christian Krakau-Louis be01232408 Merge pull request #436 from christianlouis/copilot/add-advanced-filtering-feature
feat: add advanced filtering and saved searches
2026-03-01 13:30:01 +01:00