A live job stuck at 8% with no Comfy prompt was treated as still owning the GPU, so waiting work never started.
Co-authored-by: Cursor <cursoragent@cursor.com>
Audio never called purge, image stills used untagged names, and a locked file could abort the whole host-agent delete.
Co-authored-by: Cursor <cursoragent@cursor.com>
The motion prompt field is what Comfy actually runs. Wrappers are now composed into that string on submit, and shot 1 falls back to it if the separate pre/post fields do not arrive.
Co-authored-by: Cursor <cursoragent@cursor.com>
A finished job no longer closes a draft or jumps the page, and a second extend from the same part saves as p8b instead of another p8.
Co-authored-by: Cursor <cursoragent@cursor.com>
Library items already stored those fields, but Details showed one blob and Use as input left the form's empty pre/post in place.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extensions imported watch helpers from comfyLifecycle after they moved, so npm run build failed and every deploy since this morning rolled back.
Co-authored-by: Cursor <cursoragent@cursor.com>
Queued generate/extend no longer hijacks the live progress bar, and Generate Extension stays clickable so another extension can wait in the job queue.
Co-authored-by: Cursor <cursoragent@cursor.com>
The box was disabled for last-frame extract and a stuck videoBusy flag, so typing died after a finished job.
Co-authored-by: Cursor <cursoragent@cursor.com>
The right column was stuck to the viewport, so the list only had a sliver left. Both columns now stretch together and the library scrolls after that.
Co-authored-by: Cursor <cursoragent@cursor.com>
With no clip loaded, the output frame no longer reserves a full video aspect, so the library list can scroll more than one card.
Co-authored-by: Cursor <cursoragent@cursor.com>
The info popover was clipped to the card, so the prompt sat inside the thumbnail frame instead of over the page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Saving the MP4 used to freeze Node, which made xAIGen unreachable and left the player empty even though the library already had the video.
Co-authored-by: Cursor <cursoragent@cursor.com>
The pre/prompt/post split renamed the variable but one console.info still used the old name, which crashed POST /api/generate on xAIGen.
Co-authored-by: Cursor <cursoragent@cursor.com>
The 401 was the session wall, not a missing token. The ingest route now uses the shared Bearer secret, and both apps default that secret so Coolify vars are optional.
Co-authored-by: Cursor <cursoragent@cursor.com>
A URL in BACKUP_INGEST_TOKEN was treated as a missing token. Errors now say to put the URL on AIGen and the same secret on both apps.
Co-authored-by: Cursor <cursoragent@cursor.com>
Drop the how-to copy under duration and CFG, keep only the CFG default, and label megapixels so that wheel sits on the same row as steps.
Co-authored-by: Cursor <cursoragent@cursor.com>
The two-column library cap used overflow hidden, so the extend form was clipped with no way to reach Generate.
Co-authored-by: Cursor <cursoragent@cursor.com>
Duration now matches CFG as one wheel; tap the digits to type a length. Touch drags move at a quarter of the desktop rate.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep wrappers off the library mid-prompt so Use as input and Extend restore the same split, send stills to xAIGen as hidden inputs, and stop the two-column library from growing with the list.
Co-authored-by: Cursor <cursoragent@cursor.com>
Idle-stop was leaving /status claiming Comfy was healthy, so the studio skipped start and failed on a dead 8198 instead of waking the GPU.
Co-authored-by: Cursor <cursoragent@cursor.com>
The site poke hit /start while the agent waited on a dead 8188 probe, so wake looked down even with the host agent running.
Co-authored-by: Cursor <cursoragent@cursor.com>