Commit Graph

1222 Commits

Author SHA1 Message Date
semantic-release 8539de9ee7 0.61.0
Automatically generated by python-semantic-release
2026-02-28 20:12:09 +00:00
Christian Krakau-Louis 142d5618fb Merge pull request #434 from christianlouis/copilot/ensure-accessibility-compliance
feat(ui): WCAG 2.1 AA accessibility compliance with CI enforcement
2026-02-28 21:11:53 +01:00
copilot-swe-agent[bot] 1f48503217 docs(a11y): add comprehensive AccessibilityGuide.md
Add docs/AccessibilityGuide.md with WCAG 2.1 Level AA standards, ARIA
patterns, keyboard navigation requirements, color contrast guidelines,
form/table/modal accessibility patterns, testing instructions, and a
developer checklist for UI changes.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-28 16:18:35 +00:00
copilot-swe-agent[bot] 1968a0e481 ci(a11y): add djlint HTML accessibility lint to CI pipeline
- Add html-lint job to CI that runs djlint on all PRs
- Configure djlint in pyproject.toml with Jinja2 profile and accessibility rules
- Add djlint to requirements-dev.txt
- Expand accessibility section in frontend Copilot instructions (WCAG 2.1 AA)
- Wire html-lint into CI dependency chain (test/mypy/build depend on it)

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-28 16:12:25 +00:00
copilot-swe-agent[bot] 0969436abd feat(ui): add ARIA attributes for accessibility improvements
Add aria-hidden="true" to decorative Font Awesome icons across templates,
aria-label to icon-only buttons, aria-live to dynamic content regions,
aria-labelledby to modals, aria-expanded to toggle buttons, scope="col"
to table headers, and aria-label to tables. Also improve alt text on
500.html error image and add aria-label to password toggle buttons.

Templates updated: settings.html, credentials.html, status_dashboard.html,
file_view.html, file_detail.html, index.html, queue_dashboard.html,
audit_log.html, 500.html

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-28 16:04:33 +00:00
copilot-swe-agent[bot] bf6bbe3512 feat(ui): fix accessibility in upload, search, files, and login templates
- upload.html: Add role/tabindex/aria-label to drop zone, aria-live to status messages, aria-label to file inputs
- search.html: Add role="search", sr-only label, aria-live for results, input type="search"
- files.html: Add table aria-label, scope="col" to headers, aria-sort on sortable columns, aria-labels to action buttons, dialog roles to modals, aria-live to status areas, pagination nav with aria-labels
- login.html: Wrap form in main landmark, aria-hidden on decorative icons

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-28 15:59:12 +00:00
copilot-swe-agent[bot] 364ff9375a feat(ui): add accessibility foundations to base.html and styles.css
- Add skip-to-content link for keyboard navigation (WCAG 2.4.1)
- Add ARIA landmarks: nav aria-label, footer role=contentinfo
- Add aria-current="page" on active nav links
- Add aria-label to admin dropdown button and mobile menu toggle
- Add role="menu" and role="menuitem" to admin dropdown
- Add aria-hidden="true" to all decorative Font Awesome icons
- Add footer nav element with aria-label for footer links
- Add focus-visible outline styles for keyboard navigation (WCAG 2.4.7)
- Add sr-only utility class
- Add dark mode support for skip-link and focus indicators

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-28 15:55:27 +00:00
github-actions[bot] 414805b8d0 chore(release): update build metadata files [skip ci] 2026-02-28 15:50:05 +00:00
semantic-release 5071fea522 0.60.4
Automatically generated by python-semantic-release
2026-02-28 15:50:03 +00:00
copilot-swe-agent[bot] aa2e559b73 Initial plan 2026-02-28 15:50:02 +00:00
Christian Krakau-Louis b15f66f52b Merge pull request #433 from christianlouis/copilot/fix-retry-upload-task
fix(api): use processed_file_path from DB in upload retry path resolution
2026-02-28 16:49:46 +01:00
copilot-swe-agent[bot] 2f442b0906 test: improve upload retry tests with legacy path assertions and priority verification
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-28 12:57:50 +00:00
copilot-swe-agent[bot] bb98afac82 fix(api): use processed_file_path from DB in upload retry path resolution
The upload retry logic now checks file_record.processed_file_path first
(the GPT-suggested filename stored during finalization), before falling
back to legacy hash-based and original-filename-based path patterns.

