@kvman/kvvideo 0.0.0-stage → 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 (345) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -2
  3. package/dist/api.d.ts +105 -0
  4. package/dist/api.d.ts.map +1 -0
  5. package/dist/api.js +2 -0
  6. package/dist/api.js.map +1 -0
  7. package/dist/brand/brand.d.ts +17 -0
  8. package/dist/brand/brand.d.ts.map +1 -0
  9. package/dist/brand/brand.js +44 -0
  10. package/dist/brand/brand.js.map +1 -0
  11. package/dist/browser/channels.d.ts +6 -0
  12. package/dist/browser/channels.d.ts.map +1 -0
  13. package/dist/browser/channels.js +5 -0
  14. package/dist/browser/channels.js.map +1 -0
  15. package/dist/browser/launch.d.ts +6 -0
  16. package/dist/browser/launch.d.ts.map +1 -0
  17. package/dist/browser/launch.js +14 -0
  18. package/dist/browser/launch.js.map +1 -0
  19. package/dist/browser/start-browser.d.ts +5 -0
  20. package/dist/browser/start-browser.d.ts.map +1 -0
  21. package/dist/browser/start-browser.js +17 -0
  22. package/dist/browser/start-browser.js.map +1 -0
  23. package/dist/compose/ass-file.d.ts +17 -0
  24. package/dist/compose/ass-file.d.ts.map +1 -0
  25. package/dist/compose/ass-file.js +65 -0
  26. package/dist/compose/ass-file.js.map +1 -0
  27. package/dist/compose/background.d.ts +23 -0
  28. package/dist/compose/background.d.ts.map +1 -0
  29. package/dist/compose/background.js +31 -0
  30. package/dist/compose/background.js.map +1 -0
  31. package/dist/compose/camera.d.ts +32 -0
  32. package/dist/compose/camera.d.ts.map +1 -0
  33. package/dist/compose/camera.js +98 -0
  34. package/dist/compose/camera.js.map +1 -0
  35. package/dist/compose/caption-font.d.ts +8 -0
  36. package/dist/compose/caption-font.d.ts.map +1 -0
  37. package/dist/compose/caption-font.js +24 -0
  38. package/dist/compose/caption-font.js.map +1 -0
  39. package/dist/compose/compose-drawing.d.ts +19 -0
  40. package/dist/compose/compose-drawing.d.ts.map +1 -0
  41. package/dist/compose/compose-drawing.js +38 -0
  42. package/dist/compose/compose-drawing.js.map +1 -0
  43. package/dist/compose/compose-input.d.ts +187 -0
  44. package/dist/compose/compose-input.d.ts.map +1 -0
  45. package/dist/compose/compose-input.js +76 -0
  46. package/dist/compose/compose-input.js.map +1 -0
  47. package/dist/compose/compose-plan.d.ts +36 -0
  48. package/dist/compose/compose-plan.d.ts.map +1 -0
  49. package/dist/compose/compose-plan.js +55 -0
  50. package/dist/compose/compose-plan.js.map +1 -0
  51. package/dist/compose/compose-size.d.ts +50 -0
  52. package/dist/compose/compose-size.d.ts.map +1 -0
  53. package/dist/compose/compose-size.js +72 -0
  54. package/dist/compose/compose-size.js.map +1 -0
  55. package/dist/compose/drawn-images.d.ts +19 -0
  56. package/dist/compose/drawn-images.d.ts.map +1 -0
  57. package/dist/compose/drawn-images.js +75 -0
  58. package/dist/compose/drawn-images.js.map +1 -0
  59. package/dist/compose/final-pass.d.ts +34 -0
  60. package/dist/compose/final-pass.d.ts.map +1 -0
  61. package/dist/compose/final-pass.js +106 -0
  62. package/dist/compose/final-pass.js.map +1 -0
  63. package/dist/compose/frame-layout.d.ts +30 -0
  64. package/dist/compose/frame-layout.d.ts.map +1 -0
  65. package/dist/compose/frame-layout.js +33 -0
  66. package/dist/compose/frame-layout.js.map +1 -0
  67. package/dist/compose/overlays.d.ts +20 -0
  68. package/dist/compose/overlays.d.ts.map +1 -0
  69. package/dist/compose/overlays.js +30 -0
  70. package/dist/compose/overlays.js.map +1 -0
  71. package/dist/compose/page-again.d.ts +26 -0
  72. package/dist/compose/page-again.d.ts.map +1 -0
  73. package/dist/compose/page-again.js +50 -0
  74. package/dist/compose/page-again.js.map +1 -0
  75. package/dist/compose/player-copies.d.ts +10 -0
  76. package/dist/compose/player-copies.d.ts.map +1 -0
  77. package/dist/compose/player-copies.js +34 -0
  78. package/dist/compose/player-copies.js.map +1 -0
  79. package/dist/compose/register-compose.d.ts +3 -0
  80. package/dist/compose/register-compose.d.ts.map +1 -0
  81. package/dist/compose/register-compose.js +151 -0
  82. package/dist/compose/register-compose.js.map +1 -0
  83. package/dist/compose/render.d.ts +25 -0
  84. package/dist/compose/render.d.ts.map +1 -0
  85. package/dist/compose/render.js +61 -0
  86. package/dist/compose/render.js.map +1 -0
  87. package/dist/compose/scene-args.d.ts +37 -0
  88. package/dist/compose/scene-args.d.ts.map +1 -0
  89. package/dist/compose/scene-args.js +103 -0
  90. package/dist/compose/scene-args.js.map +1 -0
  91. package/dist/compose/scene-look.d.ts +31 -0
  92. package/dist/compose/scene-look.d.ts.map +1 -0
  93. package/dist/compose/scene-look.js +46 -0
  94. package/dist/compose/scene-look.js.map +1 -0
  95. package/dist/compose/scene-plan.d.ts +26 -0
  96. package/dist/compose/scene-plan.d.ts.map +1 -0
  97. package/dist/compose/scene-plan.js +34 -0
  98. package/dist/compose/scene-plan.js.map +1 -0
  99. package/dist/compose/sound-effects.d.ts +23 -0
  100. package/dist/compose/sound-effects.d.ts.map +1 -0
  101. package/dist/compose/sound-effects.js +40 -0
  102. package/dist/compose/sound-effects.js.map +1 -0
  103. package/dist/compose/srt.d.ts +3 -0
  104. package/dist/compose/srt.d.ts.map +1 -0
  105. package/dist/compose/srt.js +10 -0
  106. package/dist/compose/srt.js.map +1 -0
  107. package/dist/compose/transitions.d.ts +16 -0
  108. package/dist/compose/transitions.d.ts.map +1 -0
  109. package/dist/compose/transitions.js +38 -0
  110. package/dist/compose/transitions.js.map +1 -0
  111. package/dist/connector.d.ts +132 -0
  112. package/dist/connector.d.ts.map +1 -0
  113. package/dist/connector.js +63 -0
  114. package/dist/connector.js.map +1 -0
  115. package/dist/files/answer-path.d.ts +3 -0
  116. package/dist/files/answer-path.d.ts.map +1 -0
  117. package/dist/files/answer-path.js +6 -0
  118. package/dist/files/answer-path.js.map +1 -0
  119. package/dist/files/place-output.d.ts +8 -0
  120. package/dist/files/place-output.d.ts.map +1 -0
  121. package/dist/files/place-output.js +24 -0
  122. package/dist/files/place-output.js.map +1 -0
  123. package/dist/files/sidecar.d.ts +209 -0
  124. package/dist/files/sidecar.d.ts.map +1 -0
  125. package/dist/files/sidecar.js +66 -0
  126. package/dist/files/sidecar.js.map +1 -0
  127. package/dist/files/workspace-paths.d.ts +7 -0
  128. package/dist/files/workspace-paths.d.ts.map +1 -0
  129. package/dist/files/workspace-paths.js +48 -0
  130. package/dist/files/workspace-paths.js.map +1 -0
  131. package/dist/fonts/bundled-fonts.d.ts +10 -0
  132. package/dist/fonts/bundled-fonts.d.ts.map +1 -0
  133. package/dist/fonts/bundled-fonts.js +10 -0
  134. package/dist/fonts/bundled-fonts.js.map +1 -0
  135. package/dist/fonts/font-family.d.ts +2 -0
  136. package/dist/fonts/font-family.d.ts.map +1 -0
  137. package/dist/fonts/font-family.js +43 -0
  138. package/dist/fonts/font-family.js.map +1 -0
  139. package/dist/fonts/register-fonts.d.ts +3 -0
  140. package/dist/fonts/register-fonts.d.ts.map +1 -0
  141. package/dist/fonts/register-fonts.js +12 -0
  142. package/dist/fonts/register-fonts.js.map +1 -0
  143. package/dist/guide.d.ts +3 -0
  144. package/dist/guide.d.ts.map +1 -0
  145. package/dist/guide.js +6 -0
  146. package/dist/guide.js.map +1 -0
  147. package/dist/index.d.ts +5 -0
  148. package/dist/index.d.ts.map +1 -0
  149. package/dist/index.js +30 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/narration/alignment.d.ts +15 -0
  152. package/dist/narration/alignment.d.ts.map +1 -0
  153. package/dist/narration/alignment.js +21 -0
  154. package/dist/narration/alignment.js.map +1 -0
  155. package/dist/narration/captions.d.ts +28 -0
  156. package/dist/narration/captions.d.ts.map +1 -0
  157. package/dist/narration/captions.js +70 -0
  158. package/dist/narration/captions.js.map +1 -0
  159. package/dist/narration/join-args.d.ts +3 -0
  160. package/dist/narration/join-args.d.ts.map +1 -0
  161. package/dist/narration/join-args.js +19 -0
  162. package/dist/narration/join-args.js.map +1 -0
  163. package/dist/narration/narration-cache.d.ts +25 -0
  164. package/dist/narration/narration-cache.d.ts.map +1 -0
  165. package/dist/narration/narration-cache.js +36 -0
  166. package/dist/narration/narration-cache.js.map +1 -0
  167. package/dist/narration/piper.d.ts +4 -0
  168. package/dist/narration/piper.d.ts.map +1 -0
  169. package/dist/narration/piper.js +13 -0
  170. package/dist/narration/piper.js.map +1 -0
  171. package/dist/narration/pronunciations.d.ts +11 -0
  172. package/dist/narration/pronunciations.d.ts.map +1 -0
  173. package/dist/narration/pronunciations.js +40 -0
  174. package/dist/narration/pronunciations.js.map +1 -0
  175. package/dist/narration/register-narration.d.ts +25 -0
  176. package/dist/narration/register-narration.d.ts.map +1 -0
  177. package/dist/narration/register-narration.js +103 -0
  178. package/dist/narration/register-narration.js.map +1 -0
  179. package/dist/narration/register-voice.d.ts +27 -0
  180. package/dist/narration/register-voice.d.ts.map +1 -0
  181. package/dist/narration/register-voice.js +82 -0
  182. package/dist/narration/register-voice.js.map +1 -0
  183. package/dist/narration/sentence-speaker.d.ts +35 -0
  184. package/dist/narration/sentence-speaker.d.ts.map +1 -0
  185. package/dist/narration/sentence-speaker.js +44 -0
  186. package/dist/narration/sentence-speaker.js.map +1 -0
  187. package/dist/narration/speech-services.d.ts +39 -0
  188. package/dist/narration/speech-services.d.ts.map +1 -0
  189. package/dist/narration/speech-services.js +67 -0
  190. package/dist/narration/speech-services.js.map +1 -0
  191. package/dist/narration/voice-args.d.ts +3 -0
  192. package/dist/narration/voice-args.d.ts.map +1 -0
  193. package/dist/narration/voice-args.js +10 -0
  194. package/dist/narration/voice-args.js.map +1 -0
  195. package/dist/problems.d.ts +12 -0
  196. package/dist/problems.d.ts.map +1 -0
  197. package/dist/problems.js +19 -0
  198. package/dist/problems.js.map +1 -0
  199. package/dist/programs/kill-tree.d.ts +16 -0
  200. package/dist/programs/kill-tree.d.ts.map +1 -0
  201. package/dist/programs/kill-tree.js +28 -0
  202. package/dist/programs/kill-tree.js.map +1 -0
  203. package/dist/programs/media-duration.d.ts +22 -0
  204. package/dist/programs/media-duration.d.ts.map +1 -0
  205. package/dist/programs/media-duration.js +23 -0
  206. package/dist/programs/media-duration.js.map +1 -0
  207. package/dist/programs/piped-program.d.ts +7 -0
  208. package/dist/programs/piped-program.d.ts.map +1 -0
  209. package/dist/programs/piped-program.js +45 -0
  210. package/dist/programs/piped-program.js.map +1 -0
  211. package/dist/programs/programs.d.ts +6 -0
  212. package/dist/programs/programs.d.ts.map +1 -0
  213. package/dist/programs/programs.js +6 -0
  214. package/dist/programs/programs.js.map +1 -0
  215. package/dist/programs/run-program.d.ts +23 -0
  216. package/dist/programs/run-program.d.ts.map +1 -0
  217. package/dist/programs/run-program.js +47 -0
  218. package/dist/programs/run-program.js.map +1 -0
  219. package/dist/record/address.d.ts +5 -0
  220. package/dist/record/address.d.ts.map +1 -0
  221. package/dist/record/address.js +26 -0
  222. package/dist/record/address.js.map +1 -0
  223. package/dist/record/cursor-script.d.ts +3 -0
  224. package/dist/record/cursor-script.d.ts.map +1 -0
  225. package/dist/record/cursor-script.js +59 -0
  226. package/dist/record/cursor-script.js.map +1 -0
  227. package/dist/record/encoder-args.d.ts +3 -0
  228. package/dist/record/encoder-args.d.ts.map +1 -0
  229. package/dist/record/encoder-args.js +13 -0
  230. package/dist/record/encoder-args.js.map +1 -0
  231. package/dist/record/frame-writer.d.ts +8 -0
  232. package/dist/record/frame-writer.d.ts.map +1 -0
  233. package/dist/record/frame-writer.js +30 -0
  234. package/dist/record/frame-writer.js.map +1 -0
  235. package/dist/record/motion.d.ts +19 -0
  236. package/dist/record/motion.d.ts.map +1 -0
  237. package/dist/record/motion.js +59 -0
  238. package/dist/record/motion.js.map +1 -0
  239. package/dist/record/narration-cues.d.ts +14 -0
  240. package/dist/record/narration-cues.d.ts.map +1 -0
  241. package/dist/record/narration-cues.js +12 -0
  242. package/dist/record/narration-cues.js.map +1 -0
  243. package/dist/record/own-port.d.ts +2 -0
  244. package/dist/record/own-port.d.ts.map +1 -0
  245. package/dist/record/own-port.js +23 -0
  246. package/dist/record/own-port.js.map +1 -0
  247. package/dist/record/page-ready.d.ts +4 -0
  248. package/dist/record/page-ready.d.ts.map +1 -0
  249. package/dist/record/page-ready.js +15 -0
  250. package/dist/record/page-ready.js.map +1 -0
  251. package/dist/record/page-route.d.ts +13 -0
  252. package/dist/record/page-route.d.ts.map +1 -0
  253. package/dist/record/page-route.js +64 -0
  254. package/dist/record/page-route.js.map +1 -0
  255. package/dist/record/pointer.d.ts +8 -0
  256. package/dist/record/pointer.d.ts.map +1 -0
  257. package/dist/record/pointer.js +24 -0
  258. package/dist/record/pointer.js.map +1 -0
  259. package/dist/record/recorder.d.ts +34 -0
  260. package/dist/record/recorder.d.ts.map +1 -0
  261. package/dist/record/recorder.js +99 -0
  262. package/dist/record/recorder.js.map +1 -0
  263. package/dist/record/register-record.d.ts +3 -0
  264. package/dist/record/register-record.d.ts.map +1 -0
  265. package/dist/record/register-record.js +83 -0
  266. package/dist/record/register-record.js.map +1 -0
  267. package/dist/record/run-step.d.ts +20 -0
  268. package/dist/record/run-step.d.ts.map +1 -0
  269. package/dist/record/run-step.js +69 -0
  270. package/dist/record/run-step.js.map +1 -0
  271. package/dist/record/screencast.d.ts +9 -0
  272. package/dist/record/screencast.d.ts.map +1 -0
  273. package/dist/record/screencast.js +38 -0
  274. package/dist/record/screencast.js.map +1 -0
  275. package/dist/record/steps.d.ts +124 -0
  276. package/dist/record/steps.d.ts.map +1 -0
  277. package/dist/record/steps.js +47 -0
  278. package/dist/record/steps.js.map +1 -0
  279. package/dist/register-with-kvcoder.d.ts +3 -0
  280. package/dist/register-with-kvcoder.d.ts.map +1 -0
  281. package/dist/register-with-kvcoder.js +15 -0
  282. package/dist/register-with-kvcoder.js.map +1 -0
  283. package/dist/review/analysis.d.ts +19 -0
  284. package/dist/review/analysis.d.ts.map +1 -0
  285. package/dist/review/analysis.js +36 -0
  286. package/dist/review/analysis.js.map +1 -0
  287. package/dist/review/frames.d.ts +9 -0
  288. package/dist/review/frames.d.ts.map +1 -0
  289. package/dist/review/frames.js +28 -0
  290. package/dist/review/frames.js.map +1 -0
  291. package/dist/review/register-review.d.ts +24 -0
  292. package/dist/review/register-review.d.ts.map +1 -0
  293. package/dist/review/register-review.js +81 -0
  294. package/dist/review/register-review.js.map +1 -0
  295. package/dist/review/sheet-args.d.ts +11 -0
  296. package/dist/review/sheet-args.d.ts.map +1 -0
  297. package/dist/review/sheet-args.js +24 -0
  298. package/dist/review/sheet-args.js.map +1 -0
  299. package/dist/settings.d.ts +33 -0
  300. package/dist/settings.d.ts.map +1 -0
  301. package/dist/settings.js +29 -0
  302. package/dist/settings.js.map +1 -0
  303. package/dist/setup/browser-readiness.d.ts +14 -0
  304. package/dist/setup/browser-readiness.d.ts.map +1 -0
  305. package/dist/setup/browser-readiness.js +16 -0
  306. package/dist/setup/browser-readiness.js.map +1 -0
  307. package/dist/setup/ffmpeg-readiness.d.ts +19 -0
  308. package/dist/setup/ffmpeg-readiness.d.ts.map +1 -0
  309. package/dist/setup/ffmpeg-readiness.js +33 -0
  310. package/dist/setup/ffmpeg-readiness.js.map +1 -0
  311. package/dist/setup/narration-readiness.d.ts +21 -0
  312. package/dist/setup/narration-readiness.d.ts.map +1 -0
  313. package/dist/setup/narration-readiness.js +18 -0
  314. package/dist/setup/narration-readiness.js.map +1 -0
  315. package/dist/setup/register-setup.d.ts +3 -0
  316. package/dist/setup/register-setup.d.ts.map +1 -0
  317. package/dist/setup/register-setup.js +51 -0
  318. package/dist/setup/register-setup.js.map +1 -0
  319. package/dist/ui.d.ts +3 -0
  320. package/dist/ui.d.ts.map +1 -0
  321. package/dist/ui.js +26 -0
  322. package/dist/ui.js.map +1 -0
  323. package/dist/video-start.d.ts +3 -0
  324. package/dist/video-start.d.ts.map +1 -0
  325. package/dist/video-start.js +28 -0
  326. package/dist/video-start.js.map +1 -0
  327. package/dist/web/components/player.css +2 -0
  328. package/dist/web/components/player.js +55 -0
  329. package/docs/guide.md +28 -0
  330. package/fonts/Amiri-Bold.ttf +0 -0
  331. package/fonts/IBMPlexSansArabic-Bold.ttf +0 -0
  332. package/fonts/Lato-Bold.ttf +0 -0
  333. package/fonts/OFL-Amiri.txt +94 -0
  334. package/fonts/OFL-IBMPlexSansArabic.txt +93 -0
  335. package/fonts/OFL-Lato.txt +93 -0
  336. package/fonts/OFL-Poppins.txt +93 -0
  337. package/fonts/Poppins-Bold.ttf +0 -0
  338. package/locales/ar.json +48 -0
  339. package/locales/en.json +48 -0
  340. package/package.json +73 -3
  341. package/sounds/SOURCES.md +13 -0
  342. package/sounds/click.wav +0 -0
  343. package/sounds/keys.wav +0 -0
  344. package/sounds/pop.wav +0 -0
  345. package/sounds/whoosh.wav +0 -0
