screenkit 0.0.0 → 0.0.2

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 (107) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docker.yml +44 -0
  3. data/.github/workflows/ruby-tests.yml +21 -1
  4. data/Brewfile +5 -0
  5. data/CHANGELOG.md +13 -1
  6. data/CONTRIBUTING.md +25 -0
  7. data/DOCUMENTATION.md +132 -48
  8. data/Dockerfile +107 -0
  9. data/lib/screen_kit.rb +17 -16
  10. data/lib/screenkit/animation_filters.rb +16 -0
  11. data/lib/screenkit/callout/styles/base.rb +12 -0
  12. data/lib/screenkit/callout/styles/file_copy.rb +26 -0
  13. data/lib/screenkit/callout/styles/inline_block.rb +6 -9
  14. data/lib/screenkit/callout/styles/{default.rb → shadow_block.rb} +9 -11
  15. data/lib/screenkit/callout.rb +1 -1
  16. data/lib/screenkit/cli/episode.rb +1 -1
  17. data/lib/screenkit/config/episode.rb +6 -0
  18. data/lib/screenkit/config/project.rb +5 -2
  19. data/lib/screenkit/duration.rb +5 -0
  20. data/lib/screenkit/exporter/demotape.rb +20 -2
  21. data/lib/screenkit/exporter/episode.rb +42 -16
  22. data/lib/screenkit/exporter/intro.rb +4 -4
  23. data/lib/screenkit/exporter/outro.rb +5 -5
  24. data/lib/screenkit/exporter/segment.rb +270 -74
  25. data/lib/screenkit/generators/episode/callouts/001.yml +12 -0
  26. data/lib/screenkit/generators/episode/config.yml.erb +8 -8
  27. data/lib/screenkit/generators/project/screenkit.yml +123 -27
  28. data/lib/screenkit/schema_validator.rb +1 -1
  29. data/lib/screenkit/schemas/callout_styles/file_copy.json +8 -0
  30. data/lib/screenkit/schemas/callout_styles/inline_block.json +20 -0
  31. data/lib/screenkit/schemas/{callouts/default.json → callout_styles/shadow_block.json} +2 -2
  32. data/lib/screenkit/schemas/callouts/inline_block.json +20 -11
  33. data/lib/screenkit/schemas/callouts/shadow_block.json +39 -0
  34. data/lib/screenkit/schemas/episode.json +7 -55
  35. data/lib/screenkit/schemas/project.json +6 -6
  36. data/lib/screenkit/schemas/refs/anchor.json +1 -1
  37. data/lib/screenkit/schemas/refs/animation.json +1 -1
  38. data/lib/screenkit/schemas/refs/background.json +1 -1
  39. data/lib/screenkit/schemas/refs/{callout.json → callout_style.json} +6 -8
  40. data/lib/screenkit/schemas/refs/color.json +1 -1
  41. data/lib/screenkit/schemas/refs/demotape.json +48 -0
  42. data/lib/screenkit/schemas/refs/demotape_themes.json +367 -0
  43. data/lib/screenkit/schemas/refs/directory.json +1 -1
  44. data/lib/screenkit/schemas/refs/duration.json +9 -0
  45. data/lib/screenkit/schemas/refs/intro.json +4 -16
  46. data/lib/screenkit/schemas/refs/logo.json +1 -1
  47. data/lib/screenkit/schemas/refs/outro.json +4 -16
  48. data/lib/screenkit/schemas/refs/position.json +1 -1
  49. data/lib/screenkit/schemas/refs/scenes.json +2 -6
  50. data/lib/screenkit/schemas/refs/size.json +1 -1
  51. data/lib/screenkit/schemas/refs/sound.json +1 -1
  52. data/lib/screenkit/schemas/refs/spacing.json +1 -1
  53. data/lib/screenkit/schemas/refs/text_style.json +1 -1
  54. data/lib/screenkit/schemas/refs/transition.json +2 -6
  55. data/lib/screenkit/schemas/refs/tts.json +4 -41
  56. data/lib/screenkit/schemas/refs/tts_builtin.json +23 -0
  57. data/lib/screenkit/schemas/refs/watermark.json +1 -1
  58. data/lib/screenkit/schemas/tts/elevenlabs.json +11 -2
  59. data/lib/screenkit/schemas/tts/espeak.json +26 -0
  60. data/lib/screenkit/schemas/tts/say.json +12 -2
  61. data/lib/screenkit/shell.rb +6 -0
  62. data/lib/screenkit/time_formatter.rb +14 -0
  63. data/lib/screenkit/tts/base.rb +21 -0
  64. data/lib/screenkit/tts/eleven_labs.rb +8 -9
  65. data/lib/screenkit/tts/espeak.rb +30 -0
  66. data/lib/screenkit/tts/say.rb +5 -6
  67. data/lib/screenkit/utils.rb +6 -0
  68. data/lib/screenkit/version.rb +1 -1
  69. metadata +29 -46
  70. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans-Bold.ttf +0 -0
  71. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans-BoldItalic.ttf +0 -0
  72. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans-ExtraBoldItalic.ttf +0 -0
  73. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans-Italic.ttf +0 -0
  74. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans-Light.ttf +0 -0
  75. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans-LightItalic.ttf +0 -0
  76. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans-Medium.ttf +0 -0
  77. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans-MediumItalic.ttf +0 -0
  78. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans-Regular.ttf +0 -0
  79. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans-SemiBoldItalic.ttf +0 -0
  80. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_Condensed-Bold.ttf +0 -0
  81. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_Condensed-BoldItalic.ttf +0 -0
  82. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_Condensed-ExtraBold.ttf +0 -0
  83. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_Condensed-ExtraBoldItalic.ttf +0 -0
  84. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_Condensed-Italic.ttf +0 -0
  85. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_Condensed-Light.ttf +0 -0
  86. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_Condensed-LightItalic.ttf +0 -0
  87. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_Condensed-Medium.ttf +0 -0
  88. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_Condensed-MediumItalic.ttf +0 -0
  89. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_Condensed-Regular.ttf +0 -0
  90. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_Condensed-SemiBold.ttf +0 -0
  91. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_Condensed-SemiBoldItalic.ttf +0 -0
  92. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_SemiCondensed-Bold.ttf +0 -0
  93. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_SemiCondensed-BoldItalic.ttf +0 -0
  94. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_SemiCondensed-ExtraBold.ttf +0 -0
  95. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_SemiCondensed-ExtraBoldItalic.ttf +0 -0
  96. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_SemiCondensed-Italic.ttf +0 -0
  97. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_SemiCondensed-Light.ttf +0 -0
  98. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_SemiCondensed-LightItalic.ttf +0 -0
  99. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_SemiCondensed-Medium.ttf +0 -0
  100. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_SemiCondensed-MediumItalic.ttf +0 -0
  101. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_SemiCondensed-Regular.ttf +0 -0
  102. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_SemiCondensed-SemiBold.ttf +0 -0
  103. data/lib/screenkit/generators/project/resources/fonts/opensans/OpenSans_SemiCondensed-SemiBoldItalic.ttf +0 -0
  104. /data/lib/screenkit/generators/project/resources/fonts/{opensans → open-sans}/OFL.txt +0 -0
  105. /data/lib/screenkit/generators/project/resources/fonts/{opensans → open-sans}/OpenSans-ExtraBold.ttf +0 -0
  106. /data/lib/screenkit/generators/project/resources/fonts/{opensans → open-sans}/OpenSans-SemiBold.ttf +0 -0
  107. /data/lib/screenkit/generators/project/resources/fonts/{opensans → open-sans}/README.txt +0 -0
