@gentbajko/slopify 3.0.0 → 3.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 (198) hide show
  1. package/README.md +6 -4
  2. package/dist/adapter-registry.js +28 -0
  3. package/dist/adapters/alignment/text.js +3 -1
  4. package/dist/adapters/key-probes.js +57 -8
  5. package/dist/adapters/tts/gemini.js +206 -0
  6. package/dist/adapters/tts/pcm-mp3.js +62 -0
  7. package/dist/adapters/tts/system.js +147 -0
  8. package/dist/assets/models.yaml +38 -0
  9. package/dist/assets/style-preview/narration.mp3 +0 -0
  10. package/dist/assets/style-preview/tall-1.jpg +0 -0
  11. package/dist/assets/style-preview/tall-2.jpg +0 -0
  12. package/dist/assets/style-preview/tall-3.jpg +0 -0
  13. package/dist/assets/style-preview/wide-1.jpg +0 -0
  14. package/dist/assets/style-preview/wide-2.jpg +0 -0
  15. package/dist/assets/style-preview/wide-3.jpg +0 -0
  16. package/dist/catalog/registry.js +4 -1
  17. package/dist/catalog/validate.js +2 -2
  18. package/dist/edge/autostart/docker-record.js +2 -2
  19. package/dist/edge/autostart/docker.js +68 -0
  20. package/dist/edge/autostart/prompt.js +7 -1
  21. package/dist/edge/autostart/service.js +18 -9
  22. package/dist/edge/cli-args.js +71 -0
  23. package/dist/edge/cli.js +11 -16
  24. package/dist/edge/docker-install/run.js +7 -1
  25. package/dist/edge/events/hub.js +3 -1
  26. package/dist/edge/http/actions.js +6 -1
  27. package/dist/edge/http/app.js +2 -0
  28. package/dist/edge/http/byte-range.js +42 -0
  29. package/dist/edge/http/diagnostics.js +1 -0
  30. package/dist/edge/http/draft-files.js +2 -4
  31. package/dist/edge/http/files.js +10 -6
  32. package/dist/edge/http/onboarding.js +64 -4
  33. package/dist/edge/http/project-templates.js +19 -2
  34. package/dist/edge/http/projects.js +6 -1
  35. package/dist/edge/http/providers.js +39 -9
  36. package/dist/edge/http/reviews.js +18 -8
  37. package/dist/edge/http/revision-files.js +2 -4
  38. package/dist/edge/http/schedules.js +9 -5
  39. package/dist/edge/http/storage.js +16 -2
  40. package/dist/edge/http/studio.js +111 -31
  41. package/dist/edge/http/style-preview.js +3 -42
  42. package/dist/edge/http/tutorials.js +59 -0
  43. package/dist/edge/http/youtube-edits.js +11 -2
  44. package/dist/extension/slopify-studio-chrome.zip +0 -0
  45. package/dist/extension/slopify-studio-firefox.zip +0 -0
  46. package/dist/host-cli/gemini-login.js +83 -0
  47. package/dist/host-cli/status.js +4 -2
  48. package/dist/kernel/db/migrations/0041-cast-hosts.sql +3 -0
  49. package/dist/kernel/ports/model.js +5 -3
  50. package/dist/kernel/ports/system-speech.js +203 -0
  51. package/dist/kernel/runner/graph.js +17 -1
  52. package/dist/kernel/runner/index.js +4 -4
  53. package/dist/kernel/runner/providers.js +1 -1
  54. package/dist/main.js +5 -0
  55. package/dist/model-catalog.js +2 -0
  56. package/dist/patch-notes/3.0.1.md +105 -0
  57. package/dist/patch-notes/3.0.2.md +20 -0
  58. package/dist/patch-notes/index.json +12 -0
  59. package/dist/slices/admission/rules.js +3 -3
  60. package/dist/slices/admission/start.js +1 -1
  61. package/dist/slices/channels/cast-match.js +1 -1
  62. package/dist/slices/channels/repo.js +3 -0
  63. package/dist/slices/channels/schema.js +23 -0
  64. package/dist/slices/channels/service.js +6 -6
  65. package/dist/slices/control/index.js +3 -1
  66. package/dist/slices/control/providers.js +4 -1
  67. package/dist/slices/episodes/related.js +2 -2
  68. package/dist/slices/estimate/requests.js +9 -1
  69. package/dist/slices/eta/history.js +56 -0
  70. package/dist/slices/eta/model.js +63 -0
  71. package/dist/slices/eta/view.js +25 -0
  72. package/dist/slices/fixes/rules.js +1 -1
  73. package/dist/slices/fonts/coverage.js +1 -1
  74. package/dist/slices/loudness/model.js +1 -1
  75. package/dist/slices/model-upkeep/usage.js +4 -2
  76. package/dist/slices/narration/pauses-model.js +1 -1
  77. package/dist/slices/narration/pronunciation.js +2 -2
  78. package/dist/slices/notifications/notifier.js +28 -2
  79. package/dist/slices/notifications/rules.js +26 -2
  80. package/dist/slices/onboarding/first-run.js +40 -14
  81. package/dist/slices/onboarding/full-video.js +81 -0
  82. package/dist/slices/onboarding/model.js +21 -0
  83. package/dist/slices/onboarding/quick-short.js +25 -10
  84. package/dist/slices/play-drafts/convert.js +3 -3
  85. package/dist/slices/play-drafts/readiness.js +1 -1
  86. package/dist/slices/project-templates/from-project.js +10 -3
  87. package/dist/slices/project-templates/next-chapter.js +94 -0
  88. package/dist/slices/project-templates/one-off.js +1 -1
  89. package/dist/slices/project-templates/schema.js +7 -1
  90. package/dist/slices/rebuild/recipe-exports.js +5 -0
  91. package/dist/slices/rebuild/recipe-save.js +1 -1
  92. package/dist/slices/rebuild/recipe-voices.js +1 -1
  93. package/dist/slices/rebuild/review-redo.js +15 -0
  94. package/dist/slices/rebuild/runtime-export-bed.js +1 -1
  95. package/dist/slices/rebuild/runtime-review.js +35 -5
  96. package/dist/slices/rebuild/runtime-store.js +23 -1
  97. package/dist/slices/rebuild/runtime-voices.js +2 -2
  98. package/dist/slices/rebuild/service-readiness.js +3 -3
  99. package/dist/slices/reviews/repo.js +16 -4
  100. package/dist/slices/run-cost/panel.js +30 -8
  101. package/dist/slices/run-cost/pricing.js +4 -1
  102. package/dist/slices/schedules/agenda.js +66 -2
  103. package/dist/slices/schedules/repo.js +1 -1
  104. package/dist/slices/schedules/scheduler.js +1 -1
  105. package/dist/slices/schedules/schema.js +43 -2
  106. package/dist/slices/schedules/similar.js +41 -3
  107. package/dist/slices/schedules/topic-list.js +2 -2
  108. package/dist/slices/schedules/topics.js +118 -17
  109. package/dist/slices/settings/first-run.js +5 -1
  110. package/dist/slices/settings/health.js +64 -7
  111. package/dist/slices/settings/key-guides.js +17 -7
  112. package/dist/slices/settings/key-test.js +12 -4
  113. package/dist/slices/settings/keys.js +10 -5
  114. package/dist/slices/settings/model-reach.js +52 -0
  115. package/dist/slices/settings/model.js +49 -0
  116. package/dist/slices/settings/models.js +5 -1
  117. package/dist/slices/settings/readiness.js +14 -2
  118. package/dist/slices/settings/tutorial-schema.js +5 -0
  119. package/dist/slices/shorts/render.js +18 -17
  120. package/dist/slices/storage/documents.js +11 -3
  121. package/dist/slices/storage/downloads.js +33 -1
  122. package/dist/slices/storage/portable.js +4 -2
  123. package/dist/slices/studio/model.js +2 -0
  124. package/dist/slices/studio/pack.js +6 -4
  125. package/dist/slices/studio/queue.js +69 -0
  126. package/dist/slices/studio/settings.js +42 -5
  127. package/dist/slices/style-preview/narration.js +33 -0
  128. package/dist/slices/style-preview/render.js +43 -56
  129. package/dist/slices/style-preview/schema.js +17 -3
  130. package/dist/slices/style-preview/service.js +3 -4
  131. package/dist/slices/style-preview/settings.js +75 -25
  132. package/dist/slices/tutorials/anchors.js +57 -0
  133. package/dist/slices/tutorials/library.js +185 -0
  134. package/dist/slices/voices/audio-files.js +7 -2
  135. package/dist/slices/voices/cast.js +26 -8
  136. package/dist/slices/voices/grouping.js +10 -0
  137. package/dist/slices/voices/model.js +49 -10
  138. package/dist/slices/voices/script.js +1 -1
  139. package/dist/slices/youtube/edits-repo.js +19 -4
  140. package/dist/slices/youtube/placeholders.js +2 -2
  141. package/dist/tutorials/AI-CLIs.md +146 -0
  142. package/dist/tutorials/Backups.md +121 -0
  143. package/dist/tutorials/Calendar.md +103 -0
  144. package/dist/tutorials/Cast-Library.md +112 -0
  145. package/dist/tutorials/Channels.md +148 -0
  146. package/dist/tutorials/Costs-and-Run-Cost.md +136 -0
  147. package/dist/tutorials/Docker.md +171 -0
  148. package/dist/tutorials/Document-Themes.md +207 -0
  149. package/dist/tutorials/Editing-a-Project.md +204 -0
  150. package/dist/tutorials/FAQ.md +134 -0
  151. package/dist/tutorials/First-Launch-and-Welcome.md +153 -0
  152. package/dist/tutorials/Home-and-Projects.md +174 -0
  153. package/dist/tutorials/Home.md +119 -0
  154. package/dist/tutorials/Install.md +154 -0
  155. package/dist/tutorials/Intros-and-Outros.md +86 -0
  156. package/dist/tutorials/Keyboard-Shortcuts-and-Command-Palette.md +215 -0
  157. package/dist/tutorials/Library-Overview.md +75 -0
  158. package/dist/tutorials/Models.md +133 -0
  159. package/dist/tutorials/Multiple-Voices.md +161 -0
  160. package/dist/tutorials/Narration-Aliases-and-Glossary.md +129 -0
  161. package/dist/tutorials/Notifications.md +86 -0
  162. package/dist/tutorials/Other-Languages.md +110 -0
  163. package/dist/tutorials/PDF-Documents.md +100 -0
  164. package/dist/tutorials/Play-Images.md +135 -0
  165. package/dist/tutorials/Play-Narration.md +167 -0
  166. package/dist/tutorials/Play-Outputs.md +109 -0
  167. package/dist/tutorials/Play-Overview.md +216 -0
  168. package/dist/tutorials/Play-Title-and-Article.md +135 -0
  169. package/dist/tutorials/Play-Video-and-Style.md +143 -0
  170. package/dist/tutorials/Project-Page.md +228 -0
  171. package/dist/tutorials/Prompts.md +136 -0
  172. package/dist/tutorials/Providers-and-Keys.md +290 -0
  173. package/dist/tutorials/Publishing-to-YouTube.md +135 -0
  174. package/dist/tutorials/Recovery-and-Retries.md +141 -0
  175. package/dist/tutorials/Reviews-and-Checkpoints.md +143 -0
  176. package/dist/tutorials/Schedules.md +154 -0
  177. package/dist/tutorials/Settings-Reference.md +258 -0
  178. package/dist/tutorials/Shorts.md +116 -0
  179. package/dist/tutorials/Start-at-Login.md +126 -0
  180. package/dist/tutorials/Studio-Extension.md +146 -0
  181. package/dist/tutorials/Templates.md +146 -0
  182. package/dist/tutorials/Trash.md +87 -0
  183. package/dist/tutorials/Troubleshooting.md +149 -0
  184. package/dist/tutorials/Uninstalling-and-Moving.md +113 -0
  185. package/dist/tutorials/Updating-and-Patch-Notes.md +120 -0
  186. package/dist/tutorials/Video-Editing.md +135 -0
  187. package/dist/tutorials/Where-Your-Files-Live.md +149 -0
  188. package/dist/tutorials/YouTube-Description.md +132 -0
  189. package/dist/tutorials/Your-First-Short.md +125 -0
  190. package/dist/tutorials/_Footer.md +1 -0
  191. package/dist/tutorials/_Sidebar.md +69 -0
  192. package/dist/web/assets/index-C4McGNke.js +307 -0
  193. package/dist/web/assets/index-DBLSfqA-.css +1 -0
  194. package/dist/web/assets/{pdf-BG8n_uc5.js → pdf-COowcLcz.js} +1 -1
  195. package/dist/web/index.html +2 -2
  196. package/package.json +2 -2
  197. package/dist/web/assets/index-CUA2sUxU.css +0 -1
  198. package/dist/web/assets/index-CX590kE-.js +0 -303
