Christian Krakau-Louis
c626d06d8a
Merge pull request #455 from christianlouis/copilot/increase-code-coverage-status-py
...
test(status): increase code coverage for app/views/status.py to 100%
2026-03-01 19:23:21 +01:00
github-actions[bot]
1775c4e0dd
docs(changelog): update changelog [skip ci]
2026-03-01 18:22:37 +00:00
Christian Krakau-Louis
bad4743fc2
Merge pull request #458 from christianlouis/copilot/increase-code-coverage-google-drive
...
test(google_drive): confirm 100% coverage for app/views/google_drive.py
2026-03-01 19:22:17 +01:00
github-actions[bot]
8abddaae08
chore(release): update build metadata files [skip ci]
2026-03-01 18:13:47 +00:00
semantic-release
2ba4c0d558
0.68.0
...
Automatically generated by python-semantic-release
2026-03-01 18:13:45 +00:00
Christian Krakau-Louis
b5cb7d7ad7
Merge pull request #456 from christianlouis/copilot/increase-code-coverage-settings
...
Confirm 100% test coverage for app/views/settings.py
2026-03-01 19:13:26 +01:00
Christian Krakau-Louis
47783b32b1
Merge pull request #447 from christianlouis/copilot/implement-file-list-pagination
...
feat(api): implement proper pagination for file list API
2026-03-01 19:13:07 +01:00
github-actions[bot]
eb511c0a27
chore(release): update build metadata files [skip ci]
2026-03-01 18:11:58 +00:00
semantic-release
a9c0b848ee
0.67.3
...
Automatically generated by python-semantic-release
2026-03-01 18:11:55 +00:00
Christian Krakau-Louis
935577edec
Merge pull request #460 from christianlouis/copilot/fix-docker-start-issue
...
fix(docker): copy migrations directory and alembic.ini into Docker image
2026-03-01 19:11:34 +01:00
copilot-swe-agent[bot]
3d71d2b362
fix(docker): copy migrations directory and alembic.ini into Docker image
...
The Docker container failed to start because the Alembic migrations
directory was not being copied into the image. The init_db() function
calls _run_alembic_upgrade() which requires /app/migrations to exist.
Added COPY instructions for ./migrations and ./alembic.ini to both
Dockerfile and Dockerfile.local.
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-01 17:55:06 +00:00
copilot-swe-agent[bot]
a1b1cd06c2
Initial plan
2026-03-01 17:50:19 +00:00
copilot-swe-agent[bot]
1095b41579
test(status): increase code coverage for app/views/status.py to 100%
...
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-01 17:41:50 +00:00
copilot-swe-agent[bot]
7f06d94f74
Initial plan
2026-03-01 17:34:25 +00:00
copilot-swe-agent[bot]
404b3a7ba5
Initial plan
2026-03-01 17:34:02 +00:00
copilot-swe-agent[bot]
e54333d344
Initial plan
2026-03-01 17:33:53 +00:00
copilot-swe-agent[bot]
af34ce88df
feat(api): implement proper pagination for file list API
...
- Change default per_page from 50 to 25
- Rename total_items → total, total_pages → pages in pagination response
- Add next/previous URL fields to pagination response
- Update view and template to use new field names
- Update tests and API docs
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com >
2026-03-01 17:31:56 +00:00
copilot-swe-agent[bot]
82c524a788
Initial plan
2026-03-01 17:23:51 +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