@@ -0,0 +1,367 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "$id": "https://screenkit.dev/schemas/refs/demotape_themes.json",
4
+ "title": "Demo Tape themes",
5
+ "type": "string",
6
+ "enum": [
7
+ "3024_day",
8
+ "3024_night",
9
+ "aardvark_blue",
10
+ "abernathy",
11
+ "adventure_time",
12
+ "adventure",
13
+ "afterglow",
14
+ "alabaster",
15
+ "alien_blood",
16
+ "andromeda",
17
+ "apple_classic",
18
+ "apple_system_colors",
19
+ "arcoiris",
20
+ "argonaut",
21
+ "arthur",
22
+ "atelier_sulphurpool",
23
+ "atom_one_light",
24
+ "atom",
25
+ "aurora",
26
+ "ayu_light",
27
+ "ayu_mirage",
28
+ "ayu",
29
+ "banana_blueberry",
30
+ "batman",
31
+ "belafonte_day",
32
+ "belafonte_night",
33
+ "birds_of_paradise",
34
+ "blazer",
35
+ "blue_berry_pie",
36
+ "blue_dolphin",
37
+ "blue_matrix",
38
+ "bluloco_dark",
39
+ "bluloco_light",
40
+ "borland",
41
+ "breeze",
42
+ "bright_lights",
43
+ "broadcast",
44
+ "brogrammer",
45
+ "bubbles",
46
+ "builtin_dark",
47
+ "builtin_light",
48
+ "builtin_pastel_dark",
49
+ "builtin_solarized_dark",
50
+ "builtin_solarized_light",
51
+ "builtin_tango_dark",
52
+ "builtin_tango_light",
53
+ "c64",
54
+ "calamity",
55
+ "catppuccin_frappe",
56
+ "catppuccin_latte",
57
+ "catppuccin_macchiato",
58
+ "catppuccin_mocha",
59
+ "cga",
60
+ "chalk",
61
+ "chalkboard",
62
+ "challenger_deep",
63
+ "chester",
64
+ "ciapre",
65
+ "clrs",
66
+ "cobalt_neon",
67
+ "cobalt2",
68
+ "coffee_theme",
69
+ "contrast_light",
70
+ "coolnight",
71
+ "crayon_pony_fish",
72
+ "crystal_violet",
73
+ "cutie_pro",
74
+ "cyber_cube",
75
+ "cyber_punk2077",
76
+ "cyberdyne",
77
+ "cyberpunk",
78
+ "dark_pastel",
79
+ "dark_plus",
80
+ "darkermatrix",
81
+ "darkmatrix",
82
+ "darkside",
83
+ "dayfox",
84
+ "deep",
85
+ "default_dark",
86
+ "default_light",
87
+ "desert",
88
+ "dimmed_monokai",
89
+ "django_reborn_again",
90
+ "django_smooth",
91
+ "django",
92
+ "doom_one",
93
+ "doom_peacock",
94
+ "dot_gov",
95
+ "dracula_plus",
96
+ "dracula",
97
+ "duckbones",
98
+ "duotone_dark",
99
+ "earthsong",
100
+ "elemental",
101
+ "elementary",
102
+ "encom",
103
+ "espresso_libre",
104
+ "espresso",
105
+ "everblush",
106
+ "fahrenheit",
107
+ "fairyfloss",
108
+ "farmhouse_dark",
109
+ "farmhouse_light",
110
+ "fideloper",
111
+ "firefly_traditional",
112
+ "firefox_dev",
113
+ "firewatch",
114
+ "fish_tank",
115
+ "flat",
116
+ "flatland",
117
+ "flexoki_dark",
118
+ "flexoki_light",
119
+ "floraverse",
120
+ "forest_blue",
121
+ "framer",
122
+ "front_end_delight",
123
+ "fun_forrest",
124
+ "galaxy",
125
+ "galizur",
126
+ "ganyu",
127
+ "git_hub_dark",
128
+ "github",
129
+ "glacier",
130
+ "glorious",
131
+ "grape",
132
+ "grass",
133
+ "grey_green",
134
+ "gruvbox_dark_hard",
135
+ "gruvbox_dark",
136
+ "gruvbox_light",
137
+ "guezwhoz",
138
+ "h4rithd_com",
139
+ "h4rithd",
140
+ "ha_x0_r_blue",
141
+ "ha_x0_r_gr33_n",
142
+ "ha_x0_r_r3_d",
143
+ "hacktober",
144
+ "hardcore",
145
+ "harper",
146
+ "highway",
147
+ "hipster_green",
148
+ "hivacruz",
149
+ "homebrew",
150
+ "hopscotch_256",
151
+ "hopscotch",
152
+ "horizon",
153
+ "hurtado",
154
+ "hybrid",
155
+ "hyper",
156
+ "ic_green_ppl",
157
+ "ic_orange_ppl",
158
+ "iceberg_dark",
159
+ "iceberg_light",
160
+ "idea",
161
+ "idle_toes",
162
+ "ir_black",
163
+ "iterm2_dark_background",
164
+ "iterm2_default",
165
+ "iterm2_light_background",
166
+ "iterm2_pastel_dark_background",
167
+ "iterm2_smoooooth",
168
+ "iterm2_solarized_dark",
169
+ "iterm2_solarized_light",
170
+ "iterm2_tango_dark",
171
+ "iterm2_tango_light",
172
+ "jackie_brown",
173
+ "japanesque",
174
+ "jellybeans",
175
+ "jet_brains_darcula",
176
+ "jubi",
177
+ "juicy_colors",
178
+ "kanagawa",
179
+ "kanagawabones",
180
+ "kibble",
181
+ "kolorit",
182
+ "konsolas",
183
+ "lab_fox",
184
+ "laser",
185
+ "later_this_evening",
186
+ "lavandula",
187
+ "liquid_carbon_transparent_inverse",
188
+ "liquid_carbon_transparent",
189
+ "liquid_carbon",
190
+ "lovelace",
191
+ "man_page",
192
+ "mariana",
193
+ "material_dark",
194
+ "material_darker",
195
+ "material_design_colors",
196
+ "material_ocean",
197
+ "material",
198
+ "mathias",
199
+ "matrix",
200
+ "medallion",
201
+ "mellifluous",
202
+ "midnight_in_mojave",
203
+ "mirage",
204
+ "misterioso",
205
+ "molokai",
206
+ "mona_lisa",
207
+ "monokai_cmder",
208
+ "monokai_pro_filter_octagon",
209
+ "monokai_pro_filter_ristretto",
210
+ "monokai_pro",
211
+ "monokai_remastered",
212
+ "monokai_soda",
213
+ "monokai_vivid",
214
+ "moonlight_ii",
215
+ "n0tch2k",
216
+ "neobones_dark",
217
+ "neobones_light",
218
+ "neon",
219
+ "neopolitan",
220
+ "neutron",
221
+ "night_city",
222
+ "night_lion_v1",
223
+ "night_lion_v2",
224
+ "night_owlish_light",
225
+ "nightfox",
226
+ "niji",
227
+ "nocturnal_winter",
228
+ "nord_light",
229
+ "nord",
230
+ "novel",
231
+ "nvim_dark",
232
+ "nvim_light",
233
+ "obsidian",
234
+ "ocean",
235
+ "oceanic_material",
236
+ "oceanic_next",
237
+ "ollie",
238
+ "one_dark",
239
+ "one_half_dark",
240
+ "one_half_light",
241
+ "one_star",
242
+ "operator_mono_dark",
243
+ "overnight_slumber",
244
+ "pale_night_hc",
245
+ "pandora",
246
+ "paraiso_dark",
247
+ "paul_millr",
248
+ "pencil_dark",
249
+ "pencil_light",
250
+ "peppermint",
251
+ "piatto_light",
252
+ "pnevma",
253
+ "popping_and_locking",
254
+ "primary",
255
+ "primer",
256
+ "pro_light",
257
+ "pro",
258
+ "purple_rain",
259
+ "purplepeter",
260
+ "qb64_super_dark_blue",
261
+ "rapture",
262
+ "raycast_dark",
263
+ "raycast_light",
264
+ "rebecca",
265
+ "red_alert",
266
+ "red_planet",
267
+ "red_sands",
268
+ "relaxed",
269
+ "retro",
270
+ "retrowave",
271
+ "rippedcasts",
272
+ "rose_pine_dawn",
273
+ "rose_pine_moon",
274
+ "rose_pine",
275
+ "rouge_2",
276
+ "royal",
277
+ "ryuuko",
278
+ "sakura",
279
+ "scarlet_protocol",
280
+ "sea_shells",
281
+ "seafoam_pastel",
282
+ "seoulbones_dark",
283
+ "seoulbones_light",
284
+ "serendipity_midnight",
285
+ "serendipity_morning",
286
+ "serendipity_sunset",
287
+ "seti",
288
+ "shades_of_purple",
289
+ "shaman",
290
+ "slate",
291
+ "sleepy_hollow",
292
+ "smyck",
293
+ "snazzy",
294
+ "soft_server",
295
+ "solarized_darcula",
296
+ "solarized_dark_higher_contrast",
297
+ "solarized_dark_patched",
298
+ "sonoran_gothic",
299
+ "sonoran_sunrise",
300
+ "space_gray_eighties_dull",
301
+ "space_gray_eighties",
302
+ "space_gray",
303
+ "spacedust",
304
+ "spiderman",
305
+ "spring",
306
+ "square",
307
+ "sublette",
308
+ "subliminal",
309
+ "sundried",
310
+ "symfonic",
311
+ "synthwave_alpha",
312
+ "synthwave_everything",
313
+ "synthwave",
314
+ "tango_adapted",
315
+ "tango_half_adapted",
316
+ "teerb",
317
+ "terafox",
318
+ "terminal_basic",
319
+ "thayer_bright",
320
+ "the_hulk",
321
+ "tinacious_design_dark",
322
+ "tinacious_design_light",
323
+ "tokyo_night_light",
324
+ "tokyo_night_storm",
325
+ "tokyo_night",
326
+ "tokyonight_day",
327
+ "tokyonight_storm",
328
+ "tokyonight",
329
+ "tomorrow_night_blue",
330
+ "tomorrow_night_bright",
331
+ "tomorrow_night_burns",
332
+ "tomorrow_night_eighties",
333
+ "tomorrow_night",
334
+ "tomorrow",
335
+ "toy_chest",
336
+ "treehouse",
337
+ "twilight",
338
+ "ubuntu",
339
+ "ultra_dark",
340
+ "ultra_violent",
341
+ "under_the_sea",
342
+ "unholy",
343
+ "unikitty",
344
+ "urple",
345
+ "vaughn",
346
+ "vesper",
347
+ "vibrant_ink",
348
+ "vimbones",
349
+ "violet_dark",
350
+ "violet_light",
351
+ "warm_neon",
352
+ "wez",
353
+ "whimsy",
354
+ "wild_cherry",
355
+ "wilmersdorf",
356
+ "wombat",
357
+ "wryan",
358
+ "zenbones_dark",
359
+ "zenbones_light",
360
+ "zenbones",
361
+ "zenburn",
362
+ "zenburned",
363
+ "zenwritten_dark",
364
+ "zenwritten_light",
365
+ "zeonica"
366
+ ]
367
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://github.com/fnando/screenkit/schemas/project.json",
3
+ "$id": "https://screenkit.dev/schemas/refs/project.json",
4
4
  "title": "Directory",
