ossclip 0.1.6 → 0.1.7

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.
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>ossclip editor</title>
7
- <script type="module" crossorigin src="/assets/index-DZhkQB1i.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-otiVWeTH.js"></script>
8
8
  </head>
9
9
  <body>
10
10
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ossclip",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "Local-first CLI video producer: cuts silence and fillers, word-timed captions, face-aware framing, and LLM-planned code-rendered graphics — transcription and rendering never leave your machine",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -36,9 +36,9 @@
36
36
  "commander": "^12.1.0",
37
37
  "tsx": "^4.19.0",
38
38
  "zod": "^3.25.76",
39
- "@ossclip/core": "0.1.6",
40
- "@ossclip/renderer": "0.1.6",
41
- "@ossclip/scenes": "0.1.6"
39
+ "@ossclip/core": "0.1.7",
40
+ "@ossclip/renderer": "0.1.7",
41
+ "@ossclip/scenes": "0.1.7"
42
42
  },
43
43
  "homepage": "https://github.com/AhsanAyaz/ossclip#readme",
44
44
  "bugs": {
package/src/produce.ts CHANGED
@@ -937,7 +937,9 @@ export async function produce(inputArg: string, opts: ProduceOptions): Promise<P
937
937
  const endSec = map.toOutputClamped(r.endSec);
938
938
  return endSec > startSec ? [{ ...r, startSec, endSec }] : [];
939
939
  });
940
- const routed = routeAroundSourceText(assembled, textRegions);
940
+ // The frame matters here: the splits separate by X in 16:9, so routing that
941
+ // assumed portrait decided against geometry that is not what renders (§120).
942
+ const routed = routeAroundSourceText(assembled, textRegions, frame);
941
943
  for (const r of routed.relayouts) {
942
944
  console.log(` ▸ scene ${r.id}: ${r.from} → ${r.to} (source text in the way)`);
943
945
  }
@@ -947,6 +949,18 @@ export async function produce(inputArg: string, opts: ProduceOptions): Promise<P
947
949
  `${(m.y * 100).toFixed(0)}-${((m.y + m.h) * 100).toFixed(0)}%`,
948
950
  );
949
951
  }
952
+ // Name the destination layout and stop there. The target is whichever
953
+ // alternate the component declares that videoObstacleFor clears, and the
954
+ // two answers do not look alike: `blurred-behind` blurs and dims the
955
+ // picture (clause 3), while `graphic-only` hides it outright at opacity 0
956
+ // (clause 1). Three components declare each, so promising a blurred
957
+ // backdrop would have been a lie half the time (§120).
958
+ for (const o of routed.overlaid) {
959
+ console.log(
960
+ ` ▸ scene ${o.id}: ${o.from} → ${o.to} (no room clear of the video — ` +
961
+ `moved to ${o.to})`,
962
+ );
963
+ }
950
964
  for (const s of routed.skipped) console.log(` ⚠ scene ${s.id} skipped: ${s.reason}`);
951
965
 
952
966
  // Source-text routing picks from a component's `altLayouts`, which include