fluncle 0.79.0 → 0.81.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.
Files changed (2) hide show
  1. package/bin/fluncle.mjs +27 -8
  2. package/package.json +1 -1
package/bin/fluncle.mjs CHANGED
@@ -558,7 +558,7 @@ function parseVersion(version) {
558
558
  var currentVersion;
559
559
  var init_version = __esm(() => {
560
560
  init_output();
561
- currentVersion = "0.79.0".trim() ? "0.79.0".trim() : "0.1.0";
561
+ currentVersion = "0.81.0".trim() ? "0.81.0".trim() : "0.1.0";
562
562
  });
563
563
 
564
564
  // src/update-notifier.ts
@@ -982,6 +982,7 @@ function mapTrack(track) {
982
982
  videoGrain: track.videoGrain,
983
983
  videoModel: track.videoModel,
984
984
  videoModelReasoning: track.videoModelReasoning,
985
+ videoRegister: track.videoRegister,
985
986
  videoUrl: track.videoUrl,
986
987
  videoVehicle: track.videoVehicle
987
988
  };
@@ -1952,6 +1953,7 @@ function mapTrack2(track) {
1952
1953
  videoGrain: track.videoGrain,
1953
1954
  videoModel: track.videoModel,
1954
1955
  videoModelReasoning: track.videoModelReasoning,
1956
+ videoRegister: track.videoRegister,
1955
1957
  videoUrl: track.videoUrl,
1956
1958
  videoVehicle: track.videoVehicle
1957
1959
  };
@@ -2464,7 +2466,7 @@ function parseVersion2(version) {
2464
2466
  var currentVersion2, latestReleaseUrl = "https://api.github.com/repos/mauricekleine/fluncle/releases/latest";
2465
2467
  var init_version2 = __esm(() => {
2466
2468
  init_output();
2467
- currentVersion2 = "0.79.0".trim() ? "0.79.0".trim() : "0.1.0";
2469
+ currentVersion2 = "0.81.0".trim() ? "0.81.0".trim() : "0.1.0";
2468
2470
  });
2469
2471
 
2470
2472
  // ../../packages/registry/src/index.ts
@@ -3229,7 +3231,8 @@ async function trackVideoCommand(idOrLogId, files, onProgress) {
3229
3231
  videoModelReasoning,
3230
3232
  ...squared ? { squared: true } : {},
3231
3233
  ...manifest.vehicle ? { videoVehicle: manifest.vehicle } : {},
3232
- ...manifest.grain ? { videoGrain: manifest.grain } : {}
3234
+ ...manifest.grain ? { videoGrain: manifest.grain } : {},
3235
+ ...manifest.register ? { videoRegister: manifest.register } : {}
3233
3236
  });
3234
3237
  return { logId: finalize.logId, ok: true, trackId: finalize.trackId, urls };
3235
3238
  }
