Commit Graph

596 Commits

Author SHA1 Message Date
Christian Krakau-Louis c85a6710b6 Merge pull request #256 from christianlouis/copilot/add-browser-plugin-for-docuelevate
feat(browser): add browser extension for URL-based file submission
2026-02-12 04:17:46 +01:00
copilot-swe-agent[bot] aa58d2d930 docs(browser): add ASCII installation guide
- Create visual ASCII installation guide (INSTALLATION.txt)
- Quick reference for installation steps
- Include configuration, usage, and troubleshooting
- Add verification checklist and support resources

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 03:13:43 +00:00
copilot-swe-agent[bot] 409c7541f7 docs(browser): add comprehensive implementation summary
- Create detailed implementation summary document
- Document all deliverables and technical specifications
- Include code statistics and browser compatibility matrix
- List all requirements met and acceptance criteria satisfied
- Provide success metrics and next steps
- Mark feature as production-ready

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 03:12:58 +00:00
copilot-swe-agent[bot] 0a3fe11f66 docs(browser): add permissions guide and improve documentation
- Create comprehensive PERMISSIONS.md explaining all permissions
- Document empty host_permissions array and privacy benefits
- Add session cookie security best practices to BrowserExtension.md
- Clarify future use case for content script message handler
- Improve error message clarity for JSON parsing failures

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 03:11:33 +00:00
Christian Krakau-Louis 076572412a Merge pull request #258 from christianlouis/copilot/refactor-linter-workflow
ci: split linters into independent parallel jobs
2026-02-12 04:11:22 +01:00
copilot-swe-agent[bot] 142c19ef50 fix(browser): improve error handling and code quality
- Fix response.json() called before checking response.ok in popup.js
- Consolidate duplicate onInstalled listeners in background.js
- Remove unnecessary return true from content.js message handler
- Add better error handling for non-JSON responses
- Improve user experience by not auto-opening popup on install

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 03:09:33 +00:00
copilot-swe-agent[bot] e89faeccae ci: add workflow-level permissions for least privilege
Add top-level `permissions: contents: read` to the tests workflow,
addressing CodeQL alerts about missing GITHUB_TOKEN permissions.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 03:09:06 +00:00
copilot-swe-agent[bot] 5d42e03b90 fix(browser): address code review feedback
- Add explicit return value to message listener in content.js
- Fix documentation references in QUICKSTART.md
- Clarify that GET_PAGE_INFO listener is reserved for future use

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 03:08:20 +00:00
copilot-swe-agent[bot] d025923ef5 ci: split linters into independent parallel jobs and add CI documentation
Refactors .github/workflows/tests.yaml so that flake8, black, mypy,
pylint, and bandit each run as their own job in parallel with the test
job. This ensures a failure in one tool never blocks the others, and
contributors see full feedback from every tool on every CI run.

