Commit Graph

1322 Commits

Author SHA1 Message Date
copilot-swe-agent[bot] bcfb91b05f Initial plan 2026-03-01 20:28:50 +00:00
github-actions[bot] 49eb2dd8e5 chore(release): update build metadata files [skip ci] 2026-03-01 19:31:34 +00:00
semantic-release afae9e130a 0.70.0
Automatically generated by python-semantic-release
2026-03-01 19:31:32 +00:00
Christian Krakau-Louis ecca0ecdfa Merge pull request #461 from christianlouis/copilot/enhance-release-versioning 2026-03-01 20:31:17 +01:00
github-actions[bot] b0cd612974 chore(release): update build metadata files [skip ci] 2026-03-01 19:31:10 +00:00
semantic-release 09e174f086 0.69.0
Automatically generated by python-semantic-release
2026-03-01 19:31:07 +00:00
Christian Krakau-Louis 68ea6aabc7 Merge pull request #448 from christianlouis/copilot/add-retry-logic-backoff 2026-03-01 20:30:45 +01:00
copilot-swe-agent[bot] 61d7639129 refactor(test): simplify test patches per code review feedback
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 18:38:07 +00:00
copilot-swe-agent[bot] 85da309740 feat(api): add GET /api/diagnostic/health endpoint for monitoring
- Add health check endpoint at GET /api/diagnostic/health
- Auth-protected via @require_login (no-op when AUTH_ENABLED=False)
- Checks database (SELECT 1) and Redis (ping) with 2s timeouts
- Returns healthy/degraded/unhealthy with per-check detail
- Returns HTTP 503 when database is down, 200 otherwise
- 7 new unit tests covering all status scenarios
- Update docs/API.md with Grafana/monitoring integration notes
- Fixes test_cors_headers_absent_when_disabled CI timeout

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 18:36:38 +00:00
copilot-swe-agent[bot] d18c10996a feat(release): add named release anchors with codenames and roadmap integration
- Add release_names.json mapping version ranges to codenames
- Add release_name property to Settings in app/config.py
- Update build metadata script to include codename in RUNTIME_INFO
- Display release codename in status dashboard and page footer
- Inject release_name globally via template response wrapper
- Update ROADMAP.md with codenames for all milestone releases
- Add docs/ReleaseNaming.md with naming guide and best practices
- Add comprehensive tests for release name resolution

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 18:32:46 +00:00
github-actions[bot] 32ea0c8949 docs(changelog): update changelog [skip ci] 2026-03-01 18:23:59 +00:00
copilot-swe-agent[bot] 5dcb9814e4 Initial plan 2026-03-01 18:23:59 +00:00
Christian Krakau-Louis 366026e909 Merge pull request #457 from christianlouis/copilot/increase-code-coverage-wizard-py
test: increase code coverage for app/views/wizard.py to 100%
2026-03-01 19:23:37 +01:00
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] bf337a1560 test: increase code coverage for app/views/wizard.py to 100%
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 17:40:54 +00:00
copilot-swe-agent[bot] 5ff7b72a80 feat(tasks): add retry logic with exponential backoff and jitter
- Rewrite app/tasks/retry_config.py with compute_countdown() function
  implementing per-retry delays with ±20% jitter (default: 60s, 300s, 900s)
- Add BaseTaskWithRetry.retry() override to inject proper countdown
- Add OcrTaskWithRetry (120s, 600s, 1800s) for OCR/AI tasks
- Add UploadTaskWithRetry for cloud-storage upload tasks
- Add config settings: TASK_RETRY_MAX_RETRIES, TASK_RETRY_DELAYS, TASK_RETRY_JITTER
- Update process_with_ocr and process_with_azure tasks to use OcrTaskWithRetry
- Update all 11 upload tasks to use UploadTaskWithRetry
- Add 38 unit tests in tests/test_retry_config.py
- Update docs/ConfigurationGuide.md and .env.demo

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-01 17:37:41 +00:00
copilot-swe-agent[bot] 7f06d94f74 Initial plan 2026-03-01 17:34:25 +00:00
copilot-swe-agent[bot] 52f9283155 Initial plan 2026-03-01 17:34:12 +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] af3ff0b581 Initial plan 2026-03-01 17:24:18 +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