Commit History

  1. fix(analyze): migrate /export/{fmt}, /image/stream⁠

    eaa6846
  2. fix(analyze): migrate /segment, add its missing content-type check⁠

    348cbba
  3. fix(analyze): migrate /batch onto _prepare_image_bytes() per file⁠

    c89e868
  4. fix(analyze): migrate /platform, /c2pa with correct_exif=False⁠

    c559bab
  5. fix(analyze): migrate /image/heatmap, /attribution, /robustness⁠

    600f3fc
  6. fix(analyze): add shared prepare_upload() pipeline, migrate /image⁠

    f5b299a

  1. refactor(analyze): use shared json_safe.sanitize()⁠

    091223d

  1. fix(analyze): add missing per-file and total size checks to /batch⁠

    f00d03b
  2. fix(analyze): correct /segment's size ceiling and add missing file.close()⁠

    0b8ca8f
  3. fix(analyze): add pre-read Content-Length guard to 7 endpoints missing it⁠

    ee4c4cb
  4. fix(analyze): stop silently recompressing every upload during EXIF orientation correction⁠

    5d0356c

  1. fix(auth): F-5 extension β€” enforce per-method ROLES on analyze.py⁠

    19ca01f

  1. chore(comments): trim verbose BUG FIX comment in keys.py

    2f5145e
  2. chore(comments): trim verbose BUG FIX comment in cases.py

    8cd3d0e
  3. chore(comments): trim verbose BUG FIX comment in webhooks.py

    22b7be8
  4. chore(comments): trim verbose BUG FIX comment in analyze.py⁠

    33232ce
  5. fix(docs): correct Nash Equilibrium overclaim in feedback.py⁠

    57eb88e
  6. fix(F-18): set MAX_IMAGE_PIXELS at import time, not first function call⁠

    fcba924
  7. fix(F-15): add Content-Length pre-check to upload.py⁠

    c15b427
  8. fix(F-5b): wire cases.py to require_role_for_method⁠

    29ebb5d
  9. fix(F-8, F-27): sanitize report before cache/webhook/audit-log, not after⁠

    90f67ef
  10. fix(F-4c): feedback.py uses shared core.auth dependencies⁠

    47335f3
  11. fix(F-4b): webhooks.py uses shared core.auth.require_admin⁠

    eeba1c1
  12. fix(F-4a): keys.py uses shared core.auth.require_admin⁠

    c27d702
  13. fix(F-1): wire analyze.py router to require_analyst_or_demo⁠

    f11ae00

  1. fix(security): add rate limiting to webhooks.py β€” previously had none at all⁠

    03fe6c8
  2. fix(config): wire RATE_LIMIT_PER_MINUTE as the Limiter's default_limits⁠

    6ac27de
  3. docs(correctness): remove misleading video/PDF support claims from upload endpoint docs⁠

    dd04102
  4. fix(security): require analyst/admin auth on ALL analyze.py and cases.py routes⁠

    6d75824

  1. fix(api): wrap detect_segments in try/except β€” closes CodeQL #24⁠

    49b98d7

  1. fix: preserve JPEG format across EXIF transpose; rate-limit /segment; fix CodeQL CWE-209 (audit #7)

    2bd3ac0

  1. fix: circular import β€” revert analyze.py limiter to standalone instance⁠

    0b827d2
  2. fix: EXIF orientation, HEIC allowed, quality confidence cap, extension validation⁠

    686a111

  1. fix: methods_used fallback, HEIC extensions, CORS, Content-Length pre-check⁠

    9ad719d

  1. feat: Nash Equilibrium adaptive detection feedback system⁠

    7b08d7d
  2. feat: segment-level AI detection endpoint⁠

    44c8fb8

  1. fix: sanitize numpy types, forensics isolation, admin warning, docstring, remove dotenv⁠

    e038881

  1. feat(feature): webhook delivery system with HMAC signing and retry⁠

    e3bc110

  1. fix(analyze): remove duplicate Allowed: string in 415 error

    11e4535

  1. fix(ci): fix 10 test failures from previous commits⁠

    f7ee01f
  2. security(codeql): fix information exposure #8 #19 #20 #21⁠

    7c38fbd

  1. fix(async): correct asyncio API + latency variable reference⁠

    8dfcd9e
  2. security(codeql): fix information exposure #8 #15 #16 #17 #18⁠

    5dffe70

  1. feat(sse): real-time signal waterfall via Server-Sent Events⁠

    4f7d95f

  1. fix(cleanup): final pyflakes cleanup across 4 files⁠

    b39683a

  1. feat(monitoring): observability, inconclusive verdict, image type⁠

    30be61a
  2. security(codeql): fix all information exposure alerts #8 #14 #15 #16 #17⁠

    fc26634

  1. fix(ci): fix 2 CI failures β€” quality gate wiring and platform rate limit⁠

    a283c42

  1. security(codeql): fix all information exposure alerts #2 #3 #5 #6 #7 #8⁠

    35ad387

  1. security(codeql): fix information exposure and missing workflow permissions⁠

    7fd4cd8