@clipwright/sdk 0.22.0 → 0.24.0

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/CHANGELOG.md CHANGED
@@ -16,6 +16,89 @@ a customer reading it should not miss what appeared in the product. Like *Server
16
16
  they are live from the day the web app was deployed, not from the package release they are
17
17
  listed under.
18
18
 
19
+ ## [0.24.0] - 2026-10-03
20
+
21
+ A second speech model, `gemini-3.8-flash-tts`, with thirty voices of its own and a sample of each in English and
22
+ Russian. Nothing changes unless you name the model or one of its voices. The CLI and the MCP server accept the new
23
+ `tts_model` value from this release on.
24
+
25
+ ### Added
26
+
27
+ - `tts_model` accepts `gemini-3.8-flash-tts`, a speech model of a second vendor. Nothing changes unless you name it:
28
+ every default stays as it was, and Russian speech without `tts_model` still uses `eleven_v4`. The model speaks only
29
+ its own voices: without `voice`, `kore` for a female actor and `charon` otherwise. It reads Russian stress marks,
30
+ and it gets the text with `<break time="…" />` tags cut, which the response names in a warning. Its script limit is
31
+ 5,000 characters. The price per finished second is the same as on every other model. (clipwright#453)
32
+ - `voice` accepts the thirty voices of `gemini-3.8-flash-tts` by name: `kore`, `puck`, `zephyr` and the rest, as
33
+ `list_voices` returns them. Naming one selects that model without `tts_model`, and the quote names the model.
34
+ `clipwright voices` prints the model on the line of such a voice. (clipwright#453)
35
+ - *Server-side:* `list_voices` returns those thirty voices after the presets as entries of kind `model_voice`. Each
36
+ names one model in `model` and `supported_models`, has no `language`, and carries `gender` only where it is known:
37
+ `kore` is female and `charon` is male. The filters `model=gemini-3.8-flash-tts`, `language=ru` and `language=en`
38
+ find them; any other language does not. (clipwright#453)
39
+ - *Server-side:* each of those thirty voices carries `preview_url`, a short sample spoken by that voice on its model.
40
+ The sample is in English; a request filtered by `language=ru` gets the Russian one. `clipwright voices` prints the
41
+ link under the voice, as it does for every other voice with a sample. (clipwright#453)
42
+ - *Server-side:* with `gemini-3.8-flash-tts` the API refuses a preset or catalog `voice`, `voice_id`, `captions=true`,
43
+ `segments` and `inserts` before any charge: the model does not speak the preset and catalog voices and returns no
44
+ word timings. It refuses the same when a voice names the model instead of `tts_model`, and it refuses one of the
45
+ model's voices next to any other `tts_model`. Each refusal names what to pass instead. `list_voices` lists the
46
+ model in `models[]` with the languages `en` and `ru`; no preset or catalog voice names it in `supported_models`.
47
+ (clipwright#453)
48
+ - *Server-side:* a warning about stress marks on `eleven_flash_v2_5` or `eleven_turbo_v2_5` names only the models
49
+ that speak the voice of the run: with an explicit `voice` or `voice_id` these are `eleven_v3` and `eleven_v4`.
50
+ (clipwright#453)
51
+ - *Server-side:* the quote and the reserve for a Russian script on `gemini-3.8-flash-tts` assume 2.2 words per second,
52
+ the pace measured on its two default voices: 153 Russian words are quoted at 70 seconds and 2,100 credits. A script
53
+ in Latin letters on this model is quoted at 2.6 words per second, as on every other model. The charge follows the
54
+ measured duration. (clipwright#453)
55
+ - *Dashboard:* the Privacy Policy, the Cookie Policy and the AI disclosure page name the speech provider of a run
56
+ that chooses this model. (clipwright#453)
57
+
58
+ ## [0.23.0] - 2026-10-02
59
+
60
+ Russian speech moves to `eleven_v4`: the server names it by default, and the client texts say which voices speak it.
61
+ Clients older than 0.22.0 fail on the new model name.
62
+
63
+ ### Changed
64
+
65
+ - **Breaking:** *Server-side:* Russian speech uses `eleven_v4` when you name no `tts_model`. That covers the presets
66
+ `owner_ru_clone` and `daria_ru_female`, the catalog voices named `ru_*`, and a raw `voice_id` whose script is mostly
67
+ Cyrillic. Every other voice stays on `eleven_v3`, and an explicit `tts_model` always wins. Clients older than 0.22.0
68
+ read the model as one of three fixed values and fail on a response that names `eleven_v4`: `list_voices` fails
69
+ whenever the listing holds a Russian voice, as the unfiltered one always does, and `quote` fails for those Russian
70
+ voices. Upgrade to 0.22.0 or later. The contract version is `2026-10-02`. (clipwright#452)
71
+ - **Breaking:** `resolveTtsModel` in `@clipwright/core` requires `script`, the whole spoken text of the run: a raw
72
+ `voice_id` takes its model from it. (clipwright#452)
73
+ - *Server-side:* a script, or the line of one actor segment, that holds nothing but `<break time="…" />` tags is
74
+ refused before any charge on `eleven_v4`. The model gets the text with those tags cut, and nothing would be left
75
+ to say. (clipwright#452)
76
+ - *Server-side:* the warnings for a model that misreads stress marks name both models that read them, `eleven_v4`
77
+ and `eleven_v3`, instead of advising `eleven_v3` alone. (clipwright#452)
78
+ - *Server-side:* the quote and the reserve for a Russian script on `eleven_v4` assume 2.18 words per second, the
79
+ measured pace, instead of 2.3. `duration_estimate_sec` and `credits_estimate` come out about 5% higher: 153 Russian
80
+ words are quoted at 70 seconds and 2,100 credits instead of 67 seconds and 2,010. The charge still follows the
81
+ measured duration. A Russian script on an explicit `eleven_v3` and every other language are quoted as before.
82
+ (clipwright#452)
83
+ - *Server-side:* the long-form qualification ceiling (`segments` or `inserts`) moves from 300 to 327 seconds of
84
+ estimated output, for every run. A Russian script on an `eleven_v4` voice passes up to 713 words, against the 691
85
+ that passed while Russian voices spoke `eleven_v3`. A Russian script on an explicit `eleven_v3` passes up to 753
86
+ words and an English one up to 851. A longer script is refused before any charge. (clipwright#452)
87
+ - The `tts_model` and `script` descriptions say which voices speak `eleven_v4` by default, name both models that read
88
+ stress marks, and say that break tags are not counted toward the `eleven_v4` script limit. (clipwright#452)
89
+
90
+ ### Fixed
91
+
92
+ - `SKILL.md` and the CLI README no longer say that every preset and catalog voice speaks `eleven_v3`, and no longer
93
+ advise keeping Russian scripts on `eleven_v3`. They name the voices that speak `eleven_v4` when you name no model:
94
+ the presets `owner_ru_clone` and `daria_ru_female`, the catalog voices named `ru_*`, and a raw `voice_id` with a
95
+ mostly Cyrillic script. They name both models that read stress marks, `eleven_v4` and `eleven_v3`, and say that
96
+ `eleven_v4` gives no pause for a `<break time="…" />` tag and gets the text with the tag cut. `SKILL.md` lists the
97
+ 5,000-character script limit of `eleven_v4`. The behavior is the one the entries above describe; only these texts
98
+ were out of date. (clipwright#452)
99
+ - The `--tts-model` help of `clipwright make` says that an omitted flag means the voice's default model. It said
100
+ "the preset's model", which was wrong for a catalog voice and for `--voice-id`. (clipwright#452)
101
+
19
102
  ## [0.22.0] - 2026-10-01
20
103
 
21
104
  A new speech model: `tts_model` accepts `eleven_v4`, and the clients no longer fail on a model they do not know.
package/README.md CHANGED
@@ -32,11 +32,19 @@ refuse a mismatched `script`/`brief` before sending anything.
32
32
  `preview_url` that expires in an hour. Pass a voice's `name` as `voice`;
33
33
  `language` is a filter only, since any voice speaks any supported language.
34
34
 
35
+ The list holds the presets, the thirty voices of the speech model
36
+ `gemini-3.8-flash-tts` (`kind: "model_voice"`) and the catalog. A `model_voice`
37
+ voice has no language of its own: `language: "en"` and `language: "ru"` find it,
38
+ and its sample is in English unless you ask for `language: "ru"`. Naming such a
39
+ voice makes the run speak `gemini-3.8-flash-tts` without `tts_model`. That model
40
+ speaks only its own voices and refuses `captions: true` before any charge.
41
+
35
42
  Without `voice` or `voice_id`, the voice follows the actor's gender: `sarah` for
36
43
  a woman, `george` for a man. `actor_id` brings its catalog gender; with `image`,
37
44
  pass `actor_gender` (`"female"` or `"male"`). An `image` without `actor_gender`
38
45
  gets `george` and a warning. `actor_gender` next to `actor_id` or without
39
- `image` is refused before any charge.
46
+ `image` is refused before any charge. With `tts_model: "gemini-3.8-flash-tts"`
47
+ the defaults are `kore` for a woman and `charon` otherwise.
40
48
 
41
49
  Requires `CLIPWRIGHT_CLIENT_ID`, or a writable `~/.clipwright/` for the SDK to
42
50
  create one on first use. It fails loudly rather than generating a throwaway id,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clipwright/sdk",
3
- "version": "0.22.0",
3
+ "version": "0.24.0",
4
4
  "description": "TypeScript client for the Clipwright UGC video API",
5
5
  "license": "MIT",
6
6
  "author": "Dimantika Sp. z o.o.",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "zod": "^4.4.3",
27
- "@clipwright/core": "0.22.0"
27
+ "@clipwright/core": "0.24.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "^26.1.1"