@gentbajko/slopify 3.25.7 → 3.25.8

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.
@@ -0,0 +1,5 @@
1
+ # Slopify 3.25.8
2
+
3
+ Released 17 October 2026.
4
+
5
+ - **Older projects' shorts follow a changed narration.** On a project made before Slopify kept track of each short's render, saving it again after levelling or softening the narration kept the old shorts as if they were current. Their renders now read out of date and are made again on this computer, with nothing paid.
@@ -1,4 +1,10 @@
1
1
  [
2
+ {
3
+ "id": "3.25.8",
4
+ "title": "Slopify 3.25.8",
5
+ "version": "3.25.8",
6
+ "date": "2026-10-17"
7
+ },
2
8
  {
3
9
  "id": "3.25.7",
4
10
  "title": "Slopify 3.25.7",
@@ -216,8 +216,8 @@ function planEdit(base, edit, prepared, inspected, keeping) {
216
216
  const fingerprints = Object.fromEntries(desired.map((row) => [row.key, row.fingerprint]));
217
217
  const outputs = proposedManifest.outputs.map((row) => {
218
218
  const next = desired.find((value) => value.key === row.workKey);
219
- const unchanged = next !== undefined &&
220
- old.find((value) => value.key === row.workKey)?.fingerprint === next.fingerprint;
219
+ const before = old.find((value) => value.key === row.workKey)?.fingerprint;
220
+ const unchanged = next !== undefined && before === next.fingerprint && !staleRender(base, row, before);
221
221
  const state = next === undefined
222
222
  ? row.state
223
223
  : prepared.outputs.includes(row) || (unchanged && row.state === "ready")
@@ -248,6 +248,15 @@ function planEdit(base, edit, prepared, inspected, keeping) {
248
248
  shortMoves: [...moves.entries()],
249
249
  };
250
250
  }
251
+ // A render a version from an older Slopify never recorded, made for another recipe than the
252
+ // one the version asks for: its narration was changed (levelled or softened) since, and saving
253
+ // the version again must not take the old file for the new render. Only renders: they are made
254
+ // on this computer and nothing paid is made from them.
255
+ function staleRender(base, row, before) {
256
+ return ((row.workKey === "export:video" || /^shorts:\d+:render$/.test(row.workKey)) &&
257
+ base.revision.fingerprints[row.workKey] === undefined &&
258
+ row.fingerprint !== before);
259
+ }
251
260
  function normalizeImages(content) {
252
261
  return {
253
262
  ...content,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gentbajko/slopify",
3
- "version": "3.25.7",
3
+ "version": "3.25.8",
4
4
  "description": "Turn a prompt into a finished video, locally, with your own provider keys",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Gent Bajko",