@gentbajko/slopify 3.0.1 → 3.0.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.
@@ -53,7 +53,9 @@ export function speechWords(text, observed = "", aliases = [], formsOf = wordFor
53
53
  }
54
54
  if (words.length === 0)
55
55
  throw new Error(empty);
56
- return words.map(({ text: shown, spoken, forms }) => forms.length > 1 ? { text: shown, spoken, forms } : { text: shown, spoken });
56
+ // An aliased word keeps its forms even when there is one: `respoken` would otherwise read
57
+ // the written text again without the aliases, and "&" alone says nothing.
58
+ return words.map(({ text: shown, spoken, forms, aliased }) => forms.length > 1 || aliased ? { text: shown, spoken, forms } : { text: shown, spoken });
57
59
  }
58
60
  // The form of a word the recording seems to say, else its default.
59
61
  export function respoken(word, observed, formsOf = wordForms) {
@@ -0,0 +1,20 @@
1
+ # Slopify 3.0.2
2
+
3
+ Released 28 September 2026.
4
+
5
+ 3.0.2 fixes a video that stopped at subtitle timing when the text had a lone "&", and makes regenerating images plain: one button remakes them all, and a marked image says so.
6
+
7
+ ## Fixes
8
+
9
+ - A standalone "&" said as "and" through a pronunciation alias no longer stops the video. Subtitle timing failed on it with "Local subtitles currently require an English transcript with spoken words." A project that stopped there carries on with **Try the video again**.
10
+ - Deleting every image and saving says what to do: press Discard changes to get them back, then Regenerate all, or set Images and Video to Off on Inputs. The list above the settings no longer starts each message with an internal field name.
11
+
12
+ ## Regenerating images
13
+
14
+ - The Images stage has **Regenerate all**, beside Download all. It opens the settings with every slideshow image marked to be made again, ready to save.
15
+ - In the settings, **Regenerate image N** now shows that it worked: the image says it is made again after you press Save changes, and the button becomes **Keep image N** to take the mark off.
16
+ - Marked and outdated images are made again when you remake them: press the Remake button on the project page once the run has nothing else waiting, or Ctrl+K → Remake everything outdated.
17
+
18
+ ## Upgrading from 3.0.1
19
+
20
+ - **Nothing becomes outdated.** Projects keep every file and fingerprint.
@@ -1,4 +1,10 @@
1
1
  [
2
+ {
3
+ "id": "3.0.2",
4
+ "title": "Slopify 3.0.2",
5
+ "version": "3.0.2",
6
+ "date": "2026-09-28"
7
+ },
2
8
  {
3
9
  "id": "3.0.1",
4
10
  "title": "Slopify 3.0.1",
@@ -194,7 +194,7 @@ export function validateRevisionEdit(config, content) {
194
194
  if (config.sources.images !== "off" && content.imageOrder.length === 0)
195
195
  fields.push({
196
196
  field: "content.imageOrder",
197
- message: "Keep at least one image, or turn Images and Video off.",
197
+ message: "Every image is deleted, so the video has nothing to show. Press Discard changes to get them back, then press Regenerate all on the Images stage to make them again. To make the project without pictures, set Images and Video to Off on Inputs instead.",
198
198
  });
199
199
  if (config.sources.images === "off" && config.sources.video !== "off")
200
200
  fields.push({ field: "sources.video", message: "Turn Video off when Images is off." });