@vosjs/cli 0.52.2 → 0.53.0

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.
package/README.md CHANGED
@@ -303,6 +303,7 @@ vos push bright-loop/config.json --remix-of <id> # create a SEPARATE vos f
303
303
  vos push bright-loop/config.json --claimable # no credential: a 72 h claim link instead (programs only)
304
304
  vos push take --yes --label "first pass" --note "…" # host a take: private vos + version history (the recording uploads once)
305
305
  vos push … --wait # stay until the version's still renders; print absolute still and preview links
306
+ vos push config.json --still 2.5 # a program's cover: doc.json "still", kept by every later push
306
307
  vos delete <vosId|url|dir> [--yes] # take a vos off vos.so, every version; asks, or --yes headless
307
308
  vos pull bright-loop [--since <versionId>] [--check] # what changed on vos.so since your base; syncs config.json (backup kept), or doc.json for a take
308
309
  # --check reports without writing; --since walks from a base you name
@@ -8159,6 +8159,14 @@ async function cmdPushProgram(argv) {
8159
8159
  const state = readSyncState(dir);
8160
8160
  const vosFlag = strFlag(flags, "vos");
8161
8161
  const explicitVosId = vosFlag ? parseVosId(vosFlag) : null;
8162
+ const stillFlag = strFlag(flags, "still");
8163
+ if (stillFlag !== void 0) {
8164
+ const t = Number(stillFlag);
8165
+ if (!Number.isFinite(t) || t < 0)
8166
+ throw new UsageError("--still expects seconds, like --still 2.5");
8167
+ await setProgramStill(dir, t);
8168
+ r.log(`cover: ${t}s (doc.json "still")`);
8169
+ }
8162
8170
  const programDoc = await readProgramDoc(dir, config);
8163
8171
  if (programDoc) {
8164
8172
  const lint = lintDoc(programDoc);
@@ -8383,6 +8391,7 @@ ${landedLines(landed2)}` : "")
8383
8391
  studio: ${studioUrl}
8384
8392
  ` + (landed ? `${landedLines(landed)}
8385
8393
  ` : "") + ` shelf: ${folderRef ? `in ${folderRef}` : `unfiled, at the root of your shelf (file it: vos folder move ${created.id} --to <slug>)`}
8394
+ cover: ${typeof programDoc?.still === "number" ? `${String(programDoc.still)}s` : "the platform picks an early frame; choose one with --still <seconds>"}
8386
8395
  Iterate with: vos push ${source} --vos ${created.id}`
8387
8396
  );
8388
8397
  return EXIT_OK;
@@ -8579,6 +8588,19 @@ async function readProgramDoc(dir, config) {
8579
8588
  const program = raw.program && typeof raw.program === "object" ? raw.program : {};
8580
8589
  return { ...raw, program: { ...program, config } };
8581
8590
  }
8591
+ async function setProgramStill(dir, t) {
8592
+ const docPath = join17(dir, "doc.json");
8593
+ let doc = { program: {}, audio: [] };
8594
+ if (existsSync15(docPath)) {
8595
+ const parsed = JSON.parse(await readFile15(docPath, "utf8"));
8596
+ if (!parsed || typeof parsed !== "object" || "source" in parsed)
8597
+ throw new UsageError(
8598
+ `${docPath} is a take's document; a take's cover is its own "still" field`
8599
+ );
8600
+ doc = parsed;
8601
+ }
8602
+ await writeFile11(docPath, JSON.stringify({ ...doc, still: t }, null, 2) + "\n");
8603
+ }
8582
8604
  async function writeProgramDoc(dir, hosted) {
8583
8605
  const program = hosted.program && typeof hosted.program === "object" ? hosted.program : {};
8584
8606
  const { config, ...rest } = program;
@@ -10722,7 +10744,7 @@ Platform (vos.so) \u2014 fetch, edit, push, pull, repeat
10722
10744
  vos push <config.json|take> [--vos id] [--title t] [--slug s] [--remix-of id]
10723
10745
  [--desc d] [--tags a,b] [--folder <folderId|slug>]
10724
10746
  [--note n] [--label l] [--base versionId] [--override <id>]... [--yes] [--json]
10725
- [--claimable] [--wait]
10747
+ [--claimable] [--wait] [--still <seconds>]
10726
10748
  a take DIRECTORY (doc.json) pushes recording + doc; a config.json
10727
10749
  pushes the program. No --vos: create a PRIVATE vos; with --vos:
10728
10750
  add a version against the tracked base \u2014 a stale push 409s WITH
@@ -10738,6 +10760,9 @@ Platform (vos.so) \u2014 fetch, edit, push, pull, repeat
10738
10760
  shelf. A document's local sound (doc.json audio keys) uploads
10739
10761
  with the push. --wait stays until the version's still has
10740
10762
  rendered and prints absolute still and preview links.
10763
+ --still <seconds> sets a PROGRAM's cover (doc.json "still", kept
10764
+ by every later push); without it the platform picks an early
10765
+ frame. A take's cover is its doc.json "still".
10741
10766
  vos delete <vosId|watch-url|dir> [--yes] [--json]
10742
10767
  take a vos off vos.so, every version of it, for good. Asks on a
10743
10768
  terminal; headless it needs --yes. A dir that tracked it is
@@ -12363,7 +12388,7 @@ async function cmdPush3(argv) {
12363
12388
  const refusal = takePushRefusal({
12364
12389
  vos: strFlag(flags, "vos"),
12365
12390
  trackedVosId: readSyncState(resolve10(dir))?.vosId ?? null,
12366
- programOnly: ["slug", "desc", "tags", "base", "remix-of"].filter(
12391
+ programOnly: ["slug", "desc", "tags", "base", "remix-of", "still"].filter(
12367
12392
  (name) => hasFlag(flags, name)
12368
12393
  )
12369
12394
  });
@@ -12715,4 +12740,4 @@ export {
12715
12740
  verbHelp,
12716
12741
  run
12717
12742
  };
12718
- //# sourceMappingURL=chunk-4Z6GQCXQ.js.map
12743
+ //# sourceMappingURL=chunk-WGBRKQPB.js.map