Spaces:
Sleeping
Sleeping
Commit History
-
Integrate PaddleOCR and redesign UI with Xerox Star aestheticβ
ClaudeUnverified signatureImage-to-XML pipeline: - New /ocr endpoint: upload image -> PaddleOCR -> ALTO/PAGE XML - No more manual JSON payload needed for the main workflow - src/app/ocr/ module wraps PaddleOCR with lazy loading - Auto-detects image dimensions via Pillow - 20 MB upload limit with format validation UI redesign (Xerox Star / early Mac inspired): - Desktop icons for navigation (Scan Document, Documents, Advanced) - Window chrome with titlebars, close boxes, and striped decorations - Drag-and-drop zone for image upload - Retro button styles, dithered background, monospace fonts - Status bar at bottom of each window - "Advanced" mode preserves the old raw payload workflow Infrastructure: - Add paddlepaddle + paddleocr to dependencies - Add libgl1, libglib2.0-0 to Dockerfile for OpenCV (PaddleOCR dep) - Pre-download OCR models at Docker build time - Increase healthcheck start-period to 30s (model loading) 508 tests pass. 0 ruff warnings. https://claude.ai/code/session_01AdT5qvpceqqRs1AGJNgD1Y862cbed
-
Repo audit: fix security issues, bugs, and prepare HF Space deploymentβ
ClaudeUnverified signatureSecurity fixes: - Fix CORS wildcard + credentials vulnerability (CSRF risk) - Add path traversal protection in FileStore (sanitize job_id/provider_id) - Add upload size limit (50MB) to prevent DoS - Chain exception properly in JSON parse error (raise from None) Bug fixes: - Fix job final status logic: no exports now correctly returns FAILED - Fix misleading [-0] index in hyphenation enricher (same as [0]) - Remove unused field_validator import in canonical_document - Cache Settings singleton with lru_cache (was re-reading .env per request) HF Space deployment: - Add YAML frontmatter to README.md for HF Spaces auto-configuration - Add non-root user in Dockerfile (required by HF Spaces) - Create /data directory for persistent storage All 497 tests pass. Coverage: 96%. https://claude.ai/code/session_01AdT5qvpceqqRs1AGJNgD1Ybb6107f
-
Sprint 11: minimal web frontend β upload, jobs, providers, exportsβ
ClaudeUnverified signatureSingle-page HTML/JS frontend served via FastAPI StaticFiles: Pages: - Upload: select payload JSON, configure provider family/ID/dimensions, run pipeline, see result (status, duration, export links, event log) - Jobs: history table with status badges, export availability, download links for ALTO/PAGE XML - Providers: register new providers (ID, name, family, runtime, model), list registered providers, delete Features: - Dark theme UI - Status badges (succeeded/failed/partial_success/running/queued) - Direct download links for ALTO XML, PAGE XML, canonical JSON - Pipeline event log display with step names and durations - Provider CRUD Served at / with static assets at /static. Dockerfile updated to include frontend directory. No build step needed β vanilla HTML/JS. 497 tests still passing. https://claude.ai/code/session_01Cuzvc9Pjfo5u46eT3ta2Cg2ba385f -
Sprint 12: Docker deployment and viewer pipeline integrationβ
ClaudeUnverified signatureDeployment: - Dockerfile: python:3.11-slim, system deps for lxml/Pillow, pip install from pyproject.toml, health check on /health, port 7860 - docker-compose.yml: single service with named volume for data persistence Pipeline integration: - Wired ViewerProjection builder into job service step 12 β the pipeline now produces viewer.json alongside ALTO/PAGE exports. build_projection() called with export eligibility, result persisted via file store The same Dockerfile works for local Docker Compose and HF Docker Spaces. Only STORAGE_ROOT changes (/app/data locally, /data on Spaces). 477 tests still passing. https://claude.ai/code/session_01Cuzvc9Pjfo5u46eT3ta2Cg0b24cca