fix: address final review findings (clip reset, codecs, paths, timeline)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-21 11:25:28 -04:00
parent 169d3d5592
commit 149ce3da21
9 changed files with 70 additions and 5 deletions

View File

@@ -31,7 +31,9 @@
$effect(() => {
if (session.duration > 0) {
timelineState.visibleStart = 0;
timelineState.visibleEnd = session.duration;
timelineState.zoom = 1;
}
});

View File

@@ -8,6 +8,7 @@ import {
extractWaveform,
} from '$lib/bindings/mediaAnalysis';
import { clearThumbnailCache } from '$lib/timeline/thumbnailRenderer';
import { clearAll as clearAllClips } from '$lib/stores/clips.svelte';
export type SessionStatus = 'idle' | 'resolving' | 'ready' | 'error';
export type DownloadStatus = 'idle' | 'downloading' | 'complete' | 'failed';
@@ -32,6 +33,7 @@ export const session = $state({
});
export function setMetadata(meta: VideoMetadata) {
clearAllClips();
session.url = meta.url;
session.title = meta.title;
session.duration = meta.duration;
@@ -73,6 +75,7 @@ export function setError(msg: string) {
}
export function setResolving() {
clearAllClips();
clearMediaFields();
session.status = 'resolving';
session.error = null;

View File

@@ -17,6 +17,13 @@ export function computeZoom(
duration: number
): { visibleStart: number; visibleEnd: number; zoom: number } {
const currentRange = state.visibleEnd - state.visibleStart;
if (currentRange <= 0) {
return {
visibleStart: state.visibleStart,
visibleEnd: state.visibleEnd,
zoom: state.zoom,
};
}
const newRange = currentRange / factor;
const clampedRange = Math.max(MIN_VISIBLE_RANGE, Math.min(newRange, duration));

View File

@@ -44,6 +44,13 @@ export function jumpKeyframe(direction: 1 | -1) {
}
}
export function resetShuttleRate() {
const videoEl = document.querySelector('video');
if (videoEl) {
videoEl.playbackRate = 1;
}
}
export function adjustShuttle(dir: 1 | -1, shuttleRate: number): number {
const videoEl = document.querySelector('video');
if (!videoEl) return shuttleRate;