mulmocast 2.1.1 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -185,10 +185,13 @@ const addTransitionEffects = (ffmpegContext, captionedVideoId, context, transiti
185
185
  // Cannot apply wipe without first frame
186
186
  return prevVideoId;
187
187
  }
188
- // Use xfade offset instead of trimming to avoid framerate issues
189
- // The static frames are created with proper duration, use offset to start transition at the right time
190
- const prevBeatDuration = context.studio.beats[beatIndex - 1].duration ?? 0;
191
- const xfadeOffset = prevBeatDuration - duration;
188
+ // Calculate the actual duration of the static frames
189
+ // The _last frame was generated with the previous beat's actual duration
190
+ const prevStudioBeat = context.studio.beats[beatIndex - 1];
191
+ const prevBeatActualDuration = Math.max(prevStudioBeat.duration + getExtraPadding(context, beatIndex - 1), prevStudioBeat.movieDuration ?? 0);
192
+ // xfade offset must be non-negative and within the first video's duration
193
+ // Start the transition at the end of the first video minus the transition duration
194
+ const xfadeOffset = Math.max(0, prevBeatActualDuration - duration);
192
195
  // Apply xfade with explicit pixel format
193
196
  const xfadeOutputId = `${transitionVideoId}_xfade`;
194
197
  ffmpegContext.filterComplex.push(`[${transitionVideoId}]format=yuv420p[${transitionVideoId}_fmt]`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mulmocast",
3
- "version": "2.1.1",
3
+ "version": "2.1.2",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "main": "lib/index.node.js",
@@ -74,7 +74,7 @@
74
74
  "homepage": "https://github.com/receptron/mulmocast-cli#readme",
75
75
  "dependencies": {
76
76
  "@google-cloud/text-to-speech": "^6.4.0",
77
- "@google/genai": "^1.30.0",
77
+ "@google/genai": "^1.32.0",
78
78
  "@graphai/anthropic_agent": "^2.0.12",
79
79
  "@graphai/browserless_agent": "^2.0.1",
80
80
  "@graphai/gemini_agent": "^2.0.1",
@@ -94,11 +94,11 @@
94
94
  "dotenv": "^17.2.3",
95
95
  "fluent-ffmpeg": "^2.1.3",
96
96
  "graphai": "^2.0.16",
97
- "jsdom": "^27.2.0",
97
+ "jsdom": "^27.3.0",
98
98
  "marked": "^17.0.1",
99
99
  "mulmocast-vision": "^1.0.8",
100
100
  "ora": "^9.0.0",
101
- "puppeteer": "^24.32.0",
101
+ "puppeteer": "^24.32.1",
102
102
  "replicate": "^1.4.0",
103
103
  "yaml": "^2.8.2",
104
104
  "yargs": "^18.0.0",
@@ -117,7 +117,7 @@
117
117
  "prettier": "^3.7.4",
118
118
  "tsx": "^4.21.0",
119
119
  "typescript": "^5.9.3",
120
- "typescript-eslint": "^8.48.1"
120
+ "typescript-eslint": "^8.49.0"
121
121
  },
122
122
  "engines": {
123
123
  "node": ">=20.0.0"