@gentbajko/slopify 2.5.0 → 3.0.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 (542) hide show
  1. package/LICENSE +201 -21
  2. package/NOTICE +12 -0
  3. package/README.md +24 -41
  4. package/SUBTITLES.md +1 -1
  5. package/dist/adapter-registry.js +31 -0
  6. package/dist/adapters/alignment/cache.js +4 -1
  7. package/dist/adapters/alignment/ctc.js +25 -23
  8. package/dist/adapters/alignment/index.js +37 -6
  9. package/dist/adapters/alignment/multilingual.js +267 -0
  10. package/dist/adapters/alignment/protocol.js +11 -0
  11. package/dist/adapters/alignment/quality.js +4 -3
  12. package/dist/adapters/alignment/sentences.js +95 -0
  13. package/dist/adapters/alignment/spec.js +24 -0
  14. package/dist/adapters/alignment/spell.js +769 -0
  15. package/dist/adapters/alignment/text.js +56 -9
  16. package/dist/adapters/alignment/window.js +34 -30
  17. package/dist/adapters/alignment/worker.js +23 -21
  18. package/dist/adapters/explain.js +11 -11
  19. package/dist/adapters/host-cli/index.js +44 -5
  20. package/dist/adapters/host-cli/transport.js +7 -5
  21. package/dist/adapters/image/bytes.js +2 -2
  22. package/dist/adapters/image/codex-output.js +1 -1
  23. package/dist/adapters/image/codex.js +87 -22
  24. package/dist/adapters/image/fal.js +13 -5
  25. package/dist/adapters/image/google.js +11 -8
  26. package/dist/adapters/image/openai.js +14 -7
  27. package/dist/adapters/image/reference.js +34 -0
  28. package/dist/adapters/image/replicate.js +7 -2
  29. package/dist/adapters/image/video.js +2 -2
  30. package/dist/adapters/key-probes.js +85 -0
  31. package/dist/adapters/llm/claude-code.js +168 -32
  32. package/dist/adapters/llm/cli-login-error.js +1 -1
  33. package/dist/adapters/llm/codex-limits.js +157 -0
  34. package/dist/adapters/llm/codex.js +99 -12
  35. package/dist/adapters/llm/document-workspace.js +2 -2
  36. package/dist/adapters/llm/gemini-workspace.js +1 -1
  37. package/dist/adapters/llm/gemini.js +16 -3
  38. package/dist/adapters/llm/image-workspace.js +58 -0
  39. package/dist/adapters/llm/openrouter.js +11 -3
  40. package/dist/adapters/llm/run-cli.js +12 -7
  41. package/dist/adapters/tts/cartesia.js +10 -0
  42. package/dist/adapters/tts/elevenlabs.js +31 -9
  43. package/dist/adapters/tts/gemini.js +206 -0
  44. package/dist/adapters/tts/inworld-async.js +9 -5
  45. package/dist/adapters/tts/inworld.js +17 -3
  46. package/dist/adapters/tts/openai.js +3 -0
  47. package/dist/adapters/tts/pcm-mp3.js +62 -0
  48. package/dist/adapters/tts/system.js +147 -0
  49. package/dist/adapters/tts/voice-languages.js +80 -0
  50. package/dist/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
  51. package/dist/assets/fonts/noto/NotoSansArabic-Regular.ttf +0 -0
  52. package/dist/assets/fonts/noto/NotoSansDevanagari-Regular.ttf +0 -0
  53. package/dist/assets/fonts/noto/NotoSansHebrew-Regular.ttf +0 -0
  54. package/dist/assets/fonts/noto/NotoSansThai-Regular.ttf +0 -0
  55. package/dist/assets/fonts/noto/OFL.txt +93 -0
  56. package/dist/assets/fonts/noto/SOURCE.txt +18 -0
  57. package/dist/assets/models.yaml +38 -0
  58. package/dist/assets/sample/sample-audiobook.tar +0 -0
  59. package/dist/assets/sample/sample-podcast.tar +0 -0
  60. package/dist/assets/sample/sample-project.tar +0 -0
  61. package/dist/assets/style-preview/narration.mp3 +0 -0
  62. package/dist/assets/style-preview/tall-1.jpg +0 -0
  63. package/dist/assets/style-preview/tall-2.jpg +0 -0
  64. package/dist/assets/style-preview/tall-3.jpg +0 -0
  65. package/dist/assets/style-preview/wide-1.jpg +0 -0
  66. package/dist/assets/style-preview/wide-2.jpg +0 -0
  67. package/dist/assets/style-preview/wide-3.jpg +0 -0
  68. package/dist/catalog/merge.js +132 -0
  69. package/dist/catalog/registry.js +17 -14
  70. package/dist/catalog/schema.js +2 -0
  71. package/dist/catalog/store.js +147 -8
  72. package/dist/catalog/validate.js +2 -2
  73. package/dist/compose.yaml +71 -0
  74. package/dist/edge/autostart/docker-record.js +32 -0
  75. package/dist/edge/autostart/docker.js +118 -0
  76. package/dist/edge/autostart/index.js +78 -0
  77. package/dist/edge/autostart/launcher.js +176 -0
  78. package/dist/edge/autostart/model.js +3 -0
  79. package/dist/edge/autostart/native.js +210 -0
  80. package/dist/edge/autostart/prompt.js +72 -0
  81. package/dist/edge/autostart/service.js +90 -0
  82. package/dist/edge/cli-args.js +71 -0
  83. package/dist/edge/cli.js +64 -63
  84. package/dist/edge/docker-install/activation.js +56 -0
  85. package/dist/edge/docker-install/apply.js +458 -0
  86. package/dist/edge/docker-install/engine.js +362 -0
  87. package/dist/edge/docker-install/run.js +160 -0
  88. package/dist/edge/docker-install/state.js +146 -0
  89. package/dist/edge/{docker-projects → docker-install}/volume.js +1 -5
  90. package/dist/edge/docker.js +14 -22
  91. package/dist/edge/events/hub.js +3 -1
  92. package/dist/edge/host-cli.js +1 -1
  93. package/dist/edge/http/actions.js +38 -11
  94. package/dist/edge/http/app.js +60 -2
  95. package/dist/edge/http/auditions.js +70 -0
  96. package/dist/edge/http/autostart.js +37 -0
  97. package/dist/edge/http/byte-range.js +42 -0
  98. package/dist/edge/http/channel-memory.js +92 -0
  99. package/dist/edge/http/channels.js +128 -0
  100. package/dist/edge/http/diagnostics.js +1 -0
  101. package/dist/edge/http/draft-files.js +2 -4
  102. package/dist/edge/http/entries.js +22 -3
  103. package/dist/edge/http/files.js +11 -7
  104. package/dist/edge/http/folder-location.js +1 -1
  105. package/dist/edge/http/home.js +39 -0
  106. package/dist/edge/http/host-cli.js +29 -5
  107. package/dist/edge/http/narration-peaks.js +76 -0
  108. package/dist/edge/http/onboarding.js +212 -0
  109. package/dist/edge/http/open-folder.js +1 -1
  110. package/dist/edge/http/patch-notes.js +45 -0
  111. package/dist/edge/http/planning.js +4 -2
  112. package/dist/edge/http/project-create.js +87 -0
  113. package/dist/edge/http/project-templates.js +19 -2
  114. package/dist/edge/http/projects.js +37 -100
  115. package/dist/edge/http/prompts.js +40 -3
  116. package/dist/edge/http/pronunciations.js +23 -4
  117. package/dist/edge/http/providers.js +119 -3
  118. package/dist/edge/http/reviews.js +131 -0
  119. package/dist/edge/http/revision-files.js +3 -5
  120. package/dist/edge/http/revisions.js +1 -1
  121. package/dist/edge/http/run-cost.js +25 -0
  122. package/dist/edge/http/schedules.js +115 -6
  123. package/dist/edge/http/settings.js +84 -6
  124. package/dist/edge/http/storage-files.js +50 -0
  125. package/dist/edge/http/storage.js +43 -2
  126. package/dist/edge/http/studio.js +287 -0
  127. package/dist/edge/http/style-preview.js +61 -0
  128. package/dist/edge/http/subtitles.js +1 -1
  129. package/dist/edge/http/trash.js +69 -0
  130. package/dist/edge/http/tutorials.js +59 -0
  131. package/dist/edge/http/update.js +24 -3
  132. package/dist/edge/http/whats-new.js +15 -0
  133. package/dist/edge/http/youtube-edits.js +92 -0
  134. package/dist/edge/native-update.js +62 -0
  135. package/dist/extension/slopify-studio-chrome.zip +0 -0
  136. package/dist/extension/slopify-studio-firefox.zip +0 -0
  137. package/dist/host-cli/gemini-login.js +83 -0
  138. package/dist/host-cli/open-folder.js +10 -10
  139. package/dist/host-cli/runtime.js +9 -1
  140. package/dist/host-cli/status.js +4 -2
  141. package/dist/kernel/db/migrations/0025-automatic-reviews.sql +40 -0
  142. package/dist/kernel/db/migrations/0026-schedule-topic-generation.sql +23 -0
  143. package/dist/kernel/db/migrations/0027-run-cost.sql +58 -0
  144. package/dist/kernel/db/migrations/0030-automatic-retries.sql +18 -0
  145. package/dist/kernel/db/migrations/0031-prompt-history-and-description-edits.sql +33 -0
  146. package/dist/kernel/db/migrations/0032-channels.sql +65 -0
  147. package/dist/kernel/db/migrations/0034-script-prompts.sql +23 -0
  148. package/dist/kernel/db/migrations/0035-narration-aliases.sql +13 -0
  149. package/dist/kernel/db/migrations/0037-project-uploads.sql +8 -0
  150. package/dist/kernel/db/migrations/0038-voice-languages.sql +7 -0
  151. package/dist/kernel/db/migrations/0039-channel-essentials.sql +64 -0
  152. package/dist/kernel/db/migrations/0040-standalone-usage.sql +35 -0
  153. package/dist/kernel/db/migrations/0041-cast-hosts.sql +3 -0
  154. package/dist/kernel/paths.js +27 -6
  155. package/dist/kernel/pipeline.js +4 -1
  156. package/dist/kernel/ports/host-cli.js +122 -14
  157. package/dist/kernel/ports/key-probe.js +1 -0
  158. package/dist/kernel/ports/languages.js +157 -0
  159. package/dist/kernel/ports/model.js +10 -5
  160. package/dist/kernel/ports/narration-aliases.js +60 -0
  161. package/dist/kernel/ports/plan-limits.js +36 -0
  162. package/dist/kernel/ports/system-speech.js +203 -0
  163. package/dist/kernel/runner/attempt.js +17 -8
  164. package/dist/kernel/runner/audition.js +36 -0
  165. package/dist/kernel/runner/graph.js +40 -5
  166. package/dist/kernel/runner/index.js +39 -9
  167. package/dist/kernel/runner/meter.js +1 -0
  168. package/dist/kernel/runner/providers.js +142 -7
  169. package/dist/kernel/runner/retry-policy.js +43 -0
  170. package/dist/kernel/runner/standalone.js +134 -0
  171. package/dist/kernel/runner/work-authority.js +28 -2
  172. package/dist/main.js +277 -16
  173. package/dist/model-catalog.js +2 -0
  174. package/dist/patch-notes/0.4.2-to-1.0.md +93 -0
  175. package/dist/patch-notes/1.0-to-2.0.md +74 -0
  176. package/dist/patch-notes/2.0-to-3.0.md +257 -0
  177. package/dist/patch-notes/3.0.0.md +70 -0
  178. package/dist/patch-notes/3.0.1.md +105 -0
  179. package/dist/patch-notes/index.json +32 -0
  180. package/dist/slices/admission/model.js +27 -0
  181. package/dist/slices/admission/repo.js +24 -4
  182. package/dist/slices/admission/rules.js +80 -2
  183. package/dist/slices/admission/schema.js +58 -1
  184. package/dist/slices/admission/short-mode.js +47 -0
  185. package/dist/slices/admission/start.js +42 -6
  186. package/dist/slices/article/continuation.js +2 -2
  187. package/dist/slices/article/provided-entries.js +2 -2
  188. package/dist/slices/article/run.js +6 -2
  189. package/dist/slices/article/segments.js +3 -3
  190. package/dist/slices/backups/folder.js +14 -6
  191. package/dist/slices/batch/index.js +7 -2
  192. package/dist/slices/cancel/index.js +1 -1
  193. package/dist/slices/channels/cast-images.js +110 -0
  194. package/dist/slices/channels/cast-match.js +32 -0
  195. package/dist/slices/channels/images.js +19 -0
  196. package/dist/slices/channels/model.js +5 -0
  197. package/dist/slices/channels/rebrand.js +100 -0
  198. package/dist/slices/channels/repo.js +221 -0
  199. package/dist/slices/channels/runs.js +129 -0
  200. package/dist/slices/channels/schema.js +152 -0
  201. package/dist/slices/channels/service.js +180 -0
  202. package/dist/slices/channels/studio-csv.js +110 -0
  203. package/dist/slices/channels/videos.js +120 -0
  204. package/dist/slices/checkpoints/recovery.js +10 -0
  205. package/dist/slices/control/index.js +5 -2
  206. package/dist/slices/control/providers.js +4 -1
  207. package/dist/slices/document/fonts.js +1 -1
  208. package/dist/slices/document/render.js +1 -1
  209. package/dist/slices/episodes/related.js +90 -0
  210. package/dist/slices/episodes/repo.js +60 -0
  211. package/dist/slices/episodes/service.js +58 -0
  212. package/dist/slices/episodes/summarize.js +170 -0
  213. package/dist/slices/estimate/index.js +109 -28
  214. package/dist/slices/estimate/requests.js +68 -2
  215. package/dist/slices/eta/history.js +56 -0
  216. package/dist/slices/eta/model.js +63 -0
  217. package/dist/slices/eta/view.js +25 -0
  218. package/dist/slices/fixes/rules.js +73 -0
  219. package/dist/slices/fonts/coverage.js +82 -0
  220. package/dist/slices/fonts/sfnt.js +74 -0
  221. package/dist/slices/images/run.js +8 -5
  222. package/dist/slices/images/scale.js +84 -0
  223. package/dist/slices/library/diff.js +122 -0
  224. package/dist/slices/library/history.js +100 -0
  225. package/dist/slices/library/model.js +3 -0
  226. package/dist/slices/library/photorealistic.js +49 -0
  227. package/dist/slices/library/repo.js +19 -14
  228. package/dist/slices/library/save.js +62 -12
  229. package/dist/slices/library/slots.js +7 -1
  230. package/dist/slices/library/used-by.js +153 -0
  231. package/dist/slices/loudness/level-pieces.js +41 -0
  232. package/dist/slices/loudness/loudnorm.js +164 -0
  233. package/dist/slices/loudness/model.js +153 -0
  234. package/dist/slices/model-upkeep/model.js +10 -0
  235. package/dist/slices/model-upkeep/switch.js +217 -0
  236. package/dist/slices/model-upkeep/usage.js +185 -0
  237. package/dist/slices/narration/aliases-library.js +31 -0
  238. package/dist/slices/narration/aliases-schema.js +53 -0
  239. package/dist/slices/narration/aliases.js +49 -0
  240. package/dist/slices/narration/blocks.js +352 -0
  241. package/dist/slices/narration/chunk.js +19 -7
  242. package/dist/slices/narration/concat.js +2 -2
  243. package/dist/slices/narration/describe.js +45 -0
  244. package/dist/slices/narration/pauses-model.js +63 -0
  245. package/dist/slices/narration/pauses.js +269 -0
  246. package/dist/slices/narration/peaks-model.js +1 -0
  247. package/dist/slices/narration/peaks.js +94 -0
  248. package/dist/slices/narration/preparation.js +21 -3
  249. package/dist/slices/narration/pronunciation-chunks.js +3 -3
  250. package/dist/slices/narration/pronunciation.js +72 -25
  251. package/dist/slices/narration/run.js +6 -6
  252. package/dist/slices/narration/shared-glossary.js +1 -1
  253. package/dist/slices/narration/steering.js +15 -4
  254. package/dist/slices/notifications/notifier.js +47 -3
  255. package/dist/slices/notifications/rules.js +48 -3
  256. package/dist/slices/onboarding/copy.js +143 -0
  257. package/dist/slices/onboarding/first-run.js +72 -0
  258. package/dist/slices/onboarding/full-video.js +81 -0
  259. package/dist/slices/onboarding/install.js +119 -0
  260. package/dist/slices/onboarding/model.js +85 -0
  261. package/dist/slices/onboarding/packs.js +491 -0
  262. package/dist/slices/onboarding/quick-short.js +144 -0
  263. package/dist/slices/onboarding/sample.js +132 -0
  264. package/dist/slices/onboarding/state.js +68 -0
  265. package/dist/slices/onboarding/template.js +73 -0
  266. package/dist/slices/patch-notes/library.js +73 -0
  267. package/dist/slices/patch-notes/seen.js +77 -0
  268. package/dist/slices/play-drafts/convert.js +127 -8
  269. package/dist/slices/play-drafts/readiness.js +4 -1
  270. package/dist/slices/play-drafts/repo.js +2 -0
  271. package/dist/slices/play-drafts/review-inputs.js +20 -3
  272. package/dist/slices/play-drafts/schema.js +89 -0
  273. package/dist/slices/play-drafts/service.js +4 -1
  274. package/dist/slices/play-drafts/start.js +43 -18
  275. package/dist/slices/project-templates/from-project.js +59 -6
  276. package/dist/slices/project-templates/next-chapter.js +94 -0
  277. package/dist/slices/project-templates/one-off.js +26 -0
  278. package/dist/slices/project-templates/repo.js +2 -1
  279. package/dist/slices/project-templates/schema.js +7 -1
  280. package/dist/slices/project-templates/service.js +15 -4
  281. package/dist/slices/project-templates/setup.js +18 -2
  282. package/dist/slices/rebuild/admission-repo.js +1 -1
  283. package/dist/slices/rebuild/model.js +6 -0
  284. package/dist/slices/rebuild/preview-details.js +46 -3
  285. package/dist/slices/rebuild/preview-plan.js +13 -6
  286. package/dist/slices/rebuild/recipe-audio-parts.js +40 -7
  287. package/dist/slices/rebuild/recipe-audio.js +66 -12
  288. package/dist/slices/rebuild/recipe-build.js +8 -4
  289. package/dist/slices/rebuild/recipe-cast.js +18 -0
  290. package/dist/slices/rebuild/recipe-checkpoints.js +11 -9
  291. package/dist/slices/rebuild/recipe-describe.js +93 -0
  292. package/dist/slices/rebuild/recipe-edit.js +13 -1
  293. package/dist/slices/rebuild/recipe-exports.js +67 -8
  294. package/dist/slices/rebuild/recipe-input-schema.js +35 -0
  295. package/dist/slices/rebuild/recipe-legacy.js +9 -0
  296. package/dist/slices/rebuild/recipe-loudness.js +45 -0
  297. package/dist/slices/rebuild/recipe-model.js +25 -6
  298. package/dist/slices/rebuild/recipe-pauses.js +7 -0
  299. package/dist/slices/rebuild/recipe-preparation.js +3 -3
  300. package/dist/slices/rebuild/recipe-provider-choice.js +11 -1
  301. package/dist/slices/rebuild/recipe-reference.js +15 -1
  302. package/dist/slices/rebuild/recipe-reviews.js +117 -0
  303. package/dist/slices/rebuild/recipe-save.js +4 -1
  304. package/dist/slices/rebuild/recipe-shorts.js +23 -3
  305. package/dist/slices/rebuild/recipe-text.js +114 -19
  306. package/dist/slices/rebuild/recipe-validation.js +14 -2
  307. package/dist/slices/rebuild/recipe-visual.js +96 -33
  308. package/dist/slices/rebuild/recipe-voices.js +286 -0
  309. package/dist/slices/rebuild/recipe-work.js +77 -6
  310. package/dist/slices/rebuild/recipe-youtube.js +2 -0
  311. package/dist/slices/rebuild/recovery-conflict.js +7 -3
  312. package/dist/slices/rebuild/recovery-model.js +3 -0
  313. package/dist/slices/rebuild/recovery-selection.js +28 -2
  314. package/dist/slices/rebuild/recovery.js +35 -17
  315. package/dist/slices/rebuild/repo.js +3 -3
  316. package/dist/slices/rebuild/retry.js +18 -0
  317. package/dist/slices/rebuild/review-redo.js +125 -0
  318. package/dist/slices/rebuild/runtime-actions.js +5 -0
  319. package/dist/slices/rebuild/runtime-admission.js +4 -1
  320. package/dist/slices/rebuild/runtime-animate.js +4 -4
  321. package/dist/slices/rebuild/runtime-article.js +5 -5
  322. package/dist/slices/rebuild/runtime-document.js +4 -4
  323. package/dist/slices/rebuild/runtime-export-bed.js +43 -0
  324. package/dist/slices/rebuild/runtime-export-edit.js +70 -11
  325. package/dist/slices/rebuild/runtime-export-inputs.js +52 -10
  326. package/dist/slices/rebuild/runtime-export-short.js +85 -0
  327. package/dist/slices/rebuild/runtime-export.js +84 -19
  328. package/dist/slices/rebuild/runtime-figure-card.js +87 -0
  329. package/dist/slices/rebuild/runtime-image.js +21 -2
  330. package/dist/slices/rebuild/runtime-local.js +148 -24
  331. package/dist/slices/rebuild/runtime-materialize.js +8 -0
  332. package/dist/slices/rebuild/runtime-narration-reuse.js +2 -1
  333. package/dist/slices/rebuild/runtime-narration-text.js +7 -7
  334. package/dist/slices/rebuild/runtime-pictures.js +28 -0
  335. package/dist/slices/rebuild/runtime-piece-label.js +27 -0
  336. package/dist/slices/rebuild/runtime-provider.js +126 -18
  337. package/dist/slices/rebuild/runtime-publication.js +21 -5
  338. package/dist/slices/rebuild/runtime-review.js +267 -0
  339. package/dist/slices/rebuild/runtime-run.js +17 -11
  340. package/dist/slices/rebuild/runtime-shorts.js +44 -17
  341. package/dist/slices/rebuild/runtime-store.js +62 -11
  342. package/dist/slices/rebuild/runtime-subtitles.js +72 -19
  343. package/dist/slices/rebuild/runtime-voices.js +103 -0
  344. package/dist/slices/rebuild/runtime-youtube.js +7 -6
  345. package/dist/slices/rebuild/service-readiness.js +3 -3
  346. package/dist/slices/rebuild/soften.js +49 -0
  347. package/dist/slices/rebuild/transition-repo.js +9 -2
  348. package/dist/slices/research/run.js +4 -4
  349. package/dist/slices/research/synthesis.js +2 -2
  350. package/dist/slices/reviews/model.js +105 -0
  351. package/dist/slices/reviews/outcome.js +22 -0
  352. package/dist/slices/reviews/repo.js +118 -0
  353. package/dist/slices/reviews/rules.js +63 -0
  354. package/dist/slices/reviews/verdict.js +71 -0
  355. package/dist/slices/reviews/view.js +30 -0
  356. package/dist/slices/revisions/adopt-content.js +5 -2
  357. package/dist/slices/revisions/adopt.js +3 -1
  358. package/dist/slices/revisions/downloads.js +7 -1
  359. package/dist/slices/revisions/image-plan.js +183 -0
  360. package/dist/slices/revisions/mutation-assets.js +10 -0
  361. package/dist/slices/revisions/mutation-cues.js +71 -0
  362. package/dist/slices/revisions/mutation-request.js +2 -1
  363. package/dist/slices/revisions/mutations.js +97 -3
  364. package/dist/slices/revisions/schema.js +11 -1
  365. package/dist/slices/run-cost/limits.js +128 -0
  366. package/dist/slices/run-cost/meter.js +47 -0
  367. package/dist/slices/run-cost/panel.js +256 -0
  368. package/dist/slices/run-cost/pricing.js +95 -0
  369. package/dist/slices/run-cost/week.js +108 -0
  370. package/dist/slices/schedules/agenda.js +222 -0
  371. package/dist/slices/schedules/repo.js +58 -18
  372. package/dist/slices/schedules/scheduler.js +68 -17
  373. package/dist/slices/schedules/schema.js +179 -1
  374. package/dist/slices/schedules/service.js +43 -4
  375. package/dist/slices/schedules/similar.js +128 -0
  376. package/dist/slices/schedules/topic-list.js +163 -0
  377. package/dist/slices/schedules/topics.js +523 -0
  378. package/dist/slices/settings/first-run.js +106 -0
  379. package/dist/slices/settings/health.js +247 -0
  380. package/dist/slices/settings/key-guides.js +138 -0
  381. package/dist/slices/settings/key-test.js +93 -0
  382. package/dist/slices/settings/keys.js +10 -5
  383. package/dist/slices/settings/model-reach.js +52 -0
  384. package/dist/slices/settings/model.js +55 -1
  385. package/dist/slices/settings/models.js +5 -1
  386. package/dist/slices/settings/playback.js +15 -0
  387. package/dist/slices/settings/readiness.js +14 -2
  388. package/dist/slices/settings/repo.js +17 -3
  389. package/dist/slices/settings/tutorial-schema.js +5 -0
  390. package/dist/slices/settings/voices.js +64 -4
  391. package/dist/slices/settings/whats-new.js +64 -0
  392. package/dist/slices/shorts/captions.js +9 -0
  393. package/dist/slices/shorts/pick.js +3 -3
  394. package/dist/slices/shorts/prompts.js +1 -1
  395. package/dist/slices/shorts/render.js +63 -13
  396. package/dist/slices/storage/asset-name.js +3 -0
  397. package/dist/slices/storage/backup-export.js +48 -9
  398. package/dist/slices/storage/backup-format.js +38 -1
  399. package/dist/slices/storage/backup-import.js +191 -19
  400. package/dist/slices/storage/delete-project.js +7 -4
  401. package/dist/slices/storage/documents.js +87 -0
  402. package/dist/slices/storage/downloads.js +33 -1
  403. package/dist/slices/storage/files-location.js +531 -0
  404. package/dist/slices/storage/layout.js +14 -4
  405. package/dist/slices/storage/model.js +11 -0
  406. package/dist/slices/storage/portable.js +94 -12
  407. package/dist/slices/storage/reconcile.js +14 -1
  408. package/dist/slices/storage/repo.js +4 -1
  409. package/dist/slices/storage/schema.js +11 -0
  410. package/dist/slices/storage/trim.js +146 -0
  411. package/dist/slices/studio/disclosure.js +74 -0
  412. package/dist/slices/studio/model.js +30 -0
  413. package/dist/slices/studio/pack.js +211 -0
  414. package/dist/slices/studio/queue.js +69 -0
  415. package/dist/slices/studio/settings.js +170 -0
  416. package/dist/slices/style-preview/images.js +61 -0
  417. package/dist/slices/style-preview/narration.js +33 -0
  418. package/dist/slices/style-preview/render.js +148 -0
  419. package/dist/slices/style-preview/schema.js +59 -0
  420. package/dist/slices/style-preview/service.js +92 -0
  421. package/dist/slices/style-preview/settings.js +139 -0
  422. package/dist/slices/subtitles/captions.js +42 -9
  423. package/dist/slices/subtitles/model.js +22 -0
  424. package/dist/slices/subtitles/prepare.js +27 -16
  425. package/dist/slices/subtitles/transcript.js +1 -1
  426. package/dist/slices/thumbnail/run.js +7 -7
  427. package/dist/slices/trash/model.js +25 -0
  428. package/dist/slices/trash/service.js +273 -0
  429. package/dist/slices/tutorials/anchors.js +57 -0
  430. package/dist/slices/tutorials/library.js +185 -0
  431. package/dist/slices/uploads/repo.js +20 -0
  432. package/dist/slices/video/ambient-bed-schema.js +15 -0
  433. package/dist/slices/video/ambient-bed.js +95 -0
  434. package/dist/slices/video/ambient-mix.js +72 -0
  435. package/dist/slices/video/audio-inputs.js +2 -2
  436. package/dist/slices/video/cards.js +5 -2
  437. package/dist/slices/video/edit-list.js +23 -2
  438. package/dist/slices/video/edit-settings.js +13 -3
  439. package/dist/slices/video/ffmpeg.js +63 -9
  440. package/dist/slices/video/figure-card.js +492 -0
  441. package/dist/slices/video/figure-spans.js +51 -0
  442. package/dist/slices/video/plan.js +125 -13
  443. package/dist/slices/video/run.js +14 -12
  444. package/dist/slices/video/slideshow.js +39 -4
  445. package/dist/slices/voices/attribution.js +69 -0
  446. package/dist/slices/voices/audio-files.js +87 -0
  447. package/dist/slices/voices/audition.js +25 -0
  448. package/dist/slices/voices/cast.js +74 -0
  449. package/dist/slices/voices/grouping.js +59 -0
  450. package/dist/slices/voices/join.js +35 -0
  451. package/dist/slices/voices/languages.js +25 -0
  452. package/dist/slices/voices/model.js +218 -0
  453. package/dist/slices/voices/palette.js +26 -0
  454. package/dist/slices/voices/panel.js +91 -0
  455. package/dist/slices/voices/portraits.js +55 -0
  456. package/dist/slices/voices/script.js +136 -0
  457. package/dist/slices/voices/timing.js +58 -0
  458. package/dist/slices/youtube/answer.js +1 -1
  459. package/dist/slices/youtube/chapters.js +126 -0
  460. package/dist/slices/youtube/edits-repo.js +84 -0
  461. package/dist/slices/youtube/edits.js +89 -0
  462. package/dist/slices/youtube/placeholders.js +98 -0
  463. package/dist/slices/youtube/transcript.js +11 -4
  464. package/dist/tutorials/AI-CLIs.md +146 -0
  465. package/dist/tutorials/Backups.md +121 -0
  466. package/dist/tutorials/Calendar.md +103 -0
  467. package/dist/tutorials/Cast-Library.md +112 -0
  468. package/dist/tutorials/Channels.md +148 -0
  469. package/dist/tutorials/Costs-and-Run-Cost.md +136 -0
  470. package/dist/tutorials/Docker.md +171 -0
  471. package/dist/tutorials/Document-Themes.md +207 -0
  472. package/dist/tutorials/Editing-a-Project.md +204 -0
  473. package/dist/tutorials/FAQ.md +134 -0
  474. package/dist/tutorials/First-Launch-and-Welcome.md +153 -0
  475. package/dist/tutorials/Home-and-Projects.md +174 -0
  476. package/dist/tutorials/Home.md +119 -0
  477. package/dist/tutorials/Install.md +154 -0
  478. package/dist/tutorials/Intros-and-Outros.md +86 -0
  479. package/dist/tutorials/Keyboard-Shortcuts-and-Command-Palette.md +215 -0
  480. package/dist/tutorials/Library-Overview.md +75 -0
  481. package/dist/tutorials/Models.md +133 -0
  482. package/dist/tutorials/Multiple-Voices.md +161 -0
  483. package/dist/tutorials/Narration-Aliases-and-Glossary.md +129 -0
  484. package/dist/tutorials/Notifications.md +86 -0
  485. package/dist/tutorials/Other-Languages.md +110 -0
  486. package/dist/tutorials/PDF-Documents.md +100 -0
  487. package/dist/tutorials/Play-Images.md +135 -0
  488. package/dist/tutorials/Play-Narration.md +167 -0
  489. package/dist/tutorials/Play-Outputs.md +109 -0
  490. package/dist/tutorials/Play-Overview.md +216 -0
  491. package/dist/tutorials/Play-Title-and-Article.md +135 -0
  492. package/dist/tutorials/Play-Video-and-Style.md +143 -0
  493. package/dist/tutorials/Project-Page.md +228 -0
  494. package/dist/tutorials/Prompts.md +136 -0
  495. package/dist/tutorials/Providers-and-Keys.md +290 -0
  496. package/dist/tutorials/Publishing-to-YouTube.md +135 -0
  497. package/dist/tutorials/Recovery-and-Retries.md +141 -0
  498. package/dist/tutorials/Reviews-and-Checkpoints.md +143 -0
  499. package/dist/tutorials/Schedules.md +154 -0
  500. package/dist/tutorials/Settings-Reference.md +258 -0
  501. package/dist/tutorials/Shorts.md +116 -0
  502. package/dist/tutorials/Start-at-Login.md +126 -0
  503. package/dist/tutorials/Studio-Extension.md +146 -0
  504. package/dist/tutorials/Templates.md +146 -0
  505. package/dist/tutorials/Trash.md +87 -0
  506. package/dist/tutorials/Troubleshooting.md +149 -0
  507. package/dist/tutorials/Uninstalling-and-Moving.md +113 -0
  508. package/dist/tutorials/Updating-and-Patch-Notes.md +120 -0
  509. package/dist/tutorials/Video-Editing.md +135 -0
  510. package/dist/tutorials/Where-Your-Files-Live.md +149 -0
  511. package/dist/tutorials/YouTube-Description.md +132 -0
  512. package/dist/tutorials/Your-First-Short.md +125 -0
  513. package/dist/tutorials/_Footer.md +1 -0
  514. package/dist/tutorials/_Sidebar.md +69 -0
  515. package/dist/updater/service.js +66 -21
  516. package/dist/web/assets/index-DBLSfqA-.css +1 -0
  517. package/dist/web/assets/index-DFdIhmm0.js +307 -0
  518. package/dist/web/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
  519. package/dist/web/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
  520. package/dist/web/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
  521. package/dist/web/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
  522. package/dist/web/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
  523. package/dist/web/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
  524. package/dist/web/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
  525. package/dist/web/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
  526. package/dist/web/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
  527. package/dist/web/assets/{pdf-BLF2i8c2.js → pdf-B9OY1ioX.js} +1 -1
  528. package/dist/web/index.html +2 -2
  529. package/package.json +5 -5
  530. package/dist/edge/docker-launch.js +0 -81
  531. package/dist/edge/docker-projects/activation.js +0 -35
  532. package/dist/edge/docker-projects/claims.js +0 -85
  533. package/dist/edge/docker-projects/committed.js +0 -40
  534. package/dist/edge/docker-projects/engine.js +0 -461
  535. package/dist/edge/docker-projects/install.js +0 -254
  536. package/dist/edge/docker-projects/prune.js +0 -66
  537. package/dist/edge/docker-projects/recover.js +0 -100
  538. package/dist/edge/docker-projects/state.js +0 -225
  539. package/dist/web/assets/index-CktpxlJd.js +0 -171
  540. package/dist/web/assets/index-DB-vOnGU.css +0 -1
  541. package/scripts/docker-run.sh +0 -3
  542. /package/dist/edge/{docker-projects → docker-install}/tree.js +0 -0
