ffmpeg-skill 2.10.9 → 2.10.10

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/README.md CHANGED
@@ -419,7 +419,7 @@ The encode path a tool will actually take is Apple VideoToolbox, for h264, hevc
419
419
 
420
420
  ## FFmpeg compatibility
421
421
 
422
- The tools need FFmpeg 5.0 or later and Python 3.9 or later (standard library only); Python 3.10+ is recommended: 3.9 still works but is deprecated since 2.11.0 (CPython 3.9 is end of life), `doctor` and the `npx` installer warn on it, and 3.0 drops it. What CI actually exercises on every pull request is FFmpeg 5.1.1 (static build), 6.1 (Ubuntu apt), 7.1 (Debian trixie apt), 8.x (macOS Homebrew) and 9.x (Windows gyan.dev), on Python 3.9 and 3.13 (the two ends of the supported range). The capability parser has been run against the listings of these builds:
422
+ The tools need FFmpeg 5.0 or later and Python 3.9 or later (standard library only); Python 3.10+ is recommended: 3.9 still works but is deprecated since 2.10.9 (CPython 3.9 is end of life), `doctor` and the `npx` installer warn on it, and 3.0 drops it. What CI actually exercises on every pull request is FFmpeg 5.1.1 (static build), 6.1 (Ubuntu apt), 7.1 (Debian trixie apt), 8.x (macOS Homebrew) and 9.x (Windows gyan.dev), on Python 3.9 and 3.13 (the two ends of the supported range). The capability parser has been run against the listings of these builds:
423
423
 
424
424
  | FFmpeg | `-filters` row layout | Source |
425
425
  |---|---|---|