This fixes the case where the processed file has a different name than
the original (e.g., '2023-10-01_Unknown.pdf' vs 'cable_graphic.pdf')
and the retry couldn't find the file on disk.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-28 12:56:01 +00:00
copilot-swe-agent[bot] 5fe0f6f864 Initial plan 2026-02-28 12:43:53 +00:00
github-actions[bot] 3d1fe0d175 chore(release): update build metadata files [skip ci] 2026-02-28 11:24:35 +00:00
semantic-release d1f34ee7e4 0.60.3
Automatically generated by python-semantic-release
2026-02-28 11:24:33 +00:00
Christian Krakau-Louis a33c71ff0a Merge pull request #432 from christianlouis/copilot/fix-ocr-data-extraction-issue
fix(tasks): resolve files stuck in Pending status despite completed processing
2026-02-28 12:24:16 +01:00
copilot-swe-agent[bot] 4fdb1b8d85 fix: address code review feedback - restrict terminal step check to success only, add test assertions
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-27 16:39:32 +00:00
copilot-swe-agent[bot] 2c55f076be fix(tasks): resolve files stuck in Pending status despite completed processing
The status calculation required ALL steps to be explicitly marked as
success/skipped before a file could be "completed". This failed for
dynamic pipelines where:

1. check_for_duplicates was logged before the file record existed (no
   file_id), so its FileProcessingStep was never updated from "pending"
2. extract_text was not marked as "skipped" for non-PDF files that go
   through PDF conversion first

Fix:
- Move check_for_duplicates success log to after initialize_file_steps()
  with the correct file_id so the step actually gets updated
- Mark extract_text as "skipped" for non-PDF files
- Add terminal-step fallback: if send_to_all_destinations is "success",
  the file is "completed" even if intermediate steps remain "pending"
  (handles any other dynamic pipeline edge cases)

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-27 16:38:10 +00:00
github-actions[bot] b8f4151167 chore(release): update build metadata files [skip ci] 2026-02-27 16:26:36 +00:00
semantic-release 1a427018ef 0.60.2
Automatically generated by python-semantic-release
2026-02-27 16:26:33 +00:00
Christian Krakau-Louis fee80662bd Merge pull request #431 from christianlouis/copilot/fix-multi-file-upload-issue
fix(upload): multi-file drag-and-drop only uploads first file
2026-02-27 17:26:15 +01:00
copilot-swe-agent[bot] dc9aec2bab fix(upload): fix multi-file drag-and-drop only uploading one file
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-27 16:19:06 +00:00
copilot-swe-agent[bot] f641264dd2 Initial plan 2026-02-27 16:18:14 +00:00
copilot-swe-agent[bot] 76f36876e4 Initial plan 2026-02-27 16:16:02 +00:00
github-actions[bot] 5258b54b55 chore(release): update build metadata files [skip ci] 2026-02-27 09:23:03 +00:00
semantic-release e47f169a53 0.60.1
Automatically generated by python-semantic-release
2026-02-27 09:23:00 +00:00
Christian Krakau-Louis c0d19a5398 Merge pull request #429 from christianlouis/copilot/fix-complete-status-error
fix(tests): align "completed" test fixtures with terminal-step guard semantics
2026-02-27 10:22:39 +01:00
copilot-swe-agent[bot] aba47af30a test: add send_to_all_destinations step to test_status_filter_completed
The terminal-step guard requires send_to_all_destinations: success before
a file is considered "completed". Update test_status_filter_completed to
include this step so it matches the new semantics.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-27 01:08:26 +00:00
copilot-swe-agent[bot] 9795ca0d52 test: update 3 tests broken by terminal-step completed guard
The previous fix (requiring send_to_all_destinations to be present
before marking a file as completed) broke 3 tests that used only
partial step sets and expected "completed":

- test_coverage_polish.py::TestFileQueriesDeduplicationEnabled::
  test_deduplication_enabled_adds_check_for_duplicates
- test_file_listing.py::TestFileListingPagination::
  test_processing_status_included
- test_file_listing.py::TestFileDetailEndpoint::
  test_file_detail_status_determination

