Add intro and outro clips to the note video export - #199
Merged
Merged
Conversation
The Generate video dialog gets an "Intro & outro" tab: upload a clip to play before the title screen and another after the last section. Each plays whole with its own sound (or silence), fitted to the frame like any other clip, with nothing of the render drawn over it — no watermark, overlay text or waveform — and the background music bed now starts after the intro and stops before the outro. Each clip gets its own chapter marker, and the poster frame is taken from the article rather than the intro. The dialog's options are now saved to the account (the `video_render_options` user setting) as well as this browser, so they follow the user to any device. Media a saved setting points at — the intro and outro, and the existing watermark icon and music track — counts as in use, so the unlinked-file sweep and asset deletes no longer treat those uploads as leaked. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UbALFUcK5VxpopwohSkG7N
davior
marked this pull request as ready for review
October 4, 2026 02:36
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The Generate video dialog gets a new Intro & outro tab. You can upload one clip to play before the title screen and another to play after the last section.
Persistence / storage
/media/{user_id}/…), not into the note. They're meant to be reused on every video.video_render_optionsuser setting (debounced 800 ms, and flushed when the dialog closes), as well as to localStorage. They now follow the user to other browsers. The account copy wins when it exists; otherwise the dialog falls back to the browser's older local copy. Just opening the dialog never writes, so a stale local copy can't overwrite what another device saved.settings_media_filenames()feeds bothfile_is_referenced()and the unlinked-file sweep. Without this, the unlinked-file sweep would have offered the intro and outro (and the existing watermark icon and music track, which already had this problem) for deletion. Once a clip is removed in the dialog, the sweep offers it again.Testing
pytestgives 1138 passed (22 new):render()through a fake ffmpeg (test_video_bumpers.py): no overlays or waveform on a clip, music window, chapters, poster time, crossfade timingtsc --noEmit,vitest(190 passed),npm run build./api/settingswith its URL and filename. After a reload with the local copy cleared, the dialog still showed it. The unlinked scan didn't list it while it was in use and did list it after Remove. No page errors.🤖 Generated with Claude Code
https://claude.ai/code/session_01UbALFUcK5VxpopwohSkG7N
Generated by Claude Code