@@ -0,0 +1,134 @@
1
+ # FAQ
2
+
3
+ Short answers to the questions people ask most, with links to the pages that go deeper.
4
+
5
+ **Where to find it:** this page. For error messages, see [Troubleshooting](Troubleshooting).
6
+
7
+ ## Cost and accounts
8
+
9
+ ### Is Slopify free?
10
+
11
+ Yes. Slopify is free and open source. You pay the AI providers you choose (for text, narration and images) directly, on your own accounts. Rendering, captions, loudness, the Look, ambient sound, chapter cards and the style preview run on your computer and cost nothing.
12
+
13
+ ### How much does one video cost?
14
+
15
+ It depends on the providers, models, length and number of images. Play shows an estimate before you start, with **Cost by stage** under it. After a run, the project's **Cost** section shows what each stage and model actually cost, retries and remakes included. See [Costs and Run Cost](Costs-and-Run-Cost).
16
+
17
+ ### Can I use my Claude, ChatGPT (Codex) or Gemini subscription instead of API keys?
18
+
19
+ Yes, through the command-line tools you are already signed in to: Claude Code, Codex or Gemini CLI. Calls through them cost $0 on your plan; Slopify shows what the same work would cost through the API, for comparison only. When a plan's limit is used up, the run waits for the reset and carries on by itself. See [AI CLIs](AI-CLIs).
20
+
21
+ ### Can I make a video without any API key?
22
+
23
+ Yes. Sign in to Claude Code, Codex or Gemini CLI for the text (Codex also draws the images), and the narration can use your computer's own voice, the **System voice**, for free. That is what the first 60-second short uses when no voice key is saved. It sounds robotic, so add a voice key when you want a better one. See [Your First Short](Your-First-Short) and [Providers and Keys](Providers-and-Keys#the-system-voice).
24
+
25
+ ### How do I know a key works before I save it?
26
+
27
+ Paste it in Settings → **Providers** and press **Test**. Slopify checks the pasted key with the provider without storing it; press **Save** to keep it. See [Providers and Keys](Providers-and-Keys#test-a-key).
28
+
29
+ ### Do I need an account or a login for Slopify?
30
+
31
+ No. There is no Slopify account and no login. That is also why Slopify listens only on `127.0.0.1` by default: anyone who can reach its port controls the app and its keys. Keep it that way.
32
+
33
+ ## Privacy and your data
34
+
35
+ ### Where are my API keys stored?
36
+
37
+ On your computer, in Slopify's hidden data folder (`~/.slopify` by default; in Docker, the `slopify-data` volume). Each key is sent only to its own provider, and keys are never put in a backup or an export. Diagnostics files never contain them either. See [Providers and Keys](Providers-and-Keys).
38
+
39
+ ### Where are my projects?
40
+
41
+ In your files folder, `Documents/Slopify` for new installs, Docker included (Settings → **Backup & storage** → **Your files** shows it). An install from before 3.0 keeps its files where they were until you move them. See [Where Your Files Live](Where-Your-Files-Live).
42
+
43
+ ### Does Slopify send anything about me?
44
+
45
+ Slopify sends anonymous counts to show the live totals on slopify.stream: tokens per stage with provider and model, audio seconds, images, thumbnails, videos, PDFs, YouTube descriptions, shorts, projects created, that the machine installed Slopify, and when each happened. Each event carries a random ID and a random machine ID. It never sends your API keys, prompts, keyword values, titles, article or research text, files or file names, or your operating system, locale or hardware. A notice explains this the first time you open Slopify.
46
+
47
+ What you write is sent only to the AI providers you pick, because they make the article, narration and images.
48
+
49
+ ### Does it work offline?
50
+
51
+ Partly. The AI steps (article, research, narration, images, thumbnails, descriptions) call providers over the internet, or CLIs that do. Rendering the video, levelling the volume, captions, the style preview and the System voice run on your computer. Captions need a speech model of about 95 MB that is downloaded once, on first use. Patch notes ship with the app and open offline.
52
+
53
+ ## Making and editing videos
54
+
55
+ ### Can I change a video after it is made?
56
+
57
+ Yes. Open the project, press **Edit settings**, change what you want and press **Save changes**. Only the outputs the change affects turn outdated, and you remake them when you choose, after seeing the cost. See [Editing a Project](Editing-a-Project).
58
+
59
+ ### Can I fix one image or one sentence without redoing everything?
60
+
61
+ Yes. In **Edit project → Images** you can edit one image's prompt, replace it with your own file or regenerate it; in **Edit project → Narration** you can edit or respeak one chunk. Only that piece and the video are made again.
62
+
63
+ ### Where do I see what a run cost?
64
+
65
+ At the top of a finished project's page, one line sums it up ("This run cost …"), with **See cost by stage**. See [Costs and Run Cost](Costs-and-Run-Cost).
66
+
67
+ ### Can I go back to an earlier version?
68
+
69
+ Yes. **History** on the project page lists every saved revision with its files. **Restore this revision** makes an old one current again, without losing anything saved after it.
70
+
71
+ ### Can I use my own images, audio or video clips?
72
+
73
+ Yes. Stages can use a file you provide instead of generating one, and in Edit project you can replace any image, add your own picture or add a video clip that plays in an image's place. See [Editing a Project](Editing-a-Project#edit-images).
74
+
75
+ ### What happens if I close the browser while a video is being made?
76
+
77
+ The run keeps going; it runs in Slopify on your computer, not in the browser tab. Open the project again to see where it is. You can also get a notification when it finishes; see [Notifications](Notifications).
78
+
79
+ ### What happens if my computer restarts in the middle of a run?
80
+
81
+ Everything already made is kept. A step that was running shows as failed with "interrupted"; press **Try ... again**. Steps that were waiting for a rate limit or a CLI plan limit carry on by themselves. See [Recovery and Retries](Recovery-and-Retries).
82
+
83
+ ### Why is my project "Done with problems"?
84
+
85
+ The main output was made, but another step failed, for example the thumbnail. The failed step shows its error and a button to fix it. See [Recovery and Retries](Recovery-and-Retries#done-with-problems).
86
+
87
+ ### I deleted a project by mistake. Can I get it back?
88
+
89
+ Yes, within 30 days. Open Settings → **Trash** and press **Restore**. See [Trash](Trash).
90
+
91
+ ### Are captions free?
92
+
93
+ Yes. Captions are timed from your narration on your computer, with no paid API. See [Video Editing](Video-Editing#subtitles).
94
+
95
+ ### Can Slopify make videos in other languages?
96
+
97
+ Yes, with some differences in captions and cuts for languages without word timing. See [Other Languages](Other-Languages).
98
+
99
+ ## Publishing
100
+
101
+ ### Does Slopify upload to YouTube for me?
102
+
103
+ No. Slopify never uploads or publishes anything. **Prepare upload** lays out the file, title, description, thumbnail, playlist, audience, AI use and tags in the order YouTube Studio asks for them, each with a copy button. The optional Studio browser extension fills in the Studio form for you; you check it and press Publish yourself. **Mark uploaded** records that you did. See [Publishing to YouTube](Publishing-to-YouTube) and [Studio Extension](Studio-Extension).
104
+
105
+ ### Does it make Shorts too?
106
+
107
+ Yes. It can pick moments from the long video (60 to 120 seconds by default, anywhere from 15 to 180) and make vertical shorts with new images, word-by-word captions and their own title and hashtags. See [Shorts](Shorts).
108
+
109
+ ## Running Slopify
110
+
111
+ ### What do I need to run it?
112
+
113
+ Node 26 or newer, then `npx @gentbajko/slopify@latest`. It opens at `http://127.0.0.1:6969`. On Linux you can run it in Docker instead. You do not need to install ffmpeg; Slopify ships its own. See [Install](Install) and [Docker](Docker).
114
+
115
+ ### Can I use it from my phone or another computer?
116
+
117
+ Slopify is meant to be used on the computer it runs on. You can change the address with `--host`, but there is no login, so whoever reaches the port controls the app and its keys. Notifications can reach your phone. See [Notifications](Notifications).
118
+
119
+ ### How do I update?
120
+
121
+ Press the circular-arrows button at the foot of the sidebar, or run `npx @gentbajko/slopify@latest update` while Slopify is running. It waits for running work, keeps a copy to go back to, and puts the previous version back if the new one does not start. See [Updating and Patch Notes](Updating-and-Patch-Notes).
122
+
123
+ ### Something is broken. What should I send?
124
+
125
+ Open Settings and press **Download diagnostics**. The file lists your Slopify, system and Node versions and which providers are set up, never your keys, prompts or project content. Attach it to your bug report. See [Troubleshooting](Troubleshooting).
126
+
127
+ ## Related pages
128
+
129
+ - [Troubleshooting](Troubleshooting)
130
+ - [Recovery and Retries](Recovery-and-Retries)
131
+ - [Providers and Keys](Providers-and-Keys)
132
+ - [Costs and Run Cost](Costs-and-Run-Cost)
133
+ - [Where Your Files Live](Where-Your-Files-Live)
134
+ - [Publishing to YouTube](Publishing-to-YouTube)
@@ -0,0 +1,153 @@
1
+ # First Launch and Welcome
2
+
3
+ The first time you open Slopify it walks you through three steps: what your computer already has, a style, and your first 60-second short. The short is being made by the time you finish, and three finished sample projects are there to explore while you wait, without spending anything.
4
+
5
+ **Where to find it:** it opens by itself on a fresh install. Its address is `http://127.0.0.1:6969/welcome`.
6
+
7
+ ## What happens the first time
8
+
9
+ 1. **Anonymous usage stats.** A notice lists exactly what is counted and what never is. Press **Got it** to continue. It shows once per machine. See [Install](Install#anonymous-usage-stats).
10
+ 2. **Welcome to Slopify.** Home sends you to the first-run screen once. It has three steps, shown as tabs: **1 · What you have**, **2 · Pick a style** and **3 · Make your first short**. **Next** and **Back** at the bottom move between them, and you can click a tab directly.
11
+ 3. **Start at login.** The last step offers **Start when I log in** once, unless you already answered in the terminal.
12
+
13
+ The first-run screen stops appearing for good when you press **Skip** (it reads **Done** once your short is on its way), or when your first real project exists (anything except the samples), even if you delete that project later.
14
+
15
+ ## Step 1: What you have
16
+
17
+ ### Found on this computer
18
+
19
+ Slopify looks for Claude Code, Codex and Gemini CLI and shows one row for each:
20
+
21
+ | Row says | Meaning |
22
+ | --- | --- |
23
+ | **Ready · 1.2.3 · writes** | Installed, a supported version and signed in, as far as Slopify can tell. It can write the text. |
24
+ | **Ready · … · writes and draws** | Codex: it writes the text and draws the images. |
25
+ | **Installed, not usable yet** or a reason | Found, but something is missing, such as a sign-in. The reason is shown. |
26
+ | **Not found** | Not installed, or not on the `PATH` Slopify sees. |
27
+
28
+ When at least one is ready, the step says which parts need no API key, for example "You can make a video now: no API keys are needed for the text, the images or the narration." When none is ready, it says "Nothing on this computer can write the script yet." with **Open Settings → Providers**: install and sign in to a CLI, or add an OpenRouter key.
29
+
30
+ ### Narration voice
31
+
32
+ The second part says who will read the script aloud:
33
+
34
+ | It says | Meaning |
35
+ | --- | --- |
36
+ | "Narration uses your *provider* voice key." | A voice key (OpenAI, ElevenLabs, Cartesia or Inworld) is saved, so that provider narrates. |
37
+ | "Narration uses your computer's built-in voice (*engine*); add an ElevenLabs or OpenAI key later for a better one." | No voice key, so the computer's own speech narrates, for free. See [the system voice](Providers-and-Keys#the-system-voice). |
38
+ | "No voice can narrate the short yet." | Neither a key nor a speech program was found. Press **Add a voice key**, or install a speech program (on Linux, `espeak-ng`) and press **Check again**. |
39
+
40
+ **Add a voice key** opens Settings → **Providers**. See [AI CLIs](AI-CLIs) and [Providers and Keys](Providers-and-Keys).
41
+
42
+ ## Step 2: Pick a style
43
+
44
+ Each row is a style for the short. **General** is a neutral explainer style; the others are the starter packs (Sleep lore, True crime, History, Science explainers). Press **Use this style** on a row; it then reads **Picked**.
45
+
46
+ Making the short with a pack adds that pack's script and scene prompts to your Library and its suggested voice to Settings → **Voices**. **Add to library** on a pack's row also adds its Play template, for later long videos; it then reads **In your library**. See [Starter packs](#starter-packs).
47
+
48
+ ## Step 3: Make a 60-second short
49
+
50
+ A topic in, a captioned vertical short out, usually in about five minutes with the command-line tools. It has its own page: [Your First Short](Your-First-Short).
51
+
52
+ The step repeats the style and the voice line from step 1. If no voice can narrate yet, it shows the same **Add a voice key** and **Check again** buttons.
53
+
54
+ | Field | What it does | Limits |
55
+ | --- | --- | --- |
56
+ | **Topic** | What the short is about, in a few words or a question. A specific topic gives a sharper short than a broad one. | Up to 200 characters |
57
+
58
+ Press **Make a 60-second short**. The status line says **Starting your short…**, then the step says "Your short is being made." with **Watch it being made**, which opens the project's page and its live view. While it runs, the samples and the start-at-login offer are right below.
59
+
60
+ ## Explore the samples
61
+
62
+ Three finished projects come with Slopify, marked **Sample** in Projects. Step 3 of the first-run screen lists them under **While you wait: the samples**. They are read-only, so nothing you do on them reaches a paid provider.
63
+
64
+ | Sample | What it shows | Button |
65
+ | --- | --- | --- |
66
+ | **The Library of Alexandria** | A 3-minute narrated 16:9 video with burned-in captions, chapter cards and a warm Look, plus its two shorts, the article, the PDF, a YouTube description with chapters, four images and a thumbnail. | **Explore the sample** |
67
+ | **The Wind in the Willows** | An audiobook of an abridged excerpt: a narrator and two character voices, captions tagged with who speaks, and an MP3 and M4B with chapters. | **See an audiobook** |
68
+ | **The Antikythera Mechanism** | A two-host podcast with the speaker panel, name tags and portraits, and its MP3 and M4B. | **Hear a podcast** |
69
+
70
+ If a sample was deleted, its row shows **Restore samples in Settings** instead.
71
+
72
+ ### Make your own copy of a sample
73
+
74
+ A sample's project page says "This is the sample project, finished and free to explore." with the button **Make my own copy**.
75
+
76
+ 1. Open a sample.
77
+ 2. Press **Make my own copy** (also in the command palette, `Ctrl+K` → **Make my own copy**).
78
+ 3. Slopify copies every file and setting of that sample into a new, normal project. Nothing needs to be made again: the copy is finished too.
79
+ 4. Edit the copy like any project. Changes to it use your providers and cost what they cost. See [Editing a Project](Editing-a-Project).
80
+
81
+ ### Restore the samples
82
+
83
+ 1. Open Settings → **Backup & storage** and scroll to **Sample projects**.
84
+ 2. Each sample shows whether it is **in your projects** or **not in your projects**, with **Open**.
85
+ 3. Press **Restore samples**. It puts all three back as they shipped: it adds back any that were deleted and replaces the others with the originals. Your own copies are not touched.
86
+
87
+ ## Starter packs
88
+
89
+ A starter pack sets you up for one kind of channel. Each one adds, in one go:
90
+
91
+ - prompts to your Library: an article prompt, a 60-second script, an image (scene) prompt, a thumbnail prompt, a description prompt and a shorts prompt, each asking only for `{{topic}}`;
92
+ - a suggested OpenAI voice, saved under Settings → **Voices**;
93
+ - a Play template that uses them, named `<pack> starter`, with its captions, motion and Look.
94
+
95
+ Then you pick the template on Play, type a topic and start. See [Templates](Templates) and [Play Overview](Play-Overview).
96
+
97
+ | Pack | What it is for | Suggested voice |
98
+ | --- | --- | --- |
99
+ | **Sleep lore** | Slow, gentle myths and legends told to fall asleep to. | OpenAI `sage` |
100
+ | **True crime** | Measured, factual retellings of real cases and their investigations. | OpenAI `onyx` |
101
+ | **History** | Narrative history of people, places and events, told like a documentary. | OpenAI `fable` |
102
+ | **Science explainers** | Clear, friendly explanations of how the world works, one idea at a time. | OpenAI `nova` |
103
+
104
+ On the first-run screen, **Add to library** on a pack's row adds all of this; it then reads **In your library**. Making a short with a pack adds its prompts and voice only, not the template.
105
+
106
+ - Adding a pack twice changes nothing.
107
+ - It never replaces a prompt or template of yours with the same name: the pack's copy comes in as `<name> (2)`.
108
+ - An item the pack added before and you edited is kept as you left it. One you deleted comes back.
109
+
110
+ You can add packs later too, from Library → **Templates** → **Add pack**.
111
+
112
+ ## Start when I log in
113
+
114
+ Step 3 of the first-run screen asks once: **Start when I log in** or **No thanks**. Either answer, here, in Settings → **General** or in the terminal, ends the question. See [Start at Login](Start-at-Login).
115
+
116
+ ## Set up a long video instead
117
+
118
+ At the bottom of every step, **Set up a long video instead** takes you to Play, where you choose prompts, keywords and outputs yourself. See [Play Overview](Play-Overview).
119
+
120
+ ## The interactive tutorial
121
+
122
+ The question-mark button at the foot of the sidebar (**Start interactive tutorial**) walks you through a first project in 25 steps ("3 of 25 · First project"):
123
+
124
+ 1. **Settings:** connect a text, a voice and an image provider, and add a narration voice.
125
+ 2. **Library:** write and save an article prompt with keywords, then an image prompt.
126
+ 3. **Play:** name the project, choose the article, keywords, narration, images, video and subtitles, then review and start the run.
127
+ 4. **The project:** follow and control the run, download the results, see what the run cost and prepare the YouTube upload.
128
+ 5. **The rest of the app:** check Home each day, set up a channel, and plan uploads on the calendar.
129
+
130
+ Each step highlights the real control you will use and opens its screen for you. Your place is saved, so it survives a page reload. On the review-and-start step, **Skip generating** leaves the run unstarted and goes on to Home, Channels and the Calendar instead of ending the tutorial. Other steps have **Skip this step** (or **Skip without saving**).
131
+
132
+ When Projects has no projects at all, it also shows **Make your first video** with **Start tutorial**.
133
+
134
+ ## The provider welcome in Settings
135
+
136
+ Settings → **Providers** shows a short welcome on a fresh install that names the command-line tools it found and says a video can be made without an API key. Press **Got it** to hide it.
137
+
138
+ ## Tips
139
+
140
+ - Try a sample before you add any keys: every screen works on it, and nothing costs anything.
141
+ - You can come back to the first-run screen at `/welcome` until you skip it or make a real project.
142
+ - After an update to a new major version, a **What's new** tour opens instead. See [Updating and Patch Notes](Updating-and-Patch-Notes).
143
+
144
+ ## Related pages
145
+
146
+ - [Your First Short](Your-First-Short)
147
+ - [Home and Projects](Home-and-Projects)
148
+ - [Providers and Keys](Providers-and-Keys)
149
+ - [AI CLIs](AI-CLIs)
150
+ - [Templates](Templates)
151
+ - [Prompts](Prompts)
152
+ - [Multiple Voices](Multiple-Voices)
153
+ - [Start at Login](Start-at-Login)
@@ -0,0 +1,174 @@
1
+ # Home and Projects
2
+
3
+ Home is Slopify's front page: what needs you, what is running, what is coming up, what is ready to upload and what this week cost, on one screen. Projects is the full list of every run you ever started, with search and filters.
4
+
5
+ **Where to find it:** the sidebar → **Home** (the Slopify logo also goes there) and **Projects**. On a phone, the bottom bar.
6
+
7
+ ## Finding your way around
8
+
9
+ Every page shares the same frame: the sidebar on the left and the page beside it. On a computer there is no top bar; everything lives in the sidebar.
10
+
11
+ ### The sidebar
12
+
13
+ From top to bottom:
14
+
15
+ | Part | What it has |
16
+ | --- | --- |
17
+ | Logo | The Slopify play logo and name, with the version you are running beside it (for example `v3.0.0`). Click it to go Home. |
18
+ | **Search or run a command** | Opens the command palette (`Ctrl+K`). |
19
+ | Destinations | **Home**, **Projects**, **Calendar** (also lit on Schedules), **Channels**, **Library** (Prompts, Intros & Outros, Templates, Document themes, Narration aliases), **Settings** (also lit on Usage). |
20
+ | **N running** | Shown while runs are going. It links to Running now on Home. |
21
+ | **Channel** | The channel picker (see below). |
22
+ | **New video** | Opens Play (`C` from anywhere). |
23
+ | Links | **GitHub**, **Patreon** and **Buy Me a Coffee**, each opening in a new tab. |
24
+ | Foot | "Free. Your keys, your machine.", the updates button (circular arrows, see [Updating and Patch Notes](Updating-and-Patch-Notes)) and the tutorial button (question mark, **Start interactive tutorial**). |
25
+
26
+ ### On a phone
27
+
28
+ Below 768 pixels wide the sidebar is hidden. A slim bar at the top holds the logo, the search button, the running count, the GitHub, Patreon and Buy Me a Coffee icons, the updates button and the tutorial button. A bottom bar has five destinations: Home, Projects, Calendar, Library and Settings. Channels is reachable from the command palette, and the Channel picker sits at the top of Home.
29
+
30
+ ### Rows open with one press
31
+
32
+ In every list, a press anywhere on a row or tile opens or picks it, not only on its name: projects, Home items, calendar entries, channels, schedules, Library lists, samples, saved drafts and media tiles. The buttons on a row still do their own thing.
33
+
34
+ ### The command palette
35
+
36
+ Press `Ctrl+K`, or click **Search or run a command**, to jump anywhere or run an action by typing. The **Go to** group has **Open home**, **Open projects**, **Open calendar**, **Open schedules**, **Open channels**, **Open library**, **Open settings**, **Open usage and costs** and **Show patch notes**. **New video** opens Play. The **Channel** group has **Show all channels** and **Switch to <channel>**. See [Keyboard Shortcuts and Command Palette](Keyboard-Shortcuts-and-Command-Palette).
37
+
38
+ ### The Channel picker
39
+
40
+ The **Channel** picker near the foot of the sidebar (at the top of Home on a phone) shows Home and the other screens for one channel, or for **All channels**. It only filters what you see: projects, schedules and costs of other channels keep running. Slopify remembers your choice in this browser. See [Channels](Channels).
41
+
42
+ ## Home
43
+
44
+ **Where to find it:** the sidebar → **Home**.
45
+
46
+ The page title is the channel you picked (or **Home**), under today's date. At the top right are **Open calendar** and **New video**.
47
+
48
+ On a fresh install, Home sends you to the first-run screen once. See [First Launch and Welcome](First-Launch-and-Welcome).
49
+
50
+ ### Needs you
51
+
52
+ Things that don't move on until you act:
53
+
54
+ | Item | Status | Button |
55
+ | --- | --- | --- |
56
+ | A run held at a review before a step | **Waiting for you · review before the narration** (or the images, or the video) | **Approve the article and record**, **Approve and draw the images** or **Approve and render**. Approving here lets the run continue. Open the project to look first. |
57
+ | A run whose next step is held another way | **Waiting for you** | **Open to continue** |
58
+ | A run you paused | **Paused** | **Open to continue** |
59
+ | Topics a schedule suggested | **N new topics** | **Review topics**, on the calendar: queue the ones you want and reject the rest. |
60
+ | A failed run | **Failed · <step>**, with a short reason | The fix to try: a button to Settings → Providers or Storage when that is the fix, otherwise **Open to retry**. |
61
+ | A run that failed because a CLI is signed out | **Failed · <step>** | **Copy sign-in command** copies the command (`claude auth login`, `codex login` or `gemini`). Run it in a terminal on the computer running Slopify, then **Open to retry** and press **Check again** on the project. |
62
+
63
+ Up to 4 failed runs show here. Only the first item's button is lime; the rest are plain buttons. The heading says how many things are waiting, or **Nothing is waiting for a decision**. See [Reviews and Checkpoints](Reviews-and-Checkpoints), [Schedules](Schedules) and [Recovery and Retries](Recovery-and-Retries).
64
+
65
+ ### Running now
66
+
67
+ Videos being made or paused, up to 3. Each shows the step it is on, how long each step has taken, the running step's time left (for example `2 of 8 · about 4 min left`), the last few images as they land (with a tile for the one being drawn) and **Images N of M** while drawing. A run waiting for a CLI plan says so instead of the step, for example **Waiting for Codex limits (resets at 14:00)**. Open one to follow it live, pause it or cancel it. With nothing running it says **Start the next video**.
68
+
69
+ - With more than three running, **See all N running** opens Projects filtered to running.
70
+ - Queued runs show as one line under them, for example "Queued, waiting to start (2): Hypatia, Cleopatra", with **See queued** (Projects filtered to queued).
71
+
72
+ Time left comes from the step's own pace once it has counted something, otherwise from how long the same kind of step took in your finished runs. Past that it says **taking longer than usual**, and with nothing to go by **time left unknown**.
73
+
74
+ ### Coming up
75
+
76
+ The schedule runs due in the next 7 days, with the template and topic each will use, up to 6. Paused schedules show too. **Calendar** opens the calendar to plan or move runs. With none it says **No scheduled runs this week. Plan some on the calendar.** See [Calendar](Calendar).
77
+
78
+ ### Ready to upload
79
+
80
+ Finished videos you have not marked uploaded, up to 4. The bundled samples never show here.
81
+
82
+ - **Prepare upload** lists everything YouTube Studio asks for, with Copy buttons. Slopify never uploads for you. See [Publishing to YouTube](Publishing-to-YouTube).
83
+ - **Mark uploaded** takes the video off this list. Projects still has it.
84
+
85
+ ### This week
86
+
87
+ Since Monday, for the picked channel:
88
+
89
+ | Figure | Meaning |
90
+ | --- | --- |
91
+ | **videos made** | Videos finished since Monday. |
92
+ | **spent** | What their provider calls cost. Calls billed to a command-line plan cost nothing per call; **~$X via API** says what they would have cost with API keys. Calls with no known price are counted separately (**N calls without a price**). |
93
+ | **weekly <plan> limit** | How much of each command-line plan's weekly limit is used, from the tool's last reading. The bar turns amber at 80%. |
94
+
95
+ See [Costs and Run Cost](Costs-and-Run-Cost).
96
+
97
+ ## Projects
98
+
99
+ **Where to find it:** the sidebar → **Projects**.
100
+
101
+ Every run ever started, newest first, for the channel picked in the sidebar. The heading says how many projects there are and for which channel. **New video** opens Play.
102
+
103
+ ### Search and filter
104
+
105
+ 1. Type in **Search projects** to match titles.
106
+ 2. Pick a filter under **Show**:
107
+
108
+ | Filter | Shows |
109
+ | --- | --- |
110
+ | **All** | Everything. |
111
+ | **Running** | Running and paused projects. |
112
+ | **Queued** | Projects waiting for their turn in the video queue. |
113
+ | **Needs you** | Projects waiting at a review or held step. |
114
+ | **Ready to upload** | Finished videos not marked uploaded. |
115
+ | **Failed** | Failed projects and those **Done with problems**. |
116
+
117
+ The filter is part of the address, so a link can open Projects on it: `/projects?show=running`, `queued`, `waiting` (Needs you), `ready` or `failed`. Press `/` to jump to the search box. The command palette has shortcuts: **Show projects that need you**, **Show videos ready to upload** and **Show failed projects**.
118
+
119
+ On a wide screen, **At a glance** beside the list counts the projects under each filter.
120
+
121
+ If nothing matches, the list says **No project matches. Clear the search or pick All.** If the picked channel has no projects, pick **All channels** in the sidebar.
122
+
123
+ ### What each row shows
124
+
125
+ - The title, with a **Sample** badge on the bundled samples. A press anywhere on the row opens the project.
126
+ - For an audiobook that is a chapter of a book, **Book · Chapter N**.
127
+ - What it was made of and when: the article prompt and format, for example `Documentary dossier · 16:9 · started …`.
128
+ - A progress bar with **N% done** while it runs.
129
+ - Its state:
130
+
131
+ | State | Meaning |
132
+ | --- | --- |
133
+ | **Running** | A step is being made. A run waiting for a CLI plan says **Waiting for Codex limits (resets at 14:00)** instead. |
134
+ | **Paused** | Paused by you; nothing runs until you resume. |
135
+ | **Queued** | Waiting for its turn in the video queue. |
136
+ | **Waiting for you** | Held at a review or checkpoint. |
137
+ | **Done** | Finished. |
138
+ | **Done with problems** | Finished, but part of it failed. |
139
+ | **Failed** | Stopped with an error. |
140
+ | **Canceled** | You cancelled it. |
141
+
142
+ - **Mark uploaded** on a finished video; once marked, an **Uploaded** badge with **Undo**.
143
+ - The delete button (bin icon).
144
+
145
+ ### Delete a project
146
+
147
+ 1. Press the bin icon on its row. While the project is running it is disabled: cancel the run first.
148
+ 2. Confirm with **Delete project** (or **Keep it** to back out).
149
+ 3. The project goes to the trash for 30 days. Restore it or delete it for good in Settings → **Trash**. See [Trash](Trash).
150
+
151
+ ### The video queue
152
+
153
+ Videos started together (a batch from Play, for example) run one at a time. The queue itself is on the Calendar, under **Batch queue**, numbered in the order they run (see [Calendar](Calendar#the-batch-queue)); Projects only links to it (**Video queue** → **Open calendar**) and has the **Queued** filter. Pausing a project holds the queue; when one fails or is cancelled, the next one starts. The project page has the same list behind a **Queue · N** button in its right rail. See [Templates](Templates) and [Schedules](Schedules) for batches.
154
+
155
+ ### When there are no projects
156
+
157
+ Projects shows **No projects yet** with **Make your first video** (opens Play), and an invitation to the interactive tutorial with **Start tutorial**.
158
+
159
+ ## Tips
160
+
161
+ - The sidebar's **N running** link jumps straight to Running now on Home.
162
+ - Home and Projects follow the Channel picker. If a project seems missing, switch to **All channels**.
163
+ - Updates wait for running work. See [Updating and Patch Notes](Updating-and-Patch-Notes).
164
+
165
+ ## Related pages
166
+
167
+ - [Project Page](Project-Page)
168
+ - [Play Overview](Play-Overview)
169
+ - [Channels](Channels)
170
+ - [Calendar](Calendar)
171
+ - [Schedules](Schedules)
172
+ - [Reviews and Checkpoints](Reviews-and-Checkpoints)
173
+ - [Publishing to YouTube](Publishing-to-YouTube)
174
+ - [Keyboard Shortcuts and Command Palette](Keyboard-Shortcuts-and-Command-Palette)
@@ -0,0 +1,119 @@
1
+ # Slopify Wiki
2
+
3
+ Slopify turns a prompt and a few keywords into a narrated, captioned video. It writes the article, narrates it, makes the images and cuts the video, and can also give you shorts, a PDF of the article and a ready-to-paste YouTube description. It runs as a local web app on your own machine, with your own provider keys or the Claude Code, Codex or Gemini CLI you already use. It is free.
4
+
5
+ These pages cover Slopify 3.0: every screen, every setting and every workflow, step by step.
6
+
7
+ **Read them inside Slopify too:** the same pages are under **Help → Tutorials** in the app (the address is `/help/tutorials/<Page>`, for example `/help/tutorials/Install`), with a search box over all of them. From the command palette (`Ctrl+K`), **Open tutorial: <page>** jumps straight to one. See [Keyboard and Ctrl+K](Keyboard-Shortcuts-and-Command-Palette#open-a-tutorial-page).
8
+
9
+ ## Start here
10
+
11
+ 1. [Install](Install) Slopify (Node 26 or newer) or run it in [Docker](Docker).
12
+ 2. Open it at `http://127.0.0.1:6969` and follow [First launch and welcome](First-Launch-and-Welcome).
13
+ 3. Make [your first 60-second short](Your-First-Short). With a signed-in CLI and your computer's own voice it needs no keys at all.
14
+ 4. Add the keys you want in [Providers and keys](Providers-and-Keys) (press **Test** to check a key before you save it), or sign in to an [AI CLI](AI-CLIs).
15
+ 5. Make a full video from [Play](Play-Overview).
16
+
17
+ ## How a video gets made
18
+
19
+ 1. **Settings:** add provider keys and voices, or use a signed-in CLI.
20
+ 2. **Library → Prompts:** write article, image and thumbnail prompts once, with `{{keywords}}` where the subject goes.
21
+ 3. **Play:** pick a template or prompts, type the topic, choose your outputs, check the cost estimate, press **Start run** (or **Queue 3 videos** for several topics).
22
+ 4. **The project page** shows each stage as it runs. Download the video, captions, PDF and description when it is done.
23
+ 5. **Edit settings** on the project (the Edit project form) to change anything. Slopify remakes only what the change affects.
24
+
25
+ ## Contents
26
+
27
+ ### Getting started
28
+ | Page | What it covers |
29
+ |---|---|
30
+ | [Install](Install) | Installing with npx or npm, command-line options, ffmpeg, telemetry |
31
+ | [Docker](Docker) | Running Slopify in Docker with the compose file and the CLI helper |
32
+ | [First launch and welcome](First-Launch-and-Welcome) | The three-step first run, the three samples, Make my own copy, starter packs |
33
+ | [Your first short](Your-First-Short) | A 60-second short from topic to finished video |
34
+ | [Home and Projects](Home-and-Projects) | The sidebar, the Home dashboard and the Projects list |
35
+ | [Where your files live](Where-Your-Files-Live) | Documents/Slopify, the data folder and moving your files |
36
+ | [Start at login](Start-at-Login) | Starting Slopify when you log in |
37
+ | [Updating and patch notes](Updating-and-Patch-Notes) | Updating, going back, and reading patch notes |
38
+ | [Uninstalling and moving](Uninstalling-and-Moving) | Removing Slopify and moving between Docker and a native install |
39
+
40
+ ### Providers
41
+ | Page | What it covers |
42
+ |---|---|
43
+ | [Providers and keys](Providers-and-Keys) | Every API provider, testing and saving keys, the system voice, Settings → Voices |
44
+ | [AI CLIs](AI-CLIs) | Claude Code, Codex and Gemini CLI: sign-in, use and plan limits |
45
+ | [Models](Models) | The model catalogue, retired models and switching |
46
+ | [Costs and run cost](Costs-and-Run-Cost) | Cost estimates, the run cost line, the Run cost tab and usage |
47
+
48
+ ### Making a video
49
+ | Page | What it covers |
50
+ |---|---|
51
+ | [Play overview](Play-Overview) | Templates, topics, batches, drafts, the estimate, Start and Queue |
52
+ | [Title and article](Play-Title-and-Article) | Title patterns, article prompts, research and your own text |
53
+ | [Narration](Play-Narration) | Voices, pauses, volume, glossary, aliases, described tables |
54
+ | [Images](Play-Images) | Image prompts, the establishing image, cast, image pacing, Codex |
55
+ | [Video and style](Play-Video-and-Style) | Cuts, the Look, transitions, chapter cards, motion, captions, ambient sound |
56
+ | [Outputs](Play-Outputs) | Video, shorts, description, PDF, thumbnails and audio exports |
57
+ | [Reviews and checkpoints](Reviews-and-Checkpoints) | Automatic reviews and pausing a run for you to check |
58
+
59
+ ### Formats and outputs
60
+ | Page | What it covers |
61
+ |---|---|
62
+ | [Multiple voices](Multiple-Voices) | Audiobook, podcast, radio drama and interview formats |
63
+ | [Other languages](Other-Languages) | Making videos in languages other than English |
64
+ | [Shorts](Shorts) | Vertical shorts cut from the long video |
65
+ | [YouTube description](YouTube-Description) | Description, chapters, hashtags and tags |
66
+ | [PDF documents](PDF-Documents) | The article as a PDF with contents, sources and a cover |
67
+
68
+ ### The project page
69
+ | Page | What it covers |
70
+ |---|---|
71
+ | [Project page](Project-Page) | The next action, the run cost line, time left, downloads, the players, freeing space |
72
+ | [Editing a project](Editing-a-Project) | Edit project, remaking outdated work, the rebuild review, history |
73
+ | [Video editing](Video-Editing) | Video, caption, subtitle and ambient sound controls on a project |
74
+ | [Recovery and retries](Recovery-and-Retries) | Fix-it buttons, retries and waiting for plan limits |
75
+ | [Trash](Trash) | Deleted projects and how to get them back |
76
+
77
+ ### Publishing
78
+ | Page | What it covers |
79
+ |---|---|
80
+ | [Publishing to YouTube](Publishing-to-YouTube) | Prepare upload, AI use disclosure, chapters and links |
81
+ | [Studio extension](Studio-Extension) | The browser extension that fills YouTube Studio's upload dialog |
82
+
83
+ ### Automation
84
+ | Page | What it covers |
85
+ |---|---|
86
+ | [Templates](Templates) | Saving and reusing a setup |
87
+ | [Schedules](Schedules) | Videos on a cadence, topic lists and self-filling topics |
88
+ | [Calendar](Calendar) | What needs you, what is coming up, the video queue |
89
+ | [Notifications](Notifications) | Browser and phone (ntfy) notifications |
90
+ | [Backups](Backups) | Automatic backups, export and import |
91
+
92
+ ### Channels
93
+ | Page | What it covers |
94
+ |---|---|
95
+ | [Channels](Channels) | Brand kit, episode memory, existing videos and channel links |
96
+ | [Cast library](Cast-Library) | Recurring characters with pictures and voices |
97
+
98
+ ### Library
99
+ | Page | What it covers |
100
+ |---|---|
101
+ | [Library overview](Library-Overview) | What the Library holds |
102
+ | [Prompts](Prompts) | Writing prompts, keyword slots, history and restore |
103
+ | [Intros and outros](Intros-and-Outros) | Reusable openings and closings |
104
+ | [Aliases and glossary](Narration-Aliases-and-Glossary) | How the narrator says words |
105
+ | [Document themes](Document-Themes) | The look of the PDF |
106
+
107
+ ### Reference
108
+ | Page | What it covers |
109
+ |---|---|
110
+ | [Settings reference](Settings-Reference) | Every Settings section and control |
111
+ | [Keyboard and Ctrl+K](Keyboard-Shortcuts-and-Command-Palette) | Shortcuts and the command palette |
112
+ | [Troubleshooting](Troubleshooting) | Common errors and how to fix them |
113
+ | [FAQ](FAQ) | Short answers to common questions |
114
+
115
+ ## Getting help inside the app
116
+
117
+ Every setting in Slopify has an info button beside it that explains what it does. If something goes wrong, the project page shows a button that names the fix. The question-mark button at the foot of the sidebar starts the interactive tutorial.
118
+
119
+ These pages ship inside Slopify too, so they work offline and match the version you run: the book button beside the question mark opens **Help → Tutorials**, with the same groups as this wiki's sidebar and a search across every page. Many info buttons end in **Learn more**, which opens the matching section there, and `Ctrl+K` → **Open tutorial: <page>** opens any page. See [Troubleshooting](Troubleshooting) for the rest.