@clipwright/sdk 0.14.0 → 0.15.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.
Files changed (3) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +11 -0
  3. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -10,6 +10,55 @@ on the client side. Entries marked *Server-side* changed the API itself: every
10
10
  client version sees them from the day the API was deployed, not from the package
11
11
  release they are listed under.
12
12
 
13
+ Entries marked *Dashboard:* changed the web app (the dashboard or a public page of the site)
14
+ and no package. This file is also the public changelog at /changelog, so they are listed here:
15
+ a customer reading it should not miss what appeared in the product. Like *Server-side* entries,
16
+ they are live from the day the web app was deployed, not from the package release they are
17
+ listed under.
18
+
19
+ ## [0.15.0] - 2026-09-14
20
+
21
+ ### Changed
22
+
23
+ - *Server-side:* in `GET /v1/voices`, a catalog voice carries `preview_url` and
24
+ `preview_expires_at` once its sample is recorded: a short clip of that voice on
25
+ `eleven_v3`, in the voice's own language. The link is signed by us and
26
+ expires like a preset's. A voice without a recorded sample for its current
27
+ model and sample text still has neither field, and the list never links to
28
+ the vendor. The sample texts outside English and Russian are machine
29
+ translations that no native speaker has checked. (clipwright#164)
30
+ - *Server-side:* without `voice` or `voice_id`, the voice follows the actor's
31
+ gender: a woman from `actor_id` speaks `sarah`, a man speaks `george`. The
32
+ default actor still speaks `george`, and an explicit voice always wins.
33
+ (clipwright#183)
34
+ - *Server-side:* a request with `image` and no voice gets a warning that the
35
+ male `george` voice is used, naming `voice` and `actor_gender` as the fix.
36
+ `GET /v1/runs/{id}` derives it from the stored input, so runs started before
37
+ this change show it too. A request with `actor_gender` next to `voice` or
38
+ `voice_id` gets a warning that the hint changed nothing. (clipwright#183)
39
+ - *Server-side:* the contract version moved to `2026-09-14`. (clipwright#183)
40
+ - *Dashboard:* `/actors` says that an actor without a chosen voice speaks the
41
+ default voice of their gender. (clipwright#183)
42
+
43
+ ### Added
44
+
45
+ - `actor_gender` (`female` or `male`) in the `make_ugc` input: next to `image`
46
+ it picks the default voice of that gender. It is refused with `actor_id` and
47
+ without `image`, and the remote fetch killswitch turns it off together with
48
+ `image`. The REST API accepts it from the day the API is deployed; the MCP
49
+ tool schema, the SDK types and the CLI flag `--actor-gender` arrive with this
50
+ release. (clipwright#183)
51
+
52
+ - *Dashboard:* `/actors` shows the actor library as a gallery: every published portrait with
53
+ its `actor_id` to copy, next to gender, approximate age, description and version. A person
54
+ can pick a face without calling `GET /v1/actors` first. (clipwright#148)
55
+ - *Dashboard:* `/videos` lists the finished videos of the account. Each one is a still frame
56
+ taken from the delivered file, with the length of the clip and the day it finished, and a
57
+ tile with a frame plays the video. Runs that are still going or that failed stay on the
58
+ Balance page. (clipwright#138)
59
+ - *Dashboard:* `/changelog` renders this file as a public page, so the release notes are
60
+ readable without installing a package. (clipwright#102)
61
+
13
62
  ## [0.14.0] - 2026-09-13
14
63
 
15
64
  ### Changed
package/README.md CHANGED
@@ -16,6 +16,17 @@ carries an idempotency key derived from the input and from this installation's
16
16
  id, so a retried request returns the original run instead of paying twice. Pass
17
17
  `idempotencyKey` explicitly when you deliberately want a fresh run.
18
18
 
19
+ `listVoices({ language, gender, age, use_case, model })` returns the voices for
20
+ `voice`, each filter optional. It is free. A voice with a sample carries a
21
+ `preview_url` that expires in an hour. Pass a voice's `name` as `voice`;
22
+ `language` is a filter only, since any voice speaks any supported language.
23
+
24
+ Without `voice` or `voice_id`, the voice follows the actor's gender: `sarah` for
25
+ a woman, `george` for a man. `actor_id` brings its catalog gender; with `image`,
26
+ pass `actor_gender` (`"female"` or `"male"`). An `image` without `actor_gender`
27
+ gets `george` and a warning. `actor_gender` next to `actor_id` or without
28
+ `image` is refused before any charge.
29
+
19
30
  Requires `CLIPWRIGHT_CLIENT_ID`, or a writable `~/.clipwright/` for the SDK to
20
31
  create one on first use. It fails loudly rather than generating a throwaway id,
21
32
  because a per-process id would disable duplicate protection without saying so.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clipwright/sdk",
3
- "version": "0.14.0",
3
+ "version": "0.15.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.14.0"
27
+ "@clipwright/core": "0.15.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "^26.1.1"