Repository navigation
fix(security): refuse DASH/IMF manifests and subfile URLs, refuse line breaks in concat paths, never write temps through a planted link #456
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
221 commits
Select commit
Hold shift + click to select a range
949c02a
Add OpenSSF Scorecard and MCP registry manifests
cursoragent 2c1dc56
Add join.py --copy (stream-copy join of matching clips) and cut.py --…
claude bd139c1
Add output_identity, check.py --expect-identity and check.py --compare
claude c6ae342
Add export.py --max-mb: a two-pass x264 encode that fits a size, meas…
claude ae26d28
Add export.py --preset copy --repair: remux a damaged file and count …
claude 3284ceb
export.py --repair: judge the remux on timestamp warnings
claude 762f1bc
Label the join copy, identity, compare, max-mb and repair additions 2.24
claude 00e44c2
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude 6884481
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude 7c2560e
Address review: cover art, timeline times, copy-join guards, --remove…
claude 921799e
Add a cut.py --remove demo; damage only video payload in the repair test
claude 8f6d53c
join.py --copy: refuse a different stream layout and a start offset; …
claude 41da3c6
check.py --expect-identity: grade an existing file under --dry-run too
claude 387f8ed
join.py --copy checks starts without stream lengths; --expect-identit…
claude c89fac0
check.py: read the identity after --compare; note a mid-check change …
claude aefb438
Route the 2.24 features from SKILL.md; make the repair test open on e…
claude b483306
Repair test: fall back to MPEG-PS where ffprobe cannot read MPEG-TS
claude 300f12e
Repair test: give the MPEG-PS fallback damage every ffmpeg reports
claude c6daf4d
Docs: multicam energy switch is a loudness proxy; why 啊 is not a defa…
claude 34dfbc7
Drop color.py --tonemap bt2390 (never worked); bring README in line w…
claude ce1820a
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude 845f7e0
check.py --compare: pair only frames both files have; RGB and rotated…
claude d71ca47
join.py --copy: measure stream spans from packets; VP9; --codec; drop…
claude c0d546a
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude de4d2f0
export.py --max-mb with gif / huge limits; --repair damage counting; …
claude a8c13a1
join.py --copy: refuse when a stream span cannot be measured; refuse …
claude b8a3428
join.py --copy: read packet spans as JSON with a dts fallback; rotati…
claude 598947d
join.py --copy: read a long clip's packet span at its head and tail o…
claude af082e3
join.py --copy: seek a long clip's tail from its own start time
claude 51d34e9
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude cba64d4
Restore CHANGELOG.md to main after the 2.24.1 release bump
claude 0bfedfb
3.0.0: require FFmpeg 6.1+ and Python 3.10+; apply the cut.py default…
claude dca4431
3.0.0 docs: work in progress
claude e82d25d
3.0.0 docs: work in progress
claude 53e5b2c
3.0.0 docs: work in progress
claude 463aa85
v3.0: tests for the new cut defaults, sampled guard on seeked TS wind…
claude bd27dc9
design-decisions: point stale test names at their 3.0 successors
claude 1a17c9e
probe: report the source's start timecode (video stream, tmcd, then f…
claude ac19577
test_asr: pick the engine call out of the fake's calls (the 6.1 floor…
claude ac53771
Review: timecode minutes/seconds 00-59; ffprobe floor in doctor; git …
claude e8f31a0
Review: doctor marks every tool unusable below the floor; an old ffpr…
claude b7b1f41
Merge main (v3.0.0)
claude a3dae9a
ci: spread the suite over three machines per platform (run_parallel.p…
claude a441122
run_parallel --part: bound N by the work items; test that every shard…
claude 2938c61
Merge main (#388)
claude 01657c7
Failures say why: ffmpeg error reasons and hints, no orphan ffmpeg af…
claude ae1d114
Review: one encoder_missing entry, asr_engine_missing under error.rea…
claude 4b4844e
Merge main (v3.1.0)
claude 7c96aa4
Merge main (#390)
claude ef3372b
docs: a talking-head reframe demo from AI-generated footage, on the l…
claude 1821226
silence --filler --transcribe: prime Whisper with the filler list; fi…
claude 756c970
Pages: the two AI-footage demos as MP4 with sound, built with grid/gr…
claude f4eeca4
demos: the gallery intro names the two AI-footage demos
claude 682b8be
docs/demos.md: keep render_project's --export-timeline line (a partia…
claude 8039999
Pages: the reframe label and aria-label give the source's real size; …
claude d25d38f
Merge origin/main
claude 9c54126
docs: SKILL.md restructured, no behavior change
claude 865771f
docs: restore three SKILL.md rules the restructure cut; fix moved-tex…
claude 6086d46
docs: step 5 keeps --expect-identity; highlight row and --from wording
claude d6c9050
Merge origin/main
claude 16e0160
Fix #393-#397: lean builds, tofu emoji, SRT as --text, dropped audio …
claude 0833d83
Merge remote branch history (same tree as main)
claude 51534e1
#395: an auto caption leaves undrawable emoji out with a warning; Cod…
claude 9ff4fc6
docs: qualify the emoji none mode and the one-audio-track gotcha
claude 0d7bca4
Merge origin/main
claude d04a721
Escape line breaks and control characters from arguments in messages …
claude fe93dec
Merge remote branch history
claude d2347ef
Report audio tracks every tool leaves out; grid/scenes sheets without…
claude 94c8b1d
CodeRabbit on #405: escape --opt=value and notes; no track report acr…
claude e233757
Merge origin/main
claude 90d8a01
docs: README and the Pages docs layout carry the v3 brand
claude 6e602c7
CHANGELOG: drop the 3.1.3 entries the merge left under Unreleased
claude b9de0f7
Side files and paths get the output guards (#408)
claude b76d9cb
Merge origin/main
claude 6fb532f
HDR10 static metadata reaches libx265 and SVT-AV1, and its loss is me…
claude 07a8911
Merge HDR10 work (#401)
claude e8f6ad7
CodeRabbit on #412: zero luminance, per-part frame read, V:0, SVT pre…
claude e14608c
CodeRabbit on #412: a still is not a picture source; read the frame w…
claude 3a9dd96
Fix the audit G colour paths (#410)
claude 65c8b04
Square pixels everywhere that scales; wrap graphics titles and overla…
claude 4f76844
Merge origin/main
claude b88e62c
CHANGELOG: match main after the 3.1.4 release
claude 5fad4ef
fix(timing): keep picture and sound on one clock in silence, sync, mu…
claude b494f46
render pack guard only where the folder exists; pin the pack table re…
claude b92f176
Merge origin/main
claude dc20e49
Merge #408 work
claude fb04bb0
Merge origin/main
claude 317d644
CHANGELOG for #410
claude 71705c4
test: check the MP4 header instead of calling file(1), which the Debi…
claude c2f6cf7
CodeRabbit on #413: guard every input and output the side files can c…
claude af16a43
Refuse hard-linked side files and allow a report inside a new --out (…
claude 4af0165
Protect caption's --brand file from its side-file writes (#408)
claude 20effb9
Pass -pattern_type only to image2 stills; never reuse a leftover temp…
claude fba851b
Merge branch 'wip-g' into wip-ghf
claude cb8ffc6
Merge branch 'worktree-agent-a913154fab2b1902e' into wip-ghf
claude 89edfeb
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude 3d8f149
Merge origin/main (v3.1.5) into the branch
claude 024115d
Merge #411 (square pixels, text wrapping, geometry audit) into wip-ghf
claude 13cfd74
Merge branch 'wip-ghf' into claude/ffmpeg-skill-repo-setup-cn8xm4
claude 9e267bb
freeze, reverse: clone frames before setpts so the hold survives FFmp…
claude 396d83f
Address CodeRabbit's review of #416
claude 80586c3
broll: B's sound lasts the whole cutaway when --from falls between fr…
claude 1ee422c
loop: refuse an output that is its input before the concat list
claude 4c2e0ab
color --lut: keep a BT.601 source's matrix on the ProRes path
claude f12b1e4
Subtitles, transcription, timeline export, Windows fonts and contract…
claude 000229e
Dry-run honesty, process handling, faststart and batch/render orchest…
claude 0f3dd9a
loop.py --crossfade: seamless repeats, and every loop measures its se…
claude a2bea69
export.py: DNxHR editing-master presets, and masters read their codec…
claude 1ff22d6
loudness.py --versions: one master, one measured file per loudness ta…
claude 2b405f6
export.py: alpha masters that read their alpha back (#417)
claude b7b2c58
export.py --preset key-fill: a switcher's fill and key from one alpha…
claude 10532b8
look.py --guides: broadcast safe-area outlines on the preview (#423)
claude 1d84f6b
test: the filler keep range is the rendered one since #416 (#414)
claude 210e129
Merge remote-tracking branch 'origin/main' into wip-i2
claude 95815dc
docs: refresh the design-decisions contents list (#414)
claude cbe34a9
docs: the #414 decisions ship in 3.1.7
claude f9463ea
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude e815e00
Merge origin/main (v3.1.6) into the branch; CHANGELOG from main
claude 6061574
Merge branch 'wip-i2' into claude/ffmpeg-skill-repo-setup-cn8xm4
claude 8f6de10
test: the fake whisper-cli fixture runs on Windows too (#414)
claude 770b906
docs: the #415 decisions ship in 3.1.8
claude 2f57e73
Address the #427 review: margin input, filler message, SRT grammar, m…
claude 53e0b97
probe: skip a start timecode whose frames field the picture's rate ca…
claude 1321b0a
probe: validate a timecode's frames field at avg_frame_rate first, as…
claude 7ea082b
Merge remote-tracking branch 'origin/main' into wip-j2
claude 0abe905
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude 3ad41b7
CHANGELOG from main (v3.1.7)
claude cfbc178
Merge branch 'wip-j2' into claude/ffmpeg-skill-repo-setup-cn8xm4
claude f9cbef2
Address the #428 review: stopped-child exit codes, batch delivery, co…
claude ab4e2a9
Address the #428 review: dry-run output check, signal exit codes, bat…
claude 47830ac
Refuse a batch output_dir that is the input folder (#428 review)
claude 2dd5feb
Contract: a render-project batch recipe always writes its artifact (#…
claude 9817eff
Keep batch rows' output a string; mark a write-free recipe with writt…
claude bdcf960
batch: key the cache on the files a step names; fix the QC note (#428…
claude efa3368
Merge main (v3.1.8) into the working branch
claude 8965367
Take main's CHANGELOG after the v3.1.8 release
claude 96a8bf7
Merge main (v3.1.8) into the feature branch
claude 2fc6682
test: an encoder capability name may contain a hyphen (libvpx-vp9)
claude fb58d2a
Merge the feature branch (#417 #418 #419 #421 #422 #423)
claude ea2b50f
loop.py --crossfade: restate the frame rate before xfade (FFmpeg 7.x)
claude f23b583
Address the #430 review: key-fill outputs, alpha checks, --versions e…
claude 9fbb793
Address the #430 review: loudness, look, demos, loop, key-fill, alpha
claude aff8e3b
Fix the demo page test off Linux; address the #430 follow-up review
claude b8204a8
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude da8d29b
Merge main (v3.2.0) into the working branch
claude 4bb594a
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude ad5cca8
Merge origin/main (v3.2.3) into claude/ffmpeg-skill-repo-setup-cn8xm4
claude f6ffb81
release: find a squash commit's PR by its SHA when the subject does n…
claude 6038492
source_carry: every result says what the output lost from its source …
claude a6112fe
Fix caption.py --srt --position (#436) and odd-sized JPEGs through th…
claude 61c750f
Merge the OpenSSF Scorecard workflow and MCP registry manifests (#369…
claude 3b33b47
CHANGELOG: the mcp subcommand, the registry manifest and the Scorecar…
claude 0450874
Review of #435: keep an odd frame's own size through the BT.709 conve…
claude b6dbf2c
Sweep a reported defect across the tools before fixing it: tests/swee…
claude 9f524d9
Fix odd-sized clips in caption.py and stabilize.py (#438)
claude 5c83110
Plugin installs in Codex and Gemini CLI find the skill: skills/ffmpeg…
claude 9962e1a
Review of #435: bound each sweep child, refuse a failed probe, write …
claude 06f6983
CONTRIBUTING: Smithery's publish commands no longer exist (its API an…
claude 46dd9f0
Publish a plugin branch with only the runtime set on each release
claude bc430e3
sweep.py: --list needs no input; pin its probe and timeout handling; …
claude 78971a4
Record the questions an outside reviewer kept asking, as a pre-push list
claude 753b800
Plugin branch step: do not hold the npm publish back; tell a missing …
claude 7f1e9e2
reviewer-findings: path guards hold in dry runs; side-file order depe…
claude 7c0ba79
Merge main (v3.3.0) into the working branch
claude c955ecf
check.py --compare --expect-changed: fail on a picture change outside…
claude 1ebf86c
change_scope: grade overlapping declarations independently; refuse a …
claude e955d68
Refuse nan and inf for every float flag of every tool, and for every …
claude c8be17d
test: --change-floor 254 is asserted by what the document reports, no…
claude e044d2f
Non-finite flag values: a failure document with --json, as the flags …
claude 9f5d47f
change_scope: rectangles are in the displayed picture (non-square pix…
claude 02f6490
change_scope: equal displayed sizes are compared whatever the stored …
claude 8970861
change_scope: the stored-size note reads the file's own width and hei…
claude 1ca5780
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude 896d9ad
Sync CHANGELOG with main after the 3.4.0 release
claude f2081fe
Marketplace entry names the plugin branch's ffmpeg-skill/ directory
claude 8913c87
README: the plugin route's minimum Claude Code version for a git-subd…
claude 987d94b
README: a table of the install routes that work today, and the direct…
claude d6d9750
Plugin tree: ship the listing icon, leave the npx installer out
claude 434092f
README: the one-line plugin install needs 2.1.275; older versions use…
claude 1671406
Plugin tree: a short README of its own; workflow.md says add --overwrite
claude d7b325d
Plugin README: transcription engines may download a model and use a l…
claude 6d11c62
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude 8781cb5
Sync with main after the 3.4.1 release
claude 9b6ac28
Plugin icon: picture chunks only, pixels recompressed; drop mcpName f…
claude 0ef2378
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude d1617dd
Sync with main after the 3.4.2 release
claude 62bdf66
Plugin listing: displayName, documentation, support and privacy links…
claude f5d9299
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude 521fd46
Sync with main after the 3.4.3 release
claude 6e2da95
release.yml: publish the MCP Registry entry after npm, by OIDC
claude ed5f9ea
release.yml: an npm that cannot be asked is not 'not on npm'
claude a3de19c
release.yml: a tagged version npm does not have fails the registry step
claude 4e487b9
release.yml: report both publish failures; recovery text without a fl…
claude 8caaf3f
release.yml: ask the MCP Registry for the exact name and version
claude 649fe2e
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude 1f49479
README: the MCP Registry entry is live
claude 3ee1125
README: the registry row says what the release workflow does when its…
claude 381bbac
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude ef44c0a
test: read the icon word list from the publish script and bound the P…
claude 34824d0
test: keep the seven known icon words as a fixed minimum
claude f1e5f0e
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude 1ba8b6f
feat(silence): --margin-lead and --margin-tail keep different amounts…
claude 2b65364
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude c695bc3
feat(silence): --sentence-min-silence and --sentence-margin-tail for …
claude 3e637ac
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude 8fe593a
docs(changelog): keep the sentence-flags entry under Unreleased after…
claude ea923be
fix(silence): tell the word before a pause by word midpoints, and tes…
claude 3b83636
fix(silence): measure an open-ended silence, refuse unusable word tim…
claude 718506b
fix(silence): a silence that runs to the end of the file ends at the …
claude 79f4907
test(silence): the sentence test makes its own clip
claude 47a962a
docs(silence): margins is present under --filler when a sentence flag…
claude 31cce57
Merge remote-tracking branch 'origin/main' into claude/ffmpeg-skill-r…
claude 200dc16
chore: sync the branch with main after #452 and the 3.6.0 release
claude 31dfd4d
fix(security): refuse DASH/IMF manifests by content, subfile URLs and…
claude 8998cc0
fix(security): export.py's fill temp and batch.py's delivery temp are…
claude 8011011
fix(security): copy through the reserved descriptor, refuse the 3GPP …
claude a2cadfa
fix(security): guard the project file, resolve overlay fonts, fail cl…
claude a93e1ef
fix(security): verify the default audit log after opening it where O_…
claude e7d6cbe
fix(security): guard the brand's own logo and font, skip the output g…
claude e337c57
fix(security): refuse a hard-linked default audit log where O_NOFOLLO…
claude e13aa91
test: require the --stop-after preview to succeed, not only to avoid …
claude File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.