package/bin/install.js CHANGED
@@ -47,9 +47,9 @@ if (has('--help') || has('-h')) {
47
47
  // The probe also prints major.minor, so the installer can warn about a deprecated interpreter.
48
48
  const PYTHON_PROBE = ['-c', "import sys; sys.stdout.write('%d.%d' % sys.version_info[:2]); raise SystemExit(0 if sys.version_info >= (3, 9) else 1)"];
49
49
 
50
- // 2.11.0 deprecates Python 3.9 (docs/contract.md "Deprecation policy"; `contract --json`'s
50
+ // 2.10.9 deprecates Python 3.9 (docs/contract.md "Deprecation policy"; `contract --json`'s
51
51
  // `deprecated`). The same line as scripts/_contract.py's PY39_DEPRECATION (a test keeps them equal).
52
- const PY39_DEPRECATION = 'warning: Python 3.9 is deprecated since ffmpeg-skill 2.11.0 (CPython 3.9 reached end of life in October 2025 and gets no security fixes); it still works in 2.x and support ends in 3.0.0: use Python 3.10+.';
52
+ const PY39_DEPRECATION = 'warning: Python 3.9 is deprecated since ffmpeg-skill 2.10.9 (CPython 3.9 reached end of life in October 2025 and gets no security fixes); it still works in 2.x and support ends in 3.0.0: use Python 3.10+.';
53
53
 
54
54
  function pythonDeprecation(version) {
55
55
  return version === '3.9' ? PY39_DEPRECATION : null;
package/docs/contract.md CHANGED
@@ -21,7 +21,7 @@ The contract is derived from the code that runs, not maintained beside it:
21
21
  | Field | Meaning | Changes when |
22
22
  |---|---|---|
23
23
  | `contract_version` | shape of this document (`1.0`) | a key is renamed, removed or changes meaning |
24
- | `skill.version` | the npm / package.json version (`2.10.9`) | any release |
24
+ | `skill.version` | the npm / package.json version (`2.10.10`) | any release |
25
25
 
26
26
  A release that adds a tool or a flag keeps `contract_version`; a breaking change to the
27
27
  ToolSpec shape bumps it. Consumers pin on `contract_version` and read `skill.version`
@@ -81,12 +81,12 @@ on, the line says so.
81
81
 
82
82
  `contract --json` carries a top-level `deprecated` list, next to `contract_version`: one entry per
83
83
  thing the next major removes, `{"what", "since", "replacement", "removed_in", "where"}` with `where`
84
- naming the surface (`cli`, `json`, `mcp`, `behaviour`). It was empty in 2.0.0. Since 2.11.0 it lists one
84
+ naming the surface (`cli`, `json`, `mcp`, `behaviour`). It was empty in 2.0.0. Since 2.10.9 it lists one
85
85
  entry: **running on Python 3.9** (`where: behaviour`, `removed_in: 3.0.0`). CPython 3.9 reached end of life
86
86
  in October 2025 and gets no security fixes, but raising the floor is a break, so 2.x keeps running on 3.9
87
87
  (`requirements.python` stays `>=3.9`, and CI keeps testing it). It is deprecated, and Python 3.10+ is
88
88
  recommended: on 3.9, `doctor` and the `npx` installer print one stderr line,
89
- `warning: Python 3.9 is deprecated since ffmpeg-skill 2.11.0 (...); it still works in 2.x and support ends in 3.0.0: use Python 3.10+.`
89
+ `warning: Python 3.9 is deprecated since ffmpeg-skill 2.10.9 (...); it still works in 2.x and support ends in 3.0.0: use Python 3.10+.`
90
90
  Like every deprecation warning it is stderr only: `doctor --json`'s document has no key for it.
91
91
  `tests/test_contract.py` refuses a package.json major bump that still lists an entry that major should remove, or that
92
92
  comes before step 2's window has passed -- unless the waiver is written here, as 2.0.0's is.
@@ -123,12 +123,12 @@ JSON would have been rewritten for that. The flat keys, typed per tool in `outpu
123
123
  ```json
124
124
  {
125
125
  "contract_version": "1.0",
126
- "deprecated": [{"what": "running on Python 3.9 (the requirements.python floor)", "since": "2.11.0", "replacement": "Python 3.10 or later; ...", "removed_in": "3.0.0", "where": "behaviour"}],
126
+ "deprecated": [{"what": "running on Python 3.9 (the requirements.python floor)", "since": "2.10.9", "replacement": "Python 3.10 or later; ...", "removed_in": "3.0.0", "where": "behaviour"}],
127
127
  "removed": [{"what": "...", "since": "1.10.0", "replacement": "...", "removed_in": "2.0.0", "where": "cli | json | mcp | behaviour"}],
128
- "skill": {"id": "ffmpeg-skill", "version": "2.10.9", "execution_mode": "local", "kind": "execution",
128
+ "skill": {"id": "ffmpeg-skill", "version": "2.10.10", "execution_mode": "local", "kind": "execution",
129
129
  "entrypoints": {"cli": "...", "mcp": "...", "contract": "...", "doctor": "..."},
130
130
  "not_provided": ["AI reasoning", "decisions", "production plans", "project IR", "approvals", "network access", "transcription engine"]},
131
- "requirements": {"python": ">=3.9 (standard library only; 3.9 deprecated since 2.11.0, removed in 3.0.0; 3.10+ recommended)", "ffmpeg": ">=5.0", "ffprobe": ">=5.0"},
131
+ "requirements": {"python": ">=3.9 (standard library only; 3.9 deprecated since 2.10.9, removed in 3.0.0; 3.10+ recommended)", "ffmpeg": ">=5.0", "ffprobe": ">=5.0"},
132
132
  "execution": {"shell": false, "arbitrary_executables": false, "network": false,
133
133
  "model_downloads": {"when": "...", "in_process": {"faster-whisper": "..."},
134
134
  "child_process": {"parakeet-mlx": "...", "openai-whisper": "..."},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ffmpeg-skill",
3
- "version": "2.10.9",
3
+ "version": "2.10.10",
4
4
  "description": "Agent Skill that gives coding agents (Claude Code, Cursor, Codex) a local video editor: 42 FFmpeg tools with a machine-readable contract, contract-derived MCP server, FFmpeg capability detection, probe-first / verify-last workflow. Cut, join, silence removal, fit, captions and karaoke, overlays, motion graphics, HDR to SDR, LUTs, audio clean-up and typed dynamics, sync with drift correction, multicam, loudness, delivery checks, project rendering, batch. No API keys, no cloud, no dependencies.",
5
5
  "keywords": [
6
6
  "ffmpeg",
@@ -832,9 +832,9 @@ def ffmpeg_security(versions: Dict[str, Optional[str]], sources: Optional[Dict[s
832
832
  return out
833
833
 
834
834
 
835
- # 2.11.0 deprecates Python 3.9 (docs/contract.md "Deprecation policy"; DEPRECATED below). The same
835
+ # 2.10.9 deprecates Python 3.9 (docs/contract.md "Deprecation policy"; DEPRECATED below). The same
836
836
  # line is printed by bin/install.js (PY39_DEPRECATION there; a test keeps the two equal).
837
- PY39_DEPRECATION = ("warning: Python 3.9 is deprecated since ffmpeg-skill 2.11.0 (CPython 3.9 reached end of life "
837
+ PY39_DEPRECATION = ("warning: Python 3.9 is deprecated since ffmpeg-skill 2.10.9 (CPython 3.9 reached end of life "
838
838
  "in October 2025 and gets no security fixes); it still works in 2.x and support ends in 3.0.0: use Python 3.10+.")
839
839
 
840
840
 
@@ -1404,7 +1404,7 @@ DEPRECATED: List[Dict[str, str]] = [
1404
1404
  # CPython 3.9 reached end of life in October 2025. Raising the floor is a break, so 2.x keeps
1405
1405
  # running on it (CI still tests 3.9) and doctor / bin/install.js print PY39_DEPRECATION.
1406
1406
  {"what": "running on Python 3.9 (the requirements.python floor)",
1407
- "since": "2.11.0", "removed_in": "3.0.0", "where": "behaviour",
1407
+ "since": "2.10.9", "removed_in": "3.0.0", "where": "behaviour",
1408
1408
  "replacement": "Python 3.10 or later; on 3.9, doctor and the npx installer print a one-line warning"},
1409
1409
  ]
1410
1410
 
@@ -1644,7 +1644,7 @@ def build(detect: bool = True) -> Dict[str, Any]:
1644
1644
  },
1645
1645
  "not_provided": ["AI reasoning", "decisions", "production plans", "project IR", "approvals", "network access", "transcription engine"],
1646
1646
  },
1647
- "requirements": {"python": ">=3.9 (standard library only; 3.9 deprecated since 2.11.0, removed in 3.0.0; 3.10+ recommended)", "ffmpeg": ">=5.0", "ffprobe": ">=5.0", "node": ">=16 (npx installer only)"},
1647
+ "requirements": {"python": ">=3.9 (standard library only; 3.9 deprecated since 2.10.9, removed in 3.0.0; 3.10+ recommended)", "ffmpeg": ">=5.0", "ffprobe": ">=5.0", "node": ">=16 (npx installer only)"},
1648
1648
  "execution": {
1649
1649
  "shell": False,
1650
1650
  "arbitrary_executables": False,