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.
package/editor-dist/index.html
CHANGED
|
@@ -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-
|
|
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.
|
|
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.
|
|
40
|
-
"@ossclip/renderer": "0.1.
|
|
41
|
-
"@ossclip/scenes": "0.1.
|
|
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
|
-
|
|
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
|