@@ -0,0 +1,55 @@
1
+ import { Fragment as e, computed as t, createCommentVNode as n, createElementBlock as r, createElementVNode as i, defineComponent as a, inject as o, openBlock as s, ref as c, renderList as l, toDisplayString as u, unref as d } from "vue";
2
+ //#region web/components/player.vue?vue&type=script&setup=true&lang.ts
3
+ var f = {
4
+ class: "kvvideo-player",
5
+ "data-test": "player"
6
+ }, p = { class: "kvvideo-player-head" }, m = {
7
+ class: "kvvideo-player-file",
8
+ dir: "auto",
9
+ "data-test": "file"
10
+ }, h = {
11
+ class: "kvvideo-player-length",
12
+ dir: "ltr",
13
+ "data-test": "length"
14
+ }, g = ["src", "poster"], _ = {
15
+ key: 1,
16
+ class: "kvvideo-player-unavailable",
17
+ "data-test": "unavailable"
18
+ }, v = {
19
+ key: 2,
20
+ class: "kvvideo-player-others",
21
+ "data-test": "others"
22
+ }, y = /* @__PURE__ */ a({
23
+ __name: "player",
24
+ props: {
25
+ payload: {},
26
+ output: {}
27
+ },
28
+ setup(a) {
29
+ let y = a, b = o("kvman");
30
+ if (b === void 0) throw Error("kvvideo components run inside kvwebui, which provides kvman.");
31
+ let { t: x, workspace: S } = b, C = c(!1), w = t(() => typeof y.output.file == "string" ? y.output.file : ""), T = t(() => typeof y.output.fileId == "string" ? y.output.fileId : void 0), E = (e) => `/api/files/${encodeURIComponent(e)}?workspaceId=${encodeURIComponent(S.value.id)}`, D = t(() => T.value === void 0 ? void 0 : E(T.value)), O = t(() => typeof y.output.posterFileId == "string" ? E(y.output.posterFileId) : void 0), k = t(() => Array.isArray(y.output.others) ? y.output.others.flatMap((e) => typeof e == "object" && e && "file" in e && typeof e.file == "string" ? [e.file] : []) : []), A = t(() => {
32
+ let e = Math.round((typeof y.output.durationMs == "number" ? y.output.durationMs : 0) / 1e3);
33
+ return `${String(Math.floor(e / 60))}:${String(e % 60).padStart(2, "0")}`;
34
+ });
35
+ return (t, a) => (s(), r("figure", f, [
36
+ i("figcaption", p, [i("span", m, u(w.value), 1), i("span", h, u(A.value), 1)]),
37
+ D.value !== void 0 && !C.value ? (s(), r("video", {
38
+ key: 0,
39
+ class: "kvvideo-player-video",
40
+ "data-test": "video",
41
+ src: D.value,
42
+ poster: O.value,
43
+ controls: "",
44
+ preload: "metadata",
45
+ onError: a[0] ||= (e) => C.value = !0
46
+ }, null, 40, g)) : (s(), r("p", _, u(d(x)("kvvideo.player.unavailable", { file: w.value })), 1)),
47
+ k.value.length > 0 ? (s(), r("ul", v, [(s(!0), r(e, null, l(k.value, (e) => (s(), r("li", {
48
+ key: e,
49
+ dir: "auto"
50
+ }, u(e), 1))), 128))])) : n("v-if", !0)
51
+ ]));
52
+ }
53
+ });
54
+ //#endregion
55
+ export { y as default };
package/docs/guide.md ADDED
@@ -0,0 +1,28 @@
1
+ You can make any kind of video with the `video` connector: a lesson, an explainer, a tutorial of an app or a website, a promotion, an announcement, a story, a social clip. A video is composed, not generated: websites and HTML pages you write, recorded in the installed browser; the person's images and clips, and licensed ones from the web; a narration from a voice service or recorded by the person; captions; joined with ffmpeg. Make it polished unless the person asks otherwise: the script's "Look and sound" section lists your choices, and the person's agreement to the script covers them.
2
+
3
+ How a good video is made:
4
+
5
+ - **Story.** Fit the video to its kind, purpose, and audience: a lesson teaches step by step, a promotion leads to its offer, a story has its arc, a social clip hooks in its first seconds. Open with what the viewer gets, keep one idea per scene in a logical order, and end with the next step or a call to action. Show rather than tell: the narration explains what the picture can't, and on-screen text is a few words. No filler, repetition, or long still shots; scenes of 3 to 12 s unless the content needs more.
6
+ - **Look.** Use the workspace's brand (`video brand`). For the first video, take the colours, font, and logo from what the person gave or what the video is about (their app's or site's styles, their logo file), or design them for the video; list them in the script and save them with `video brand-set` once the person agrees. Keep colours, type, and style the same in every scene. Design each HTML scene with a clear hierarchy, alignment, contrast, and space, and keep important things inside the middle 90% of the frame. Draw titles, diagrams, charts, and illustrations as HTML, CSS, and SVG pages, and use the person's images and clips and licensed ones from the web for what drawing can't show; never generate images. Show a recorded website in a `window` frame, a phone site in a `phone` frame.
7
+ - **Motion.** Let `record` and `compose` move the pointer and the camera. In an HTML scene, animate with eased motion (an ease-out entrance of 300 to 600 ms, never linear), one thing moving at a time, and kinetic text only for the key words. Use `crossfade` between scenes, `slide` for a step forward in a sequence, and `fade-black` before the ending.
8
+ - **Text.** Short, correctly spelled, readable on its background, and in the video's language. Arabic text reads right to left in an Arabic font, with `dir="auto"` on every text element of an HTML scene.
9
+ - **Sound.** Narration in a clear, natural voice whose `tone` and `speed` fit the purpose; names said right through the pronunciation list (`kvvideo.narration.pronunciations`). Sound effects stay on unless the person asks otherwise. There is no music.
10
+ - **Accuracy and licences.** Say only what is true: what the person gave, what was recorded, or what a source read through a connector says; no invented numbers, features, quotes, or claims. Blur emails, keys, names, and other personal data on screen. A font, library, image, or clip from the web is used only under a licence that allows it, saved in the video's folder, with its source and licence written in the script and its credit in the end scene when the licence asks for one; pin a library's exact version.
11
+ - **Review.** Before telling the person the video is ready, run `video review` and look at every sheet for typos, cut-off or overlapping text, bad zooms, and empty frames; fix what is wrong, and compose again.
12
+
13
+ The steps:
14
+
15
+ 1. Run `video check`. When something is missing, tell the person in plain words what to install or set, and stop until it is there: ffmpeg (with libass and libfreetype) from https://ffmpeg.org/download.html; Google Chrome or Microsoft Edge; a narration service chosen on kvvideo's extension page, with its key added there as a secret (`elevenlabs.apiKey` or `openai.apiKey`), or Piper (`pip install piper-tts`) with a voice file.
16
+ 2. Gather what the video uses: the person's files, the sources its facts come from, and licensed media from the web. When it shows an app of the workspace, start the app in the background with `shell` and use its local address.
17
+ 3. Write the script as a Markdown artifact: a "Look and sound" section (the shapes, the brand, the framing, the caption style, the transitions, the sound effects, and the voice: generated, with its service, tone, and speed, or recorded by the person, with what the examples cost), then one section per scene with its narration and what is on screen, then the media from the web with their sources and licences. Have the person agree to it before anything is narrated, since narration with ElevenLabs or OpenAI costs money.
18
+ 4. For each scene, make the narration first: `narrate`; or, for the person's own voice, `narrate` each sentence as an example, `ask record` with one card per scene (each sentence a line, with the words to stress and where to pause), and `voice` with the takes it answers.
19
+ 5. Write each HTML scene, then `record` each website and HTML scene with its `narration`, starting each action at its caption line with `atLine`. An image or a clip goes to `compose` as it is.
20
+ 6. `compose`, then `review`, fix, and compose again. Tell the person where the file is; the chat shows a player.
21
+
22
+ Rules:
23
+
24
+ - A chat without `ask` (Decide for me) can't record the person's voice: use a generated one, and say so in the script.
25
+ - Narrate a sentence again only when it changed; the cache makes an unchanged one free.
26
+ - Put the parts of a video in their own folder, such as `videos/<name>/`, and the video beside it.
27
+ - When the person asks for a font, find it on the web, save its `.ttf` or `.otf` file in the workspace, and name that file.
28
+ - A target in `record` is a Playwright selector: prefer `role=button[name="Save"]` or `text=Save` to CSS classes.
Binary file
Binary file
Binary file
@@ -0,0 +1,94 @@
1
+ Copyright 2010-2022 The Amiri Project Authors (https://github.com/aliftype/amiri).
2
+
3
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
+ This license is copied below, and is also available with a FAQ at:
5
+ https://openfontlicense.org/
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.
94
+
@@ -0,0 +1,93 @@
1
+ Copyright © 2017 IBM Corp. with Reserved Font Name "Plex"
2
+
3
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
+
5
+ This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -0,0 +1,93 @@
1
+ Copyright (c) 2010-2014 by tyPoland Lukasz Dziedzic (team@latofonts.com) with Reserved Font Name "Lato"
2
+
3
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
+ This license is copied below, and is also available with a FAQ at:
5
+ http://scripts.sil.org/OFL
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -0,0 +1,93 @@
1
+ Copyright 2020 The Poppins Project Authors (https://github.com/itfoundry/Poppins)
2
+
3
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
+ This license is copied below, and is also available with a FAQ at:
5
+ http://scripts.sil.org/OFL
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.
Binary file
@@ -0,0 +1,48 @@
1
+ {
2
+ "kvvideo.title": "kvman video",
3
+ "kvvideo.slash.video": "اصنع فيديوهات في هذه المحادثة",
4
+ "kvvideo.slash.video.message": "أريد صنع فيديو.",
5
+ "kvvideo.video.started": "صنع الفيديوهات مفعّل في هذه المحادثة",
6
+ "kvvideo.config.narration": "التعليق الصوتي",
7
+ "kvvideo.config.recording": "التسجيل",
8
+ "kvvideo.config.programs": "البرامج",
9
+ "kvvideo.narration.service.title": "خدمة التعليق الصوتي",
10
+ "kvvideo.narration.service.description": "خدمة تحويل النص إلى كلام التي تقرأ نصوصك. تحتاج ElevenLabs وOpenAI إلى مفتاحهما، يُضاف أدناه سرًّا؛ ويعمل Piper على هذا الجهاز مجانًا.",
11
+ "kvvideo.narration.service.options.elevenlabs": "ElevenLabs (نحو 0.05–0.09 دولار للدقيقة)",
12
+ "kvvideo.narration.service.options.openai": "OpenAI (نحو 0.015 دولار للدقيقة)",
13
+ "kvvideo.narration.service.options.piper": "Piper (مجاني، على هذا الجهاز)",
14
+ "kvvideo.narration.voice.title": "الصوت",
15
+ "kvvideo.narration.voice.description": "معرّف صوت لـ ElevenLabs أو OpenAI، أو مسار ملف ‎.onnx‎ لصوت Piper. الفراغ يستخدم الصوت الافتراضي للخدمة.",
16
+ "kvvideo.narration.model.title": "النموذج",
17
+ "kvvideo.narration.model.description": "نموذج ElevenLabs أو OpenAI الذي يتكلم. الفراغ يستخدم النموذج الافتراضي للخدمة.",
18
+ "kvvideo.browser.title": "المتصفح",
19
+ "kvvideo.browser.description": "المتصفح المثبّت الذي يسجّل الصفحات.",
20
+ "kvvideo.browser.options.auto": "Chrome، وإلا Edge",
21
+ "kvvideo.browser.options.chrome": "Google Chrome",
22
+ "kvvideo.browser.options.msedge": "Microsoft Edge",
23
+ "kvvideo.programs.ffmpeg.title": "ffmpeg",
24
+ "kvvideo.programs.ffmpeg.description": "برنامج ffmpeg الذي يجمع الفيديوهات: اسم في PATH، أو مسار كامل.",
25
+ "kvvideo.programs.ffprobe.title": "ffprobe",
26
+ "kvvideo.programs.ffprobe.description": "برنامج ffprobe الذي يقيس الفيديو والصوت: اسم في PATH، أو مسار كامل.",
27
+ "kvvideo.programs.piper.title": "Piper",
28
+ "kvvideo.programs.piper.description": "برنامج Piper الذي يعلّق صوتيًا على هذا الجهاز: اسم في PATH، أو مسار كامل.",
29
+ "kvvideo.errors.PROGRAM_MISSING": "تعذّر تشغيل {program}. ثبّته، أو حدّد مكانه في إعدادات kvvideo.",
30
+ "kvvideo.errors.BROWSER_MISSING": "تعذّر تشغيل أي متصفح مثبّت. ثبّت Google Chrome أو Microsoft Edge.",
31
+ "kvvideo.errors.STEP_FAILED": "فشلت الخطوة {step} من التسجيل: {reason}",
32
+ "kvvideo.errors.NARRATION_NOT_SET": "التعليق الصوتي غير مُعدّ: اختره في إعدادات kvvideo ({setting}).",
33
+ "kvvideo.errors.NARRATION_KEY_MISSING": "مفتاح {service} مفقود: أضف السر {secret} في صفحة إضافة kvvideo.",
34
+ "kvvideo.errors.NARRATION_FAILED": "تعذّر على {service} التعليق الصوتي: {reason}",
35
+ "kvvideo.errors.RENDER_FAILED": "تعذّر على ffmpeg صنع الفيديو: {reason}",
36
+ "kvvideo.player.unavailable": "لا يمكن تشغيل هذا الفيديو هنا. افتح {file} في مساحة العمل.",
37
+ "kvvideo.progress.step": "تسجيل الخطوة {n} من {of}",
38
+ "kvvideo.narration.pronunciations.title": "النطق",
39
+ "kvvideo.narration.pronunciations.description": "كلمات يُنطق بها الراوي بطريقة مختلفة، في قائمة من { \"word\", \"say\" }: تُقرأ \"kvman\" كـ \"kay-vee-man\". تبقى الكلمة في الترجمة النصية كما كُتبت.",
40
+ "kvvideo.progress.sentence": "قراءة الجملة {n} من {of}",
41
+ "kvvideo.config.brand": "الهوية",
42
+ "kvvideo.brand.title": "الهوية",
43
+ "kvvideo.brand.description": "شعار فيديوهات مساحة العمل هذه وألوانها وخطها، بالصيغة { \"logo\", \"colors\": { \"primary\", \"background\", \"text\" }, \"font\" }. يقترحها الوكيل في نص الفيديو ويحفظها حين توافق.",
44
+ "kvvideo.progress.scene": "المشهد {n} من {of}",
45
+ "kvvideo.progress.final": "المرحلة الأخيرة، {percent}%",
46
+ "kvvideo.progress.sheet": "الورقة {n} من {of}",
47
+ "kvvideo.progress.take": "تنقية التسجيل {n} من {of}"
48
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "kvvideo.title": "kvman video",
3
+ "kvvideo.slash.video": "Make videos in this chat",
4
+ "kvvideo.slash.video.message": "I want to make a video.",
5
+ "kvvideo.video.started": "Making videos is on for this chat",
6
+ "kvvideo.config.narration": "Narration",
7
+ "kvvideo.config.recording": "Recording",
8
+ "kvvideo.config.programs": "Programs",
9
+ "kvvideo.narration.service.title": "Narration service",
10
+ "kvvideo.narration.service.description": "The text-to-speech service that reads your scripts. ElevenLabs and OpenAI need their key, added below as a secret; Piper runs on this computer for free.",
11
+ "kvvideo.narration.service.options.elevenlabs": "ElevenLabs (about $0.05–0.09 a minute)",
12
+ "kvvideo.narration.service.options.openai": "OpenAI (about $0.015 a minute)",
13
+ "kvvideo.narration.service.options.piper": "Piper (free, on this computer)",
14
+ "kvvideo.narration.voice.title": "Voice",
15
+ "kvvideo.narration.voice.description": "A voice id for ElevenLabs or OpenAI, or the path of a Piper voice's .onnx file. Empty uses the service's default voice.",
16
+ "kvvideo.narration.model.title": "Model",
17
+ "kvvideo.narration.model.description": "The ElevenLabs or OpenAI model that speaks. Empty uses the service's default.",
18
+ "kvvideo.browser.title": "Browser",
19
+ "kvvideo.browser.description": "The installed browser that records pages.",
20
+ "kvvideo.browser.options.auto": "Chrome, else Edge",
21
+ "kvvideo.browser.options.chrome": "Google Chrome",
22
+ "kvvideo.browser.options.msedge": "Microsoft Edge",
23
+ "kvvideo.programs.ffmpeg.title": "ffmpeg",
24
+ "kvvideo.programs.ffmpeg.description": "The ffmpeg program that joins videos: a name on the PATH, or a full path.",
25
+ "kvvideo.programs.ffprobe.title": "ffprobe",
26
+ "kvvideo.programs.ffprobe.description": "The ffprobe program that measures videos and audio: a name on the PATH, or a full path.",
27
+ "kvvideo.programs.piper.title": "Piper",
28
+ "kvvideo.programs.piper.description": "The Piper program that narrates on this computer: a name on the PATH, or a full path.",
29
+ "kvvideo.errors.PROGRAM_MISSING": "{program} can't be started. Install it, or set where it is in kvvideo's configuration.",
30
+ "kvvideo.errors.BROWSER_MISSING": "No installed browser could start. Install Google Chrome or Microsoft Edge.",
31
+ "kvvideo.errors.STEP_FAILED": "Step {step} of the recording failed: {reason}",
32
+ "kvvideo.errors.NARRATION_NOT_SET": "Narration isn't set up: choose it in kvvideo's configuration ({setting}).",
33
+ "kvvideo.errors.NARRATION_KEY_MISSING": "The {service} key is missing: add the secret {secret} on kvvideo's extension page.",
34
+ "kvvideo.errors.NARRATION_FAILED": "{service} couldn't narrate: {reason}",
35
+ "kvvideo.errors.RENDER_FAILED": "ffmpeg couldn't make the video: {reason}",
36
+ "kvvideo.player.unavailable": "This video can't play here. Open {file} in the workspace.",
37
+ "kvvideo.progress.step": "Recording step {n} of {of}",
38
+ "kvvideo.narration.pronunciations.title": "Pronunciations",
39
+ "kvvideo.narration.pronunciations.description": "Words the narration says differently, as a list of { \"word\", \"say\" }: \"kvman\" said as \"kay-vee-man\". The captions keep the word as written.",
40
+ "kvvideo.progress.sentence": "Narrating sentence {n} of {of}",
41
+ "kvvideo.config.brand": "Brand",
42
+ "kvvideo.brand.title": "Brand",
43
+ "kvvideo.brand.description": "The logo, colours, and font of this workspace's videos, as { \"logo\", \"colors\": { \"primary\", \"background\", \"text\" }, \"font\" }. The agent proposes it in a video's script and saves it once you agree.",
44
+ "kvvideo.progress.scene": "Scene {n} of {of}",
45
+ "kvvideo.progress.final": "Final pass, {percent}%",
46
+ "kvvideo.progress.sheet": "Sheet {n} of {of}",
47
+ "kvvideo.progress.take": "Cleaning take {n} of {of}"
48
+ }
package/package.json CHANGED
@@ -1,6 +1,76 @@
1
1
  {
2
2
  "name": "@kvman/kvvideo",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.1.1",
4
+ "description": "kvvideo: the kvcoder extension that makes any kind of video, from websites and pages recorded in the browser, narrated, and captioned.",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/ibndeif/kvman.git",
9
+ "directory": "extensions/kvvideo"
10
+ },
11
+ "homepage": "https://github.com/ibndeif/kvman#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/ibndeif/kvman/issues"
14
+ },
15
+ "type": "module",
16
+ "main": "dist/index.js",
17
+ "exports": {
18
+ ".": {
19
+ "@kvman/source": "./src/index.ts",
20
+ "types": "./dist/index.d.ts",
21
+ "default": "./dist/index.js"
22
+ },
23
+ "./package.json": "./package.json"
24
+ },
25
+ "files": [
26
+ "dist",
27
+ "docs",
28
+ "fonts",
29
+ "locales",
30
+ "sounds"
31
+ ],
32
+ "peerDependencies": {
33
+ "@kvman/sdk": "^0.1.5"
34
+ },
35
+ "dependencies": {
36
+ "playwright-core": "1.63.0",
37
+ "vue": "3.5.43"
38
+ },
39
+ "devDependencies": {
40
+ "@kvman/kvai": "0.1.9",
41
+ "@kvman/kvcoder": "0.1.20",
42
+ "@kvman/kvwebui": "0.1.8",
43
+ "@kvman/sdk": "0.1.5",
44
+ "@kvman/testkit": "0.1.10",
45
+ "@vitejs/plugin-vue": "6.0.9",
46
+ "@vue/test-utils": "2.5.1",
47
+ "happy-dom": "20.14.5",
48
+ "vite": "8.3.1",
49
+ "vue-tsc": "3.3.11"
50
+ },
51
+ "kvman": {
52
+ "namespace": "kvvideo",
53
+ "source": "src/index.ts",
54
+ "web": "dist/web",
55
+ "dependencies": {
56
+ "@kvman/kvcoder": "^0.1.2",
57
+ "@kvman/kvwebui": "^0.1.0"
58
+ },
59
+ "indexes": {
60
+ "players": [
61
+ [
62
+ "path"
63
+ ]
64
+ ],
65
+ "narrations": [
66
+ [
67
+ "key"
68
+ ]
69
+ ]
70
+ }
71
+ },
72
+ "scripts": {
73
+ "build": "tsc -p tsconfig.build.json && node web-build.config.ts",
74
+ "typecheck": "tsc -p tsconfig.json && vue-tsc -p tsconfig.web.json"
75
+ }
6
76
  }