@@ -0,0 +1,143 @@
1
+ # Reviews and Checkpoints
2
+
3
+ Two ways to keep an eye on a run before it spends more. A **review checkpoint** holds the run before a step until you approve it, so you can check and edit what came before. An **automatic review** has a reviewer model check each finished item (the article, every image, the narration, the thumbnail, every short) and flag it, or make it again, when it fails.
4
+
5
+ **Where to find it:** Play → **Reviews** row → **Change**, which opens the **Review** side panel. **Review the whole setup** in the right rail and `Ctrl+Enter` open the same panel. After the run starts: the project page → **Checkpoints**, and Edit project → **Reviews**.
6
+
7
+ ## The Review side panel
8
+
9
+ The panel holds, from top to bottom:
10
+
11
+ 1. Any setup errors. Press one to jump to the field.
12
+ 2. **Review checkpoints**.
13
+ 3. **Automatic reviews**.
14
+ 4. The whole setup in words, with **Read the resolved prompt** (or **Read the supplied article and resolved prompts**), which shows each prompt exactly as it will be sent.
15
+
16
+ The estimate and the Play key stay in the right rail. Opening the panel also asks the server to check the setup, since it knows rules the browser cannot see. **Refresh review** in the right rail does the same and recalculates the estimate now, instead of waiting for you to pause typing. Use it after changing a prompt in the Library.
17
+
18
+ The Reviews row summary says what is set, for example `1 checkpoint · 2 automatic reviews`, or `No checkpoints · no automatic reviews`.
19
+
20
+ ## Review checkpoints
21
+
22
+ A checkpoint holds the run before a step so you can check and edit what came before it. Steps that do not depend on it carry on. You approve each checkpoint on the project page to continue.
23
+
24
+ | Checkpoint | Holds | Available when |
25
+ | --- | --- | --- |
26
+ | **Before Audio** | The narration and what depends on it | Narration Source is **Generate** |
27
+ | **Before Images** | The images and what depends on them | Images Source is **Generate** |
28
+ | **Before Video / export** | The render and the exports | The video is on, or narration is on |
29
+
30
+ A step must be generated to have a checkpoint. A greyed checkbox says why: "Choose Generate for Images to add this checkpoint", or "Enable Video or Audio to review before export." A ticked checkpoint whose step you later turn off says "This step is unavailable. Remove its checkpoint or enable the step."
31
+
32
+ Default: no checkpoints.
33
+
34
+ ### Add a checkpoint on Play
35
+
36
+ 1. Open the **Reviews** row (or press **Review the whole setup**).
37
+ 2. Under **Review checkpoints**, tick **Before Audio**, **Before Images** or **Before Video / export**.
38
+ 3. Press **Refresh review** to see, per video, which steps each checkpoint also holds ("Run 1 · Before Images", "Also holds: Video / export.").
39
+ 4. Start the run.
40
+
41
+ Starting the run does not approve the checkpoints. The run stops at each one until you approve it on the project page.
42
+
43
+ ### Continue a run held at a checkpoint
44
+
45
+ When the run reaches a checkpoint, the held step waits and the project's next action says so.
46
+
47
+ 1. Open the project. The right rail's next action names what runs after approval, for example **Approve and make the images**, **Approve and record the narration** or **Approve and render the video**.
48
+ 2. Check and edit what came before: read the article, listen to the narration, look at the images. See [Editing a Project](Editing-a-Project).
49
+ 3. Press the next action, or open **Checkpoints** in the project's side list (it shows how many are held) and press **Approve Images checkpoint** (or the stage you are at).
50
+
51
+ The checkpoint then says "Checkpoint approved. Work will run when its dependencies are ready." Each checkpoint card shows its state:
52
+
53
+ | Message | Meaning |
54
+ | --- | --- |
55
+ | "Images is held for your review. Its dependent work waits for this approval; independent work can continue." | Waiting for you. |
56
+ | "Inputs changed. Review the current revision before approving." | You edited something the held step uses. Check the new version before approving. |
57
+ | "Authorized for this revision. Work can run when dependencies are ready and the project is resumed." | Approved; it runs when it can. |
58
+ | "Checkpoint satisfied. Its reviewed work is complete." | Done. |
59
+
60
+ If the project is paused, the panel says "The project is paused. Continue the run before approving held work." Pausing always applies on top of checkpoints.
61
+
62
+ ### Change checkpoints after the run started
63
+
64
+ On the project page → **Checkpoints** → **Checkpoint choices**:
65
+
66
+ 1. Tick a step that has not started to add a checkpoint, or untick one to remove it. Work already admitted for an unticked step carries on when ready.
67
+ 2. Press **Save checkpoints**.
68
+
69
+ Only generated steps can have one. If the project was edited elsewhere in the meantime, press **Reload checkpoint choices** and make your change again.
70
+
71
+ ## Automatic reviews
72
+
73
+ A reviewer model checks each finished item and saves its verdict and reasons on the project page. Each review is a text-model call, counted in usage and in the estimate.
74
+
75
+ | Option | What it does | Default / range |
76
+ | --- | --- | --- |
77
+ | **Reviewer** | Who runs the review model. Picture reviews (images, the thumbnail and shorts) need Claude Code or Codex, which can look at images; other providers review text only. | None |
78
+ | **Reviewer model** | The model that judges each item. A stronger model catches more but costs more per review. It can differ from the model that wrote the text. | None |
79
+ | **Redos per item** | How many times **Flag and redo** makes a failed item again before it keeps the last one and flags it. Each redo costs the item again plus one more review. | 2; 0 to 5 |
80
+
81
+ Then, for each stage (**Article**, **Images**, **Narration**, **Thumbnail**, **Shorts**), pick a mode and a prompt:
82
+
83
+ | Mode | What happens to a failed item |
84
+ | --- | --- |
85
+ | **Off** (default) | No review. |
86
+ | **Flag only** | The item is marked failed, with the reasons, and the run carries on. |
87
+ | **Flag and redo** | The item is made again and reviewed again, up to **Redos per item**. After that it is kept and flagged. It never loops. |
88
+
89
+ The prompt next to each mode is **Built-in** or a **Review** prompt from the Library (see [Prompts](Prompts)). It is greyed while the mode is Off. A stage the run makes nothing for is greyed too; a stage set to review but with nothing to review says "This stage makes nothing to review in this run."
90
+
91
+ ### What each review checks
92
+
93
+ | Stage | The built-in reviewer checks |
94
+ | --- | --- |
95
+ | **Article** | The article prompt's rules (length, structure, tone), no invented lore, no repeated sections. The research notes are included. |
96
+ | **Images** | Malformed hands or bodies, stray text or letters, that it matches its brief, and that it matches the establishing image when one is on. |
97
+ | **Narration** | Nothing missing or garbled compared with the text: the reviewer reads what the word timing heard and the stretches it could not hear. |
98
+ | **Thumbnail** | Readable at phone size, clear subject. |
99
+ | **Shorts** | The short's images at phone size: clear subject, no stray text, fits the title. |
100
+
101
+ ### Set up automatic reviews
102
+
103
+ 1. Open the **Reviews** row.
104
+ 2. Pick the **Reviewer** and **Reviewer model**. For image, thumbnail or shorts reviews, pick Claude Code or Codex. With another reviewer, the panel says "Picture reviews need Claude Code or Codex as the reviewer: Slopify can't show pictures to this one." and the run cannot start.
105
+ 3. Optional: set **Redos per item** (empty means 2).
106
+ 4. For each stage you want checked, pick **Flag only** or **Flag and redo**, and optionally a Review prompt.
107
+ 5. Check the estimate: each review adds one text-model call. Redos are not in the estimate; each costs what the item cost, at most the redos allowed.
108
+
109
+ ### Reviews on the project page
110
+
111
+ Beside the article, the narration, the thumbnail and each short, and on each image tile, the verdict shows as **Review passed**, **Flagged by review**, **Waiting to be made again**, **Being made again**, **Redone after review** or **Accepted by you**, with the reasons. For a failed item nobody has acted on:
112
+
113
+ - **Overrule** accepts it as it is.
114
+ - **Redo** makes it again (a new version of the project, then the item and what depends on it are rebuilt), and it is reviewed again.
115
+
116
+ Both buttons wait while other work on the project is running, with one exception: while a **Flag and redo** review's automatic redo is still waiting to start (**Waiting to be made again**), **Overrule** stays available and calls the redo off. The item is accepted as it is, the badge turns to **Accepted by you**, and the work waiting on it goes ahead. Once the redo has started, Overrule is greyed: "Slopify is already making this item again; wait for the new version".
117
+
118
+ When an automatic review flags an item and keeps it (its redos ran out, or the stage is on **Flag only**), Slopify sends a **Review needs a decision** notification (see [Notifications](Notifications)), and the project shows in the Calendar's **Needs you** with **Open to review** (see [Calendar](Calendar#needs-you)). Everything that uses a reviewed item waits for its review, in the same way a checkpoint holds work. Reviewing the same output with the same reviewer and prompt again reuses the earlier verdict.
119
+
120
+ ## Checkpoints or reviews?
121
+
122
+ | You want to | Use |
123
+ | --- | --- |
124
+ | Read the article yourself before paying for the narration | **Before Audio** checkpoint |
125
+ | Look at the images before the render | **Before Images** is too early; use **Before Video / export** |
126
+ | Catch broken hands or stray text without watching every run | **Images** review, **Flag and redo** |
127
+ | Run unattended on a schedule and fix things later | Reviews on **Flag only**, no checkpoints |
128
+
129
+ ## Tips
130
+
131
+ - Checkpoints and reviews are saved with a template, so every video started from it gets them. See [Templates](Templates).
132
+ - Keep **Redos per item** low for images: five redos is already six paid images for one slot.
133
+ - You can change reviews later in Edit project → **Reviews**. See [Editing a Project](Editing-a-Project).
134
+
135
+ ## Related pages
136
+
137
+ - [Play Overview](Play-Overview)
138
+ - [Project Page](Project-Page)
139
+ - [Editing a Project](Editing-a-Project)
140
+ - [Recovery and Retries](Recovery-and-Retries)
141
+ - [Prompts](Prompts)
142
+ - [AI CLIs](AI-CLIs)
143
+ - [Costs and Run Cost](Costs-and-Run-Cost)
@@ -0,0 +1,154 @@
1
+ # Schedules
2
+
3
+ A schedule starts a new project from a saved template at a set local time: every day, on chosen weekdays, or once. Give it a list of topics and each run takes the next one. Turn on topic generation and it asks your text model for new topics before the list runs dry.
4
+
5
+ **Where to find it:** **Calendar → Schedules**, the second tab on the calendar. Old `/schedules` links and **G then S** open it too. A channel's **Schedules** tab lists the schedules that run its templates.
6
+
7
+ ## Before you start
8
+
9
+ - A schedule runs a **template**, so save one first: see [Templates](Templates).
10
+ - Runs only start while Slopify is open on this machine. If you want it running all the time, see [Start at login](Start-at-Login) or [Docker](Docker).
11
+ - Each run costs what that template's project costs. Set a **Spend ceiling** to stop an unexpectedly expensive run.
12
+
13
+ ## Create a schedule
14
+
15
+ 1. Open **Calendar**, then the **Schedules** tab, and press **New schedule**.
16
+ 2. Fill in **Name** (up to 200 characters). It never appears in the videos.
17
+ 3. Pick the **Template** each run starts from. The schedule keeps the template's current version.
18
+ 4. Choose the **Cadence** and times (see below).
19
+ 5. Add **Topics** (see below), or leave the list empty to run the template exactly as saved.
20
+ 6. Optional: set up **Topic generation**, a **Spend ceiling** and what happens to a **Missed run**.
21
+ 7. Press **Save schedule**.
22
+
23
+ The schedule appears under **Saved schedules** with its status, next run and the title that run will get. A press anywhere on a schedule's row opens it.
24
+
25
+ ## When it runs
26
+
27
+ | Setting | What it does | Default |
28
+ |---|---|---|
29
+ | **Cadence** | **Every day** runs once a day at the local time. **Selected weekdays** runs on the days you tick. **One time** runs once at a date and time, then shows as completed. Each run starts one project. | Every day |
30
+ | **Local time** | The clock time each run starts, read in the timezone below. | 09:00 |
31
+ | **Weekdays** | The days a Selected weekdays schedule runs. Tick at least one; each ticked day is one project a week. | Mon, Wed and Fri |
32
+ | **Run at** | The date and time of a One time schedule's single run. | |
33
+ | **Timezone** | An IANA zone name such as `Europe/Tirane` or `America/New_York`. When clocks go back, a repeated time uses the earlier one. When clocks go forward, a skipped time moves forward by the gap (a One time schedule refuses a time that doesn't exist; pick another). | This computer's zone |
34
+ | **Missed run** | What happens to a run that came due while Slopify was closed or asleep. **Skip if Slopify was closed** drops a run that is more than 1 minute late and waits for the next time. **Run once when Slopify reopens** starts one catch-up run, however many were missed. | Skip |
35
+ | **Spend ceiling** | The most one run may cost, in US cents: `500` is $5.00. Before each run Slopify estimates the project's cost. When the high estimate is over the ceiling, or the cost can't be estimated, the run fails instead of starting. Leave it empty for no ceiling. | Empty |
36
+
37
+ A schedule never runs two projects at once. If the previous run is still going when the next one comes due, the new run is skipped with the reason "the previous run of this schedule was still going". The detail panel shows this as **Overlap: Skip**.
38
+
39
+ ## Topics
40
+
41
+ Each run takes the first topic, starts one project with it and removes it from the list. When the list is empty the schedule completes, unless topic generation is on. With no topics and generation off, every run uses the template as saved. A schedule holds up to 500 topics.
42
+
43
+ ### Which keyword a topic fills
44
+
45
+ **Each topic fills** is the template keyword a topic replaces, such as `{{Topic}}`. By default it is the keyword the template's project title uses, or else the first one. If the title doesn't use this keyword, every project gets the same title.
46
+
47
+ Every other keyword of the template has an every-run value: the value it gets on every run, such as a word count. The fields are labelled `<keyword> (every run)` and use the same keyword list as Play, Edit project and templates: the line under each says which prompts it feeds ("Feeds …"), or "Not used by any picked prompt". The default is the template's own value. A topic can set its own value for any keyword, which wins for that one run; the field then notes "Unless a topic sets its own."
48
+
49
+ ### Three ways to write the list
50
+
51
+ **How to write the topics** switches between three views of the same list. Switching keeps everything.
52
+
53
+ **One per line.** Type or paste one topic per line. Blank lines are skipped. The first line is the next run. Each topic fills only the topic keyword; every other keyword uses its every-run value. A line that matches a topic already in the queue keeps that topic's own values.
54
+
55
+ **Table.** One row per run, in order. The first column fills the topic keyword. **Set a keyword per topic…** adds a column for another keyword; each cell sets that keyword for that row's run only, and a blank cell uses the every-run value. The **×** in a column's header drops the column. **Project title** shows the title each row will make.
56
+
57
+ **YAML / JSON.** The same list as text, for pasting or keeping in a file. Write a plain list, or one map per topic with the topic under the topic keyword and a line for each other keyword it sets:
58
+
59
+ ```yaml
60
+ - Topic: The Library of Alexandria
61
+ Min. Word Count: 12000
62
+ - The Antikythera mechanism
63
+ ```
64
+
65
+ A JSON array of the same shape works too. Values are read as the text written, so `12000`, `yes` and `0012` stay text. The schedule refuses, naming the topic number and key:
66
+
67
+ - a value that is a list or a map,
68
+ - a key that is not a keyword of the template,
69
+ - a map without the topic keyword,
70
+ - a topic missing a keyword that has no every-run value,
71
+ - a value over 2,000 characters.
72
+
73
+ The schedule saves only once the list reads. **Copy as YAML** and **Export as YAML** give you the queue in this shape.
74
+
75
+ ### Edit the queued topics in place
76
+
77
+ Pick a schedule in the list to see its **Queued topics · N**. You can change the queue there without opening the form:
78
+
79
+ - **Add topic**: type in **New topic** and press **Add topic** (or Enter). It goes to the end of the queue.
80
+ - **Rename**: each topic is a field (**Topic 1**, **Topic 2**, …). Change the words and press Enter or click away to save; `Esc` puts the old words back.
81
+ - **Move up** / **Move down**: the arrow buttons beside a topic.
82
+ - **Remove**: the remove button beside a topic.
83
+
84
+ Each change saves at once and says so, for example "Renamed to “Hypatia of Alexandria”.", with **Undo** on the notice. Only the queue changes; the next run and the other settings stay as they are. If the schedule changed in another tab meanwhile, the change is refused with the reason; reload and try again.
85
+
86
+ ## Topics that find themselves
87
+
88
+ Under **Topic generation**, a schedule can ask an LLM for its next topics so it never runs dry.
89
+
90
+ | Setting | What it does | Default |
91
+ |---|---|---|
92
+ | **New topics** | **Off: add topics yourself.** **Generate and queue directly:** new topics join the end of the list. **Generate and hold for approval:** they wait under **Topics waiting**, and beside the calendar, until you approve them. | Off |
93
+ | **Series brief** | What the series covers, its style and what makes a topic worth a video. Only topic generation reads it. Leave it empty to use the channel's series brief from the channel's **Brand** tab. Up to 4,000 characters. | Empty |
94
+ | **Keep at least this many queued** | Slopify asks for more topics whenever the queue, plus topics waiting for approval, drops below this number. From 1 to 100. | 10 |
95
+ | **Topic generation LLM** | Ticked, it uses the provider and model the template writes with. Untick to pick another **Provider** and **Model**, such as a cheaper one. | The template's LLM |
96
+
97
+ ### How generation works
98
+
99
+ 1. When the queue (plus held topics) drops below your number, Slopify starts one generation in the background. It checks about every 15 seconds.
100
+ 2. It makes one LLM call for what is missing plus 5 spare, at most 50 topics.
101
+ 3. The call carries the series brief and every title already known: this schedule's queued, held, rejected and used topics, the titles of the projects in the schedule's own channel, and that channel's **Existing videos** (see [Channels](Channels)). Another channel's videos don't count: two channels may cover the same subject.
102
+ 4. Suggestions come back ranked most view-worthy first. Slopify drops near-duplicates of titles it already knows, for example "Hypatia" and "Hypatia's Library" count as one video, while "Ptolemaic Egypt" and "Roman Egypt" are two. A topic of one or two words only counts as made when a part of a title (split at `:`, `|`, brackets, `?` and similar) holds exactly those words, leaving aside words like "who", "what" or "explained": "Cleopatra" matches "Who was Cleopatra? The Last Pharaoh", but "Egypt" does not match "The Gods of Ancient Egypt".
103
+ 5. The rest join the queue, or wait for you under **Topics waiting**.
104
+
105
+ Only one generation per schedule runs at a time. A failed try shows its reason on the schedule and is tried again 5 minutes later, not in a loop. A schedule with generation on keeps going when its queue empties; a run that finds no topic is skipped with the reason, instead of running the template without one.
106
+
107
+ ### Generate topics now
108
+
109
+ Press **Generate topics now** to ask for new topics at once: at least 5, even when the queue is full and even during the 5-minute wait after a failed try. It is one LLM call. Saving the schedule also clears the wait.
110
+
111
+ ### Approve held topics
112
+
113
+ When **New topics** is **Generate and hold for approval**, suggestions wait under **Topics waiting** on the schedule (and under **Suggested topics** on the [Calendar](Calendar)):
114
+
115
+ - **Approve** adds one to the end of the queue.
116
+ - **Edit** changes its words first, and can set the template's other keywords for that topic's run: one field per keyword, showing the every-run value (or the template's) as its placeholder. Press **Save**. The values are checked like the queue's and go with the topic into the queue when you approve it. A held row shows the values it sets, for example `Min. Word Count: 12000`.
117
+ - **Reject** drops it for good; it is never suggested again.
118
+ - **Approve all** queues every one in order.
119
+
120
+ Waiting topics count toward **Keep at least**, so nothing more is asked for while they wait. If you set a Notification URL, you get a message such as "5 new topics are waiting for you"; see [Notifications](Notifications).
121
+
122
+ ## Manage a schedule
123
+
124
+ Pick a schedule in the list to see its detail: **When**, **Timezone**, **Next run**, **Topics** left, **Missed runs**, **Overlap**, **Spend ceiling** and its **Run history**.
125
+
126
+ | Action | What it does |
127
+ |---|---|
128
+ | **Edit** | Opens the **Edit schedule** form on the right. Only an active or paused schedule can change. Press **Save changes**. |
129
+ | **Pause** / **Resume** | Stops runs until you resume. Only an active schedule can pause. |
130
+ | **Cancel schedule** | Stops future runs for good. Existing projects and run history are kept. |
131
+ | **Delete schedule** | Moves the schedule to **Settings → Trash** for 30 days. Its run history is kept. Restore brings it back paused. |
132
+ | **Filter schedules by channel** | Shows only one channel's schedules. |
133
+ | **Switch to <model>** | Shown under a schedule whose template picks a retired model, with "<model> is retired." Switches that model to its replacement in one press, as in Settings → **Models**. See [Models](Models). |
134
+
135
+ **Run history** lists each run with its status (running, done, failed, skipped and so on), the time it was due, and either the project it made or the reason it didn't run. Deleted schedules are listed under **Deleted schedules** at the bottom; pick one to see its history.
136
+
137
+ ## Use a newer template version
138
+
139
+ A schedule keeps the template version it was set up with, so saving a newer template doesn't change what the schedule makes. To switch, edit the schedule, pick the template again in **Template**, and save.
140
+
141
+ ## Tips
142
+
143
+ - Try the template once from Play before scheduling it, so you know what one run costs. Then set the **Spend ceiling** a little above that.
144
+ - Hold generated topics for approval at first. Once you trust the suggestions, switch to queue directly.
145
+ - Write a clear series brief: what the series covers, the tone, and what makes a topic worth a video. Add your older videos under the channel's **Existing videos** so they aren't suggested again.
146
+
147
+ ## Related pages
148
+
149
+ - [Calendar](Calendar)
150
+ - [Templates](Templates)
151
+ - [Channels](Channels)
152
+ - [Notifications](Notifications)
153
+ - [Costs and run cost](Costs-and-Run-Cost)
154
+ - [Start at login](Start-at-Login)
@@ -0,0 +1,258 @@
1
+ # Settings Reference
2
+
3
+ Every section of Settings, what each control does and its default. Sections with a page of their own are summarised here and linked for the details.
4
+
5
+ **Where to find it:** **Settings** in the sidebar, or press `Ctrl+K` and run **Open settings**. Settings opens on **Providers**. Pick a section in the rail on the left; on a phone the rail is a row of tabs you can scroll sideways.
6
+
7
+ ## Sections at a glance
8
+
9
+ | Section | What it holds | Details |
10
+ |---|---|---|
11
+ | [General](#general) | Starting Slopify when you log in | [Start-at-Login](Start-at-Login) |
12
+ | [Providers](#providers) | API keys, command-line tools, the system voice, health check | [Providers-and-Keys](Providers-and-Keys), [AI-CLIs](AI-CLIs) |
13
+ | [Voices](#voices) | Voice IDs for narration | [Providers-and-Keys](Providers-and-Keys#add-a-voice) |
14
+ | [Models](#models) | Model catalogue, retired models | [Models](Models) |
15
+ | [Playback & appearance](#playback--appearance) | Silence gap, light or dark, volume levelling | This page |
16
+ | [Notifications](#notifications) | Browser and phone notifications | [Notifications](Notifications) |
17
+ | [Channel links](#channel-links) | A pointer to each channel's own links | [Channels](Channels#channel-links) |
18
+ | [YouTube Studio](#youtube-studio) | Playlist per channel, the Studio extension's download and pairing | [Studio-Extension](Studio-Extension) |
19
+ | [Backup & storage](#backup--storage) | Your files folder, export and import, disk space, samples | [Where-Your-Files-Live](Where-Your-Files-Live) |
20
+ | [Backups](#backups) | The daily automatic backup | [Backups](Backups) |
21
+ | [Trash](#trash) | Deleted items, kept 30 days | [Trash](Trash) |
22
+ | [Usage](#usage) | This install's counters | [Costs-and-Run-Cost](Costs-and-Run-Cost#your-usage-totals-settings--usage) |
23
+ | [Patch notes](#patch-notes) | What changed in each version | [Updating-and-Patch-Notes](Updating-and-Patch-Notes) |
24
+ | [About](#about) | Updates, what's new, links | [Updating-and-Patch-Notes](Updating-and-Patch-Notes) |
25
+
26
+ ## Download diagnostics
27
+
28
+ At the top right of every Settings section.
29
+
30
+ | Control | What it does |
31
+ |---|---|
32
+ | **Download diagnostics** | Saves `slopify-diagnostics.json`: the Slopify version, your system and Node version, which providers are set up or found, the project count and the model catalogue's state. It never holds your keys, prompts or project content. Attach it to a bug report. |
33
+
34
+ You can also press `Ctrl+K` and run **Download diagnostics** from anywhere in Settings.
35
+
36
+ ## General
37
+
38
+ "How Slopify starts on this computer."
39
+
40
+ | Control | What it does | Default |
41
+ |---|---|---|
42
+ | **Start Slopify when I log in** | Slopify starts in the background when you log in, without opening a browser tab; open it from your bookmark. It uses your account's own start-up list, so no administrator password is needed, and turning it off removes exactly what it added. | Off |
43
+
44
+ In Docker, this section only shows whether Docker starts at login ("Starts with Docker: yes / no / unknown"), when the installer checked, and where to change that. With Docker Desktop it names Docker Desktop's own setting: Docker Desktop → Settings → General → **Start Docker Desktop when you sign in to your computer**. Slopify starts whenever Docker does and never changes Docker's own settings. See [Start-at-Login](Start-at-Login).
45
+
46
+ ## Providers
47
+
48
+ "Keys stay on this machine and go only to their provider. Readiness is checked again before each run."
49
+
50
+ | Control | What it does |
51
+ |---|---|
52
+ | Provider lists (**Text**, **Speech**, **Images**) | Every supported provider with its state and kind (**Command line**, **Built in, no key** or **API key**). Pick one to open its setup. |
53
+ | **<Provider> API key** and **Save** | Stores a key on this computer only. Never in backups or exports. |
54
+ | **Test** | Checks a pasted key before you save it (without storing it), or the saved key when the field is empty, with the cheapest harmless call. Nothing is billed. |
55
+ | **System voice** | Shows the speech program found on this computer and its voices, or what to install, with **Add a system voice**. See [the system voice](Providers-and-Keys#the-system-voice). |
56
+ | **Remove** | Deletes the saved key after you confirm with **Remove key**. |
57
+ | **Where to get a key** | The provider's own sign-up, key and billing pages, with the permissions a key needs. |
58
+ | **Change path** / **Executable path** / **Save path** | Where a command-line tool is. Blank finds it on PATH. Shows **Managed on host** in Docker. |
59
+ | **Check all** | Checks every tool's sign-in, the system voice, every saved key, whether each chosen model is still offered and reachable with your key (**Model reachable**). Results show under **Health check**. |
60
+ | **Check again** | On one provider's health row: checks that provider alone. |
61
+
62
+ On a first launch you may also see the welcome message about command-line tools that were found, with **Got it** to hide it. Full details: [Providers-and-Keys](Providers-and-Keys) and [AI-CLIs](AI-CLIs).
63
+
64
+ ## Voices
65
+
66
+ "A wrong voice ID shows up when the audio stage uses it."
67
+
68
+ | Control | What it does | Rules |
69
+ |---|---|---|
70
+ | **Voice name** | The name you pick the voice by on Play and in Edit project. | Required, up to 200 characters. |
71
+ | **Provider** | The speech provider the ID belongs to. | Speech providers only. |
72
+ | **Voice ID** | The provider's own ID for the voice. For **System voice** and **Google Gemini** it is a list to pick from. | Required, up to 200 characters, unique per provider. |
73
+ | **Languages** | Codes such as `es, de`. Play lists the voice only for projects in these languages. | Blank: asked from the provider when it can say; otherwise offered for every language. |
74
+ | **Add voice** | Adds the voice to the table. | |
75
+ | **Edit** (Languages cell) | Changes a voice's languages; **Save** or **Cancel**. | |
76
+ | **Real person** | On for a voice cloned from, or made to sound like, a real person. Prepare upload then answers Yes to YouTube's AI use question for videos it narrates. | Default: off. |
77
+ | **Remove** | Removes the voice after **Remove voice**. Projects keep the audio they made with it. | |
78
+
79
+ See [Providers-and-Keys](Providers-and-Keys#add-a-voice).
80
+
81
+ ## Models
82
+
83
+ "New models, prices and retirements, checked once a day."
84
+
85
+ | Control | What it does |
86
+ |---|---|
87
+ | **Check now** | Checks the published catalogue and OpenRouter's live list at once. Slopify also does this at start and once a day. |
88
+ | **Replace with published file** | Overwrites your local catalogue with the published one, dropping your edits. The previous file is kept as `models.yaml.previous`. |
89
+ | **Catalogue file**, **Verified**, **Last checked** | Where the file is, when its prices were verified, and what the last check changed. |
90
+ | **Switch to <model>** | Replaces one retired model choice with the suggestion shown. |
91
+ | **Switch all** | Replaces every retired choice that has a suggestion. |
92
+
93
+ Templates and schedules that pick a retired model are also flagged on their own rows, with the same **Switch to <model>**. See [Models](Models).
94
+
95
+ ## Playback & appearance
96
+
97
+ "How narration is paced and how Slopify looks."
98
+
99
+ ### Silence between segments
100
+
101
+ | Control | What it does | Default / range |
102
+ |---|---|---|
103
+ | **Silence between segments** | Seconds of quiet between the intro and the narration, and between the narration and the outro, in every new video, unless Play sets a different gap for one video. It only matters when an intro or outro is set; 0 runs them together. Type a whole number and choose **Save**. | 3 seconds, 0 to 30 |
104
+
105
+ Videos already started keep their own gap. A value that is not a whole number from 0 to 30 is refused with "The silence gap is a whole number of seconds between 0 and 30." See [Intros-and-Outros](Intros-and-Outros).
106
+
107
+ ### Appearance
108
+
109
+ | Control | What it does | Default |
110
+ |---|---|---|
111
+ | **Appearance** | **System**, **Dark** or **Light** colours for Slopify on this computer. System follows your operating system and changes with it. It changes at once and does not affect your videos. | System |
112
+
113
+ ### Level the volume for new runs
114
+
115
+ | Control | What it does | Default / range |
116
+ |---|---|---|
117
+ | **Level the volume for new runs** | Whether a new run on Play (and a template or quick short) starts with **Level the volume** on. On evens out every narration piece and sets the finished files to a standard loudness. | On |
118
+ | **Video volume** | How loud the long video and shorts are, in dB from the recommended -14 LUFS (the level YouTube and Spotify play at). Type dB or a percentage. Peaks stay under -1.5 dBTP. | 0 dB (-14 LUFS); -10 dB to +4 dB (32% to 158%) |
119
+ | **Audio files volume** | How loud the audio-only WAV and an audiobook's MP3 and M4B are, in dB from the recommended -18 LUFS. Peaks stay under -3 dBTP. | 0 dB (-18 LUFS); -10 dB to +4 dB |
120
+
121
+ The volume fields show only while the switch is on. A project keeps what it started with; change it there in **Edit project**. Levelling runs on this computer and makes no API calls. Changes save as you make them.
122
+
123
+ ## Notifications
124
+
125
+ "When a run finishes, fails, or waits for you."
126
+
127
+ | Control | What it does | Default |
128
+ |---|---|---|
129
+ | **Browser notifications** | Shows a notification from this browser while any Slopify tab is open, even in the background. Turning it on asks the browser's permission. Applies to this browser only. | Off |
130
+ | **Send test notification** (beside the switch) | Shows a sample notification in this browser. | |
131
+ | **Notification URL** | An address Slopify POSTs a short plain-text message to, with no tab open, for example `https://ntfy.sh/your-topic`. Each message is sent once, with a 5 second timeout. Empty turns it off. **Save** stores it; **Send test notification** sends a sample. | Empty |
132
+
133
+ Messages hold the project title and what happened, never your keys. See [Notifications](Notifications).
134
+
135
+ ## Channel links
136
+
137
+ "The links a YouTube description's {{Name}} placeholders fill from."
138
+
139
+ Each channel now keeps its own links, on its **Brand** tab under **Channel links**. This section only says so, with **Open the default channel's links**. Links saved here in an earlier version still fill the default channel's descriptions until you save its Brand tab. See [Channels](Channels#channel-links) and [YouTube-Description](YouTube-Description).
140
+
141
+ ## YouTube Studio
142
+
143
+ "The playlist upload packs name, and the Studio extension's pairing."
144
+
145
+ | Control | What it does | Default / limit |
146
+ |---|---|---|
147
+ | **Upload pack and extension** | Explains that Slopify never uploads or publishes: **Prepare upload** on a finished project lists everything Studio asks for, and the optional extension fills Studio's upload dialog from it. | |
148
+ | **Playlist** | The YouTube playlist upload packs name, typed exactly as it is called in Studio. Pick **Every channel (default)** or one channel first: the default is used by every channel without its own. **Save** stores it. Empty means no playlist (or, for a channel, the default). | Empty; up to 150 characters |
149
+ | **Extension pairing token** | A secret the Slopify Studio extension needs before it may read your upload packs. **Copy** it into the extension's options and press Pair there. | |
150
+ | **New pairing token** | Makes a fresh token, unpairs the extension until you paste the new one, and clears the uploads waiting for Studio. | |
151
+ | **Install the Studio extension** | **Chrome, Edge, Brave** or **Firefox**, then **Download for Chrome** or **Download for Firefox**, with the three install steps. | |
152
+
153
+ See [Studio-Extension](Studio-Extension) and [Publishing-to-YouTube](Publishing-to-YouTube).
154
+
155
+ ## Backup & storage
156
+
157
+ "Export everything, import a backup, and see what uses disk space."
158
+
159
+ ### Your files
160
+
161
+ | Control | What it does |
162
+ |---|---|
163
+ | **Your files** | Where your projects, automatic backups and exports live; new installs use `Documents/Slopify`. The database, settings, keys and logs stay in Slopify's hidden data folder. |
164
+ | **Open folder** | Opens the folder on this computer. |
165
+ | **Choose another folder** / **New folder** / **Move here** | Moves your files to another folder. Slopify copies every file, checks each copy, then switches, and keeps the old folder until you delete it. The new folder must be empty or not exist yet. It cannot start while a project is being made. |
166
+
167
+ In Docker, this shows the command to run on the computer running Docker, with **Copy command**. See [Where-Your-Files-Live](Where-Your-Files-Live).
168
+
169
+ ### Export and import
170
+
171
+ | Control | What it does |
172
+ |---|---|
173
+ | **Export everything** | Downloads one `.tar` file with every project (files and history), your library, templates, schedules, Play drafts, fonts, settings and usage. Never provider keys. Your browser's downloads show its progress; keep Slopify running until it finishes. |
174
+ | **Import a backup** | Adds a `.tar` from Export everything (or a `.zip` from an older version's Export backup, up to 100 MB) to this install. It replaces nothing: projects already here are skipped, taken names arrive as "(imported)" and schedules arrive paused. Running projects must finish or pause first. A summary lists what was added and skipped. |
175
+ | **Clean orphan files** | Deletes files in the projects folder that no project records any more, and uploaded files nothing uses. Your projects, outputs and library are never touched. Slopify also does this at each start. |
176
+
177
+ After importing, enter your keys again in Settings → Providers. You can also run **Export everything** from `Ctrl+K`. See [Backups](Backups).
178
+
179
+ ### Disk space
180
+
181
+ | Control | What it does |
182
+ |---|---|
183
+ | **Disk space** | What Slopify stores: the total, project files, staged uploads, and deleted projects still in the trash (freed when the trash removes them after 30 days, or with **Delete now**). |
184
+ | Storage by project | Each project's size, split into outputs and working files, largest first. A finished project's page offers the same on its own (**Free space**, see [Project Page](Project-Page#free-space)). |
185
+ | **Keep outputs only** | On a finished project, deletes the working files (images, narration parts, subtitle timing, render settings) and keeps the video, shorts, thumbnail, article, description, document and your uploads. You confirm first. Changing the project later makes those files again, which takes time and provider credits. |
186
+
187
+ ### Sample projects
188
+
189
+ | Control | What it does |
190
+ |---|---|
191
+ | **Sample projects** | Lists the three samples that come with Slopify (a narrated video, an audiobook and a podcast), with **Open** for each one in your projects. |
192
+ | **Restore samples** | Adds back any that were deleted and puts the others back as they shipped. Your own copies of them are not touched. |
193
+
194
+ ## Backups
195
+
196
+ "A daily copy of everything, in a folder you choose."
197
+
198
+ | Control | What it does | Default / range |
199
+ |---|---|---|
200
+ | **Back up now** | Writes a backup at once, whether or not the daily backup is on. Also in `Ctrl+K`. | |
201
+ | **Back up automatically** | Turns the daily backup on or off. | Off |
202
+ | **Time of day** | When the daily backup runs, in this browser's time zone. | 03:00 |
203
+ | **Keep last** | How many of Slopify's own backups stay; older ones are deleted. | 5, from 1 to 30 |
204
+ | **Folder** | Where backups go. Empty uses the Backups folder beside your projects. | Empty |
205
+ | **Save** | Saves the four settings above. | |
206
+
207
+ Each backup is the same file Export everything makes and can be many gigabytes. See [Backups](Backups).
208
+
209
+ ## Trash
210
+
211
+ "Deleted projects, prompts, templates and schedules, kept for 30 days."
212
+
213
+ | Control | What it does |
214
+ |---|---|
215
+ | **Restore** | Puts an item back. If its name was taken meanwhile it comes back renamed, and a schedule comes back paused. |
216
+ | **Delete now** | Removes an item for good at once, freeing its space. You confirm first. |
217
+
218
+ Deleted projects, prompts, intros and outros, templates and schedules stay 30 days, then are removed for good. See [Trash](Trash).
219
+
220
+ ## Usage
221
+
222
+ "This machine only. The same counters, anonymised, feed slopify.stream."
223
+
224
+ Shows **Videos made**, **Hours of audio**, **Images made**, **Tokens used** and **Projects**, then **Tokens by stage** by provider and model, and the machine ID and version. There are no controls. Money figures are on each project's **Run cost** tab and Home's **This week**. See [Costs-and-Run-Cost](Costs-and-Run-Cost).
225
+
226
+ ## Patch notes
227
+
228
+ "What changed in each version of Slopify."
229
+
230
+ | Control | What it does |
231
+ |---|---|
232
+ | **Latest version** | The newest notes, open. |
233
+ | **Earlier versions** | Older versions, each opened with **Read**. |
234
+
235
+ The notes ship with the app, so they work offline. After an update, the new version's notes open by themselves once; a fresh install skips that. On a major update the What's new tour shows instead and links here. `Ctrl+K` → **Show patch notes** opens this section. See [Updating-and-Patch-Notes](Updating-and-Patch-Notes).
236
+
237
+ ## About
238
+
239
+ "Free and open source, running on your machine with your own keys."
240
+
241
+ | Control | What it does |
242
+ |---|---|
243
+ | **Updates** | Points to the circular-arrows button (at the foot of the sidebar), which checks for a newer Slopify and installs it. A dot on it means an update is ready. If a video is being made, the update waits until it finishes, and you can cancel it meanwhile. Slopify restarts itself and the page reconnects. |
244
+ | **What's new in this version** | Opens the patch notes for the version you are running. When this version has no notes of its own, it opens the newest ones. |
245
+ | Links | GitHub (code, issues, releases), Patreon, Buy Me a Coffee, and "How I run a channel with it". |
246
+
247
+ Slopify is made by Gent Bajko under the Apache License 2.0. See [Updating-and-Patch-Notes](Updating-and-Patch-Notes).
248
+
249
+ ## Related pages
250
+
251
+ - [Providers-and-Keys](Providers-and-Keys)
252
+ - [AI-CLIs](AI-CLIs)
253
+ - [Models](Models)
254
+ - [Costs-and-Run-Cost](Costs-and-Run-Cost)
255
+ - [Keyboard-Shortcuts-and-Command-Palette](Keyboard-Shortcuts-and-Command-Palette)
256
+ - [Where-Your-Files-Live](Where-Your-Files-Live)
257
+ - [Backups](Backups)
258
+ - [Troubleshooting](Troubleshooting)