- Upgrades actions/checkout to v4 and actions/setup-python to v5
- All linter jobs are enforced (no continue-on-error)
- Test artifacts (junit.xml, coverage.xml) always uploaded
- Bandit JSON report always uploaded as artifact
- Adds docs/CIWorkflow.md with maintainer documentation
- Updates CONTRIBUTING.md with CI workflow table and link

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 03:07:53 +00:00
copilot-swe-agent[bot] 5cc34d6a72 docs(browser): add visual guide for browser extension UI
- Create comprehensive visual guide showing all UI states
- Document color scheme, typography, and accessibility features
- Include ASCII art mockups of popup interface
- Add browser support matrix and performance metrics
- Document user flow and security indicators

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 03:07:20 +00:00
copilot-swe-agent[bot] e561f6d567 docs(browser): add quick start guide and test page for browser extension
- Add QUICKSTART.md with 5-minute installation guide
- Create test.html page for testing extension functionality
- Include troubleshooting tips and testing checklist
- Add sample document and image links for testing

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 03:06:05 +00:00
copilot-swe-agent[bot] 3e0c77e84b Initial plan 2026-02-12 03:05:00 +00:00
copilot-swe-agent[bot] 817dc31e12 feat(browser): implement browser extension for sending files to DocuElevate
- Add complete browser extension with popup UI and background workers
- Support Chrome, Firefox, Edge, and other Chromium-based browsers
- Include context menu integration for quick file sending
- Add comprehensive documentation for users and administrators
- Update main README and API docs to include browser extension
- Implement secure configuration storage in browser extension storage
- Add SSRF-protected URL upload endpoint integration

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 03:04:36 +00:00
copilot-swe-agent[bot] 66f0f3236c Initial plan 2026-02-12 02:59:32 +00:00
github-actions[bot] afdad7314b chore(release): update build metadata files [skip ci] 2026-02-12 02:58:54 +00:00
Christian Krakau-Louis a4d0dc5ddb Merge pull request #255 from christianlouis/copilot/mitigate-pypdf-infinite-loop
fix(deps): mitigate PyPDF2 infinite loop vulnerability (CVE-2023-36464)
2026-02-12 03:58:36 +01:00
github-actions[bot] 75dcbaaabe chore(release): update build metadata files [skip ci] 2026-02-12 02:57:39 +00:00
Christian Krakau-Louis 0bdd45ddd2 Merge pull request #253 from christianlouis/copilot/fix-test-failures-bulk-operations
fix(test): align 11 tests with refactored status tracking and renamed APIs
2026-02-12 03:57:15 +01:00
copilot-swe-agent[bot] 00abb33bbe docs: update all references from PyPDF2 to pypdf in documentation
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 02:54:48 +00:00
copilot-swe-agent[bot] ad39ee7afa fix(test): update 11 failing tests to match refactored status tracking and API changes
- Update test_bulk_operations.py: Use FileProcessingStep instead of ProcessingLog for status filter tests
- Update test_file_listing.py: Use FileProcessingStep for processing status determination tests
- Update test_file_detail_endpoints.py: Replace hash_file with check_text in step summary test
- Update test_path_traversal_security.py: Import get_unique_filepath_with_counter from correct module
- Update test_process_document.py: Match current duplicate handling behavior (creates new record)

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 02:54:46 +00:00
copilot-swe-agent[bot] cc98039246 fix(deps): upgrade PyPDF2 to pypdf >= 3.9.0 to fix CVE-2023-36464
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 02:52:17 +00:00
copilot-swe-agent[bot] 0c2e308790 Initial plan 2026-02-12 02:48:06 +00:00
copilot-swe-agent[bot] 21ae70f8d5 Initial plan 2026-02-12 02:41:45 +00:00
github-actions[bot] fbebe32409 chore(release): update build metadata files [skip ci] 2026-02-12 02:12:29 +00:00
Christian Krakau-Louis 343b4ef0e2 Merge pull request #251 from christianlouis/claude/fix-failing-tests
fix(tests): fix remaining 8 failing tests - storage reorganization and file detail enhancements
2026-02-12 03:12:05 +01:00
anthropic-code-agent[bot] 104757fd4f fix(tests): fix remaining 8 tests - storage reorganization and file detail enhancements
- Fix test_storage_reorganization.py: Use valid PDF content with EOF marker
- Fix test_file_detail_enhancements.py: Add missing sample_pdf_file fixture
- All 12 tests now passing (2 storage + 7 file detail + 3 other)

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 02:08:50 +00:00
anthropic-code-agent[bot] 96d063e2a6 fix(tests): rewrite file_status_fix tests for FileProcessingStep model
- Replace ProcessingLog-based tests with FileProcessingStep-based tests
- Update to use step_manager functions (get_file_overall_status, get_step_summary)
- All 6 tests (3 status + 3 metrics) now pass

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 02:01:26 +00:00
anthropic-code-agent[bot] a08c234a53 fix(tests): update file_queries tests to use FileProcessingStep instead of ProcessingLog
- Replace ProcessingLog with FileProcessingStep in sample_files fixture
- Update test comments to reflect using steps instead of logs
- All 10 file_queries tests now pass

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 01:59:38 +00:00
anthropic-code-agent[bot] b27788a95e fix(tests): correct step_manager tests to use actual step names from MAIN_PROCESSING_STEPS
- Replace "hash_file" test step with actual MAIN_PROCESSING_STEPS names
- Fix test_get_step_summary to use upload_to_* instead of queue_* for upload counts
- All 12 step_manager tests now pass

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-12 01:57:54 +00:00
anthropic-code-agent[bot] 8a24c7462b Initial plan 2026-02-12 01:48:42 +00:00
github-actions[bot] 88f7fd6073 chore(release): update build metadata files [skip ci] 2026-02-12 01:38:26 +00:00
Christian Krakau-Louis 9a2c2d20b1 feat(duplication): implement duplicate file handling and detection across processing steps 2026-02-12 02:38:00 +01:00
Christian Krakau-Louis 70757e5644 feat(step-timeout): add automatic recovery for stalled processing steps
- Implement step timeout detection to prevent files from getting stuck in 'pending' state
- Add monitor_stalled_steps periodic task running every minute (Celery Beat)
- Automatically mark in-progress steps as failed if they exceed timeout (default: 10 minutes)
- Add step_timeout configuration setting (default: 600 seconds)
- Recover stalled steps with error message indicating when timeout was triggered
- Fix duplicate check to exclude self-comparison (file not duplicate of itself)

When processing crashes or hangs:
1. Worker detects stalled steps (in_progress for >10 minutes)
2. Marks them as failed with timeout error message
3. Updates UI to show failure status
4. Allows file to be retried or handled by user

