Skip to content

feat: sync recent Remix improvements and add a skill version - #6

Merged
yanlinyang-commits merged 6 commits into
mainfrom
feature/sync-plugin-optimizations
Nov 2, 2026
Merged

yanlinyang-commits merged 6 commits into
mainfrom
feature/sync-plugin-optimizations

Conversation

@yanlinyang-commits

Copy link
Copy Markdown
Contributor

Summary

Brings over the skill improvements made after Remix was migrated into this repository, each as its own commit, and adds a version to the skill.

  • Provider order: transcription tries local Whisper first, then ElevenLabs and OpenAI. Generation stays on TapVid unless the user names another vendor.
  • Screen recording: the page changes invisibly before the alignment flash, so the flash is no longer the first recorded frame and a recording no longer fails after all its steps have run.
  • Captions and titles: a caption phrase breaks at a silence, segmented boards time elements as fractions of their line, validate warns about timing and caption-band problems, and frames.mjs scans for overlapping texts and exits 1 when it finds any.
  • Original's person: at the high tier, a slot with a person starts as keyframe. inspect.mjs --identity reads the clip closely, identity.mjs records the verdict, and render.mjs refuses while a clip of a person has no pass.
  • Clip duration: generated clips are sped up to end with their scene, up to 2.5x, and cut past that. Reference clips under a model's 2 s minimum are slowed on upload.
  • Version and updates: SKILL.md now carries metadata.version (1.0.1), and the README explains how to check the version and update.

Review notes

  • The recorder change is combined with this repository's time-based flash (at least 250 ms) rather than the three-frame flash it was first measured with. The capture tests passed three runs in a row, but the combination has not had a multi-round test under high CPU load.
  • Clip fitting has not yet been run against real generated video. Only tests with local clips cover it.

Test plan

  • npm run test:full -- --test-concurrency=1 locally: 229 passed, 0 failed
  • tests/remix/capture.test.mjs run three times in a row
  • CI on macOS and Windows with Node 22 and 24
  • On a real replica with an AI video slot, check that a short reference clip uploads and that a 2.5x clip looks natural

🤖 Generated with Claude Code

yanlinyang-commits and others added 6 commits October 30, 2026 12:22
…id unless asked

Local whisper now leads the transcription order and is installed even when another
vendor has a key. The skill no longer pins another generation vendor on its own
while TapVid is ready.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The recorder only gets a frame when the page changes, so after a still black page the
flash could be the first recorded frame and the recording failed after all its steps
had run, under CPU load about one time in three however long the wait. The page now
changes invisibly during the warm-up, then stays still before the flash so logged
times keep matching the video.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- A caption phrase breaks at a silence, so it no longer stays on screen across a muted line.
- Segmented boards time elements as fractions of their line; validate warns on the
  original's seconds and on captions running over a title.
- frames.mjs grabs line boundaries and scans the film for overlapping texts, exiting 1.
- Caption position is measured on frames with spoken words.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A reference video carries the original's person, and a model can keep that
person whatever the prompt and replacement image say. Nothing stopped such a
clip: the check relied on someone reading the frames, and a person a few dozen
pixels wide passes a sparse look.

- At high, a slot with a person starts as keyframe; validate rejects reference
  there unless reference_ok says why no one is recognisable.
- inspect.mjs --identity reads the first second at 8 fps and the rest at 2 fps,
  at full width, and records which file it read.
- identity.mjs takes the verdict, only after that read and with what was seen.
  A new clip voids its verdict; a fail voids every reference clip's verdict.
- render.mjs refuses while a clip of a person has no pass, with no flag to skip.
- The skill and replica reference state the rules, plus what to do when Seedance
  flags a face or a rerun returns the same error at once.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Models generate at least 5 s, so a clip for a shorter scene showed only its opening.
Project generation now speeds a clip to end with its scene, up to 2.5x, and cuts what is
left past that. Reference clips under a model's 2 s minimum are slowed when uploaded
instead of being rejected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Installed copies had no way to tell which version they were. The version now
travels with the folder in SKILL.md, starting at 1.0.1, and the README says
where to read it and how to update.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@yanlinyang-commits
yanlinyang-commits merged commit 6964244 into main Nov 2, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant