repovid 0.1.0 → 0.1.1

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.
Files changed (2) hide show
  1. package/bin/repovid.mjs +6 -3
  2. package/package.json +1 -1
package/bin/repovid.mjs CHANGED
@@ -85,9 +85,14 @@ async function render() {
85
85
  for (const d of ["videos", "guide/media"]) mkdirSync(join(outDir, d), { recursive: true });
86
86
  // The free selection is remembered, so retrying failed videos one by one keeps all of them eligible.
87
87
  const freeFile = join(outDir, ".free.json");
88
- const freeSelection = existsSync(freeFile) ? JSON.parse(readFileSync(freeFile, "utf8")) : selected.map(v => v.id);
88
+ const stateFile = join(outDir, ".render.json");
89
+ const previous = existsSync(stateFile) ? JSON.parse(readFileSync(stateFile, "utf8")) : [];
90
+ // If nothing has exported yet, the free run hasn't really started, so the choice can still change.
91
+ const remembered = previous.length && existsSync(freeFile) ? JSON.parse(readFileSync(freeFile, "utf8")) : null;
92
+ const freeSelection = remembered ?? selected.map(v => v.id);
89
93
 
90
94
  const grant = await requestExport(plan.mode, plan.videos.length);
95
+ if (grant.plan === "refunded") { console.error("This licence was refunded. Contact repovid.support@gmail.com to buy again."); process.exit(1); }
91
96
  if (grant.plan === "none") { console.error("Your free run is used. Run repovid upgrade to unlock unlimited videos for $5."); process.exit(1); }
92
97
  const outsideFree = grant.plan === "free" && selected.some(v => !freeSelection.includes(v.id));
93
98
  if (grant.plan === "free" && (outsideFree || freeSelection.length > grant.allowed)) {
@@ -102,8 +107,6 @@ async function render() {
102
107
  const wavs = await synthesize([...new Set(videos.flatMap(v => v.scenes.map(s => s.say)))], join(homedir(), ".cache", "repovid", "voice"), console.log);
103
108
  const browser = await launch(plan.testIdAttribute);
104
109
  // Earlier runs count too: retrying one video with --only must not lock the others.
105
- const stateFile = join(outDir, ".render.json");
106
- const previous = existsSync(stateFile) ? JSON.parse(readFileSync(stateFile, "utf8")) : [];
107
110
  const rendered = new Map(previous.filter(r => plan.videos.some(v => v.id === r.id) && existsSync(join(outDir, "videos", `${r.id}.mp4`))).map(r => [r.id, r]));
108
111
  let failed = 0;
109
112
  for (const video of videos) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "repovid",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Turn your web app into narrated demo videos and a guide page, using the coding agent you already have.",
5
5
  "homepage": "https://repovid.vercel.app",
6
6
  "license": "UNLICENSED",