@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.
- package/LICENSE +201 -21
- package/NOTICE +12 -0
- package/README.md +24 -41
- package/SUBTITLES.md +1 -1
- package/dist/adapter-registry.js +31 -0
- package/dist/adapters/alignment/cache.js +4 -1
- package/dist/adapters/alignment/ctc.js +25 -23
- package/dist/adapters/alignment/index.js +37 -6
- package/dist/adapters/alignment/multilingual.js +267 -0
- package/dist/adapters/alignment/protocol.js +11 -0
- package/dist/adapters/alignment/quality.js +4 -3
- package/dist/adapters/alignment/sentences.js +95 -0
- package/dist/adapters/alignment/spec.js +24 -0
- package/dist/adapters/alignment/spell.js +769 -0
- package/dist/adapters/alignment/text.js +56 -9
- package/dist/adapters/alignment/window.js +34 -30
- package/dist/adapters/alignment/worker.js +23 -21
- package/dist/adapters/explain.js +11 -11
- package/dist/adapters/host-cli/index.js +44 -5
- package/dist/adapters/host-cli/transport.js +7 -5
- package/dist/adapters/image/bytes.js +2 -2
- package/dist/adapters/image/codex-output.js +1 -1
- package/dist/adapters/image/codex.js +87 -22
- package/dist/adapters/image/fal.js +13 -5
- package/dist/adapters/image/google.js +11 -8
- package/dist/adapters/image/openai.js +14 -7
- package/dist/adapters/image/reference.js +34 -0
- package/dist/adapters/image/replicate.js +7 -2
- package/dist/adapters/image/video.js +2 -2
- package/dist/adapters/key-probes.js +85 -0
- package/dist/adapters/llm/claude-code.js +168 -32
- package/dist/adapters/llm/cli-login-error.js +1 -1
- package/dist/adapters/llm/codex-limits.js +157 -0
- package/dist/adapters/llm/codex.js +99 -12
- package/dist/adapters/llm/document-workspace.js +2 -2
- package/dist/adapters/llm/gemini-workspace.js +1 -1
- package/dist/adapters/llm/gemini.js +16 -3
- package/dist/adapters/llm/image-workspace.js +58 -0
- package/dist/adapters/llm/openrouter.js +11 -3
- package/dist/adapters/llm/run-cli.js +12 -7
- package/dist/adapters/tts/cartesia.js +10 -0
- package/dist/adapters/tts/elevenlabs.js +31 -9
- package/dist/adapters/tts/gemini.js +206 -0
- package/dist/adapters/tts/inworld-async.js +9 -5
- package/dist/adapters/tts/inworld.js +17 -3
- package/dist/adapters/tts/openai.js +3 -0
- package/dist/adapters/tts/pcm-mp3.js +62 -0
- package/dist/adapters/tts/system.js +147 -0
- package/dist/adapters/tts/voice-languages.js +80 -0
- package/dist/assets/fonts/noto/NotoSans-Regular.ttf +0 -0
- package/dist/assets/fonts/noto/NotoSansArabic-Regular.ttf +0 -0
- package/dist/assets/fonts/noto/NotoSansDevanagari-Regular.ttf +0 -0
- package/dist/assets/fonts/noto/NotoSansHebrew-Regular.ttf +0 -0
- package/dist/assets/fonts/noto/NotoSansThai-Regular.ttf +0 -0
- package/dist/assets/fonts/noto/OFL.txt +93 -0
- package/dist/assets/fonts/noto/SOURCE.txt +18 -0
- package/dist/assets/models.yaml +38 -0
- package/dist/assets/sample/sample-audiobook.tar +0 -0
- package/dist/assets/sample/sample-podcast.tar +0 -0
- package/dist/assets/sample/sample-project.tar +0 -0
- package/dist/assets/style-preview/narration.mp3 +0 -0
- package/dist/assets/style-preview/tall-1.jpg +0 -0
- package/dist/assets/style-preview/tall-2.jpg +0 -0
- package/dist/assets/style-preview/tall-3.jpg +0 -0
- package/dist/assets/style-preview/wide-1.jpg +0 -0
- package/dist/assets/style-preview/wide-2.jpg +0 -0
- package/dist/assets/style-preview/wide-3.jpg +0 -0
- package/dist/catalog/merge.js +132 -0
- package/dist/catalog/registry.js +17 -14
- package/dist/catalog/schema.js +2 -0
- package/dist/catalog/store.js +147 -8
- package/dist/catalog/validate.js +2 -2
- package/dist/compose.yaml +71 -0
- package/dist/edge/autostart/docker-record.js +32 -0
- package/dist/edge/autostart/docker.js +118 -0
- package/dist/edge/autostart/index.js +78 -0
- package/dist/edge/autostart/launcher.js +176 -0
- package/dist/edge/autostart/model.js +3 -0
- package/dist/edge/autostart/native.js +210 -0
- package/dist/edge/autostart/prompt.js +72 -0
- package/dist/edge/autostart/service.js +90 -0
- package/dist/edge/cli-args.js +71 -0
- package/dist/edge/cli.js +64 -63
- package/dist/edge/docker-install/activation.js +56 -0
- package/dist/edge/docker-install/apply.js +458 -0
- package/dist/edge/docker-install/engine.js +362 -0
- package/dist/edge/docker-install/run.js +160 -0
- package/dist/edge/docker-install/state.js +146 -0
- package/dist/edge/{docker-projects → docker-install}/volume.js +1 -5
- package/dist/edge/docker.js +14 -22
- package/dist/edge/events/hub.js +3 -1
- package/dist/edge/host-cli.js +1 -1
- package/dist/edge/http/actions.js +38 -11
- package/dist/edge/http/app.js +60 -2
- package/dist/edge/http/auditions.js +70 -0
- package/dist/edge/http/autostart.js +37 -0
- package/dist/edge/http/byte-range.js +42 -0
- package/dist/edge/http/channel-memory.js +92 -0
- package/dist/edge/http/channels.js +128 -0
- package/dist/edge/http/diagnostics.js +1 -0
- package/dist/edge/http/draft-files.js +2 -4
- package/dist/edge/http/entries.js +22 -3
- package/dist/edge/http/files.js +11 -7
- package/dist/edge/http/folder-location.js +1 -1
- package/dist/edge/http/home.js +39 -0
- package/dist/edge/http/host-cli.js +29 -5
- package/dist/edge/http/narration-peaks.js +76 -0
- package/dist/edge/http/onboarding.js +212 -0
- package/dist/edge/http/open-folder.js +1 -1
- package/dist/edge/http/patch-notes.js +45 -0
- package/dist/edge/http/planning.js +4 -2
- package/dist/edge/http/project-create.js +87 -0
- package/dist/edge/http/project-templates.js +19 -2
- package/dist/edge/http/projects.js +37 -100
- package/dist/edge/http/prompts.js +40 -3
- package/dist/edge/http/pronunciations.js +23 -4
- package/dist/edge/http/providers.js +119 -3
- package/dist/edge/http/reviews.js +131 -0
- package/dist/edge/http/revision-files.js +3 -5
- package/dist/edge/http/revisions.js +1 -1
- package/dist/edge/http/run-cost.js +25 -0
- package/dist/edge/http/schedules.js +115 -6
- package/dist/edge/http/settings.js +84 -6
- package/dist/edge/http/storage-files.js +50 -0
- package/dist/edge/http/storage.js +43 -2
- package/dist/edge/http/studio.js +287 -0
- package/dist/edge/http/style-preview.js +61 -0
- package/dist/edge/http/subtitles.js +1 -1
- package/dist/edge/http/trash.js +69 -0
- package/dist/edge/http/tutorials.js +59 -0
- package/dist/edge/http/update.js +24 -3
- package/dist/edge/http/whats-new.js +15 -0
- package/dist/edge/http/youtube-edits.js +92 -0
- package/dist/edge/native-update.js +62 -0
- package/dist/extension/slopify-studio-chrome.zip +0 -0
- package/dist/extension/slopify-studio-firefox.zip +0 -0
- package/dist/host-cli/gemini-login.js +83 -0
- package/dist/host-cli/open-folder.js +10 -10
- package/dist/host-cli/runtime.js +9 -1
- package/dist/host-cli/status.js +4 -2
- package/dist/kernel/db/migrations/0025-automatic-reviews.sql +40 -0
- package/dist/kernel/db/migrations/0026-schedule-topic-generation.sql +23 -0
- package/dist/kernel/db/migrations/0027-run-cost.sql +58 -0
- package/dist/kernel/db/migrations/0030-automatic-retries.sql +18 -0
- package/dist/kernel/db/migrations/0031-prompt-history-and-description-edits.sql +33 -0
- package/dist/kernel/db/migrations/0032-channels.sql +65 -0
- package/dist/kernel/db/migrations/0034-script-prompts.sql +23 -0
- package/dist/kernel/db/migrations/0035-narration-aliases.sql +13 -0
- package/dist/kernel/db/migrations/0037-project-uploads.sql +8 -0
- package/dist/kernel/db/migrations/0038-voice-languages.sql +7 -0
- package/dist/kernel/db/migrations/0039-channel-essentials.sql +64 -0
- package/dist/kernel/db/migrations/0040-standalone-usage.sql +35 -0
- package/dist/kernel/db/migrations/0041-cast-hosts.sql +3 -0
- package/dist/kernel/paths.js +27 -6
- package/dist/kernel/pipeline.js +4 -1
- package/dist/kernel/ports/host-cli.js +122 -14
- package/dist/kernel/ports/key-probe.js +1 -0
- package/dist/kernel/ports/languages.js +157 -0
- package/dist/kernel/ports/model.js +10 -5
- package/dist/kernel/ports/narration-aliases.js +60 -0
- package/dist/kernel/ports/plan-limits.js +36 -0
- package/dist/kernel/ports/system-speech.js +203 -0
- package/dist/kernel/runner/attempt.js +17 -8
- package/dist/kernel/runner/audition.js +36 -0
- package/dist/kernel/runner/graph.js +40 -5
- package/dist/kernel/runner/index.js +39 -9
- package/dist/kernel/runner/meter.js +1 -0
- package/dist/kernel/runner/providers.js +142 -7
- package/dist/kernel/runner/retry-policy.js +43 -0
- package/dist/kernel/runner/standalone.js +134 -0
- package/dist/kernel/runner/work-authority.js +28 -2
- package/dist/main.js +277 -16
- package/dist/model-catalog.js +2 -0
- package/dist/patch-notes/0.4.2-to-1.0.md +93 -0
- package/dist/patch-notes/1.0-to-2.0.md +74 -0
- package/dist/patch-notes/2.0-to-3.0.md +257 -0
- package/dist/patch-notes/3.0.0.md +70 -0
- package/dist/patch-notes/3.0.1.md +105 -0
- package/dist/patch-notes/index.json +32 -0
- package/dist/slices/admission/model.js +27 -0
- package/dist/slices/admission/repo.js +24 -4
- package/dist/slices/admission/rules.js +80 -2
- package/dist/slices/admission/schema.js +58 -1
- package/dist/slices/admission/short-mode.js +47 -0
- package/dist/slices/admission/start.js +42 -6
- package/dist/slices/article/continuation.js +2 -2
- package/dist/slices/article/provided-entries.js +2 -2
- package/dist/slices/article/run.js +6 -2
- package/dist/slices/article/segments.js +3 -3
- package/dist/slices/backups/folder.js +14 -6
- package/dist/slices/batch/index.js +7 -2
- package/dist/slices/cancel/index.js +1 -1
- package/dist/slices/channels/cast-images.js +110 -0
- package/dist/slices/channels/cast-match.js +32 -0
- package/dist/slices/channels/images.js +19 -0
- package/dist/slices/channels/model.js +5 -0
- package/dist/slices/channels/rebrand.js +100 -0
- package/dist/slices/channels/repo.js +221 -0
- package/dist/slices/channels/runs.js +129 -0
- package/dist/slices/channels/schema.js +152 -0
- package/dist/slices/channels/service.js +180 -0
- package/dist/slices/channels/studio-csv.js +110 -0
- package/dist/slices/channels/videos.js +120 -0
- package/dist/slices/checkpoints/recovery.js +10 -0
- package/dist/slices/control/index.js +5 -2
- package/dist/slices/control/providers.js +4 -1
- package/dist/slices/document/fonts.js +1 -1
- package/dist/slices/document/render.js +1 -1
- package/dist/slices/episodes/related.js +90 -0
- package/dist/slices/episodes/repo.js +60 -0
- package/dist/slices/episodes/service.js +58 -0
- package/dist/slices/episodes/summarize.js +170 -0
- package/dist/slices/estimate/index.js +109 -28
- package/dist/slices/estimate/requests.js +68 -2
- package/dist/slices/eta/history.js +56 -0
- package/dist/slices/eta/model.js +63 -0
- package/dist/slices/eta/view.js +25 -0
- package/dist/slices/fixes/rules.js +73 -0
- package/dist/slices/fonts/coverage.js +82 -0
- package/dist/slices/fonts/sfnt.js +74 -0
- package/dist/slices/images/run.js +8 -5
- package/dist/slices/images/scale.js +84 -0
- package/dist/slices/library/diff.js +122 -0
- package/dist/slices/library/history.js +100 -0
- package/dist/slices/library/model.js +3 -0
- package/dist/slices/library/photorealistic.js +49 -0
- package/dist/slices/library/repo.js +19 -14
- package/dist/slices/library/save.js +62 -12
- package/dist/slices/library/slots.js +7 -1
- package/dist/slices/library/used-by.js +153 -0
- package/dist/slices/loudness/level-pieces.js +41 -0
- package/dist/slices/loudness/loudnorm.js +164 -0
- package/dist/slices/loudness/model.js +153 -0
- package/dist/slices/model-upkeep/model.js +10 -0
- package/dist/slices/model-upkeep/switch.js +217 -0
- package/dist/slices/model-upkeep/usage.js +185 -0
- package/dist/slices/narration/aliases-library.js +31 -0
- package/dist/slices/narration/aliases-schema.js +53 -0
- package/dist/slices/narration/aliases.js +49 -0
- package/dist/slices/narration/blocks.js +352 -0
- package/dist/slices/narration/chunk.js +19 -7
- package/dist/slices/narration/concat.js +2 -2
- package/dist/slices/narration/describe.js +45 -0
- package/dist/slices/narration/pauses-model.js +63 -0
- package/dist/slices/narration/pauses.js +269 -0
- package/dist/slices/narration/peaks-model.js +1 -0
- package/dist/slices/narration/peaks.js +94 -0
- package/dist/slices/narration/preparation.js +21 -3
- package/dist/slices/narration/pronunciation-chunks.js +3 -3
- package/dist/slices/narration/pronunciation.js +72 -25
- package/dist/slices/narration/run.js +6 -6
- package/dist/slices/narration/shared-glossary.js +1 -1
- package/dist/slices/narration/steering.js +15 -4
- package/dist/slices/notifications/notifier.js +47 -3
- package/dist/slices/notifications/rules.js +48 -3
- package/dist/slices/onboarding/copy.js +143 -0
- package/dist/slices/onboarding/first-run.js +72 -0
- package/dist/slices/onboarding/full-video.js +81 -0
- package/dist/slices/onboarding/install.js +119 -0
- package/dist/slices/onboarding/model.js +85 -0
- package/dist/slices/onboarding/packs.js +491 -0
- package/dist/slices/onboarding/quick-short.js +144 -0
- package/dist/slices/onboarding/sample.js +132 -0
- package/dist/slices/onboarding/state.js +68 -0
- package/dist/slices/onboarding/template.js +73 -0
- package/dist/slices/patch-notes/library.js +73 -0
- package/dist/slices/patch-notes/seen.js +77 -0
- package/dist/slices/play-drafts/convert.js +127 -8
- package/dist/slices/play-drafts/readiness.js +4 -1
- package/dist/slices/play-drafts/repo.js +2 -0
- package/dist/slices/play-drafts/review-inputs.js +20 -3
- package/dist/slices/play-drafts/schema.js +89 -0
- package/dist/slices/play-drafts/service.js +4 -1
- package/dist/slices/play-drafts/start.js +43 -18
- package/dist/slices/project-templates/from-project.js +59 -6
- package/dist/slices/project-templates/next-chapter.js +94 -0
- package/dist/slices/project-templates/one-off.js +26 -0
- package/dist/slices/project-templates/repo.js +2 -1
- package/dist/slices/project-templates/schema.js +7 -1
- package/dist/slices/project-templates/service.js +15 -4
- package/dist/slices/project-templates/setup.js +18 -2
- package/dist/slices/rebuild/admission-repo.js +1 -1
- package/dist/slices/rebuild/model.js +6 -0
- package/dist/slices/rebuild/preview-details.js +46 -3
- package/dist/slices/rebuild/preview-plan.js +13 -6
- package/dist/slices/rebuild/recipe-audio-parts.js +40 -7
- package/dist/slices/rebuild/recipe-audio.js +66 -12
- package/dist/slices/rebuild/recipe-build.js +8 -4
- package/dist/slices/rebuild/recipe-cast.js +18 -0
- package/dist/slices/rebuild/recipe-checkpoints.js +11 -9
- package/dist/slices/rebuild/recipe-describe.js +93 -0
- package/dist/slices/rebuild/recipe-edit.js +13 -1
- package/dist/slices/rebuild/recipe-exports.js +67 -8
- package/dist/slices/rebuild/recipe-input-schema.js +35 -0
- package/dist/slices/rebuild/recipe-legacy.js +9 -0
- package/dist/slices/rebuild/recipe-loudness.js +45 -0
- package/dist/slices/rebuild/recipe-model.js +25 -6
- package/dist/slices/rebuild/recipe-pauses.js +7 -0
- package/dist/slices/rebuild/recipe-preparation.js +3 -3
- package/dist/slices/rebuild/recipe-provider-choice.js +11 -1
- package/dist/slices/rebuild/recipe-reference.js +15 -1
- package/dist/slices/rebuild/recipe-reviews.js +117 -0
- package/dist/slices/rebuild/recipe-save.js +4 -1
- package/dist/slices/rebuild/recipe-shorts.js +23 -3
- package/dist/slices/rebuild/recipe-text.js +114 -19
- package/dist/slices/rebuild/recipe-validation.js +14 -2
- package/dist/slices/rebuild/recipe-visual.js +96 -33
- package/dist/slices/rebuild/recipe-voices.js +286 -0
- package/dist/slices/rebuild/recipe-work.js +77 -6
- package/dist/slices/rebuild/recipe-youtube.js +2 -0
- package/dist/slices/rebuild/recovery-conflict.js +7 -3
- package/dist/slices/rebuild/recovery-model.js +3 -0
- package/dist/slices/rebuild/recovery-selection.js +28 -2
- package/dist/slices/rebuild/recovery.js +35 -17
- package/dist/slices/rebuild/repo.js +3 -3
- package/dist/slices/rebuild/retry.js +18 -0
- package/dist/slices/rebuild/review-redo.js +125 -0
- package/dist/slices/rebuild/runtime-actions.js +5 -0
- package/dist/slices/rebuild/runtime-admission.js +4 -1
- package/dist/slices/rebuild/runtime-animate.js +4 -4
- package/dist/slices/rebuild/runtime-article.js +5 -5
- package/dist/slices/rebuild/runtime-document.js +4 -4
- package/dist/slices/rebuild/runtime-export-bed.js +43 -0
- package/dist/slices/rebuild/runtime-export-edit.js +70 -11
- package/dist/slices/rebuild/runtime-export-inputs.js +52 -10
- package/dist/slices/rebuild/runtime-export-short.js +85 -0
- package/dist/slices/rebuild/runtime-export.js +84 -19
- package/dist/slices/rebuild/runtime-figure-card.js +87 -0
- package/dist/slices/rebuild/runtime-image.js +21 -2
- package/dist/slices/rebuild/runtime-local.js +148 -24
- package/dist/slices/rebuild/runtime-materialize.js +8 -0
- package/dist/slices/rebuild/runtime-narration-reuse.js +2 -1
- package/dist/slices/rebuild/runtime-narration-text.js +7 -7
- package/dist/slices/rebuild/runtime-pictures.js +28 -0
- package/dist/slices/rebuild/runtime-piece-label.js +27 -0
- package/dist/slices/rebuild/runtime-provider.js +126 -18
- package/dist/slices/rebuild/runtime-publication.js +21 -5
- package/dist/slices/rebuild/runtime-review.js +267 -0
- package/dist/slices/rebuild/runtime-run.js +17 -11
- package/dist/slices/rebuild/runtime-shorts.js +44 -17
- package/dist/slices/rebuild/runtime-store.js +62 -11
- package/dist/slices/rebuild/runtime-subtitles.js +72 -19
- package/dist/slices/rebuild/runtime-voices.js +103 -0
- package/dist/slices/rebuild/runtime-youtube.js +7 -6
- package/dist/slices/rebuild/service-readiness.js +3 -3
- package/dist/slices/rebuild/soften.js +49 -0
- package/dist/slices/rebuild/transition-repo.js +9 -2
- package/dist/slices/research/run.js +4 -4
- package/dist/slices/research/synthesis.js +2 -2
- package/dist/slices/reviews/model.js +105 -0
- package/dist/slices/reviews/outcome.js +22 -0
- package/dist/slices/reviews/repo.js +118 -0
- package/dist/slices/reviews/rules.js +63 -0
- package/dist/slices/reviews/verdict.js +71 -0
- package/dist/slices/reviews/view.js +30 -0
- package/dist/slices/revisions/adopt-content.js +5 -2
- package/dist/slices/revisions/adopt.js +3 -1
- package/dist/slices/revisions/downloads.js +7 -1
- package/dist/slices/revisions/image-plan.js +183 -0
- package/dist/slices/revisions/mutation-assets.js +10 -0
- package/dist/slices/revisions/mutation-cues.js +71 -0
- package/dist/slices/revisions/mutation-request.js +2 -1
- package/dist/slices/revisions/mutations.js +97 -3
- package/dist/slices/revisions/schema.js +11 -1
- package/dist/slices/run-cost/limits.js +128 -0
- package/dist/slices/run-cost/meter.js +47 -0
- package/dist/slices/run-cost/panel.js +256 -0
- package/dist/slices/run-cost/pricing.js +95 -0
- package/dist/slices/run-cost/week.js +108 -0
- package/dist/slices/schedules/agenda.js +222 -0
- package/dist/slices/schedules/repo.js +58 -18
- package/dist/slices/schedules/scheduler.js +68 -17
- package/dist/slices/schedules/schema.js +179 -1
- package/dist/slices/schedules/service.js +43 -4
- package/dist/slices/schedules/similar.js +128 -0
- package/dist/slices/schedules/topic-list.js +163 -0
- package/dist/slices/schedules/topics.js +523 -0
- package/dist/slices/settings/first-run.js +106 -0
- package/dist/slices/settings/health.js +247 -0
- package/dist/slices/settings/key-guides.js +138 -0
- package/dist/slices/settings/key-test.js +93 -0
- package/dist/slices/settings/keys.js +10 -5
- package/dist/slices/settings/model-reach.js +52 -0
- package/dist/slices/settings/model.js +55 -1
- package/dist/slices/settings/models.js +5 -1
- package/dist/slices/settings/playback.js +15 -0
- package/dist/slices/settings/readiness.js +14 -2
- package/dist/slices/settings/repo.js +17 -3
- package/dist/slices/settings/tutorial-schema.js +5 -0
- package/dist/slices/settings/voices.js +64 -4
- package/dist/slices/settings/whats-new.js +64 -0
- package/dist/slices/shorts/captions.js +9 -0
- package/dist/slices/shorts/pick.js +3 -3
- package/dist/slices/shorts/prompts.js +1 -1
- package/dist/slices/shorts/render.js +63 -13
- package/dist/slices/storage/asset-name.js +3 -0
- package/dist/slices/storage/backup-export.js +48 -9
- package/dist/slices/storage/backup-format.js +38 -1
- package/dist/slices/storage/backup-import.js +191 -19
- package/dist/slices/storage/delete-project.js +7 -4
- package/dist/slices/storage/documents.js +87 -0
- package/dist/slices/storage/downloads.js +33 -1
- package/dist/slices/storage/files-location.js +531 -0
- package/dist/slices/storage/layout.js +14 -4
- package/dist/slices/storage/model.js +11 -0
- package/dist/slices/storage/portable.js +94 -12
- package/dist/slices/storage/reconcile.js +14 -1
- package/dist/slices/storage/repo.js +4 -1
- package/dist/slices/storage/schema.js +11 -0
- package/dist/slices/storage/trim.js +146 -0
- package/dist/slices/studio/disclosure.js +74 -0
- package/dist/slices/studio/model.js +30 -0
- package/dist/slices/studio/pack.js +211 -0
- package/dist/slices/studio/queue.js +69 -0
- package/dist/slices/studio/settings.js +170 -0
- package/dist/slices/style-preview/images.js +61 -0
- package/dist/slices/style-preview/narration.js +33 -0
- package/dist/slices/style-preview/render.js +148 -0
- package/dist/slices/style-preview/schema.js +59 -0
- package/dist/slices/style-preview/service.js +92 -0
- package/dist/slices/style-preview/settings.js +139 -0
- package/dist/slices/subtitles/captions.js +42 -9
- package/dist/slices/subtitles/model.js +22 -0
- package/dist/slices/subtitles/prepare.js +27 -16
- package/dist/slices/subtitles/transcript.js +1 -1
- package/dist/slices/thumbnail/run.js +7 -7
- package/dist/slices/trash/model.js +25 -0
- package/dist/slices/trash/service.js +273 -0
- package/dist/slices/tutorials/anchors.js +57 -0
- package/dist/slices/tutorials/library.js +185 -0
- package/dist/slices/uploads/repo.js +20 -0
- package/dist/slices/video/ambient-bed-schema.js +15 -0
- package/dist/slices/video/ambient-bed.js +95 -0
- package/dist/slices/video/ambient-mix.js +72 -0
- package/dist/slices/video/audio-inputs.js +2 -2
- package/dist/slices/video/cards.js +5 -2
- package/dist/slices/video/edit-list.js +23 -2
- package/dist/slices/video/edit-settings.js +13 -3
- package/dist/slices/video/ffmpeg.js +63 -9
- package/dist/slices/video/figure-card.js +492 -0
- package/dist/slices/video/figure-spans.js +51 -0
- package/dist/slices/video/plan.js +125 -13
- package/dist/slices/video/run.js +14 -12
- package/dist/slices/video/slideshow.js +39 -4
- package/dist/slices/voices/attribution.js +69 -0
- package/dist/slices/voices/audio-files.js +87 -0
- package/dist/slices/voices/audition.js +25 -0
- package/dist/slices/voices/cast.js +74 -0
- package/dist/slices/voices/grouping.js +59 -0
- package/dist/slices/voices/join.js +35 -0
- package/dist/slices/voices/languages.js +25 -0
- package/dist/slices/voices/model.js +218 -0
- package/dist/slices/voices/palette.js +26 -0
- package/dist/slices/voices/panel.js +91 -0
- package/dist/slices/voices/portraits.js +55 -0
- package/dist/slices/voices/script.js +136 -0
- package/dist/slices/voices/timing.js +58 -0
- package/dist/slices/youtube/answer.js +1 -1
- package/dist/slices/youtube/chapters.js +126 -0
- package/dist/slices/youtube/edits-repo.js +84 -0
- package/dist/slices/youtube/edits.js +89 -0
- package/dist/slices/youtube/placeholders.js +98 -0
- package/dist/slices/youtube/transcript.js +11 -4
- package/dist/tutorials/AI-CLIs.md +146 -0
- package/dist/tutorials/Backups.md +121 -0
- package/dist/tutorials/Calendar.md +103 -0
- package/dist/tutorials/Cast-Library.md +112 -0
- package/dist/tutorials/Channels.md +148 -0
- package/dist/tutorials/Costs-and-Run-Cost.md +136 -0
- package/dist/tutorials/Docker.md +171 -0
- package/dist/tutorials/Document-Themes.md +207 -0
- package/dist/tutorials/Editing-a-Project.md +204 -0
- package/dist/tutorials/FAQ.md +134 -0
- package/dist/tutorials/First-Launch-and-Welcome.md +153 -0
- package/dist/tutorials/Home-and-Projects.md +174 -0
- package/dist/tutorials/Home.md +119 -0
- package/dist/tutorials/Install.md +154 -0
- package/dist/tutorials/Intros-and-Outros.md +86 -0
- package/dist/tutorials/Keyboard-Shortcuts-and-Command-Palette.md +215 -0
- package/dist/tutorials/Library-Overview.md +75 -0
- package/dist/tutorials/Models.md +133 -0
- package/dist/tutorials/Multiple-Voices.md +161 -0
- package/dist/tutorials/Narration-Aliases-and-Glossary.md +129 -0
- package/dist/tutorials/Notifications.md +86 -0
- package/dist/tutorials/Other-Languages.md +110 -0
- package/dist/tutorials/PDF-Documents.md +100 -0
- package/dist/tutorials/Play-Images.md +135 -0
- package/dist/tutorials/Play-Narration.md +167 -0
- package/dist/tutorials/Play-Outputs.md +109 -0
- package/dist/tutorials/Play-Overview.md +216 -0
- package/dist/tutorials/Play-Title-and-Article.md +135 -0
- package/dist/tutorials/Play-Video-and-Style.md +143 -0
- package/dist/tutorials/Project-Page.md +228 -0
- package/dist/tutorials/Prompts.md +136 -0
- package/dist/tutorials/Providers-and-Keys.md +290 -0
- package/dist/tutorials/Publishing-to-YouTube.md +135 -0
- package/dist/tutorials/Recovery-and-Retries.md +141 -0
- package/dist/tutorials/Reviews-and-Checkpoints.md +143 -0
- package/dist/tutorials/Schedules.md +154 -0
- package/dist/tutorials/Settings-Reference.md +258 -0
- package/dist/tutorials/Shorts.md +116 -0
- package/dist/tutorials/Start-at-Login.md +126 -0
- package/dist/tutorials/Studio-Extension.md +146 -0
- package/dist/tutorials/Templates.md +146 -0
- package/dist/tutorials/Trash.md +87 -0
- package/dist/tutorials/Troubleshooting.md +149 -0
- package/dist/tutorials/Uninstalling-and-Moving.md +113 -0
- package/dist/tutorials/Updating-and-Patch-Notes.md +120 -0
- package/dist/tutorials/Video-Editing.md +135 -0
- package/dist/tutorials/Where-Your-Files-Live.md +149 -0
- package/dist/tutorials/YouTube-Description.md +132 -0
- package/dist/tutorials/Your-First-Short.md +125 -0
- package/dist/tutorials/_Footer.md +1 -0
- package/dist/tutorials/_Sidebar.md +69 -0
- package/dist/updater/service.js +66 -21
- package/dist/web/assets/index-DBLSfqA-.css +1 -0
- package/dist/web/assets/index-DFdIhmm0.js +307 -0
- package/dist/web/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
- package/dist/web/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
- package/dist/web/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
- package/dist/web/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
- package/dist/web/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
- package/dist/web/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
- package/dist/web/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
- package/dist/web/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
- package/dist/web/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
- package/dist/web/assets/{pdf-BLF2i8c2.js → pdf-B9OY1ioX.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +5 -5
- package/dist/edge/docker-launch.js +0 -81
- package/dist/edge/docker-projects/activation.js +0 -35
- package/dist/edge/docker-projects/claims.js +0 -85
- package/dist/edge/docker-projects/committed.js +0 -40
- package/dist/edge/docker-projects/engine.js +0 -461
- package/dist/edge/docker-projects/install.js +0 -254
- package/dist/edge/docker-projects/prune.js +0 -66
- package/dist/edge/docker-projects/recover.js +0 -100
- package/dist/edge/docker-projects/state.js +0 -225
- package/dist/web/assets/index-CktpxlJd.js +0 -171
- package/dist/web/assets/index-DB-vOnGU.css +0 -1
- package/scripts/docker-run.sh +0 -3
- /package/dist/edge/{docker-projects → docker-install}/tree.js +0 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Slopify 1.0 to 2.0
|
|
2
|
+
|
|
3
|
+
Versions 1.0.1 to 2.0.0, released 14 to 25 September 2026.
|
|
4
|
+
|
|
5
|
+
After 1.0, the work went into three things: running Slopify in Docker without giving up the Claude Code, Codex and Gemini logins you already have, narration that sounds right and says names correctly, and a way back from a failed run that doesn't make you review costs you already accepted. 2.0.0 closes the stretch with a redesign of the whole app into a fixed frame, which moved some addresses (listed under "Changes to know about").
|
|
6
|
+
|
|
7
|
+
## Highlights
|
|
8
|
+
|
|
9
|
+
- A Slopify Docker image for Linux, and a small host helper so Claude Code, Codex and Gemini CLI run on your machine with your own logins while Slopify runs in the container.
|
|
10
|
+
- Codex as an image provider for slideshow images and thumbnails.
|
|
11
|
+
- Model lists for the CLIs come from what you have installed.
|
|
12
|
+
- Narration preparation (optional): your text model adds delivery cues for Inworld TTS-2 without changing a word of what is said.
|
|
13
|
+
- Pronunciation glossary: the IPA in your article's glossary is sent to Inworld, so names come out right. Captions and transcripts keep the written words.
|
|
14
|
+
- The article writer gets every original research report as well as the editor's summary.
|
|
15
|
+
- Resume retries unfinished work straight away, and every section has its own Rerun.
|
|
16
|
+
- The 2.0 console: one sticky header, the Library in tabs, Settings one section at a time, and a project page built around a single progress strip.
|
|
17
|
+
|
|
18
|
+
## What's new
|
|
19
|
+
|
|
20
|
+
### Docker
|
|
21
|
+
- An official image on GitHub Container Registry, for linux/amd64 and linux/arm64, with ffmpeg ready on first start.
|
|
22
|
+
- `npx @gentbajko/slopify@latest --docker` sets it up.
|
|
23
|
+
- The host CLI bridge: a helper installed as your own systemd user service runs Claude Code, Codex and Gemini on the host through a private, authenticated socket. Slopify never copies your CLI credentials into the container.
|
|
24
|
+
- A request that was already sent is never replayed through the bridge, so a dropped connection can't charge you twice.
|
|
25
|
+
- Settings explains which providers the host manages.
|
|
26
|
+
- Project files are saved to an ordinary folder on your machine, `~/Slopify/Projects` by default (`--projects-dir` to change it). The database and keys stay in the private `slopify-data` volume.
|
|
27
|
+
- Existing Docker installs move their projects there with a verified copy, and roll back if anything fails.
|
|
28
|
+
- Folder actions show the host path of current and older outputs.
|
|
29
|
+
|
|
30
|
+
### Providers and models
|
|
31
|
+
- Claude Code, Codex and Gemini CLI list the models your installed version offers, natively and through Docker.
|
|
32
|
+
- Codex as an image provider, chosen separately from your text provider, sharing the Codex install and login.
|
|
33
|
+
- Research reports go to the editor and the article writer as they were written, alongside the editor's notes. CLIs read them through a private, read-only folder that is deleted after the call.
|
|
34
|
+
- A CLI that needs you to sign in fails once with that message instead of retrying.
|
|
35
|
+
|
|
36
|
+
### Narration
|
|
37
|
+
- Narration preparation, under Audio, is off by default. For Inworld TTS-2, your text model marks sentences with delivery cues; the spoken text stays exactly as written.
|
|
38
|
+
- Use pronunciation glossary, under Audio, is on for new projects and off for existing ones. It reads the glossary at the end of the article and sends each term's English IPA to Inworld, leaving the readable text, captions and transcripts unchanged.
|
|
39
|
+
- Narration text no longer carries Markdown escapes such as `D\&D`.
|
|
40
|
+
|
|
41
|
+
### Recovering from a failed run
|
|
42
|
+
- Resume retries unfinished work for the saved version without asking you to review costs again.
|
|
43
|
+
- Research, Article, Audio, Images, Thumbnail and Video each have a Rerun with a one-line confirmation. Earlier outputs stay in History.
|
|
44
|
+
- A retried request keeps its identity, so a lost response never starts a second paid request.
|
|
45
|
+
- A failed rebuild shows its reason next to Start, keeping your consent and the request.
|
|
46
|
+
|
|
47
|
+
### The 2.0 console
|
|
48
|
+
- One sticky header holds Projects, Play, Library and Settings, the running total, the support links, the update button and the tutorial.
|
|
49
|
+
- Messages appear in reserved status lines or toasts instead of pushing the page down. Save and Start stay pinned at the bottom of editing screens.
|
|
50
|
+
- Library: Prompts, Intros & Outros, Templates and Schedules are four tabs of one page. Template and schedule forms open in a side drawer.
|
|
51
|
+
- Settings shows one section at a time: Providers, Voices, Models, Playback & appearance, Backup & storage, Usage. Each provider is one row; CLI paths sit behind Change path.
|
|
52
|
+
- The project page has a rundown strip with overall progress and every stage in one row, and Output, Edit, History and Checkpoints tabs. The Checkpoints tab counts held items.
|
|
53
|
+
- A failed stage shows one line with Retry stage, plus Re-run section in its menu.
|
|
54
|
+
- Play has Content, Outputs and Style tabs and a readiness rail. Review opens in a drawer with Start run pinned, and checkpoints are set there.
|
|
55
|
+
- Advanced audio options (chunking, intro and outro, narration preparation, pronunciation glossary) are folded under one disclosure.
|
|
56
|
+
- Large image sets show two rows until you expand them.
|
|
57
|
+
|
|
58
|
+
## Changes to know about
|
|
59
|
+
|
|
60
|
+
- `/usage` now redirects to `/settings?section=usage`, and `/library` opens Prompts.
|
|
61
|
+
- The floating update button moved into the header.
|
|
62
|
+
|
|
63
|
+
## Fixes
|
|
64
|
+
|
|
65
|
+
- Deleting a template or discarding a Play draft removes it from the list straight away.
|
|
66
|
+
- Model discovery finds Gemini CLI bundles and the installed Claude Code version.
|
|
67
|
+
- Model discovery and host bridging in Docker return the right models.
|
|
68
|
+
- Starting or rebuilding with host-managed CLIs no longer fails a path check meant for native installs.
|
|
69
|
+
- Codex images are collected from where the Codex CLI saves them.
|
|
70
|
+
- Retrying a project made before research documents upgrades its old requests instead of failing.
|
|
71
|
+
- The free caption model download retries up to three times after an interruption instead of failing the video.
|
|
72
|
+
- A restart after a hard shutdown no longer refuses to start on its own leftover lock in Docker, where the app is always process 1.
|
|
73
|
+
- Docker updates no longer refuse to run when rollback containers from older launchers still use the data volume.
|
|
74
|
+
- Articles no longer keep paragraphs that are only whitespace after Markdown is removed.
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
# Slopify 2.0 to 3.0
|
|
2
|
+
|
|
3
|
+
Versions 2.0.1 to 2.5.0, released 25 to 27 September 2026, and 3.0.0, released 27 September 2026.
|
|
4
|
+
|
|
5
|
+
Through 2.x, Slopify learned to make more than one long video: a PDF of the article, a YouTube description with chapters, shorts, and real editing (cuts on sentence ends, transitions, a Look). 3.0 is about the steps around the video. It finds its own topics, reviews its own work, knows what a run cost, waits out plan limits instead of failing, and fills in YouTube Studio for you. You still press Publish. The narration sounds better too: one steady volume, real pauses between sentences, and tables and figures described instead of read cell by cell. The whole app has a new design, and every control now explains itself.
|
|
6
|
+
|
|
7
|
+
## Highlights
|
|
8
|
+
|
|
9
|
+
- Much faster videos. A 108-minute video with burned-in captions renders in about 12 minutes instead of over 2 hours.
|
|
10
|
+
- Shorts: the best 60–120 s moments of the narration become vertical clips with new images and word-by-word captions.
|
|
11
|
+
- Video editing: cuts that follow the narration, transitions, a Look, chapter cards, your own clips and animated images.
|
|
12
|
+
- A PDF of the article, and a YouTube description with chapters, hashtags and tags.
|
|
13
|
+
- Automatic reviews: a reviewer model checks the article, images, narration, thumbnail and shorts, and redoes what fails, up to a limit you set.
|
|
14
|
+
- Schedules that write their own topics from a series brief, and a calendar of the coming four weeks.
|
|
15
|
+
- Channels with a brand kit, a cast library for consistent characters, and episode memory.
|
|
16
|
+
- Multiple voices: audiobook, podcast, radio drama and interview, with MP3 and M4B files.
|
|
17
|
+
- Level the volume: every narration piece is brought to one loudness, and the video is mastered to −14 LUFS, the level YouTube plays at.
|
|
18
|
+
- Pauses between sentences (0.4 s by default) and, if you want them, between paragraphs.
|
|
19
|
+
- Narration that reads like speech: tables, figures, diagrams, equations and code are described in a short spoken passage, and shown on screen as a card while it is spoken.
|
|
20
|
+
- Projects in other languages, with word-by-word captions in nine of them.
|
|
21
|
+
- Prepare upload and the Slopify Studio browser extension fill YouTube Studio's upload dialog. You press Publish.
|
|
22
|
+
- Run cost on every project, including what CLI runs would have cost through the API and how much of your plan limit they used.
|
|
23
|
+
- A first-run screen, a sample project, audiobook and podcast demos, and a 60-second short as the first thing you make.
|
|
24
|
+
- A new design across the app, with an info button on every setting: 406 explanations in one catalogue.
|
|
25
|
+
- Patch notes inside the app, in Settings → Patch notes, opened once after each update.
|
|
26
|
+
- Slopify is now licensed under Apache-2.0.
|
|
27
|
+
|
|
28
|
+
## In 2.0.1 to 2.5.0
|
|
29
|
+
|
|
30
|
+
### Video
|
|
31
|
+
- Each image stays on screen for Seconds per image (15 by default) and the images take turns until the video ends. Before, five images under a 108-minute narration stayed up about 21 minutes each.
|
|
32
|
+
- Zoom (%) (22.5 by default) and Motion: Zoom in and out, Pan across, Mix of both, or Still.
|
|
33
|
+
- Silence at start and end (2 s by default), so narration doesn't start or stop abruptly.
|
|
34
|
+
- Rendering encodes each distinct image clip once and joins them, in bounded memory.
|
|
35
|
+
- Caption timing runs on the native speech engine with up to 8 threads: 3.6 minutes instead of 24.3 for a 109-minute narration.
|
|
36
|
+
- Cuts: Every N seconds, or Follow the narration (the default for new projects), which cuts after a sentence and at every chapter.
|
|
37
|
+
- Transitions: Cut, Crossfade, Fade through black, Slide, Wipe.
|
|
38
|
+
- A Look: vignette, film grain, colour grade, atmosphere (embers, dust, fog) and chapter title cards.
|
|
39
|
+
- Add your own video clips as shots, or animate images with Kling, Wan or Seedance models on fal.ai or Replicate, priced in the estimate.
|
|
40
|
+
- The Video section's files download from one Download menu next to one Open folder.
|
|
41
|
+
|
|
42
|
+
### Shorts
|
|
43
|
+
- The text model picks self-contained moments of the narration, cut on whole sentences, and each becomes a 1080×1920 short with new 9:16 images and big word-by-word captions.
|
|
44
|
+
- 1–10 shorts (3 by default), 15–180 seconds each (60 to 120 by default).
|
|
45
|
+
- Each short has a title, a description and hashtags to copy.
|
|
46
|
+
- Make this short again, Pick different moments (unchanged clips keep their images), and adjust each clip's start and end by hand.
|
|
47
|
+
- Optional background music that dips under the narration, also from Play.
|
|
48
|
+
- A new Shorts prompt kind in the Library.
|
|
49
|
+
|
|
50
|
+
### Document (PDF)
|
|
51
|
+
- An optional stage lays the article out as a PDF with a title page, clickable contents, drop caps, a Sources page and the thumbnail as cover. It runs on your machine, with no provider and no charge.
|
|
52
|
+
- Library → Documents: edit every PDF setting beside a live preview, and pick themes in Play and Edit project.
|
|
53
|
+
- Plain is the built-in theme. Installs that used the old DiceMaster look keep it as a theme of their own.
|
|
54
|
+
|
|
55
|
+
### YouTube description
|
|
56
|
+
- An optional step writes a description with chapter timestamps and hashtags, plus a tags list, ready to copy.
|
|
57
|
+
- Chapter times come from the narration's word timing in the finished video, and are checked against YouTube's rules before you see them.
|
|
58
|
+
- A new Description prompt kind in the Library.
|
|
59
|
+
|
|
60
|
+
### Images
|
|
61
|
+
- Codex images: pick the model and effort, Ultra included. Up to 30 minutes per image, four at once.
|
|
62
|
+
- Establishing image: an optional reference image, made first or uploaded, that every video image, short and optionally the thumbnail follow for consistent characters, palette and style. It works with Codex, OpenAI, Google and fal.ai's FLUX.2 and Nano Banana models.
|
|
63
|
+
|
|
64
|
+
### Project page
|
|
65
|
+
- Five sections: Article, Audio, Images, Video and Document. Research, Sources and Pronunciation are tabs of Article, each with Copy as Markdown.
|
|
66
|
+
- The thumbnail is shown large at the top of Images.
|
|
67
|
+
- Pronunciations are shared: a new project copies the glossary terms of your other projects, and its own glossary wins.
|
|
68
|
+
|
|
69
|
+
### Schedules and Play
|
|
70
|
+
- A schedule takes a list of topics and runs one per scheduled run, filling a template keyword and the project title.
|
|
71
|
+
- The review refreshes itself after an edit, so Start and Queue no longer stay grey.
|
|
72
|
+
- Runs use the Library's current prompts, and the project title fills its keywords.
|
|
73
|
+
|
|
74
|
+
### Backups and notifications
|
|
75
|
+
- Export everything saves one .tar with every project and its files, the Library, templates, schedules, drafts, fonts, usage and non-secret settings. Provider keys are never included.
|
|
76
|
+
- Import a backup adds to this install without replacing anything. Schedules arrive paused, and importing the same backup twice adds nothing.
|
|
77
|
+
- Automatic backups every day at a time you choose, keeping the last few.
|
|
78
|
+
- Browser notifications, and an optional Notification URL (ntfy works), when a run finishes, fails or waits for you.
|
|
79
|
+
|
|
80
|
+
### Errors
|
|
81
|
+
- Every error says what failed, why, and what to do, using the names on screen or the exact command.
|
|
82
|
+
- A caption failure names the narration chunk that stopped matching its audio, with the words expected and heard.
|
|
83
|
+
|
|
84
|
+
## In 3.0
|
|
85
|
+
|
|
86
|
+
### Design
|
|
87
|
+
- A new design system across the app and slopify.stream: one palette, type scale, spacing grid and component kit, in dark and light.
|
|
88
|
+
- A left rail with six destinations and a channel picker, full width up to 1680 px, and a bottom bar on phones.
|
|
89
|
+
- Every setting, option and non-obvious action has an info button that says what it does, when to change it, its default, and what it costs or slows. Press it, or Tab to it and press Enter; Esc closes it, and it works on touch.
|
|
90
|
+
- All 406 explanations live in one catalogue, so a control is explained the same way in Play, Edit project, templates and schedules.
|
|
91
|
+
- Images and videos sit in proper frames with a lightbox and a real player.
|
|
92
|
+
- Library rows show Edit, Duplicate, Use in Play, History and Delete directly, instead of in a menu.
|
|
93
|
+
- Ctrl+K opens a command palette for Play and every project action.
|
|
94
|
+
|
|
95
|
+
### Home and the calendar
|
|
96
|
+
- Home shows what needs you, what is running, the next seven days, videos ready to upload, and this week's videos, spend and plan limits.
|
|
97
|
+
- Mark uploaded takes a finished video off Ready to upload.
|
|
98
|
+
- The calendar shows the next four weeks. Drag a topic to another day or schedule, and queue or reject suggested topics beside it.
|
|
99
|
+
|
|
100
|
+
### Play
|
|
101
|
+
- Play opens on Template and Topic. Everything else is folded into summary rows that open where they need attention.
|
|
102
|
+
- More topics are chips under "More videos from the same setup".
|
|
103
|
+
- A real style preview: six seconds rendered on your machine with the captions, the Look, transitions and a chapter card, drawn on your establishing image or a cast picture. No provider is called.
|
|
104
|
+
- One keyword list shows what each keyword feeds, in Play, Edit project and templates.
|
|
105
|
+
- Save as template from Play. Templates never keep one-off values such as the topic you typed.
|
|
106
|
+
- The estimate shows the total, with the price of each stage folded under Cost by stage.
|
|
107
|
+
- Start counts exactly the videos it will start, and the server refuses a Start that doesn't match the review.
|
|
108
|
+
|
|
109
|
+
### The project page
|
|
110
|
+
- A section rail (Article, Narration, Images, Video, Shorts, YouTube, PDF, Cost, Live, Settings, Checkpoints, History), and on the right the next action, the steps with their times, and the cost so far.
|
|
111
|
+
- One action named for its result replaces Resume, Retry stage, Re-run section and Rebuild: Continue the run, Remake 3 outdated images, Approve and render the video.
|
|
112
|
+
- Remaking a whole stage sits behind each section's More menu and asks first.
|
|
113
|
+
- A Live tab shows the article as it is typed, images as they land and the narration waveform growing.
|
|
114
|
+
- The article, research, sources and narration read in a reading view with contents, search and copy.
|
|
115
|
+
- Edit the YouTube summary, chapters, hashtags and tags by hand. A regenerated description keeps your edits and offers the new text with Use it, Keep mine and View diff.
|
|
116
|
+
- `{{Patreon}}`-style placeholders in descriptions fill from Settings → Channel links.
|
|
117
|
+
- Edit project → Images ticks prompts and changes image counts, and says what saving will add and remove.
|
|
118
|
+
- Edit project → Inputs → Channel moves a project to another channel.
|
|
119
|
+
|
|
120
|
+
### Automatic reviews
|
|
121
|
+
- A reviewer model checks the article, every image, the narration, the thumbnail and every short, and saves its verdict and reasons beside the item.
|
|
122
|
+
- Per stage: Off, Flag only, or Flag and redo. Redo is limited per item (2 by default, 0–5), then the item is kept and flagged.
|
|
123
|
+
- Overrule accepts a flagged item. Redo makes it again and reviews it again.
|
|
124
|
+
- Claude Code and Codex review pictures. Gemini CLI and OpenRouter review text only, and Play says so.
|
|
125
|
+
- Review prompts are a new Library kind. Reviews count in Usage and in the estimate.
|
|
126
|
+
|
|
127
|
+
### Schedules
|
|
128
|
+
- A schedule can carry a series brief and ask an LLM for its next topics when fewer than 10 are queued (you can change the number).
|
|
129
|
+
- Topics are queued directly or held for your approval, and never repeat a title the schedule or any project already used, near-duplicates included.
|
|
130
|
+
- A Notification URL gets "N new topics are waiting for you".
|
|
131
|
+
- Topics can set any keyword, written one per line, as a table, or pasted as YAML or JSON.
|
|
132
|
+
|
|
133
|
+
### Channels
|
|
134
|
+
- A channel page with Brand, Cast, Templates and Schedules. Existing templates and projects move into "My channel", unchanged.
|
|
135
|
+
- The brand kit sets caption font and colours, chapter cards, an end screen, intro and outro, document theme, language and ambient sound for its projects.
|
|
136
|
+
- Cast members (characters, creatures, places, objects) have aliases, a description and up to four reference pictures. When an image's brief names a member, their pictures go with the request.
|
|
137
|
+
- Episode memory: each finished episode leaves a short summary, and a new episode's prompt gets up to five related ones.
|
|
138
|
+
- Existing videos: paste titles or import a YouTube Studio CSV. Topic suggestions skip them.
|
|
139
|
+
- A CSV import lists its titles with a tick each, so videos of other channels in the same Studio export stay out. "Keep only titles containing…" ticks the titles holding that text, and the filter is remembered per channel for the next CSV.
|
|
140
|
+
|
|
141
|
+
### Multiple voices
|
|
142
|
+
- Formats: Narration (one voice, as before), Audiobook, Podcast, Radio drama and Interview.
|
|
143
|
+
- Speakers have a name, role, voice, pace and pronunciations. Audition plays each speaker's first line, priced first and only on click.
|
|
144
|
+
- Cast members can have a voice, so recurring hosts and characters sound the same in every episode.
|
|
145
|
+
- A Script prompt kind writes speaker turns. An audiobook can instead have its article split into speakers, keeping every word.
|
|
146
|
+
- One narration request per turn, using ElevenLabs Text to Dialogue for consecutive eleven_v3 turns. Changing one speaker's voice remakes only their turns.
|
|
147
|
+
- Captions carry the speaker. Podcasts and interviews get a speaker panel with portraits from the cast.
|
|
148
|
+
- The Video stage can also make an MP3 and an M4B with chapter markers.
|
|
149
|
+
- Narration Preparation works for multi-voice runs: each speaker's turns on Inworld TTS-2 get delivery cues (Inworld's bracketed directions and non-verbal sounds) suited to who says them. Captions and word timing keep the clean words.
|
|
150
|
+
|
|
151
|
+
### Other languages
|
|
152
|
+
- A Language picker in Play, Edit project and a channel's brand kit. English projects are unchanged.
|
|
153
|
+
- The article, narration preparation, description, chapters, tags, Shorts titles and scripts are written in the project's language. Your prompt itself is never edited.
|
|
154
|
+
- Word-by-word captions in Spanish, German, French, Italian, Portuguese, Dutch, Catalan, Polish and Czech, using a free 248 MB multilingual model downloaded on first use. Other languages get sentence-by-sentence captions, and the project page says so.
|
|
155
|
+
- Voices list the languages they speak, and Play shows the ones for the project's language.
|
|
156
|
+
- Captions fall back to a bundled Noto Sans font when your font lacks the language's letters.
|
|
157
|
+
|
|
158
|
+
### Level the volume
|
|
159
|
+
- Every narration piece (a chunk, an intro or outro part, a speaker's turn) is measured and brought to −20 LUFS by one fixed gain before the pieces are joined, so voices and requests no longer jump in loudness. The Narration section says what it did, for example "the spread was 16.6 LU, now 0.2 LU".
|
|
160
|
+
- The long video and the shorts are mastered to −14 LUFS with peaks under −1.5 dBTP. The audio-only WAV, MP3 and M4B are mastered to −18 LUFS with peaks under −3 dBTP. Both are measured on the finished files.
|
|
161
|
+
- The ambient bed and shorts music stay ducked under the levelled voice.
|
|
162
|
+
- Volume is set in dB from the recommendation, or as a percentage, from −10 dB to +4 dB.
|
|
163
|
+
- Settings → General sets the default for new runs (on). Play's Export row and Edit project → Pauses and volume set it per project.
|
|
164
|
+
- Turning it on for an existing project makes no speech, word timing, description, shorts pick or review again. Uploaded narration is never re-levelled; only the exports' master reaches it.
|
|
165
|
+
|
|
166
|
+
### Pauses between sentences
|
|
167
|
+
- New runs lengthen the quiet after every sentence to at least 0.4 s (Pause between sentences, 0 to 2 s), with an optional longer Pause between paragraphs (0 by default).
|
|
168
|
+
- Set them on Play's Export row or in Edit project → Pauses and volume.
|
|
169
|
+
- A pause is added in the middle of the quiet a sentence already ends with. It never shortens a pause or cuts a word, and word timing runs afterwards, so captions, cuts, shorts, chapters and M4B marks stay in sync.
|
|
170
|
+
- In multi-voice scripts the pauses go inside a speaker's turn. The gap between turns stays separate.
|
|
171
|
+
|
|
172
|
+
### Narration that reads like speech
|
|
173
|
+
- Describe tables and figures in the narration (on by default for new runs and templates): tables, figures, Mermaid and ASCII diagrams, equations and code blocks are each described in a short spoken passage by the run's text model, instead of being skipped or read cell by cell. Leave code out drops code instead.
|
|
174
|
+
- Set it in Play under Audio Advanced, or in Edit project → Providers. Each described block adds one text-model call to the estimate.
|
|
175
|
+
- Lists are spoken as sentences ("First, … Then, … Finally, …"), blockquotes as quotes, and footnote markers and bare URLs are no longer spoken.
|
|
176
|
+
- Descriptions are written in the project's language. Claude Code and Codex are shown a figure's own picture when the project has it as an uploaded image.
|
|
177
|
+
- Captions follow what is spoken. The article, PDF and reading view keep the real table.
|
|
178
|
+
- Show tables and figures on screen (on by default with describing): each described block is drawn as a card on your machine, in the brand kit's title font and colour, and shown in the video exactly while its description is spoken. Shorts show it upright. Cards are listed under Images → From the article.
|
|
179
|
+
|
|
180
|
+
### Narration
|
|
181
|
+
- Library → Aliases: words the narrator says differently from how they are written, such as `Dr.` as `Doctor`. The article and captions keep the written words.
|
|
182
|
+
- An optional ambient bed (rain, fire, wind or your own file) under the long video's narration, ducked under the voice.
|
|
183
|
+
- More images for long videos: "N images per hour" or "one every N minutes", up to 240 per run.
|
|
184
|
+
- A glossary entry narration can't use (sounds English doesn't have, ARPAbet, a word-count mismatch, a second different pronunciation, an unreadable line) is skipped and read as ordinary text, instead of blocking every narration request. The Pronunciation tab and the rebuild review list skipped entries by number and reason.
|
|
185
|
+
- Table glossaries whose IPA column has no slashes are read as IPA.
|
|
186
|
+
|
|
187
|
+
### YouTube Studio
|
|
188
|
+
- Prepare upload lists what Studio asks for, in its order, each with Copy and a done tick, for the video and each short.
|
|
189
|
+
- The Slopify Studio extension for Chrome, Chromium and Firefox fills the upload dialog after you drop the video in: title, description, thumbnails, playlist, audience and tags. It never presses Publish, and any field it can't fill gets its own message with the text copied.
|
|
190
|
+
- The extension follows Studio's live Details page as of 27 September 2026: title and description are typed with real line breaks, tags become chips one by one, and three thumbnails go to A/B Testing when it can be filled. The playlist list and the A/B Testing dialog are not verified yet.
|
|
191
|
+
- AI use is answered Yes only in YouTube's three cases, and Prepare upload says which in YouTube's words. An AI narrator or AI pictures alone are No.
|
|
192
|
+
- The three cases are marked by a Real person switch per voice (Settings → Voices), a Draws photorealistic pictures switch per image prompt (Library → Prompts), and The uploaded clips are real footage in Prepare upload. All are off by default, and a channel's Always Yes or Always No still wins.
|
|
193
|
+
- Generated thumbnails can come in threes, for YouTube's Test & compare.
|
|
194
|
+
|
|
195
|
+
### Run cost and providers
|
|
196
|
+
- A Run cost tab on every project: the actual cost per stage and model, with tokens, narration characters, images, video seconds and time per stage.
|
|
197
|
+
- Claude Code, Codex and Gemini runs show $0 on your plan with the API equivalent, and the share of the 5-hour and weekly limit used where the CLI reports it.
|
|
198
|
+
- When a CLI's plan limit runs out, the step waits ("Waiting for Codex limits (resets at 14:00)") and carries on by itself after the reset, also after a restart.
|
|
199
|
+
- Every key field has setup steps and a Test button. Check all checks every CLI, key and chosen model.
|
|
200
|
+
- The model catalogue updates itself at start and daily. Retired models are flagged, with Switch and Switch all for the templates, schedules and projects that use them.
|
|
201
|
+
- On first launch Slopify finds the installed CLIs and says you can make a video with no API keys.
|
|
202
|
+
|
|
203
|
+
### When something goes wrong
|
|
204
|
+
- Rate limits, timeouts and dropped connections wait about 2, 4, 8 and 16 minutes and run again by themselves, also across restarts.
|
|
205
|
+
- A failed step stops only the steps that need it. A run whose video was made ends "done with problems".
|
|
206
|
+
- Failed steps show the button that fixes them: Sign in to Codex, open the provider's settings, Free space, Switch model, Edit prompt, or Soften and retry for a refused image prompt.
|
|
207
|
+
- Updating while a project runs waits for it and installs afterwards, natively and in Docker.
|
|
208
|
+
|
|
209
|
+
### First five minutes
|
|
210
|
+
- A first-run screen shows the CLIs found, Make a 60-second short, the samples and four starter packs (Sleep lore, True crime, History, Science explainers).
|
|
211
|
+
- Three read-only samples: The Library of Alexandria, an audiobook of the opening of The Wind in the Willows (a narrator and two character voices), and a two-host podcast on the Antikythera mechanism (a speaker panel with painted portraits). Make my own copy turns one into an ordinary project with nothing to rebuild.
|
|
212
|
+
- The samples are spoken by Inworld voices and painted with the Codex CLI, with the volume levelled and pauses between sentences. Each video measures about −14 LUFS, and the demos' MP3 and M4B about −18 LUFS.
|
|
213
|
+
- Settings → Backup & storage → Restore samples brings all three back.
|
|
214
|
+
- A "What's new in 3.0" tour on the first launch after updating, and an updated tutorial.
|
|
215
|
+
|
|
216
|
+
### Patch notes
|
|
217
|
+
- Settings → Patch notes shows the newest release's notes in the reading view, with earlier versions folded under Earlier versions. Also in Ctrl+K (Show patch notes) and Settings → About.
|
|
218
|
+
- After an update, the new version's notes open once by themselves. A fresh install doesn't see them. On a major update the What's new tour shows instead, and its last step has Read the full patch notes.
|
|
219
|
+
|
|
220
|
+
### Library
|
|
221
|
+
- Prompts and intros and outros keep every version, with a side-by-side word diff, restore, and a list of what uses them.
|
|
222
|
+
|
|
223
|
+
### Storage, install and upkeep
|
|
224
|
+
- New installs keep projects, backups and exports in Documents/Slopify. The database, settings, models and logs stay in the hidden data folder.
|
|
225
|
+
- Existing installs keep their folders. Settings → Backup & storage → Your files has Open folder, Move to Documents/Slopify and Choose another folder. Every file is copied and checked before Slopify switches, and the old folder is kept.
|
|
226
|
+
- New Docker installs mount Documents/Slopify too. `update --docker --projects-dir documents` moves an existing one there.
|
|
227
|
+
- Trash: deleted projects, prompts, intros and outros, templates and schedules stay 30 days in Settings → Trash.
|
|
228
|
+
- Keep outputs only frees a finished project's working files. Disk space shows the trash separately.
|
|
229
|
+
- Settings → General → Start Slopify when I log in uses your account's own start-up list, with no administrator password. Slopify starts quietly, without a browser tab, and turning it off removes exactly what it added. The first-run screen and the terminal ask once.
|
|
230
|
+
- In Docker the screen says whether Docker itself starts at login, and where to turn that on. Slopify never changes Docker's settings.
|
|
231
|
+
- Docker runs from one compose file: `npx @gentbajko/slopify --docker` installs, `npx @gentbajko/slopify@latest update` updates, natively or in Docker.
|
|
232
|
+
- Docker updates wait for running work, keep a checked recovery copy of your data, and put the previous version back by themselves if the new one doesn't answer. Installs from 2.5.0 or earlier are taken over in place, with the same data and project folder.
|
|
233
|
+
- Run cost and plan limits work through the Docker host bridge too.
|
|
234
|
+
- Backups carry channels, cast pictures, episode memories, prompt history, reviews, run cost and the trash.
|
|
235
|
+
|
|
236
|
+
### Licence
|
|
237
|
+
- Slopify is now licensed under Apache-2.0, with a NOTICE crediting the author. The licence covers the code, not the Slopify name or logo.
|
|
238
|
+
|
|
239
|
+
## Fixes
|
|
240
|
+
|
|
241
|
+
- Resuming a project made before 1.6 after its narration text changed no longer fails with a database constraint error.
|
|
242
|
+
- Videos with captions no longer fail on "subtitle model download was interrupted". The caption model now ships with the Docker image and downloads in the background on npm installs.
|
|
243
|
+
- A caption-model lock left by a crash no longer blocks captions in Docker.
|
|
244
|
+
- Undoing an edit or restoring a version reuses finished work instead of queueing it again.
|
|
245
|
+
- Waiting steps are no longer duplicated while narration chunks arrive. Held work says "Waiting for Resume".
|
|
246
|
+
- Old duplicate queued steps are removed.
|
|
247
|
+
- Cancelling a CLI step always stops the CLI.
|
|
248
|
+
- Backup imports no longer time out on slow connections.
|
|
249
|
+
- Docker updates keep only the newest recovery copy of your data.
|
|
250
|
+
- Edit project says "unsaved" only when something changed.
|
|
251
|
+
- The rebuild review shows CLI work as "$0 on your plan" with the API equivalent, instead of an unknown cost.
|
|
252
|
+
- Edited captions keep their speaker on multi-voice runs.
|
|
253
|
+
- Multi-word narration aliases no longer leave double spaces.
|
|
254
|
+
- API starts take cast speakers' current voices, as Play, batches and schedules do.
|
|
255
|
+
- Extra videos no longer get "2" or "3" appended to keyword titles.
|
|
256
|
+
- A multi-voice run whose script or speaker split was written by the text model no longer fails to store that step.
|
|
257
|
+
- The rebuild review folds its per-item list into a summary with counts, shows every blocked item's reason above Start rebuild, and says next to the button what still keeps it off.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Slopify 3.0.0
|
|
2
|
+
|
|
3
|
+
Released 27 September 2026.
|
|
4
|
+
|
|
5
|
+
3.0 is about the steps around the video. Slopify finds its own topics, reviews its own work, knows what a run cost, waits out plan limits instead of failing, and fills in YouTube Studio for you. You still press Publish. The narration sounds better too, the whole app has a new design, and every control explains itself.
|
|
6
|
+
|
|
7
|
+
The full list, from 2.0.1 to 3.0.0, is in Slopify 2.0 to 3.0, the next entry in Settings → Patch notes.
|
|
8
|
+
|
|
9
|
+
## Highlights
|
|
10
|
+
|
|
11
|
+
- **Automatic reviews** of the article, images, narration, thumbnail and shorts, with failed items redone.
|
|
12
|
+
- **Schedules that write their own topics,** and channels with a brand kit and a cast library.
|
|
13
|
+
- **Multiple voices:** audiobook, podcast, radio drama and interview.
|
|
14
|
+
- **Level the volume,** sentence pauses, and tables and figures described aloud.
|
|
15
|
+
- **Run cost** on every project, and CLI runs that wait out plan limits.
|
|
16
|
+
- **Prepare upload** and a browser extension that fills YouTube Studio's upload dialog.
|
|
17
|
+
- **A new design,** with an info button beside every setting.
|
|
18
|
+
|
|
19
|
+
## What's new
|
|
20
|
+
|
|
21
|
+
### Sound
|
|
22
|
+
- Level the volume is on by default for new runs. Every narration piece is brought to one loudness before joining, so voices no longer jump. The long video and shorts are mastered to −14 LUFS, and the WAV, MP3 and M4B to −18 LUFS.
|
|
23
|
+
- Set the volume in dB or as a percentage, from −10 dB to +4 dB, in Settings → General, Play's Export row, or Edit project → Pauses and volume.
|
|
24
|
+
- Pause between sentences (0.4 s by default, up to 2 s) and an optional Pause between paragraphs. Captions, cuts, shorts and chapters stay in sync.
|
|
25
|
+
|
|
26
|
+
### Narration
|
|
27
|
+
- Audiobook, podcast, radio drama and interview formats, each speaker with their own voice, plus MP3 and M4B files with chapters.
|
|
28
|
+
- Tables, figures, diagrams, equations and code blocks are described in a short spoken passage instead of being skipped or read cell by cell. Leave code out drops code instead.
|
|
29
|
+
- Each described block is drawn as a card and shown in the video while its description is spoken. The article and PDF keep the real table.
|
|
30
|
+
- Lists are spoken as sentences, and footnote markers and bare URLs are no longer read out.
|
|
31
|
+
- Library → Aliases: words the narrator says differently from how they are written, such as Dr. as Doctor.
|
|
32
|
+
|
|
33
|
+
### Planning and channels
|
|
34
|
+
- A schedule asks your text model for its next topics when fewer than 10 are queued, never repeating a title you already used. You can hold new topics for approval.
|
|
35
|
+
- Channels with a brand kit and a cast. Cast members' pictures go with every image request that names them, and cast members can have a voice.
|
|
36
|
+
- Import a YouTube Studio CSV of your existing videos, ticking which titles to keep, so topic suggestions skip them.
|
|
37
|
+
- Projects in other languages, with word-by-word captions in nine of them.
|
|
38
|
+
|
|
39
|
+
### The project page
|
|
40
|
+
- One action named for its result, such as Remake 3 outdated images, replaces Resume, Retry stage and Rebuild.
|
|
41
|
+
- A Live tab, a reading view, and a Run cost tab. CLI runs show $0 on your plan, the API equivalent and the share of your plan limit used.
|
|
42
|
+
- Automatic reviews: Off, Flag only, or Flag and redo per stage, with 2 redos per item by default.
|
|
43
|
+
|
|
44
|
+
### YouTube Studio
|
|
45
|
+
- Prepare upload lists what Studio asks for, in its order, each with Copy.
|
|
46
|
+
- The Slopify Studio extension for Chrome, Chromium and Firefox fills the title, description, thumbnails, playlist, audience and tags. It never presses Publish.
|
|
47
|
+
- AI use is answered Yes only in YouTube's three cases, with a Real person switch per voice and a Draws photorealistic pictures switch per image prompt.
|
|
48
|
+
|
|
49
|
+
### Getting started and staying up to date
|
|
50
|
+
- A first-run screen finds your CLIs and offers a 60-second short as the first thing to make.
|
|
51
|
+
- Three samples to open: The Library of Alexandria, an audiobook of The Wind in the Willows, and a two-host podcast on the Antikythera mechanism. All three are levelled and re-voiced.
|
|
52
|
+
- Settings → Patch notes keeps every release's notes. After an update, the new notes open once by themselves.
|
|
53
|
+
- Settings → General → Start Slopify when I log in, with no administrator password.
|
|
54
|
+
- New installs keep projects, backups and exports in Documents/Slopify.
|
|
55
|
+
|
|
56
|
+
## Upgrading from 2.x
|
|
57
|
+
|
|
58
|
+
- **Nothing becomes outdated.** Existing projects keep every file and fingerprint, so nothing is marked outdated and nothing is rebuilt.
|
|
59
|
+
- **New defaults apply to new runs.** Level the volume, sentence pauses and describing tables are on for new runs and templates. To use them on an existing project, turn them on in Edit project. Levelling and pauses make no speech again; describing tables speaks only the new descriptions.
|
|
60
|
+
- **Your files stay where they are.** Existing installs keep their folders. To move them, open Settings → Backup & storage → Your files → Move to Documents/Slopify.
|
|
61
|
+
- **Docker installs move to the compose setup by themselves.** The update keeps your data volume and project folder, makes a checked recovery copy first, and puts the previous version back if the new one doesn't answer. From now on, update with `npx @gentbajko/slopify@latest update`.
|
|
62
|
+
- **Templates and projects move into "My channel",** unchanged.
|
|
63
|
+
- **The licence is now Apache-2.0,** with a NOTICE crediting the author. It covers the code, not the Slopify name or logo.
|
|
64
|
+
|
|
65
|
+
## Fixes
|
|
66
|
+
|
|
67
|
+
- A Pronunciation Glossary entry narration can't use is skipped and read as ordinary text, instead of blocking every narration request. The Pronunciation tab lists skipped entries by number and reason.
|
|
68
|
+
- The rebuild review shows why it can't start, next to Start rebuild.
|
|
69
|
+
- The rebuild review shows CLI work as "$0 on your plan" with the API equivalent, instead of an unknown cost.
|
|
70
|
+
- Play's Start counts exactly the videos it will start. "Queue 3 videos" can no longer start one.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# Slopify 3.0.1
|
|
2
|
+
|
|
3
|
+
Released 27 September 2026.
|
|
4
|
+
|
|
5
|
+
3.0.1 finishes what 3.0 started. Your first short needs no keys at all, the help is inside the app, videos and audio play in Slopify's own player, and fewer clicks stand between you and the common tasks. The Studio extension now ships with Slopify, and a running project says how long each step has left.
|
|
6
|
+
|
|
7
|
+
What 3.0 brought is in Slopify 3.0.0 and Slopify 2.0 to 3.0, further down in Settings → Patch notes.
|
|
8
|
+
|
|
9
|
+
## Highlights
|
|
10
|
+
|
|
11
|
+
- **A first short with no keys:** the computer's own voice narrates it, and the first run is three steps that end with the short being made.
|
|
12
|
+
- **Help → Tutorials** inside the app, offline, and every info button ends in Learn more.
|
|
13
|
+
- **Slopify's own player** for videos and audio, with chapters, speed, captions and YouTube's keys.
|
|
14
|
+
- **Time left** on every running step, and a Needs you list on the calendar.
|
|
15
|
+
- **Fewer clicks:** edit a schedule's topics in place, rename in the row, Ctrl+K for everything, and keyboard shortcuts.
|
|
16
|
+
- **Google Gemini voices,** channel hosts, and audiobooks as chapters of a book.
|
|
17
|
+
- **The Studio extension ships with Slopify** and fills one upload after another.
|
|
18
|
+
|
|
19
|
+
## What's new
|
|
20
|
+
|
|
21
|
+
### Your first video
|
|
22
|
+
- A new **System voice** narrates with the computer's own speech: say on macOS, the built-in voices on Windows, and Piper or eSpeak on Linux. It is free and needs no key. Settings → Providers shows what was found, and Settings → Voices lists its voices.
|
|
23
|
+
- **Make a 60-second short** uses the system voice when no voice key is saved.
|
|
24
|
+
- The first-run screen is three steps: what you have, pick a style, make your first short. It ends with the short being made and a link to watch it.
|
|
25
|
+
- A finished short offers **Make the full video on this topic**, which opens Play with the same topic and starter pack.
|
|
26
|
+
|
|
27
|
+
### Voices
|
|
28
|
+
- Google Gemini is a voice provider, with 30 voices, on the key you saved for Google images. Two Gemini speakers talking in turn go in one request.
|
|
29
|
+
- A cast member can be one of the channel's hosts (Channels → Cast → edit → One of the channel's hosts). A new podcast or interview on Play starts with the hosts who have a voice.
|
|
30
|
+
- An audiobook can be a chapter of a book (Speakers → A chapter of a book). Its MP3 and M4B name the book and chapter, and Projects shows "Book · Chapter 2". **Make the next chapter** on a finished audiobook opens Play with the same speakers and settings.
|
|
31
|
+
|
|
32
|
+
### Help
|
|
33
|
+
- **Help → Tutorials** shows every tutorial page inside the app, with contents, search across all pages and Copy section. It works offline and always matches the version you run. Open it from the book button at the foot of the sidebar, or from Ctrl+K.
|
|
34
|
+
- Every info button's help ends in **Learn more**, which opens the tutorial section that explains it.
|
|
35
|
+
- Messages and help name controls where they are now, such as Level the volume under Play's Video and style.
|
|
36
|
+
|
|
37
|
+
### Players and pictures
|
|
38
|
+
- Videos play in Slopify's own player: a poster and a big play key, then a bar with chapters on the track, volume, speed from 0.75× to 2×, captions, picture in picture and full screen. YouTube's keys work: Space or K, J and L, the arrows, M, F, C and 0–9.
|
|
39
|
+
- Narration and every other audio play in the same kind of player. Both can jump to any time.
|
|
40
|
+
- The finished video shows its first thumbnail until it plays, and each short shows its first still.
|
|
41
|
+
- Images, thumbnails, shorts and cast pictures use one gallery grid, and every picture opens full size with Regenerate and Download.
|
|
42
|
+
|
|
43
|
+
### Fewer clicks
|
|
44
|
+
- Calendar → Schedules: add, rename, move and remove a schedule's queued topics in place. Each change saves at once, with Undo.
|
|
45
|
+
- Library → Prompts, Intros & Outros and Templates: the pencil beside a name renames it in the row.
|
|
46
|
+
- Library → Templates rows have Edit, Duplicate, Use in Play, History and Delete, like the other Library tabs.
|
|
47
|
+
- A press anywhere on a row or tile opens it: Library lists, channels, schedules, projects, Home, the calendar, samples and media.
|
|
48
|
+
- Ctrl+K finds commands by several words in any order. "cleopatra regenerate image 3" opens that project on Images and asks first.
|
|
49
|
+
- Keyboard shortcuts: C for New video, G then H, P, C, S, L, K or comma to go to a screen, / to search a list, Ctrl+S to save in the Library editors. Press ? for the full list.
|
|
50
|
+
- A finished project with a YouTube description opens on the YouTube section, so Copy description is one press.
|
|
51
|
+
- Each stage has one **Download** and one **Open folder**.
|
|
52
|
+
|
|
53
|
+
### While a run goes
|
|
54
|
+
- Every running step on the project page and on Home says its time left, from its own speed or from past runs of the same step, or says that time left is unknown.
|
|
55
|
+
- Waiting for plan limits shows everywhere a project appears: "Waiting for Codex limits (resets at 14:00)".
|
|
56
|
+
- The calendar has a **Needs you** list: failed, paused, review checkpoints, flagged reviews and videos ready to upload, each with the button that deals with it.
|
|
57
|
+
- Schedules are a tab of the calendar: **Calendar → Schedules** holds the list, each schedule's topics and detail, New schedule, and Pause and Resume. Old `/schedules` links and G then S open it.
|
|
58
|
+
- A signed-out CLI gets **Copy sign-in command** and **Check again**, which carries on the step once you are signed in.
|
|
59
|
+
- A notification says "Review needs a decision" when an automatic review keeps an item flagged.
|
|
60
|
+
- Home names the queued runs under Running now, and Projects has a Queued filter.
|
|
61
|
+
- A finished project offers to free its working files and keep the outputs, and says how much space that frees.
|
|
62
|
+
- A finished project shows its run cost at the top, with See cost by stage.
|
|
63
|
+
|
|
64
|
+
### Play, channels and schedules
|
|
65
|
+
- The style preview plays six seconds of the sample's narration and images with captions timed to it. Under More shorts options, a 9:16 preview shows how the shorts will look.
|
|
66
|
+
- Play says when the channel already made or uploaded a video on the topic you typed.
|
|
67
|
+
- Each channel keeps its own links under Channel links on its Brand tab. `{{Patreon}}` fills from the project's channel.
|
|
68
|
+
- Topic suggestions are compared with the schedule's own channel only, and a one- or two-word topic must match a title nearly exactly.
|
|
69
|
+
- Edit on a held topic sets its other keywords too.
|
|
70
|
+
- Overrule on a review whose redo hasn't started yet calls the redo off.
|
|
71
|
+
|
|
72
|
+
### Settings and providers
|
|
73
|
+
- **Test** in Settings → Providers checks a pasted key before you save it, and never stores it.
|
|
74
|
+
- The health check asks each keyed provider whether your chosen models are reachable, and reads Gemini CLI's sign-in. Each provider has **Check again**.
|
|
75
|
+
- A template or schedule that uses a retired model is flagged on its row, with the same Switch button as Settings → Models.
|
|
76
|
+
|
|
77
|
+
### YouTube Studio
|
|
78
|
+
- The Slopify Studio extension comes with Slopify: Settings → YouTube Studio → Install the Studio extension, with Download for Chrome or Firefox and three steps.
|
|
79
|
+
- **Fill in YouTube Studio** adds to a waiting list, and each new upload dialog gets the next item. Prepare upload lists what waits, with Remove. The list survives a restart.
|
|
80
|
+
- Set a playlist per channel in Settings → YouTube Studio.
|
|
81
|
+
- If Studio's dialog is missing a field, the extension fills nothing, copies the whole pack and names what is missing.
|
|
82
|
+
|
|
83
|
+
### The sidebar
|
|
84
|
+
- On a desktop the sidebar holds everything the top bar had: updates, the tutorial, Help → Tutorials, GitHub, the donation links and what is running. The wordmark shows the running version.
|
|
85
|
+
|
|
86
|
+
## Upgrading from 3.0.0
|
|
87
|
+
|
|
88
|
+
- **Nothing becomes outdated.** Projects keep every file and fingerprint.
|
|
89
|
+
- **Channel links move to each channel.** Links saved in Settings → Channel links keep filling the default channel's projects until you save its Brand tab.
|
|
90
|
+
- **Style previews are drawn again** the first time you open them, with the sample's narration.
|
|
91
|
+
- **Docker installs:** the image now includes eSpeak NG for the system voice. With Docker Desktop, Settings and the first-run screen name Docker Desktop's own "Start Docker Desktop when you sign in" setting. If you updated, Slopify asks once whether to start at login.
|
|
92
|
+
|
|
93
|
+
## Fixes
|
|
94
|
+
|
|
95
|
+
- A failed thumbnail no longer holds the PDF back. The PDF is made without a cover.
|
|
96
|
+
- The narration review compares the narration with the text that was actually spoken.
|
|
97
|
+
- The bundled samples no longer appear under Ready to upload, and paused runs are listed under Needs you.
|
|
98
|
+
- The connection error says how to fix it for your kind of install, native or Docker.
|
|
99
|
+
- Without a terminal, start at login says where its switch is instead of failing.
|
|
100
|
+
- On Windows, a Documents folder with non-ASCII letters in its path works.
|
|
101
|
+
- `slopify --help` and `--version` answer instead of crashing, and an unknown option is named plainly.
|
|
102
|
+
- A style pack used by the first short still offers Add pack for its Play template.
|
|
103
|
+
- Two cast members whose ids start alike no longer share one speaker.
|
|
104
|
+
- An editor's Save bar no longer hides a heading, and on phones it sits above the bottom bar.
|
|
105
|
+
- On Linux, a `piper` that is not the Piper voice engine (such as the mouse settings app of the same name) is no longer taken for it. Settings → Providers leaves Piper out, and the system voice uses Pico or eSpeak when either is installed.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "3.0.1",
|
|
4
|
+
"title": "Slopify 3.0.1",
|
|
5
|
+
"version": "3.0.1",
|
|
6
|
+
"date": "2026-09-27"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"id": "3.0.0",
|
|
10
|
+
"title": "Slopify 3.0.0",
|
|
11
|
+
"version": "3.0.0",
|
|
12
|
+
"date": "2026-09-27"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "2.0-to-3.0",
|
|
16
|
+
"title": "Slopify 2.0 to 3.0",
|
|
17
|
+
"range": "2.0.1 to 3.0.0",
|
|
18
|
+
"date": "2026-09-27"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "1.0-to-2.0",
|
|
22
|
+
"title": "Slopify 1.0 to 2.0",
|
|
23
|
+
"range": "1.0.1 to 2.0.0",
|
|
24
|
+
"date": "2026-09-25"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "0.4.2-to-1.0",
|
|
28
|
+
"title": "Slopify 0.4.2 to 1.0",
|
|
29
|
+
"range": "0.4.3 to 1.0.0",
|
|
30
|
+
"date": "2026-09-13"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
@@ -10,6 +10,29 @@ export function sourceOf(sources, kind) {
|
|
|
10
10
|
// Mix of both taking turns, or Still. `video/motion.ts` has the rules.
|
|
11
11
|
export const motionStyles = ["zoom", "pan", "mixed", "still"];
|
|
12
12
|
export const entryModes = ["text", "llm"];
|
|
13
|
+
// How many thumbnails a generated thumbnail step makes. Three gives two more drawn from the
|
|
14
|
+
// same prompt with other compositions, for YouTube's Test & Compare. Absent reads as one,
|
|
15
|
+
// which is what every project saved before it was.
|
|
16
|
+
export const thumbnailCounts = [1, 3];
|
|
17
|
+
// The work key of each thumbnail: the first keeps the key every thumbnail always had.
|
|
18
|
+
export function thumbnailKey(variant) {
|
|
19
|
+
return variant <= 1 ? "thumbnail:image" : `thumbnail:image:${String(variant)}`;
|
|
20
|
+
}
|
|
21
|
+
// Which thumbnail (1-3) a work key is, or undefined for any other key.
|
|
22
|
+
export function thumbnailVariant(key) {
|
|
23
|
+
if (key === "thumbnail:image")
|
|
24
|
+
return 1;
|
|
25
|
+
const match = /^thumbnail:image:([23])$/.exec(key);
|
|
26
|
+
return match === null ? undefined : Number(match[1]);
|
|
27
|
+
}
|
|
28
|
+
// How many thumbnails the run makes: three only when asked for and the image provider draws
|
|
29
|
+
// them; an uploaded thumbnail is always one.
|
|
30
|
+
export function thumbnailCountOf(draft) {
|
|
31
|
+
return draft.thumbnailCount === 3 &&
|
|
32
|
+
(draft.sources.thumbnail === "from_prompt" || draft.sources.thumbnail === "prompt_by_llm")
|
|
33
|
+
? 3
|
|
34
|
+
: 1;
|
|
35
|
+
}
|
|
13
36
|
// The Images stage's establishing image: made first (from a library image prompt) or uploaded,
|
|
14
37
|
// then every other image of the run - the video's, the shorts' and, unless `thumbnail` is
|
|
15
38
|
// false, the thumbnail - is drawn with it as a visual reference for characters, style and
|
|
@@ -18,3 +41,7 @@ export const entryModes = ["text", "llm"];
|
|
|
18
41
|
export const referenceSources = ["prompt", "provide"];
|
|
19
42
|
// The work key of the establishing image's step, in the Images stage.
|
|
20
43
|
export const referenceKey = "reference:image";
|
|
44
|
+
// What a run makes: the long video (absent, which is what every project saved before the
|
|
45
|
+
// mode existed was) or one vertical short of about a minute, made by the same stages with
|
|
46
|
+
// the Shorts renderer's word-by-word captions (`admission/short-mode.ts`).
|
|
47
|
+
export const runModes = ["video", "short"];
|