This prevents files from being indefinitely stuck in processing state and provides
visibility into what went wrong.
2026-02-12 02:38:00 +01:00
Christian Krakau-Louis 7bbd095152 fix(deduplication): handle UNIQUE constraint violation for duplicate files
- Remove duplicate record creation to avoid UNIQUE constraint on filehash
- When duplicate detected, return original file_id instead of creating new record
- Avoids sqlite3.IntegrityError: UNIQUE constraint failed
- Simpler approach: duplicates not tracked as separate records, just rejected
- Revert filehash column back to NOT NULL (required for original files)
- Fixes error: (sqlite3.IntegrityError) UNIQUE constraint failed: files.filehash
2026-02-12 02:38:00 +01:00
Christian Krakau-Louis 974dd64660 fix(database): add runtime schema migrations for deduplication columns
- Implement lightweight migration system for is_duplicate and duplicate_of_id columns
- Migrations run automatically on application startup
- Idempotent migrations safe to run multiple times
- Fixes SQLite OperationalError for missing columns
- Resolves issue where database schema didn't match model definitions
2026-02-12 02:38:00 +01:00
Christian Krakau-Louis 4c11cfd6dd feat(deduplication): implement configurable duplicate file detection
- Add enable_deduplication and show_deduplication_step config options
- Rename hash_file step to check_for_duplicates
- Make deduplication step conditional based on configuration
- Add is_duplicate and duplicate_of_id fields to FileRecord model
- Create database migration for new deduplication fields
- Update process_document task to log deduplication results
- Update step visualization to show/hide step based on config
- Update status calculations to include deduplication step conditionally
- Default: deduplication enabled, step displayed
- Can be configured to hide from UI while still processing
2026-02-12 02:38:00 +01:00
github-actions[bot] a4f3d92d20 chore(release): update build metadata files [skip ci] 2026-02-12 00:07:53 +00:00
Christian Krakau-Louis 83c65f3c40 feat: enhance processing status tracking and UI display for file details 2026-02-12 01:07:22 +01:00
Christian Krakau-Louis 02e1445e01 Enhance file detail page with original and processed file previews, GPT metadata display, and text extraction functionality
- Added endpoints for previewing original and processed PDF files.
- Implemented on-demand text extraction from original and processed PDFs.
- Updated file detail page to show original and processed file paths with existence status.
- Introduced GPT metadata display with a collapsible JSON view.
- Enhanced front-end with PDF.js for in-browser PDF rendering and improved user experience.
- Added integration tests for new features including metadata display and file previews.
2026-02-11 23:32:29 +01:00
github-actions[bot] ce40cbcdd8 chore(release): update build metadata files [skip ci] 2026-02-11 21:53:37 +00:00
Christian Krakau-Louis 7222740204 feat(auth): add configurable admin group name for OAuth user access 2026-02-11 22:53:13 +01:00
github-actions[bot] 0a3c8987f8 chore(release): update build metadata files [skip ci] 2026-02-11 21:39:55 +00:00
Christian Krakau-Louis 50cc0035d9 feat(database): add file path columns to files table during migration
fix(general): update processed files count query to use FileRecord.id

chore: add VSCode settings for pytest configuration
2026-02-11 22:39:21 +01:00
github-actions[bot] 90b50d3625 chore(release): update build metadata files [skip ci] 2026-02-11 20:36:24 +00:00
Christian Krakau-Louis 3a23d0b2d7 Merge pull request #249 from christianlouis/copilot/reorganize-document-storage-structure
Implement immutable storage architecture with collision-resistant naming
2026-02-11 21:36:05 +01:00
copilot-swe-agent[bot] a247393e18 fix: update test to use new collision handling function
- Replace unique_filepath with get_unique_filepath_with_counter in tests
- Update test expectations for -0001 suffix format
- All 40 tests passing successfully

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 20:17:03 +00:00
copilot-swe-agent[bot] c7dff41492 docs: add comprehensive documentation for storage reorganization
- Create StorageArchitecture.md with detailed architecture explanation
- Document collision handling with -0001 suffix format
- Explain immutable original and processed file storage
- Document forced Cloud OCR reprocessing feature
- Update API.md with new reprocess-with-cloud-ocr endpoint
- Update UserGuide.md with user-facing feature descriptions
- Include database schema, lifecycle diagrams, and examples

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 20:14:56 +00:00
copilot-swe-agent[bot] 952e27b339 test: add tests for storage reorganization features
- Add tests for get_unique_filepath_with_counter collision handling
- Add tests for immutable original storage
- Add tests for metadata augmentation with file paths
- Add tests for force_cloud_ocr parameter
- Verify existing process_document tests still pass

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 20:13:17 +00:00
copilot-swe-agent[bot] 73a0222e56 feat(storage): implement immutable original/processed file storage and collision handling
- Add original_file_path and processed_file_path columns to FileRecord model
- Create database migration for new fields
- Implement get_unique_filepath_with_counter() with -0001 suffix format
- Update process_document to save immutable copy to /workdir/original
- Add force_cloud_ocr parameter to process_document for forced OCR
- Update embed_metadata to use new collision handling
- Update metadata JSON to include file path references
- Add /files/{file_id}/reprocess-with-cloud-ocr API endpoint
- Update processed_file_path in database during embedding

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-11 20:10:19 +00:00
copilot-swe-agent[bot] b5c669f3fe Initial plan 2026-02-11 20:04:57 +00:00