5
5
  "oneOf": [
6
6
  {
@@ -0,0 +1,9 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "$id": "https://screenkit.dev/schemas/refs/duration.json",
4
+ "title": "Duration",
5
+ "oneOf": [
6
+ { "type": "string", "pattern": "^\\d+(\\.\\d+)?(ms|s|m|h)?$" },
7
+ { "type": "number", "minimum": 0 }
8
+ ]
9
+ }
@@ -1,23 +1,11 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://github.com/fnando/screenkit/schemas/refs/intro.json",
3
+ "$id": "https://screenkit.dev/schemas/refs/intro.json",
4
4
  "title": "Intro",
5
5
  "properties": {
6
- "duration": {
7
- "type": "number",
8
- "description": "Duration of the intro scene in seconds",
9
- "minimum": 0
10
- },
11
- "fade_in": {
12
- "type": "number",
13
- "description": "Fade-in duration in seconds",
14
- "minimum": 0
15
- },
16
- "fade_out": {
17
- "type": "number",
18
- "description": "Fade-out duration in seconds",
19
- "minimum": 0
20
- },
6
+ "duration": { "$ref": "duration.json" },
7
+ "fade_in": { "$ref": "duration.json" },
8
+ "fade_out": { "$ref": "duration.json" },
21
9
  "title": {
22
10
  "type": "object",
23
11
  "description": "Title configuration",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://github.com/fnando/screenkit/schemas/refs/logo.json",
3
+ "$id": "https://screenkit.dev/schemas/refs/logo.json",
4
4
  "title": "Logo",
5
5
  "type": "object",
6
6
  "required": ["path"],
@@ -1,26 +1,14 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://github.com/fnando/screenkit/schemas/refs/outro.json",
3
+ "$id": "https://screenkit.dev/schemas/refs/outro.json",
4
4
  "title": "Outro",
5
5
  "required": ["logo"],
6
6
  "properties": {
7
7
  "background": { "$ref": "background.json" },
8
8
  "logo": { "$ref": "logo.json" },
9
9
  "sound": { "$ref": "sound.json" },
10
- "duration": {
11
- "type": "number",
12
- "description": "Duration of the intro scene in seconds",
13
- "minimum": 0
14
- },
15
- "fade_in": {
16
- "type": "number",
17
- "description": "Fade-in duration in seconds",
18
- "minimum": 0
19
- },
20
- "fade_out": {
21
- "type": "number",
22
- "description": "Fade-out duration in seconds",
23
- "minimum": 0
24
- }
10
+ "duration": { "$ref": "duration.json" },
11
+ "fade_in": { "$ref": "duration.json" },
12
+ "fade_out": { "$ref": "duration.json" }
25
13
  }
26
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://github.com/fnando/screenkit/schemas/refs/position.json",
3
+ "$id": "https://screenkit.dev/schemas/refs/position.json",
4
4
  "title": "Position",
5
5
  "type": "object",
6
6
  "properties": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://github.com/fnando/screenkit/schemas/refs/scenes.json",
3
+ "$id": "https://screenkit.dev/schemas/refs/scenes.json",
4
4
  "title": "Scenes",
5
5
  "type": "object",
6
6
  "required": ["intro", "outro", "segment"],
@@ -16,11 +16,7 @@
16
16
  "description": "Main content scene configuration",
17
17
  "required": ["crossfade_duration"],
18
18
  "properties": {
19
- "crossfade_duration": {
20
- "type": "number",
21
- "description": "Duration of the crossover transition between segments in seconds",
22
- "minimum": 0
23
- }
19
+ "crossfade_duration": { "$ref": "duration.json" }
24
20
  }
25
21
  }
26
22
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://github.com/fnando/screenkit/schemas/refs/size.json",
3
+ "$id": "https://screenkit.dev/schemas/refs/size.json",
4
4
  "title": "Size",
5
5
  "type": "object",
6
6
  "required": ["width", "height"],
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://github.com/fnando/screenkit/schemas/refs/sound.json",
3
+ "$id": "https://screenkit.dev/schemas/refs/sound.json",
4
4
  "title": "Sound",
5
5
  "oneOf": [
6
6
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://github.com/fnando/screenkit/schemas/refs/spacing.json",
3
+ "$id": "https://screenkit.dev/schemas/refs/spacing.json",
4
4
  "title": "Spacing (Padding/Margin)",
5
5
  "oneOf": [
6
6
  {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://github.com/fnando/screenkit/schemas/refs/text_style.json",
3
+ "$id": "https://screenkit.dev/schemas/refs/text_style.json",
4
4
  "title": "Text Style",
5
5
  "properties": {
6
6
  "font_path": {
@@ -1,15 +1,11 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://github.com/fnando/screenkit/schemas/refs/transition.json",
3
+ "$id": "https://screenkit.dev/schemas/refs/transition.json",
4
4
  "type": "object",
5
5
  "title": "Transition",
6
6
  "required": ["duration", "sound"],
7
7
  "properties": {
8
8
  "sound": { "$ref": "sound.json" },
9
- "duration": {
10
- "type": "number",
11
- "description": "Transition duration in seconds",
12
- "minimum": 0
13
- }
9
+ "duration": { "$ref": "duration.json" }
14
10
  }
15
11
  }
@@ -1,47 +1,10 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://github.com/fnando/screenkit/schemas/refs/tts.json",
3
+ "$id": "https://screenkit.dev/schemas/refs/tts.json",
4
4
  "title": "The TTS engine used for voiceover",
5
5
  "oneOf": [
6
- {
7
- "type": "boolean",
8
- "enum": [false]
9
- },
10
- {
11
- "type": "object",
12
- "$ref": "../tts/say.json",
13
- "properties": {
14
- "engine": {
15
- "type": "string",
16
- "enum": ["say"],
17
- "description": "The TTS engine to use"
18
- }
19
- }
20
- },
21
- {
22
- "type": "object",
23
- "$ref": "../tts/elevenlabs.json",
24
- "properties": {
25
- "engine": {
26
- "type": "string",
27
- "enum": ["elevenlabs"],
28
- "description": "The TTS engine to use"
29
- }
30
- }
31
- },
32
- {
33
- "type": "object",
34
- "required": ["engine"],
35
- "additionalProperties": true,
36
- "properties": {
37
- "engine": {
38
- "type": "string",
39
- "description": "The TTS engine to use",
40
- "not": {
41
- "enum": ["say", "elevenlabs"]
42
- }
43
- }
44
- }
45
- }
6
+ { "type": "boolean", "enum": [false] },
7
+ { "$ref": "tts_builtin.json" },
8
+ { "type": "array", "items": { "$ref": "tts_builtin.json" } }
46
9
  ]
47
10
  }
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "$id": "https://screenkit.dev/schemas/refs/tts_builtin.json",
4
+ "oneOf": [
5
+ { "$ref": "../tts/say.json" },
6
+ { "$ref": "../tts/espeak.json" },
7
+ { "$ref": "../tts/elevenlabs.json" },
8
+ {
9
+ "type": "object",
10
+ "required": ["engine"],
11
+ "additionalProperties": true,
12
+ "properties": {
13
+ "engine": {
14
+ "type": "string",
15
+ "description": "The TTS engine to use",
16
+ "not": {
17
+ "enum": ["say", "eleven_labs", "espeak"]
18
+ }
19
+ }
20
+ }
21
+ }
22
+ ]
23
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://github.com/fnando/screenkit/schemas/project.json",
3
+ "$id": "https://screenkit.dev/schemas/refs/project.json",
4
4
  "title": "Watermark",
5
5
  "oneOf": [
6
6
  { "type": "boolean", "enum": [false] },
@@ -1,10 +1,19 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-04/schema#",
3
- "$id": "https://github.com/fnando/screenkit/schemas/tts/elevenlabs.json",
3
+ "$id": "https://screenkit.dev/schemas/tts/elevenlabs.json",
4
4
  "title": "The ElevenLabs voice engine options",
5
5
  "type": "object",
6
- "required": ["voice_id"],
6
+ "required": ["voice_id", "engine"],
7
+ "additionalProperties": false,
7
8
  "properties": {
9
+ "enabled": {
10
+ "type": "boolean"
11
+ },
12
+ "engine": {
13
+ "type": "string",
14
+ "enum": ["eleven_labs"],
15
+ "description": "The TTS engine to use"
16
+ },
8
17
  "voice_id": { "type": "string" },
9
18
  "output_format": {
10
19
  "type": "string",
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-04/schema#",
3
+ "$id": "https://screenkit.dev/schemas/tts/espeak.json",
4
+ "title": "espeak synthesizer for English and other languages",
5
+ "type": "object",
6
+ "required": ["engine"],
7
+ "additionalProperties": false,
8
+ "properties": {
9
+ "enabled": {
10
+ "type": "boolean"
11
+ },
12
+ "engine": {
13
+ "type": "string",
14
+ "enum": ["espeak"],
15
+ "description": "The TTS engine to use"
16
+ },
17
+ "voice": {
18
+ "description": "The voice to use",
19
+ "oneOf": [{ "type": "null" }, { "type": "string" }]
20
+ },
21
+ "rate": {
22
+ "description": "The speaking rate (words per minute)",
23
+ "oneOf": [{ "type": "null" }, { "type": "integer" }]
24
+ }
25
+ }
26
+ }