clipwise 0.6.0 → 0.7.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clipwise",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Scriptable cinematic screen recorder for product demos — YAML in, polished MP4 out",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -64,7 +64,10 @@ steps: [] # Array of steps (min 1, first must have navigate)
64
64
  - name: "Step name" # Optional label
65
65
  captureDelay: 50 # ms to wait after actions before capturing (50-100 for snappy)
66
66
  holdDuration: 700 # ms to hold on result (500-800 for snappy)
67
- transition: none # none | fade
67
+ transition: none # none | fade | slide-left | slide-up | blur
68
+ effects: # Per-step effects override (optional)
69
+ zoom:
70
+ enabled: false # Disable zoom for this step only
68
71
  actions: [] # Array of actions
69
72
  ```
70
73
 
@@ -168,16 +171,15 @@ steps: [] # Array of steps (min 1, first must have navigate)
168
171
 
169
172
  ### Effects Configuration
170
173
 
171
- #### Zoom — Adaptive zoom follows cursor on clicks
174
+ #### Zoom — Adaptive zoom follows cursor on clicks (smart camera: auto-suppressed during scroll)
172
175
  ```yaml
173
176
  zoom:
174
177
  enabled: true
175
- intensity: moderate # subtle(1.15x) | light(1.25x) | moderate(1.35x) | strong(1.5x) | dramatic(1.8x)
176
- # scale: 1.35 # Or use numeric value (overridden by intensity)
177
- duration: 500 # Zoom animation ms
178
- easing: ease-in-out # ease-in-out | ease-in | ease-out | linear
178
+ intensity: light # subtle(1.15x) | light(1.25x) | moderate(1.35x) | strong(1.5x) | dramatic(1.8x)
179
+ # scale: 1.25 # Or use numeric value (overridden by intensity)
180
+ duration: 800 # Zoom animation ms
179
181
  autoZoom:
180
- followCursor: true
182
+ followCursor: true # Viewport pans to follow cursor position
181
183
  transitionDuration: 300
182
184
  padding: 200
183
185
  ```
@@ -188,7 +190,7 @@ cursor:
188
190
  enabled: true
189
191
  size: 20
190
192
  color: "#000000"
191
- speed: fast # fast (~72ms) | normal (~144ms) | slow (~288ms)
193
+ speed: normal # fast (~72ms) | normal (~144ms) | slow (~288ms)
192
194
  smoothing: true
193
195
  clickEffect: true
194
196
  clickColor: "rgba(59, 130, 246, 0.3)"
@@ -215,17 +217,16 @@ background:
215
217
  ```yaml
216
218
  deviceFrame:
217
219
  enabled: true
218
- type: browser # browser | macbook | iphone | ipad | android | none
220
+ type: browser # browser | iphone | ipad | android | none
219
221
  darkMode: true
220
222
  ```
221
223
 
222
224
  | Type | Description |
223
225
  |------|-------------|
224
226
  | browser | macOS browser chrome with traffic lights |
225
- | macbook | MacBook Pro frame |
226
- | iphone | iPhone 15 Pro with Dynamic Island |
227
- | ipad | iPad Pro with camera dot |
228
- | android | Android with punch-hole camera |
227
+ | iphone | iPhone 15 Pro with Dynamic Island + home bar |
228
+ | ipad | iPad Pro with front camera dot |
229
+ | android | Android generic with punch-hole camera |
229
230
 
230
231
  #### Keystroke HUD — Shows typed keys on screen
231
232
  ```yaml
@@ -260,6 +261,39 @@ speedRamp:
260
261
  transitionFrames: 15
261
262
  ```
262
263
 
264
+ #### Audio Narration — Attach audio to MP4 output
265
+ ```yaml
266
+ audio:
267
+ file: "./narration.mp3" # MP3, WAV, etc.
268
+ volume: 1.0 # 0.0 - 2.0 (default: 1.0)
269
+ fadeIn: 0 # Fade-in duration in seconds
270
+ fadeOut: 0 # Fade-out duration in seconds
271
+ ```
272
+
273
+ ### Per-Step Effects Override
274
+
275
+ Override global effects on a per-step basis. Unset properties inherit from global config.
276
+
277
+ ```yaml
278
+ effects:
279
+ zoom:
280
+ enabled: true
281
+ intensity: light
282
+
283
+ steps:
284
+ - name: "Overview"
285
+ effects:
286
+ zoom:
287
+ enabled: false # No zoom for this step
288
+ actions: [...]
289
+
290
+ - name: "Detail view"
291
+ effects:
292
+ zoom:
293
+ intensity: strong # Extra zoom for this step only
294
+ actions: [...]
295
+ ```
296
+
263
297
  ### Output Presets
264
298
 
265
299
  | Preset | Use case | Approx size (30s) |
@@ -277,6 +311,10 @@ speedRamp:
277
311
  5. **Prefer async waits over fixed `wait`**: use `waitForSelector`, `waitForFunction`, `waitForResponse` instead of guessing durations
278
312
  6. **Viewport = output**: if viewport and output dimensions differ, output will be scaled (a warning is shown)
279
313
  7. **Mobile scenarios**: use `viewport: {width: 390, height: 844}` with `deviceFrame.type: iphone` and `output: {width: 540, height: 1080}`
314
+ 8. **Per-step effects**: any effect property can be overridden per step — unset properties inherit from global config
315
+ 9. **Smart camera**: zoom is automatically suppressed during scroll actions; `followCursor` pans to cursor position
316
+ 10. **Transitions**: use `fade` or `blur` for cinematic cuts between major sections; `slide-left`/`slide-up` for sequential flows
317
+ 11. **Audio**: audio file must exist at the specified path; only works with MP4 output format
280
318
 
281
319
  ## Timing Presets
282
320