Add send_to_all_destinations: success to each test's dataset so
"completed" status is reached correctly under the new semantics.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-27 01:04:42 +00:00
github-actions[bot] c1e7783187 chore(release): update build metadata files [skip ci] 2026-02-27 00:56:50 +00:00
semantic-release 34e77aca17 0.60.0
Automatically generated by python-semantic-release
2026-02-27 00:56:47 +00:00
Christian Krakau-Louis 458ca38b1e Merge pull request #430 from christianlouis/copilot/add-queue-visualization-page
feat(queue): add queue monitoring dashboard and pending banner on files page
2026-02-27 01:56:28 +01:00
copilot-swe-agent[bot] baa412b172 fix(status): simplify terminal step guard condition in get_step_summary
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-27 00:52:48 +00:00
copilot-swe-agent[bot] e6dd39c27d fix(status): prevent false Completed status when mandatory pipeline steps have not run
Add a terminal-step guard (send_to_all_destinations) to all status
calculation paths so that files are only marked Completed once the
entire processing pipeline has been recorded.

- get_file_overall_status: require TERMINAL_STEP to be present
- get_files_processing_status: same guard for bulk status
- get_step_summary: count missing terminal step as queued so
  total_main_steps > main_completed when pipeline is incomplete
- apply_status_filter: SQL sub-query requires terminal step for
  completed filter
- process_document: call initialize_file_steps after creating a new
  file record so all mandatory steps are pre-created as pending

Define TERMINAL_STEP constant in step_manager.py and reference it in
file_status.py and file_queries.py to avoid magic strings.

Tests updated: add send_to_all_destinations to completed-file
fixtures; add test verifying initialize_file_steps is called for
new files.

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-27 00:51:14 +00:00
copilot-swe-agent[bot] 4dd018f210 refactor(queue): address code review feedback — extract constants and sync refresh interval
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-27 00:47:58 +00:00
copilot-swe-agent[bot] c7c5718f78 feat(queue): add queue monitoring dashboard and pending banner on files page
- Add /api/queue/stats endpoint with Redis queue lengths, Celery worker
  inspection, and DB processing summaries
- Add /api/queue/pending-count lightweight endpoint for the files page banner
- Add /admin/queue admin-only view with auto-refreshing queue dashboard
- Add queue pending banner on /files page showing queued/processing count
- Add Queue Monitor link to admin dropdown in navigation (desktop + mobile)
- Add comprehensive tests for all new endpoints and views

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-27 00:42:55 +00:00
copilot-swe-agent[bot] 6f3e1f505b Initial plan 2026-02-27 00:33:21 +00:00
copilot-swe-agent[bot] 515f5b97e9 Initial plan 2026-02-27 00:31:29 +00:00
github-actions[bot] dd11076694 chore(release): update build metadata files [skip ci] 2026-02-27 00:16:06 +00:00
semantic-release 14bd15aa6d 0.59.1
Automatically generated by python-semantic-release
2026-02-27 00:16:02 +00:00
Christian Krakau-Louis 0055de3c66 Merge pull request #427 from christianlouis/copilot/fix-processed-file-view-error
fix(api): use stored DB paths for file preview and download
2026-02-27 01:15:44 +01:00
copilot-swe-agent[bot] cded73481e fix(api): use stored file paths for preview and download endpoints
Both get_file_preview and download_file were ignoring the DB-stored
original_file_path and processed_file_path fields, instead relying on
local_filename (a temp path that may be gone) and guessing patterns for
the processed file. This caused "Processed file not found" and
potentially "Original file not found" in the /files/{id} view even when
the files existed at their stored paths.

- version=original: check original_file_path first, fall back to local_filename
- version=processed: check processed_file_path first, fall back to
  hash/filename guessing patterns

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-27 00:01:32 +00:00
github-actions[bot] 4ec270481d chore(release): update build metadata files [skip ci] 2026-02-26 23:56:40 +00:00
semantic-release fb916afbe0 0.59.0
Automatically generated by python-semantic-release
2026-02-26 23:56:36 +00:00
Christian Krakau-Louis 585b30a93e Merge pull request #426 from christianlouis/copilot/support-directory-upload
feat(upload): directory drag-and-drop, adaptive 429 throttling, full Gotenberg file type support
2026-02-27 00:56:17 +01:00
copilot-swe-agent[bot] 88701bfa0a Initial plan 2026-02-26 23:55:15 +00:00
copilot-swe-agent[bot] 4a251fd3ca fix(test): update drop overlay text assertion to match new directory-upload message
Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-02-26 23:50:46 +00:00
github-actions[bot] 8dedd40ef3 chore(release): update build metadata files [skip ci] 2026-02-26 23:38:16 +00:00
semantic-release 73624e6e2d 0.58.0
Automatically generated by python-semantic-release
2026-02-26 23:38:12 +00:00