summaryrefslogtreecommitdiff
path: root/apps/web/src/media
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2026-07-26 21:06:33 +0200
committercashmere <cashmere@autistici.org>2026-07-26 21:06:33 +0200
commitfc0a801e8829b623d62137a3f7cbdec38c6d555a (patch)
treeb4c9a0458e92eaf44d3331ce3b0ea3ff906a9d15 /apps/web/src/media
parentcf5e79e919144200294fb9fed22a222592a0aeea (diff)
downloadopencut-fc0a801e8829b623d62137a3f7cbdec38c6d555a.tar.gz
feat: freeze frame at playhead
Enable the timeline toolbar freeze-frame button: capture the composited canvas as PNG, add it as an image media asset, split the video element at the playhead, shift the right part by the freeze duration, and insert a 3-second image element in the gap. Adds RendererManager.captureFrame(), reused by createSnapshot(). Also adds the Nix devshell (flake.nix/flake.lock: bun + nodejs) and AGENTS.md repository guidelines.
Diffstat (limited to 'apps/web/src/media')
-rw-r--r--apps/web/src/media/processing.ts2
1 files changed, 1 insertions, 1 deletions
diff --git a/apps/web/src/media/processing.ts b/apps/web/src/media/processing.ts
index 34ccadbc..21d4f87c 100644
--- a/apps/web/src/media/processing.ts
+++ b/apps/web/src/media/processing.ts
@@ -39,7 +39,7 @@ const getStorageLimitDescription = ({
})} is safely available in browser storage.`;
};
-async function generateImageThumbnail({
+export async function generateImageThumbnail({
imageFile,
}: {
imageFile: File;