@vanillaskyai/video 0.4.0 → 0.4.1

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
@@ -4,6 +4,12 @@ VanillaSky follows semantic versioning. This changelog begins with the 0.1 beta.
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.4.1
8
+
9
+ - Keeps soundtrack audio continuous when a saved `VideoPlayer` uses `loop`.
10
+ A track shorter than the visual timeline now repeats as soon as it ends,
11
+ instead of leaving silence until the video itself wraps.
12
+
7
13
  ## 0.4.0
8
14
 
9
15
  - Adds `loop` to `VideoPlayer` for saved videos. A completed video previously
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Give your AI a video output
2
2
 
3
- ![Version 0.4.0 beta](https://img.shields.io/badge/version-0.4.0_beta-7c3aed)
3
+ ![Version 0.4.1 beta](https://img.shields.io/badge/version-0.4.1_beta-7c3aed)
4
4
 
5
5
  **VanillaSky is the open-source video response layer.** Turn text, structured
6
6
  data, and live application context into personalized video responses that start
@@ -17,7 +17,7 @@ the planning prompt, trusted templates, validation, streaming, and player.
17
17
  For humans:
18
18
 
19
19
  ```bash
20
- npm install @vanillaskyai/video@0.4.0 ai @ai-sdk/openai
20
+ npm install @vanillaskyai/video@0.4.1 ai @ai-sdk/openai
21
21
  ```
22
22
 
23
23
  For coding agents:
@@ -106,7 +106,7 @@ shows each complete, validated scene as soon as it is ready and returns a
106
106
  deterministic `Video` object when generation finishes.
107
107
 
108
108
  A copy-and-run app is in
109
- [`examples/nextjs-quickstart`](https://github.com/VanillaSkyAi/video/tree/v0.4.0/examples/nextjs-quickstart).
109
+ [`examples/nextjs-quickstart`](https://github.com/VanillaSkyAi/video/tree/v0.4.1/examples/nextjs-quickstart).
110
110
 
111
111
  ## Shape the response
112
112
 
package/dist/react.d.ts CHANGED
@@ -22,7 +22,7 @@ interface VideoPlayerSharedProps {
22
22
  style?: CSSProperties;
23
23
  /** Accessible name for the player region. */
24
24
  ariaLabel?: string;
25
- /** Restart from the beginning instead of showing the replay affordance. Saved videos only. */
25
+ /** Repeat the saved video and its soundtrack instead of showing the replay affordance. */
26
26
  loop?: boolean;
27
27
  onComplete?: (video: Video) => void;
28
28
  onError?: (error: Error) => void;
package/dist/react.js CHANGED
@@ -733,7 +733,7 @@ function VideoPlayerRuntime({
733
733
  autoPlay: isPlaying,
734
734
  muted: isMuted,
735
735
  preload: "auto",
736
- loop: state.status === "streaming" || introPlaying
736
+ loop: loop || state.status === "streaming" || introPlaying
737
737
  },
738
738
  config.audio.audioUrl
739
739
  ) : null,
@@ -5,7 +5,7 @@
5
5
  Install VanillaSky:
6
6
 
7
7
  ```bash
8
- npm install @vanillaskyai/video@0.4.0 ai @ai-sdk/openai
8
+ npm install @vanillaskyai/video@0.4.1 ai @ai-sdk/openai
9
9
  ```
10
10
 
11
11
  Set your provider key in `.env.local` (never commit it):
@@ -50,7 +50,7 @@ sets its marker only for `next dev`, and it accepts only localhost. Every
50
50
  production request is denied. Replace it with your real session validation
51
51
  before deploying. For literal files and commands,
52
52
  use the tested
53
- [`examples/nextjs-quickstart` directory](https://github.com/VanillaSkyAi/video/tree/v0.4.0/examples/nextjs-quickstart).
53
+ [`examples/nextjs-quickstart` directory](https://github.com/VanillaSkyAi/video/tree/v0.4.1/examples/nextjs-quickstart).
54
54
 
55
55
  `model` can come from any AI SDK provider, registry, gateway, compatible API,
56
56
  or custom implementation. The application can choose a cheaper or faster model
@@ -5,7 +5,7 @@
5
5
  Install VanillaSky and one AI SDK provider:
6
6
 
7
7
  ```bash
8
- npm install @vanillaskyai/video@0.4.0 ai @ai-sdk/openai
8
+ npm install @vanillaskyai/video@0.4.1 ai @ai-sdk/openai
9
9
  ```
10
10
 
11
11
  Create an ignored `.env.local`:
@@ -74,7 +74,7 @@ requests; replace it with your application's session validation before
74
74
  deploying.
75
75
 
76
76
  The copy-and-run app is in the
77
- [`examples/nextjs-quickstart` directory](https://github.com/VanillaSkyAi/video/tree/v0.4.0/examples/nextjs-quickstart).
77
+ [`examples/nextjs-quickstart` directory](https://github.com/VanillaSkyAi/video/tree/v0.4.1/examples/nextjs-quickstart).
78
78
 
79
79
  For another LLM, replace `openai(...)` with the matching AI SDK model. The route
80
80
  shape and React code stay the same. See [Provider integration](provider-integration.md)
@@ -33,7 +33,9 @@ The job owns the data and the mapping. The player owns nothing but playback.
33
33
  ## Play without stopping
34
34
 
35
35
  Pass `loop` alongside a saved video. The player restarts from the beginning
36
- instead of showing its replay affordance, and keeps its soundtrack in step.
36
+ instead of showing its replay affordance and loops its soundtrack continuously.
37
+ A track shorter than the channel repeats as soon as it ends; when the visual
38
+ timeline wraps, the soundtrack restarts from the beginning with it.
37
39
 
38
40
  <!-- verify:live-channel-example:start -->
39
41
  ```tsx
@@ -130,7 +132,8 @@ reading time will stretch its animation instead and give them none.
130
132
  - **Never replace a good channel with a broken one.** Validate first, and on
131
133
  failure leave the previous configuration in place.
132
134
  - **Autoplay needs `playbackMode="muted-autoplay"`.** Browsers refuse unmuted
133
- autoplay, and a channel has no one present to click.
135
+ autoplay. A channel can still carry a looping soundtrack: it starts muted and
136
+ becomes audible when a viewer uses the player's sound control.
134
137
  - **Host your media.** Loops re-request assets over long sessions; serving them
135
138
  from your own origin keeps a content policy simple and avoids depending on
136
139
  someone else's CDN.
@@ -87,6 +87,13 @@ generated scene exists, and render it with `autoPlay` and `startMuted={false}`.
87
87
  If the browser blocks the audible start, the player returns to the first frame
88
88
  and exposes its sound-start control.
89
89
 
90
+ For a saved video rendered with `<VideoPlayer video={video} loop />`, the
91
+ soundtrack loops too. A track shorter than the visual timeline repeats without
92
+ a silent gap, and the player restarts it from the beginning when the visual
93
+ timeline wraps. This does not bypass browser autoplay policy: use muted autoplay
94
+ for unattended playback and let a viewer unmute, or start audible playback from
95
+ a user interaction.
96
+
90
97
  ## Media providers
91
98
 
92
99
  VanillaSky is provider-independent. When `resolveMedia` is configured, the
@@ -9,7 +9,7 @@
9
9
  },
10
10
  "dependencies": {
11
11
  "@ai-sdk/openai": "^4.0.42",
12
- "@vanillaskyai/video": "0.4.0",
12
+ "@vanillaskyai/video": "0.4.1",
13
13
  "ai": "^7.0.66",
14
14
  "next": "16.3.1",
15
15
  "react": "19.2.8",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vanillaskyai/video",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Open-source video response SDK for personalized AI applications.",
5
5
  "keywords": [
6
6
  "generative-video",