@cloudglue/tinycloud 0.3.11 → 0.3.13

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
@@ -17,11 +17,11 @@ The npm package is a small launcher: on first run it downloads the matching
17
17
  platform distribution from Cloudglue's CDN (cached under
18
18
  `~/.tinycloud/versions/<version>/`), verifies its checksum, and execs the real
19
19
  binary. The package version pins the binary version, so
20
- `npx @cloudglue/tinycloud@0.3.11` always runs tinycloud 0.3.11. It also adds two
20
+ `npx @cloudglue/tinycloud@0.3.13` always runs tinycloud 0.3.13. It also adds two
21
21
  wrapper commands:
22
22
 
23
23
  ```bash
24
- tinycloud install --version 0.3.11 # pre-download a version
24
+ tinycloud install --version 0.3.13 # pre-download a version
25
25
  tinycloud install --latest # install latest stable and pin to it
26
26
  tinycloud update # move to latest stable, prune old versions
27
27
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudglue/tinycloud",
3
- "version": "0.3.11",
3
+ "version": "0.3.13",
4
4
  "description": "Agent CLI for deep video and image work, by Cloudglue. Downloads the tinycloud binary on first run.",
5
5
  "bin": {
6
6
  "tinycloud": "bin/tinycloud.js"
@@ -206,9 +206,11 @@ Authoring your own recipes: [reference/workflow-authoring.md](reference/workflow
206
206
  `data.embed_snippet` (`<cg-video>`), which only plays on a private site of
207
207
  the same account. When writing HTML around an embed, use the component's
208
208
  built-ins (`autoplay`+`muted`, `loop`, `start-time`, `exclusive`,
209
+ `playbackrates` — speed-menu rates, default `1 1.5 2`, shown at every
210
+ player size; embed v7 —
209
211
  `clip-start`/`clip-end` to frame one "back to moment" clip — plus
210
212
  `clip-only`, 0.3.8+, to play nothing but that window; JS
211
- `playSegment(start, end?)`) and the container components
213
+ `playSegment(start, end?)`, `playbackRate` get/set) and the container components
212
214
  (`<cg-playlist>`, `<cg-grid>`, `<cg-chapters>`) rather than hand-rolled
213
215
  players, galleries, or segment-list JS — details in
214
216
  [reference/verbs.md](reference/verbs.md).
@@ -71,7 +71,8 @@ connector?" or an envelope field needs explaining.
71
71
  (`status`, `data`, `ref`, `meta`, `error`, …). The machine contract; see
72
72
  reference/envelope.md.
73
73
  - **Watch context / describe** — the reusable analysis `tinycloud watch`
74
- produces (summary, segments, transcript-ish context). Cached locally and
74
+ produces (summary, segments with their spoken utterances inlined as
75
+ `speech[]`, transcript-ish context). Cached locally and
75
76
  mirrored in Cloudglue, so later `extract`/`ask`/`search` reuse it instead
76
77
  of re-analyzing.
77
78
  - **See / image describe (0.3.7+)** — the image counterpart of `watch`:
@@ -121,9 +122,11 @@ connector?" or an envelope field needs explaining.
121
122
  embed via the `data.embed_snippet` `<cg-video>` tag, which only plays on a
122
123
  private published site of the same account. The embed has playback
123
124
  attributes (`autoplay`+`muted`, `loop`, `start-time`, `poster`,
124
- `accent-color`, `exclusive`, and `clip-start`/`clip-end` to frame a single
125
+ `accent-color`, `exclusive`, `playbackrates` space-separated
126
+ playback-speed-menu rates, default `1 1.5 2`, shown at every player size
127
+ (sites embed v7) — and `clip-start`/`clip-end` to frame a single
125
128
  "back to moment" clip — `clip-only`, 0.3.8+, plays nothing but that
126
- window) and a JS API (`playSegment`, `seekTo`, media
129
+ window) and a JS API (`playSegment`, `seekTo`, `playbackRate` get/set, media
127
130
  events re-dispatched on the element) for custom site HTML, and plays
128
131
  standalone or inside the container components (`<cg-playlist>`,
129
132
  `<cg-grid>`, `<cg-chapters>`) — see reference/verbs.md.
@@ -54,7 +54,7 @@ Flags shared by most verbs are listed once at the bottom.
54
54
  tinycloud watch <source> [--segment uniform:20|chapters|shots|segments]
55
55
  [--shot-min-seconds <s>] [--shot-max-seconds <s>]
56
56
  [--profile default|light|custom] [--speech-only | --visual-only]
57
- [--start <t>] [--end <t>] [--transcript] [--content] [--json-index]
57
+ [--start <t>] [--end <t>] [--transcript] [--content]
58
58
  [--background]
59
59
  ```
60
60
 
@@ -65,6 +65,20 @@ bounds are part of the cache key, so tuned and default shot passes never
65
65
  collide. `watch` is **video/audio only** — point it at an image and it errors
66
66
  ("watch analyzes video/audio; for an image use `tinycloud see`").
67
67
 
