Prevent worker/web clobbering of meta variants via flock and merge-by-id,
make filter timeouts thread-local, harden job-id/stem sanitization, migrate
TemplateResponse API, and remove the compare-bg experiment.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add PREPROCESS_TIMEOUT config (default 120s). Expose read_meta() and use
one read per job in list_jobs() instead of read_status + read_manifest.
Co-authored-by: Cursor <cursoragent@cursor.com>
Centralize read_json/write_json_atomic used by pipeline meta I/O and
worker processed.json bookkeeping. Preserves corrupt-file warning in
load_processed().
Co-authored-by: Cursor <cursoragent@cursor.com>
Ruff auto-fixes import order and line wrapping. Gitignore covers
build artifacts and coverage output from future test runs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pin Python 3.11 for parity with the Docker image. Dev deps live in
requirements-dev.txt for local lint/test without rembg/onnxruntime.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop per-job subdirs for phone-friendly Syncthing layout with
stem-suffixed filenames; keep web state in meta/.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove SFTPGo; mount event data from the Syncthing folder, watch
incoming/, and name variants after the source stem.
Co-authored-by: Cursor <cursoragent@cursor.com>
Capture preferred away/E2E working style: real smoke over fake-done, defined debug-loop limit, wallclock note in handoff.
Co-authored-by: Cursor <cursoragent@cursor.com>