@@ -3237,7 +3240,7 @@ async function readManifestFields(renderPath) {
3237
3240
  try {
3238
3241
  const manifest = await Bun.file(renderPath).json();
3239
3242
  const result = {};
3240
- for (const key of ["vehicle", "grain", "model", "reasoning"]) {
3243
+ for (const key of ["vehicle", "grain", "model", "reasoning", "register"]) {
3241
3244
  const value = manifest[key];
3242
3245
  if (typeof value === "string" && value.trim()) {
3243
3246
  result[key] = value.trim().slice(0, 120);
@@ -3335,12 +3338,17 @@ var init_track = __esm(() => {
3335
3338
  VIDEO_FIELDS = [
3336
3339
  { field: "footage", option: "footage" },
3337
3340
  { field: "footage-social", option: "footageSocial" },
3341
+ { field: "footage-notext", option: "footageNotext" },
3342
+ { field: "footage-landscape", option: "footageLandscape" },
3343
+ { field: "footage-landscape-social", option: "footageLandscapeSocial" },
3338
3344
  { field: "poster", option: "poster" },
3339
3345
  { field: "cover", option: "cover" },
3340
3346
  { field: "note", option: "note" },
3341
3347
  { field: "composition", option: "composition" },
3342
3348
  { field: "props", option: "props" },
3343
- { field: "render", option: "render" }
3349
+ { field: "render", option: "render" },
3350
+ { field: "intent", option: "intent" },
3351
+ { field: "metrics", option: "metrics" }
3344
3352
  ];
3345
3353
  });
3346
3354
 
@@ -3476,6 +3484,7 @@ async function vehiclesCommand(limit) {
3476
3484
  artists: track.artists,
3477
3485
  grain: track.videoGrain,
3478
3486
  logId: track.logId,
3487
+ register: track.videoRegister,
3479
3488
  title: track.title,
3480
3489
  vehicle: track.videoVehicle
3481
3490
  }));
@@ -5334,7 +5343,7 @@ function vehicleRows(rows) {
5334
5343
  return Math.max(width, coordinate2(row).length);
5335
5344
  }, 0);
5336
5345
  return rows.map((row) => {
5337
- return `${coordinate2(row).padEnd(coordWidth)} ${foundDate(row.addedAt)} ${row.vehicle ?? COORD_FALLBACK2}`;
5346
+ return `${coordinate2(row).padEnd(coordWidth)} ${foundDate(row.addedAt)} ${row.vehicle ?? COORD_FALLBACK2} · ${row.register ?? COORD_FALLBACK2}`;
5338
5347
  });
5339
5348
  }
5340
5349
  function trackDetailLines(track) {
@@ -7621,7 +7630,7 @@ function addAdminCommands(program2) {
7621
7630
  const { trackUpdateCommand: trackUpdateCommand2 } = await Promise.resolve().then(() => (init_track(), exports_track));
7622
7631
  await runTrackUpdate(trackId, options, trackUpdateCommand2);
7623
7632
  });
7624
- adminTrack.command("video").description("Upload a track's video bundle to R2 and link it").argument("[idOrLogId]").option("--composition <file>", "Composition source file").option("--cover <file>", "Cover image").option("--dir <dir>", "Bundle directory").option("--footage <file>", "Video footage (square crop source)").option("--footage-social <file>", "Portrait social cut (baked text)").option("--json", "Print JSON", false).option("--model <model>", "Authoring AI model (<provider>/<model>)").option("--note <file>", "Note file").option("--poster <file>", "Poster image").option("--props <file>", "Render props JSON").option("--reasoning <level>", "Authoring model reasoning effort (e.g. high)").option("--render <file>", "Render metadata JSON").allowExcessArguments().action(async (idOrLogId, options) => {
7633
+ adminTrack.command("video").description("Upload a track's video bundle to R2 and link it").argument("[idOrLogId]").option("--composition <file>", "Composition source file").option("--cover <file>", "Cover image").option("--dir <dir>", "Bundle directory").option("--footage <file>", "Video footage (square crop source)").option("--footage-landscape <file>", "Clean landscape cut (optional escape hatch)").option("--footage-landscape-social <file>", "Landscape cut with baked text (optional)").option("--footage-notext <file>", "Portrait cut without the type layer (optional)").option("--footage-social <file>", "Portrait social cut (baked text)").option("--intent <file>", "Render-intent JSON (optional)").option("--json", "Print JSON", false).option("--metrics <file>", "Gate metrics JSON (optional)").option("--model <model>", "Authoring AI model (<provider>/<model>)").option("--note <file>", "Note file").option("--poster <file>", "Poster image").option("--props <file>", "Render props JSON").option("--reasoning <level>", "Authoring model reasoning effort (e.g. high)").option("--render <file>", "Render metadata JSON").allowExcessArguments().action(async (idOrLogId, options) => {
7625
7634
  const { trackVideoCommand: trackVideoCommand2 } = await Promise.resolve().then(() => (init_track(), exports_track));
7626
7635
  await runTrackVideo(idOrLogId, options, trackVideoCommand2);
7627
7636
  });
@@ -8058,7 +8067,7 @@ async function runBackfillDiscogs(options, backfillDiscogsCommand2) {
8058
8067
  }
8059
8068
  async function runTrackVideo(idOrLogId, options, trackVideoCommand2) {
8060
8069
  if (!idOrLogId) {
8061
- throw new Error("Missing id. Usage: fluncle admin tracks video <track_id|log_id> (--dir <dir> | --footage <file> [--footage-social <file>] [--poster <file>] [--cover <file>] [--note <file>] [--composition <file>] [--props <file>] [--render <file>])");
8070
+ throw new Error("Missing id. Usage: fluncle admin tracks video <track_id|log_id> (--dir <dir> | --footage <file> [--footage-social <file>] [--footage-notext <file>] [--footage-landscape <file>] [--footage-landscape-social <file>] [--poster <file>] [--cover <file>] [--note <file>] [--composition <file>] [--props <file>] [--render <file>] [--intent <file>] [--metrics <file>])");
8062
8071
  }
8063
8072
  const dir = options.dir ? path2.resolve(process.cwd(), options.dir) : undefined;
8064
8073
  const fromDir = (name) => {
@@ -8078,7 +8087,12 @@ async function runTrackVideo(idOrLogId, options, trackVideoCommand2) {
8078
8087
  composition: resolveFile(options.composition, "composition.tsx"),
8079
8088
  cover: resolveFile(options.cover, "cover.jpg"),
8080
8089
  footage: resolveFile(options.footage, "footage.mp4"),
8090
+ footageLandscape: resolveFile(options.footageLandscape, "footage.landscape.mp4"),
8091
+ footageLandscapeSocial: resolveFile(options.footageLandscapeSocial, "footage.landscape.social.mp4"),
8092
+ footageNotext: resolveFile(options.footageNotext, "footage.notext.mp4"),
8081
8093
  footageSocial: resolveFile(options.footageSocial, "footage.social.mp4"),
8094
+ intent: resolveFile(options.intent, "intent.json"),
8095
+ metrics: resolveFile(options.metrics, "metrics.json"),
8082
8096
  model: options.model,
8083
8097
  note: resolveFile(options.note, "note.txt"),
8084
8098
  poster: resolveFile(options.poster, "poster.jpg"),
@@ -8888,10 +8902,15 @@ var stringOptions = new Set([
8888
8902
  "--features",
8889
8903
  "--file",
8890
8904
  "--footage",
8905
+ "--footage-landscape",
8906
+ "--footage-landscape-social",
8907
+ "--footage-notext",
8891
8908
  "--footage-social",
8892
8909
  "--from",
8910
+ "--intent",
8893
8911
  "--key",
8894
8912
  "--limit",
8913
+ "--metrics",
8895
8914
  "--mime",
8896
8915
  "--note",
8897
8916
  "--platform",
package/package.json CHANGED
@@ -31,5 +31,5 @@
31
31
  "url": "git+https://github.com/mauricekleine/fluncle.git"
32
32
  },
33
33
  "type": "module",
34
- "version": "0.79.0"
34
+ "version": "0.81.0"
35
35
  }