68
+ Segments carry the spoken words (0.3.12+): each segment (and embedded shot)
69
+ inlines its overlapping utterances as `speech: string[]`. A source with
70
+ speech but no visual segmentation — an audio file, `--speech-only`, a very
71
+ short or windowed source — gets uniform 20s speech segments synthesized
72
+ (`"segmentation": "uniform:20"`) instead of an empty `segments` list. Caches
73
+ written by older versions heal automatically on the next watch or search.
74
+
75
+ `--transcript` adds the full transcript as `data.transcript` (speaker-labeled
76
+ when more than one speaker); `--content` inlines the complete describe
77
+ markdown as `data.content`. Both are derived per invocation — they don't
78
+ change the cache key and are served on cache hits, so asking for them never
79
+ re-runs an analysis. `--json-index` was removed in 0.3.12 (it had long been a
80
+ no-op; passing it now errors as an unknown flag).
81
+
68
82
  ### see — analyze an image (cloud, 0.3.7+)
69
83
 
70
84
  ```bash
@@ -122,6 +136,9 @@ tinycloud search "<keyword>" [--in <paths|source-ids|collection-ids|all>]
122
136
 
123
137
  Searches cached context locally, including cached `see` image results (0.3.7+),
124
138
  so a describe you've already run is greppable without another cloud call.
139
+ `--field speech` matches the utterances inlined on cached watch segments —
140
+ including speech-only/audio watches (0.3.12+; older cache entries heal in
141
+ place during the scan, nothing is re-billed).
125
142
 
126
143
  ### probe — semantic search (cloud)
127
144
 
@@ -373,13 +390,25 @@ When generating custom site HTML around a `<cg-video>` embed, use the
373
390
  component's built-ins instead of reinventing them. It defaults to a
374
391
  responsive 16:9 dark placeholder (override with plain page CSS on the
375
392
  `cg-video` selector); mount-time attributes: `autoplay` (pair with `muted` or
376
- browsers block it), `loop`, `start-time`, `poster`, `accent-color`, and
393
+ browsers block it), `loop`, `start-time`, `poster`, `accent-color`,
394
+ `playbackrates` (speed menu — next paragraph), and
377
395
  `exclusive` (put it on every player in a gallery so starting one pauses the
378
396
  rest). Its JS API queues until ready — `playSegment(start, end?)`,
379
- `seekTo()`, `play()`/`pause()` — and media events are re-dispatched on the
397
+ `seekTo()`, `play()`/`pause()`, `playbackRate` (get/set) — and media events
398
+ are re-dispatched on the
380
399
  element (`timeupdate`, `ended`, `cg-ready`); prefer `playSegment` over
381
400
  hand-rolled seek logic for "click a moment to play that segment" pages.
382
401
 
402
+ Playback speed (sites embed v7): every `<cg-video>` shows a playback-speed
403
+ menu at every player size — including narrow grid cells and phones — with
404
+ default rates `1 1.5 2`. Supply your own list with the space-separated
405
+ `playbackrates` attribute (e.g. `playbackrates="0.5 1 1.5 2"`), and get/set
406
+ the speed from page code via the `playbackRate` JS property (safe to set
407
+ before mount; non-positive and non-numeric values are ignored — the viewer
408
+ can always change it from the menu). The speed menu ships in the
409
+ Cloudglue-served embed script, so it is not gated on a tinycloud version and
410
+ already-published sites pick it up without republishing.
411
+
383
412
  To frame a single moment inside the full recording — a cited highlight you
384
413
  want to share on its own — add `clip-start`/`clip-end` (seconds) to a bare
385
414
  `<cg-video>`: the player draws a clip-length badge, a clip-region strip with a
@@ -9,11 +9,11 @@ set -u
9
9
 
10
10
  # Mirror tinycloud-skill.json: min_version / supported_range upper bound
11
11
  # (CI diffs these against the manifest).
12
- MIN_VERSION="0.3.7"
12
+ MIN_VERSION="0.3.12"
13
13
  MAX_VERSION_EXCLUSIVE="0.4.0"
14
14
  INSTALL_CMD='curl -fsSL https://app.cloudglue.dev/tinycloud.sh | bash'
15
15
  # Kept in sync with ../tinycloud-skill.json required_features (CI diffs them).
16
- REQUIRED_FEATURES="envelope.v1 watch.v1 see.v1 extract.v1 extract.images.v1 caption.v1 search.v1 probe.v1 ask.v1 clip.v1 grab.v1 face.v1 jobs.v1 library.collections.v1 library.collections.create.v1 library.collections.mutate.v1 library.collections.entities.v1 library.sync.url.v1 workflow.v1 publish.v1 publish.manage.v1 publish.video.v1 setup.v1"
16
+ REQUIRED_FEATURES="envelope.v1 watch.v1 watch.speech.v1 see.v1 extract.v1 extract.images.v1 caption.v1 search.v1 probe.v1 ask.v1 clip.v1 grab.v1 face.v1 jobs.v1 library.collections.v1 library.collections.create.v1 library.collections.mutate.v1 library.collections.entities.v1 library.sync.url.v1 workflow.v1 publish.v1 publish.manage.v1 publish.video.v1 setup.v1"
17
17
 
18
18
  # 1) Binary present and responsive?
19
19
  if ! command -v tinycloud >/dev/null 2>&1; then
@@ -1,11 +1,12 @@
1
1
  {
2
- "skill_version": "0.3.11",
2
+ "skill_version": "0.3.13",
3
3
  "tinycloud": {
4
- "min_version": "0.3.7",
5
- "supported_range": ">=0.3.7 <0.4.0",
4
+ "min_version": "0.3.12",
5
+ "supported_range": ">=0.3.12 <0.4.0",
6
6
  "required_features": [
7
7
  "envelope.v1",
8
8
  "watch.v1",
9
+ "watch.speech.v1",
9
10
  "see.v1",
10
11
  "extract.v1",
11
12
  "extract.images.v1",