singlecell/jiggle-physics
Add SegFormer body parsing to /jiggle/preprocess
Pose: include foot landmarks (heels + toes) so we can rig feet
Pose: detect 13 landmarks (full body) for the auto-rig
Phase 1: add /jiggle/preprocess endpoint; retire reconstruction.py
Replace SAM2 with geometric ellipses for anatomy regions
SAM2: pick mask by highest IoU within size range, not smallest
Add bbox prompts alongside click points for SAM2
Stringify landmark dict keys before pose response
Fix SAM2 mask selection + pin MediaPipe to keep solutions API
Make SAM2 mask indexing shape-agnostic
Drop reshaped_input_sizes arg from post_process_masks
Fix SAM2 processor 4-level input + adjusted output indexing
Monkey-patch gradio.routes.App.create_app to inject our routes
Own FastAPI app, mount Gradio onto it
Disable Gradio 5 SSR: Node.js layer was intercepting GET requests
Promote /jiggle/* routes ahead of Gradio's catch-all SPA route
Fix ZeroGPU detection: split @spaces.GPU from route decorators
Move all endpoints from /api/ to /jiggle/ prefix; health uses GET
Revert to demo.app approach: gr.mount_gradio_app breaks ZeroGPU
Restructure: FastAPI-first with gr.mount_gradio_app to fix route priority
Rename health endpoint to /api/jiggle-health to avoid HF infrastructure interception
Move ping endpoint to /status to avoid Gradio /api/ namespace entirely
Rename health endpoint to /api/ping to avoid Gradio reserved path
Simplify health endpoint: robust exception handling, os.path cache check
Fix /api/health: POST instead of GET to bypass Gradio SPA catch-all
Enhance /api/health with model warm/cached status
Add per-file download progress + elapsed-time logging to SAM2 init
Add two-photo workflow: MediaPipe pose detection + /api/pose endpoint
Add /api/logs endpoint and per-step print logging for SAM2 progress
Prefix API routes with /api/ to avoid Gradio catch-all interception
Fix: spaces.GPU requires sync def, not async def
Fix: Gradio 5.49.1 SDK (ZeroGPU requires Gradio), no Gradio in requirements
Switch to Docker SDK — clean FastAPI + ZeroGPU, no Gradio conflict
Fix: bump gradio to 5.x for huggingface_hub compatibility
Initial backend
