diff --git a/services/web-ui/public/data.jsx b/services/web-ui/public/data.jsx index cd5be25..1888b14 100644 --- a/services/web-ui/public/data.jsx +++ b/services/web-ui/public/data.jsx @@ -28,12 +28,19 @@ window.ZAMPP_API_PREFIX = API; // single source of truth (#115) // The panel is now a UXP plugin (.ccx), replacing the legacy CEP/ZXP panel. // Each entry carries a `ccx` URL; the older `zxp`/`installer` fields are gone. window.PREMIERE_RELEASES = [ + { + version: '2.2.3', + ccx: '/downloads/dragonflight-mam-2.2.3.ccx', + installer: null, + notes: 'Fix: streaming write for large imports (no more truncated files). UXP plugin: one-click Export Timeline, library + conform + auto-relink, growing-file mount.', + latest: true, + }, { version: '2.2.2', ccx: '/downloads/dragonflight-mam-2.2.2.ccx', installer: null, notes: 'UXP plugin: one-click Export Timeline, library + conform + auto-relink, growing-file mount, runtime version chip. Replaces the legacy CEP/ZXP panel.', - latest: true, + latest: false, }, ]; window.PREMIERE_LATEST = window.PREMIERE_RELEASES.find(r => r.latest) || window.PREMIERE_RELEASES[0]; diff --git a/services/web-ui/public/downloads/dragonflight-mam-2.2.3.ccx b/services/web-ui/public/downloads/dragonflight-mam-2.2.3.ccx new file mode 100644 index 0000000..8c3c548 Binary files /dev/null and b/services/web-ui/public/downloads/dragonflight-mam-2.2.3.ccx differ diff --git a/services/worker/src/workers/proxy.js b/services/worker/src/workers/proxy.js index de2711f..c5e51a9 100644 --- a/services/worker/src/workers/proxy.js +++ b/services/worker/src/workers/proxy.js @@ -200,6 +200,7 @@ export const proxyWorker = async (job) => { // Update asset record — store extracted metadata + proxy key // Use COALESCE so we never overwrite fields the capture service already set + // EXCEPT duration_ms: always trust ffprobe over capture's wall-clock estimate await job.updateProgress(90); await query( `UPDATE assets @@ -207,7 +208,7 @@ export const proxyWorker = async (job) => { fps = COALESCE($2, fps), codec = COALESCE($3, codec), resolution = COALESCE($4, resolution), - duration_ms = COALESCE($5, duration_ms), + duration_ms = $5, file_size = COALESCE($6, file_size), audio_metadata = COALESCE($8, audio_metadata), updated_at = NOW()