clipwise 0.7.0 → 0.7.2
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.ko.md +2 -2
- package/README.md +34 -9
- package/dist/cli/index.js +224 -216
- package/dist/compose/frame-worker.js +58 -12
- package/dist/index.d.ts +312 -13
- package/dist/index.js +195 -70
- package/package.json +1 -1
- package/skills/clipwise.md +29 -1
package/README.ko.md
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
YAML 시나리오를 작성하면 시네마틱 데모 영상(MP4/GIF)을 자동으로 만들어주는 스크린 레코더. Playwright CDP 기반.
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<
|
|
8
|
+
<video src="https://github.com/user-attachments/assets/800d956f-ecf3-40c4-8750-c93b34285f11" autoplay loop muted playsinline width="100%"></video>
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
|
-
> *`npx clipwise demo` 한 줄로 생성된 영상입니다 — YAML 파일 1개,
|
|
11
|
+
> *`npx clipwise demo` 한 줄로 생성된 영상입니다 — YAML 파일 1개, 248줄.*
|
|
12
12
|
|
|
13
13
|
## 빠른 시작
|
|
14
14
|
|
package/README.md
CHANGED
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
Scriptable cinematic screen recorder for product demos — YAML in, polished MP4 out. Powered by Playwright CDP.
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<
|
|
8
|
+
<video src="https://github.com/user-attachments/assets/800d956f-ecf3-40c4-8750-c93b34285f11" autoplay loop muted playsinline width="100%"></video>
|
|
9
9
|
</p>
|
|
10
10
|
|
|
11
|
-
> *Generated with `npx clipwise demo` — 1 YAML file,
|
|
11
|
+
> *Generated with `npx clipwise demo` — 1 YAML file, 248 lines, one command.*
|
|
12
12
|
|
|
13
13
|
## Quick Start
|
|
14
14
|
|
|
@@ -154,7 +154,7 @@ steps:
|
|
|
154
154
|
|--------|-----------|---------|-------------|
|
|
155
155
|
| `navigate` | `url`, `waitUntil?` | `waitUntil: "networkidle"` | Navigate to URL |
|
|
156
156
|
| `click` | `selector`, `delay?`, `timeout?` | | Click an element |
|
|
157
|
-
| `type` | `selector`, `text`, `delay?`, `timeout?` | `delay: 50` | Type text (char-by-char) |
|
|
157
|
+
| `type` | `selector`, `text`, `delay?`, `timeout?` | `delay: 50` | Type text (char-by-char, React/Vue compatible) |
|
|
158
158
|
| `hover` | `selector`, `timeout?` | | Hover over element |
|
|
159
159
|
| `scroll` | `y?`, `x?`, `selector?`, `smooth?`, `timeout?` | `y: 0`, `x: 0`, `smooth: true` | Scroll by offset |
|
|
160
160
|
| `wait` | `duration` | | Wait (ms) |
|
|
@@ -164,13 +164,15 @@ steps:
|
|
|
164
164
|
|
|
165
165
|
| Action | Parameters | Default | Description |
|
|
166
166
|
|--------|-----------|---------|-------------|
|
|
167
|
-
| `waitForSelector` | `selector`, `state?`, `timeout?` | `state: "visible"`, `timeout: 15000` | Wait for element state |
|
|
168
|
-
| `waitForNavigation` | `waitUntil?`, `timeout?` | `waitUntil: "networkidle"`, `timeout: 15000` | Wait for page load |
|
|
169
|
-
| `waitForURL` | `url`, `timeout?` | `timeout: 15000` | Wait for URL match |
|
|
170
|
-
| `waitForFunction` | `expression`, `polling?`, `timeout?` | `polling: "raf"`, `timeout: 30000` | Wait for JS expression to be truthy |
|
|
171
|
-
| `waitForResponse` | `url`, `status?`, `timeout?` | `timeout: 30000` | Wait for network response (URL substring match) |
|
|
167
|
+
| `waitForSelector` | `selector`, `state?`, `timeout?`, `captureWhileWaiting?`, `displaySpeed?` | `state: "visible"`, `timeout: 15000` | Wait for element state |
|
|
168
|
+
| `waitForNavigation` | `waitUntil?`, `timeout?`, `captureWhileWaiting?`, `displaySpeed?` | `waitUntil: "networkidle"`, `timeout: 15000` | Wait for page load |
|
|
169
|
+
| `waitForURL` | `url`, `timeout?`, `captureWhileWaiting?`, `displaySpeed?` | `timeout: 15000` | Wait for URL match |
|
|
170
|
+
| `waitForFunction` | `expression`, `polling?`, `timeout?`, `captureWhileWaiting?`, `displaySpeed?` | `polling: "raf"`, `timeout: 30000` | Wait for JS expression to be truthy |
|
|
171
|
+
| `waitForResponse` | `url`, `status?`, `timeout?`, `captureWhileWaiting?`, `displaySpeed?` | `timeout: 30000` | Wait for network response (URL substring match) |
|
|
172
172
|
| `smartWait` | `until`, `selector?`, `timeout?`, `displaySpeed?` | `until: "networkIdle"`, `timeout: 30000`, `displaySpeed: 8` | Smart wait — records real wait, auto-speeds in output |
|
|
173
173
|
|
|
174
|
+
**`captureWhileWaiting`**: When `true`, continuously captures frames during the wait (like `smartWait`). Useful for recording loading animations, progress bars, streaming responses. Pairs with `displaySpeed` (1-32, default: 8) to auto-compress wait frames in the output.
|
|
175
|
+
|
|
174
176
|
**`waitUntil`** options: `"load"`, `"domcontentloaded"`, `"networkidle"` (default)
|
|
175
177
|
**`state`** options: `"visible"` (default), `"attached"`, `"hidden"`
|
|
176
178
|
**`polling`** options: `"raf"` (requestAnimationFrame, default) or milliseconds (e.g. `500`)
|
|
@@ -213,6 +215,29 @@ For slower, cinematic demos:
|
|
|
213
215
|
- `holdDuration: 1500-2500` ms
|
|
214
216
|
- `type.delay: 40-60` ms per character
|
|
215
217
|
|
|
218
|
+
### Authentication
|
|
219
|
+
|
|
220
|
+
Record pages behind login by restoring a browser session. Supports Playwright's `storageState` file (recommended) or inline cookies.
|
|
221
|
+
|
|
222
|
+
```yaml
|
|
223
|
+
# Option 1: Playwright storageState file (cookies + localStorage)
|
|
224
|
+
auth:
|
|
225
|
+
storageState: ./auth-state.json
|
|
226
|
+
|
|
227
|
+
# Option 2: Inline cookies
|
|
228
|
+
auth:
|
|
229
|
+
cookies:
|
|
230
|
+
- name: session_id
|
|
231
|
+
value: abc123
|
|
232
|
+
domain: .example.com
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Generate a `storageState` file by logging in interactively:
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
npx playwright codegen --save-storage=auth-state.json https://my-app.com
|
|
239
|
+
```
|
|
240
|
+
|
|
216
241
|
## Effects
|
|
217
242
|
|
|
218
243
|
All effects are optional and have sensible defaults.
|
|
@@ -297,7 +322,7 @@ deviceFrame:
|
|
|
297
322
|
|
|
298
323
|
Displays a HUD at the bottom of the screen showing what was typed. By default, only modifier+key shortcuts are shown (industry standard — same as Screen Studio, KeyCastr, ScreenFlow). Set `showTyping: true` to also show regular typed text.
|
|
299
324
|
|
|
300
|
-
When typing across multiple input fields, each field gets its own line in the HUD (up to 3 recent sessions, oldest dimmed at top, newest bright at bottom).
|
|
325
|
+
When typing across multiple input fields, each field gets its own line in the HUD (up to 3 recent sessions, oldest dimmed at top, newest bright at bottom). CJK text (Korean, Chinese, Japanese) is automatically wrapped to fit the screen width.
|
|
301
326
|
|
|
302
327
|
```yaml
|
|
303
328
|
keystroke:
|