mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-11-04 13:07:11 +00:00
* fix(studio-server): freeze still appears whole, so a slow extraction cannot break its undo The freeze route reserved the still's final name with an empty file before ffmpeg ran. When extraction outlasted the history's quiet time, history committed that empty file as an outside change, and Cmd+Z then restored a 0-byte PNG. ffmpeg now writes under an atomic temp name the history skips, and the still is published with createFileAtomically (EEXIST still refuses a taken name). * fix(core): a direct exclusive write that fails midway leaves no partial file Without hard links, createFileAtomically writes the destination directly. A full disk then left a partial file behind (a corrupt upload or freeze still); it is now removed, and a name another writer holds is never touched. Freeze tests: the slow-extraction test leaves a half-written temp file while history commits, and concurrent extractions meet at a barrier instead of a real timer. * fix(core): a quota reported only at close still removes the partial file * test(core): the direct write closes once and keeps its write error when cleanup fails * test(core): a failed direct write closes its descriptor exactly once * refactor(studio-server): freeze names carry what their comments said