doc-detective-common 4.24.0 → 4.25.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/dist/index.cjs +2272 -242
- package/dist/schemas/schemas.json +2272 -242
- package/dist/types/generated/record_v3.d.ts +38 -5
- package/dist/types/generated/record_v3.d.ts.map +1 -1
- package/dist/types/generated/step_v3.d.ts +106 -73
- package/dist/types/generated/step_v3.d.ts.map +1 -1
- package/dist/types/generated/test_v3.d.ts +266 -200
- package/dist/types/generated/test_v3.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -34134,7 +34134,7 @@
|
|
|
34134
34134
|
"record": {
|
|
34135
34135
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
34136
34136
|
"title": "record",
|
|
34137
|
-
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
34137
|
+
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
34138
34138
|
"anyOf": [
|
|
34139
34139
|
{
|
|
34140
34140
|
"title": "Record (simple)",
|
|
@@ -34149,7 +34149,7 @@
|
|
|
34149
34149
|
"type": "object",
|
|
34150
34150
|
"properties": {
|
|
34151
34151
|
"surface": {
|
|
34152
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
34152
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
34153
34153
|
"anyOf": [
|
|
34154
34154
|
{
|
|
34155
34155
|
"title": "Surface (by browser engine)",
|
|
@@ -34299,6 +34299,72 @@
|
|
|
34299
34299
|
]
|
|
34300
34300
|
}
|
|
34301
34301
|
}
|
|
34302
|
+
},
|
|
34303
|
+
{
|
|
34304
|
+
"title": "App surface",
|
|
34305
|
+
"type": "object",
|
|
34306
|
+
"additionalProperties": false,
|
|
34307
|
+
"required": [
|
|
34308
|
+
"app"
|
|
34309
|
+
],
|
|
34310
|
+
"properties": {
|
|
34311
|
+
"app": {
|
|
34312
|
+
"type": "string",
|
|
34313
|
+
"minLength": 1,
|
|
34314
|
+
"pattern": "\\S",
|
|
34315
|
+
"transform": [
|
|
34316
|
+
"trim"
|
|
34317
|
+
],
|
|
34318
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
34319
|
+
},
|
|
34320
|
+
"window": {
|
|
34321
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
34322
|
+
"title": "App window selector",
|
|
34323
|
+
"anyOf": [
|
|
34324
|
+
{
|
|
34325
|
+
"title": "By index",
|
|
34326
|
+
"type": "integer",
|
|
34327
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
34328
|
+
},
|
|
34329
|
+
{
|
|
34330
|
+
"title": "By name",
|
|
34331
|
+
"type": "string",
|
|
34332
|
+
"minLength": 1,
|
|
34333
|
+
"pattern": "\\S",
|
|
34334
|
+
"transform": [
|
|
34335
|
+
"trim"
|
|
34336
|
+
],
|
|
34337
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
34338
|
+
},
|
|
34339
|
+
{
|
|
34340
|
+
"title": "By criteria",
|
|
34341
|
+
"type": "object",
|
|
34342
|
+
"additionalProperties": false,
|
|
34343
|
+
"minProperties": 1,
|
|
34344
|
+
"properties": {
|
|
34345
|
+
"name": {
|
|
34346
|
+
"type": "string",
|
|
34347
|
+
"minLength": 1,
|
|
34348
|
+
"pattern": "\\S",
|
|
34349
|
+
"transform": [
|
|
34350
|
+
"trim"
|
|
34351
|
+
],
|
|
34352
|
+
"description": "Assigned window name."
|
|
34353
|
+
},
|
|
34354
|
+
"index": {
|
|
34355
|
+
"type": "integer",
|
|
34356
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
34357
|
+
},
|
|
34358
|
+
"title": {
|
|
34359
|
+
"type": "string",
|
|
34360
|
+
"minLength": 1,
|
|
34361
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
34362
|
+
}
|
|
34363
|
+
}
|
|
34364
|
+
}
|
|
34365
|
+
]
|
|
34366
|
+
}
|
|
34367
|
+
}
|
|
34302
34368
|
}
|
|
34303
34369
|
]
|
|
34304
34370
|
},
|
|
@@ -34364,13 +34430,12 @@
|
|
|
34364
34430
|
},
|
|
34365
34431
|
"target": {
|
|
34366
34432
|
"type": "string",
|
|
34367
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
34433
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
34368
34434
|
"enum": [
|
|
34369
34435
|
"display",
|
|
34370
34436
|
"window",
|
|
34371
34437
|
"viewport"
|
|
34372
|
-
]
|
|
34373
|
-
"default": "display"
|
|
34438
|
+
]
|
|
34374
34439
|
},
|
|
34375
34440
|
"fps": {
|
|
34376
34441
|
"type": "integer",
|
|
@@ -34388,7 +34453,7 @@
|
|
|
34388
34453
|
{
|
|
34389
34454
|
"type": "boolean",
|
|
34390
34455
|
"title": "Record (boolean)",
|
|
34391
|
-
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
34456
|
+
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
34392
34457
|
}
|
|
34393
34458
|
],
|
|
34394
34459
|
"components": {
|
|
@@ -34406,7 +34471,7 @@
|
|
|
34406
34471
|
"type": "object",
|
|
34407
34472
|
"properties": {
|
|
34408
34473
|
"surface": {
|
|
34409
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
34474
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
34410
34475
|
"anyOf": [
|
|
34411
34476
|
{
|
|
34412
34477
|
"title": "Surface (by browser engine)",
|
|
@@ -34556,6 +34621,72 @@
|
|
|
34556
34621
|
]
|
|
34557
34622
|
}
|
|
34558
34623
|
}
|
|
34624
|
+
},
|
|
34625
|
+
{
|
|
34626
|
+
"title": "App surface",
|
|
34627
|
+
"type": "object",
|
|
34628
|
+
"additionalProperties": false,
|
|
34629
|
+
"required": [
|
|
34630
|
+
"app"
|
|
34631
|
+
],
|
|
34632
|
+
"properties": {
|
|
34633
|
+
"app": {
|
|
34634
|
+
"type": "string",
|
|
34635
|
+
"minLength": 1,
|
|
34636
|
+
"pattern": "\\S",
|
|
34637
|
+
"transform": [
|
|
34638
|
+
"trim"
|
|
34639
|
+
],
|
|
34640
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
34641
|
+
},
|
|
34642
|
+
"window": {
|
|
34643
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
34644
|
+
"title": "App window selector",
|
|
34645
|
+
"anyOf": [
|
|
34646
|
+
{
|
|
34647
|
+
"title": "By index",
|
|
34648
|
+
"type": "integer",
|
|
34649
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
34650
|
+
},
|
|
34651
|
+
{
|
|
34652
|
+
"title": "By name",
|
|
34653
|
+
"type": "string",
|
|
34654
|
+
"minLength": 1,
|
|
34655
|
+
"pattern": "\\S",
|
|
34656
|
+
"transform": [
|
|
34657
|
+
"trim"
|
|
34658
|
+
],
|
|
34659
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
34660
|
+
},
|
|
34661
|
+
{
|
|
34662
|
+
"title": "By criteria",
|
|
34663
|
+
"type": "object",
|
|
34664
|
+
"additionalProperties": false,
|
|
34665
|
+
"minProperties": 1,
|
|
34666
|
+
"properties": {
|
|
34667
|
+
"name": {
|
|
34668
|
+
"type": "string",
|
|
34669
|
+
"minLength": 1,
|
|
34670
|
+
"pattern": "\\S",
|
|
34671
|
+
"transform": [
|
|
34672
|
+
"trim"
|
|
34673
|
+
],
|
|
34674
|
+
"description": "Assigned window name."
|
|
34675
|
+
},
|
|
34676
|
+
"index": {
|
|
34677
|
+
"type": "integer",
|
|
34678
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
34679
|
+
},
|
|
34680
|
+
"title": {
|
|
34681
|
+
"type": "string",
|
|
34682
|
+
"minLength": 1,
|
|
34683
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
34684
|
+
}
|
|
34685
|
+
}
|
|
34686
|
+
}
|
|
34687
|
+
]
|
|
34688
|
+
}
|
|
34689
|
+
}
|
|
34559
34690
|
}
|
|
34560
34691
|
]
|
|
34561
34692
|
},
|
|
@@ -34621,13 +34752,12 @@
|
|
|
34621
34752
|
},
|
|
34622
34753
|
"target": {
|
|
34623
34754
|
"type": "string",
|
|
34624
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
34755
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
34625
34756
|
"enum": [
|
|
34626
34757
|
"display",
|
|
34627
34758
|
"window",
|
|
34628
34759
|
"viewport"
|
|
34629
|
-
]
|
|
34630
|
-
"default": "display"
|
|
34760
|
+
]
|
|
34631
34761
|
},
|
|
34632
34762
|
"fps": {
|
|
34633
34763
|
"type": "integer",
|
|
@@ -34673,13 +34803,12 @@
|
|
|
34673
34803
|
},
|
|
34674
34804
|
"target": {
|
|
34675
34805
|
"type": "string",
|
|
34676
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
34806
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
34677
34807
|
"enum": [
|
|
34678
34808
|
"display",
|
|
34679
34809
|
"window",
|
|
34680
34810
|
"viewport"
|
|
34681
|
-
]
|
|
34682
|
-
"default": "display"
|
|
34811
|
+
]
|
|
34683
34812
|
},
|
|
34684
34813
|
"fps": {
|
|
34685
34814
|
"type": "integer",
|
|
@@ -34712,6 +34841,22 @@
|
|
|
34712
34841
|
"target": "window",
|
|
34713
34842
|
"fps": 60
|
|
34714
34843
|
}
|
|
34844
|
+
},
|
|
34845
|
+
{
|
|
34846
|
+
"path": "notepad.mp4",
|
|
34847
|
+
"surface": {
|
|
34848
|
+
"app": "notepad"
|
|
34849
|
+
}
|
|
34850
|
+
},
|
|
34851
|
+
{
|
|
34852
|
+
"path": "full-screen.mp4",
|
|
34853
|
+
"surface": {
|
|
34854
|
+
"app": "notepad"
|
|
34855
|
+
},
|
|
34856
|
+
"engine": {
|
|
34857
|
+
"name": "ffmpeg",
|
|
34858
|
+
"target": "display"
|
|
34859
|
+
}
|
|
34715
34860
|
}
|
|
34716
34861
|
]
|
|
34717
34862
|
}
|
|
@@ -78716,7 +78861,7 @@
|
|
|
78716
78861
|
"record": {
|
|
78717
78862
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
78718
78863
|
"title": "record",
|
|
78719
|
-
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
78864
|
+
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
78720
78865
|
"anyOf": [
|
|
78721
78866
|
{
|
|
78722
78867
|
"title": "Record (simple)",
|
|
@@ -78731,7 +78876,7 @@
|
|
|
78731
78876
|
"type": "object",
|
|
78732
78877
|
"properties": {
|
|
78733
78878
|
"surface": {
|
|
78734
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
78879
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
78735
78880
|
"anyOf": [
|
|
78736
78881
|
{
|
|
78737
78882
|
"title": "Surface (by browser engine)",
|
|
@@ -78881,6 +79026,72 @@
|
|
|
78881
79026
|
]
|
|
78882
79027
|
}
|
|
78883
79028
|
}
|
|
79029
|
+
},
|
|
79030
|
+
{
|
|
79031
|
+
"title": "App surface",
|
|
79032
|
+
"type": "object",
|
|
79033
|
+
"additionalProperties": false,
|
|
79034
|
+
"required": [
|
|
79035
|
+
"app"
|
|
79036
|
+
],
|
|
79037
|
+
"properties": {
|
|
79038
|
+
"app": {
|
|
79039
|
+
"type": "string",
|
|
79040
|
+
"minLength": 1,
|
|
79041
|
+
"pattern": "\\S",
|
|
79042
|
+
"transform": [
|
|
79043
|
+
"trim"
|
|
79044
|
+
],
|
|
79045
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
79046
|
+
},
|
|
79047
|
+
"window": {
|
|
79048
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
79049
|
+
"title": "App window selector",
|
|
79050
|
+
"anyOf": [
|
|
79051
|
+
{
|
|
79052
|
+
"title": "By index",
|
|
79053
|
+
"type": "integer",
|
|
79054
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
79055
|
+
},
|
|
79056
|
+
{
|
|
79057
|
+
"title": "By name",
|
|
79058
|
+
"type": "string",
|
|
79059
|
+
"minLength": 1,
|
|
79060
|
+
"pattern": "\\S",
|
|
79061
|
+
"transform": [
|
|
79062
|
+
"trim"
|
|
79063
|
+
],
|
|
79064
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
79065
|
+
},
|
|
79066
|
+
{
|
|
79067
|
+
"title": "By criteria",
|
|
79068
|
+
"type": "object",
|
|
79069
|
+
"additionalProperties": false,
|
|
79070
|
+
"minProperties": 1,
|
|
79071
|
+
"properties": {
|
|
79072
|
+
"name": {
|
|
79073
|
+
"type": "string",
|
|
79074
|
+
"minLength": 1,
|
|
79075
|
+
"pattern": "\\S",
|
|
79076
|
+
"transform": [
|
|
79077
|
+
"trim"
|
|
79078
|
+
],
|
|
79079
|
+
"description": "Assigned window name."
|
|
79080
|
+
},
|
|
79081
|
+
"index": {
|
|
79082
|
+
"type": "integer",
|
|
79083
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
79084
|
+
},
|
|
79085
|
+
"title": {
|
|
79086
|
+
"type": "string",
|
|
79087
|
+
"minLength": 1,
|
|
79088
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
79089
|
+
}
|
|
79090
|
+
}
|
|
79091
|
+
}
|
|
79092
|
+
]
|
|
79093
|
+
}
|
|
79094
|
+
}
|
|
78884
79095
|
}
|
|
78885
79096
|
]
|
|
78886
79097
|
},
|
|
@@ -78946,13 +79157,12 @@
|
|
|
78946
79157
|
},
|
|
78947
79158
|
"target": {
|
|
78948
79159
|
"type": "string",
|
|
78949
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
79160
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
78950
79161
|
"enum": [
|
|
78951
79162
|
"display",
|
|
78952
79163
|
"window",
|
|
78953
79164
|
"viewport"
|
|
78954
|
-
]
|
|
78955
|
-
"default": "display"
|
|
79165
|
+
]
|
|
78956
79166
|
},
|
|
78957
79167
|
"fps": {
|
|
78958
79168
|
"type": "integer",
|
|
@@ -78970,7 +79180,7 @@
|
|
|
78970
79180
|
{
|
|
78971
79181
|
"type": "boolean",
|
|
78972
79182
|
"title": "Record (boolean)",
|
|
78973
|
-
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
79183
|
+
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
78974
79184
|
}
|
|
78975
79185
|
],
|
|
78976
79186
|
"components": {
|
|
@@ -78988,7 +79198,7 @@
|
|
|
78988
79198
|
"type": "object",
|
|
78989
79199
|
"properties": {
|
|
78990
79200
|
"surface": {
|
|
78991
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
79201
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
78992
79202
|
"anyOf": [
|
|
78993
79203
|
{
|
|
78994
79204
|
"title": "Surface (by browser engine)",
|
|
@@ -79138,6 +79348,72 @@
|
|
|
79138
79348
|
]
|
|
79139
79349
|
}
|
|
79140
79350
|
}
|
|
79351
|
+
},
|
|
79352
|
+
{
|
|
79353
|
+
"title": "App surface",
|
|
79354
|
+
"type": "object",
|
|
79355
|
+
"additionalProperties": false,
|
|
79356
|
+
"required": [
|
|
79357
|
+
"app"
|
|
79358
|
+
],
|
|
79359
|
+
"properties": {
|
|
79360
|
+
"app": {
|
|
79361
|
+
"type": "string",
|
|
79362
|
+
"minLength": 1,
|
|
79363
|
+
"pattern": "\\S",
|
|
79364
|
+
"transform": [
|
|
79365
|
+
"trim"
|
|
79366
|
+
],
|
|
79367
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
79368
|
+
},
|
|
79369
|
+
"window": {
|
|
79370
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
79371
|
+
"title": "App window selector",
|
|
79372
|
+
"anyOf": [
|
|
79373
|
+
{
|
|
79374
|
+
"title": "By index",
|
|
79375
|
+
"type": "integer",
|
|
79376
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
79377
|
+
},
|
|
79378
|
+
{
|
|
79379
|
+
"title": "By name",
|
|
79380
|
+
"type": "string",
|
|
79381
|
+
"minLength": 1,
|
|
79382
|
+
"pattern": "\\S",
|
|
79383
|
+
"transform": [
|
|
79384
|
+
"trim"
|
|
79385
|
+
],
|
|
79386
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
79387
|
+
},
|
|
79388
|
+
{
|
|
79389
|
+
"title": "By criteria",
|
|
79390
|
+
"type": "object",
|
|
79391
|
+
"additionalProperties": false,
|
|
79392
|
+
"minProperties": 1,
|
|
79393
|
+
"properties": {
|
|
79394
|
+
"name": {
|
|
79395
|
+
"type": "string",
|
|
79396
|
+
"minLength": 1,
|
|
79397
|
+
"pattern": "\\S",
|
|
79398
|
+
"transform": [
|
|
79399
|
+
"trim"
|
|
79400
|
+
],
|
|
79401
|
+
"description": "Assigned window name."
|
|
79402
|
+
},
|
|
79403
|
+
"index": {
|
|
79404
|
+
"type": "integer",
|
|
79405
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
79406
|
+
},
|
|
79407
|
+
"title": {
|
|
79408
|
+
"type": "string",
|
|
79409
|
+
"minLength": 1,
|
|
79410
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
79411
|
+
}
|
|
79412
|
+
}
|
|
79413
|
+
}
|
|
79414
|
+
]
|
|
79415
|
+
}
|
|
79416
|
+
}
|
|
79141
79417
|
}
|
|
79142
79418
|
]
|
|
79143
79419
|
},
|
|
@@ -79203,13 +79479,12 @@
|
|
|
79203
79479
|
},
|
|
79204
79480
|
"target": {
|
|
79205
79481
|
"type": "string",
|
|
79206
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
79482
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
79207
79483
|
"enum": [
|
|
79208
79484
|
"display",
|
|
79209
79485
|
"window",
|
|
79210
79486
|
"viewport"
|
|
79211
|
-
]
|
|
79212
|
-
"default": "display"
|
|
79487
|
+
]
|
|
79213
79488
|
},
|
|
79214
79489
|
"fps": {
|
|
79215
79490
|
"type": "integer",
|
|
@@ -79255,13 +79530,12 @@
|
|
|
79255
79530
|
},
|
|
79256
79531
|
"target": {
|
|
79257
79532
|
"type": "string",
|
|
79258
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
79533
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
79259
79534
|
"enum": [
|
|
79260
79535
|
"display",
|
|
79261
79536
|
"window",
|
|
79262
79537
|
"viewport"
|
|
79263
|
-
]
|
|
79264
|
-
"default": "display"
|
|
79538
|
+
]
|
|
79265
79539
|
},
|
|
79266
79540
|
"fps": {
|
|
79267
79541
|
"type": "integer",
|
|
@@ -79294,6 +79568,22 @@
|
|
|
79294
79568
|
"target": "window",
|
|
79295
79569
|
"fps": 60
|
|
79296
79570
|
}
|
|
79571
|
+
},
|
|
79572
|
+
{
|
|
79573
|
+
"path": "notepad.mp4",
|
|
79574
|
+
"surface": {
|
|
79575
|
+
"app": "notepad"
|
|
79576
|
+
}
|
|
79577
|
+
},
|
|
79578
|
+
{
|
|
79579
|
+
"path": "full-screen.mp4",
|
|
79580
|
+
"surface": {
|
|
79581
|
+
"app": "notepad"
|
|
79582
|
+
},
|
|
79583
|
+
"engine": {
|
|
79584
|
+
"name": "ffmpeg",
|
|
79585
|
+
"target": "display"
|
|
79586
|
+
}
|
|
79297
79587
|
}
|
|
79298
79588
|
]
|
|
79299
79589
|
}
|
|
@@ -104013,7 +104303,7 @@
|
|
|
104013
104303
|
"record_v3": {
|
|
104014
104304
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
104015
104305
|
"title": "record",
|
|
104016
|
-
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
104306
|
+
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
104017
104307
|
"anyOf": [
|
|
104018
104308
|
{
|
|
104019
104309
|
"title": "Record (simple)",
|
|
@@ -104028,7 +104318,7 @@
|
|
|
104028
104318
|
"type": "object",
|
|
104029
104319
|
"properties": {
|
|
104030
104320
|
"surface": {
|
|
104031
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
104321
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
104032
104322
|
"anyOf": [
|
|
104033
104323
|
{
|
|
104034
104324
|
"title": "Surface (by browser engine)",
|
|
@@ -104125,14 +104415,85 @@
|
|
|
104125
104415
|
}
|
|
104126
104416
|
]
|
|
104127
104417
|
},
|
|
104128
|
-
"tab": {
|
|
104129
|
-
"description": "Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.",
|
|
104130
|
-
"title": "Window/tab selector",
|
|
104418
|
+
"tab": {
|
|
104419
|
+
"description": "Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.",
|
|
104420
|
+
"title": "Window/tab selector",
|
|
104421
|
+
"anyOf": [
|
|
104422
|
+
{
|
|
104423
|
+
"title": "By index",
|
|
104424
|
+
"type": "integer",
|
|
104425
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest."
|
|
104426
|
+
},
|
|
104427
|
+
{
|
|
104428
|
+
"title": "By name",
|
|
104429
|
+
"type": "string",
|
|
104430
|
+
"minLength": 1,
|
|
104431
|
+
"pattern": "\\S",
|
|
104432
|
+
"transform": [
|
|
104433
|
+
"trim"
|
|
104434
|
+
],
|
|
104435
|
+
"description": "Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
104436
|
+
},
|
|
104437
|
+
{
|
|
104438
|
+
"title": "By criteria",
|
|
104439
|
+
"type": "object",
|
|
104440
|
+
"additionalProperties": false,
|
|
104441
|
+
"minProperties": 1,
|
|
104442
|
+
"properties": {
|
|
104443
|
+
"name": {
|
|
104444
|
+
"type": "string",
|
|
104445
|
+
"minLength": 1,
|
|
104446
|
+
"pattern": "\\S",
|
|
104447
|
+
"transform": [
|
|
104448
|
+
"trim"
|
|
104449
|
+
],
|
|
104450
|
+
"description": "Name assigned when the window/tab was opened."
|
|
104451
|
+
},
|
|
104452
|
+
"index": {
|
|
104453
|
+
"type": "integer",
|
|
104454
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
104455
|
+
},
|
|
104456
|
+
"title": {
|
|
104457
|
+
"type": "string",
|
|
104458
|
+
"minLength": 1,
|
|
104459
|
+
"description": "Page title to match. Substring, or /regex/."
|
|
104460
|
+
},
|
|
104461
|
+
"url": {
|
|
104462
|
+
"type": "string",
|
|
104463
|
+
"minLength": 1,
|
|
104464
|
+
"description": "Page URL to match. Substring, or /regex/."
|
|
104465
|
+
}
|
|
104466
|
+
}
|
|
104467
|
+
}
|
|
104468
|
+
]
|
|
104469
|
+
}
|
|
104470
|
+
}
|
|
104471
|
+
},
|
|
104472
|
+
{
|
|
104473
|
+
"title": "App surface",
|
|
104474
|
+
"type": "object",
|
|
104475
|
+
"additionalProperties": false,
|
|
104476
|
+
"required": [
|
|
104477
|
+
"app"
|
|
104478
|
+
],
|
|
104479
|
+
"properties": {
|
|
104480
|
+
"app": {
|
|
104481
|
+
"type": "string",
|
|
104482
|
+
"minLength": 1,
|
|
104483
|
+
"pattern": "\\S",
|
|
104484
|
+
"transform": [
|
|
104485
|
+
"trim"
|
|
104486
|
+
],
|
|
104487
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
104488
|
+
},
|
|
104489
|
+
"window": {
|
|
104490
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
104491
|
+
"title": "App window selector",
|
|
104131
104492
|
"anyOf": [
|
|
104132
104493
|
{
|
|
104133
104494
|
"title": "By index",
|
|
104134
104495
|
"type": "integer",
|
|
104135
|
-
"description": "Index in creation order. Negative counts from the end; `-1` is the newest."
|
|
104496
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
104136
104497
|
},
|
|
104137
104498
|
{
|
|
104138
104499
|
"title": "By name",
|
|
@@ -104142,7 +104503,7 @@
|
|
|
104142
104503
|
"transform": [
|
|
104143
104504
|
"trim"
|
|
104144
104505
|
],
|
|
104145
|
-
"description": "
|
|
104506
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
104146
104507
|
},
|
|
104147
104508
|
{
|
|
104148
104509
|
"title": "By criteria",
|
|
@@ -104157,7 +104518,7 @@
|
|
|
104157
104518
|
"transform": [
|
|
104158
104519
|
"trim"
|
|
104159
104520
|
],
|
|
104160
|
-
"description": "
|
|
104521
|
+
"description": "Assigned window name."
|
|
104161
104522
|
},
|
|
104162
104523
|
"index": {
|
|
104163
104524
|
"type": "integer",
|
|
@@ -104166,12 +104527,7 @@
|
|
|
104166
104527
|
"title": {
|
|
104167
104528
|
"type": "string",
|
|
104168
104529
|
"minLength": 1,
|
|
104169
|
-
"description": "
|
|
104170
|
-
},
|
|
104171
|
-
"url": {
|
|
104172
|
-
"type": "string",
|
|
104173
|
-
"minLength": 1,
|
|
104174
|
-
"description": "Page URL to match. Substring, or /regex/."
|
|
104530
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
104175
104531
|
}
|
|
104176
104532
|
}
|
|
104177
104533
|
}
|
|
@@ -104243,13 +104599,12 @@
|
|
|
104243
104599
|
},
|
|
104244
104600
|
"target": {
|
|
104245
104601
|
"type": "string",
|
|
104246
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
104602
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
104247
104603
|
"enum": [
|
|
104248
104604
|
"display",
|
|
104249
104605
|
"window",
|
|
104250
104606
|
"viewport"
|
|
104251
|
-
]
|
|
104252
|
-
"default": "display"
|
|
104607
|
+
]
|
|
104253
104608
|
},
|
|
104254
104609
|
"fps": {
|
|
104255
104610
|
"type": "integer",
|
|
@@ -104267,7 +104622,7 @@
|
|
|
104267
104622
|
{
|
|
104268
104623
|
"type": "boolean",
|
|
104269
104624
|
"title": "Record (boolean)",
|
|
104270
|
-
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
104625
|
+
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
104271
104626
|
}
|
|
104272
104627
|
],
|
|
104273
104628
|
"components": {
|
|
@@ -104285,7 +104640,7 @@
|
|
|
104285
104640
|
"type": "object",
|
|
104286
104641
|
"properties": {
|
|
104287
104642
|
"surface": {
|
|
104288
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
104643
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
104289
104644
|
"anyOf": [
|
|
104290
104645
|
{
|
|
104291
104646
|
"title": "Surface (by browser engine)",
|
|
@@ -104435,6 +104790,72 @@
|
|
|
104435
104790
|
]
|
|
104436
104791
|
}
|
|
104437
104792
|
}
|
|
104793
|
+
},
|
|
104794
|
+
{
|
|
104795
|
+
"title": "App surface",
|
|
104796
|
+
"type": "object",
|
|
104797
|
+
"additionalProperties": false,
|
|
104798
|
+
"required": [
|
|
104799
|
+
"app"
|
|
104800
|
+
],
|
|
104801
|
+
"properties": {
|
|
104802
|
+
"app": {
|
|
104803
|
+
"type": "string",
|
|
104804
|
+
"minLength": 1,
|
|
104805
|
+
"pattern": "\\S",
|
|
104806
|
+
"transform": [
|
|
104807
|
+
"trim"
|
|
104808
|
+
],
|
|
104809
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
104810
|
+
},
|
|
104811
|
+
"window": {
|
|
104812
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
104813
|
+
"title": "App window selector",
|
|
104814
|
+
"anyOf": [
|
|
104815
|
+
{
|
|
104816
|
+
"title": "By index",
|
|
104817
|
+
"type": "integer",
|
|
104818
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
104819
|
+
},
|
|
104820
|
+
{
|
|
104821
|
+
"title": "By name",
|
|
104822
|
+
"type": "string",
|
|
104823
|
+
"minLength": 1,
|
|
104824
|
+
"pattern": "\\S",
|
|
104825
|
+
"transform": [
|
|
104826
|
+
"trim"
|
|
104827
|
+
],
|
|
104828
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
104829
|
+
},
|
|
104830
|
+
{
|
|
104831
|
+
"title": "By criteria",
|
|
104832
|
+
"type": "object",
|
|
104833
|
+
"additionalProperties": false,
|
|
104834
|
+
"minProperties": 1,
|
|
104835
|
+
"properties": {
|
|
104836
|
+
"name": {
|
|
104837
|
+
"type": "string",
|
|
104838
|
+
"minLength": 1,
|
|
104839
|
+
"pattern": "\\S",
|
|
104840
|
+
"transform": [
|
|
104841
|
+
"trim"
|
|
104842
|
+
],
|
|
104843
|
+
"description": "Assigned window name."
|
|
104844
|
+
},
|
|
104845
|
+
"index": {
|
|
104846
|
+
"type": "integer",
|
|
104847
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
104848
|
+
},
|
|
104849
|
+
"title": {
|
|
104850
|
+
"type": "string",
|
|
104851
|
+
"minLength": 1,
|
|
104852
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
104853
|
+
}
|
|
104854
|
+
}
|
|
104855
|
+
}
|
|
104856
|
+
]
|
|
104857
|
+
}
|
|
104858
|
+
}
|
|
104438
104859
|
}
|
|
104439
104860
|
]
|
|
104440
104861
|
},
|
|
@@ -104500,13 +104921,12 @@
|
|
|
104500
104921
|
},
|
|
104501
104922
|
"target": {
|
|
104502
104923
|
"type": "string",
|
|
104503
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
104924
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
104504
104925
|
"enum": [
|
|
104505
104926
|
"display",
|
|
104506
104927
|
"window",
|
|
104507
104928
|
"viewport"
|
|
104508
|
-
]
|
|
104509
|
-
"default": "display"
|
|
104929
|
+
]
|
|
104510
104930
|
},
|
|
104511
104931
|
"fps": {
|
|
104512
104932
|
"type": "integer",
|
|
@@ -104552,13 +104972,12 @@
|
|
|
104552
104972
|
},
|
|
104553
104973
|
"target": {
|
|
104554
104974
|
"type": "string",
|
|
104555
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
104975
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
104556
104976
|
"enum": [
|
|
104557
104977
|
"display",
|
|
104558
104978
|
"window",
|
|
104559
104979
|
"viewport"
|
|
104560
|
-
]
|
|
104561
|
-
"default": "display"
|
|
104980
|
+
]
|
|
104562
104981
|
},
|
|
104563
104982
|
"fps": {
|
|
104564
104983
|
"type": "integer",
|
|
@@ -104591,6 +105010,22 @@
|
|
|
104591
105010
|
"target": "window",
|
|
104592
105011
|
"fps": 60
|
|
104593
105012
|
}
|
|
105013
|
+
},
|
|
105014
|
+
{
|
|
105015
|
+
"path": "notepad.mp4",
|
|
105016
|
+
"surface": {
|
|
105017
|
+
"app": "notepad"
|
|
105018
|
+
}
|
|
105019
|
+
},
|
|
105020
|
+
{
|
|
105021
|
+
"path": "full-screen.mp4",
|
|
105022
|
+
"surface": {
|
|
105023
|
+
"app": "notepad"
|
|
105024
|
+
},
|
|
105025
|
+
"engine": {
|
|
105026
|
+
"name": "ffmpeg",
|
|
105027
|
+
"target": "display"
|
|
105028
|
+
}
|
|
104594
105029
|
}
|
|
104595
105030
|
]
|
|
104596
105031
|
},
|
|
@@ -136458,7 +136893,7 @@
|
|
|
136458
136893
|
"record": {
|
|
136459
136894
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
136460
136895
|
"title": "record",
|
|
136461
|
-
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
136896
|
+
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
136462
136897
|
"anyOf": [
|
|
136463
136898
|
{
|
|
136464
136899
|
"title": "Record (simple)",
|
|
@@ -136473,7 +136908,7 @@
|
|
|
136473
136908
|
"type": "object",
|
|
136474
136909
|
"properties": {
|
|
136475
136910
|
"surface": {
|
|
136476
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
136911
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
136477
136912
|
"anyOf": [
|
|
136478
136913
|
{
|
|
136479
136914
|
"title": "Surface (by browser engine)",
|
|
@@ -136623,6 +137058,72 @@
|
|
|
136623
137058
|
]
|
|
136624
137059
|
}
|
|
136625
137060
|
}
|
|
137061
|
+
},
|
|
137062
|
+
{
|
|
137063
|
+
"title": "App surface",
|
|
137064
|
+
"type": "object",
|
|
137065
|
+
"additionalProperties": false,
|
|
137066
|
+
"required": [
|
|
137067
|
+
"app"
|
|
137068
|
+
],
|
|
137069
|
+
"properties": {
|
|
137070
|
+
"app": {
|
|
137071
|
+
"type": "string",
|
|
137072
|
+
"minLength": 1,
|
|
137073
|
+
"pattern": "\\S",
|
|
137074
|
+
"transform": [
|
|
137075
|
+
"trim"
|
|
137076
|
+
],
|
|
137077
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
137078
|
+
},
|
|
137079
|
+
"window": {
|
|
137080
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
137081
|
+
"title": "App window selector",
|
|
137082
|
+
"anyOf": [
|
|
137083
|
+
{
|
|
137084
|
+
"title": "By index",
|
|
137085
|
+
"type": "integer",
|
|
137086
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
137087
|
+
},
|
|
137088
|
+
{
|
|
137089
|
+
"title": "By name",
|
|
137090
|
+
"type": "string",
|
|
137091
|
+
"minLength": 1,
|
|
137092
|
+
"pattern": "\\S",
|
|
137093
|
+
"transform": [
|
|
137094
|
+
"trim"
|
|
137095
|
+
],
|
|
137096
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
137097
|
+
},
|
|
137098
|
+
{
|
|
137099
|
+
"title": "By criteria",
|
|
137100
|
+
"type": "object",
|
|
137101
|
+
"additionalProperties": false,
|
|
137102
|
+
"minProperties": 1,
|
|
137103
|
+
"properties": {
|
|
137104
|
+
"name": {
|
|
137105
|
+
"type": "string",
|
|
137106
|
+
"minLength": 1,
|
|
137107
|
+
"pattern": "\\S",
|
|
137108
|
+
"transform": [
|
|
137109
|
+
"trim"
|
|
137110
|
+
],
|
|
137111
|
+
"description": "Assigned window name."
|
|
137112
|
+
},
|
|
137113
|
+
"index": {
|
|
137114
|
+
"type": "integer",
|
|
137115
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
137116
|
+
},
|
|
137117
|
+
"title": {
|
|
137118
|
+
"type": "string",
|
|
137119
|
+
"minLength": 1,
|
|
137120
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
137121
|
+
}
|
|
137122
|
+
}
|
|
137123
|
+
}
|
|
137124
|
+
]
|
|
137125
|
+
}
|
|
137126
|
+
}
|
|
136626
137127
|
}
|
|
136627
137128
|
]
|
|
136628
137129
|
},
|
|
@@ -136688,13 +137189,12 @@
|
|
|
136688
137189
|
},
|
|
136689
137190
|
"target": {
|
|
136690
137191
|
"type": "string",
|
|
136691
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
137192
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
136692
137193
|
"enum": [
|
|
136693
137194
|
"display",
|
|
136694
137195
|
"window",
|
|
136695
137196
|
"viewport"
|
|
136696
|
-
]
|
|
136697
|
-
"default": "display"
|
|
137197
|
+
]
|
|
136698
137198
|
},
|
|
136699
137199
|
"fps": {
|
|
136700
137200
|
"type": "integer",
|
|
@@ -136712,7 +137212,7 @@
|
|
|
136712
137212
|
{
|
|
136713
137213
|
"type": "boolean",
|
|
136714
137214
|
"title": "Record (boolean)",
|
|
136715
|
-
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
137215
|
+
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
136716
137216
|
}
|
|
136717
137217
|
],
|
|
136718
137218
|
"components": {
|
|
@@ -136730,7 +137230,7 @@
|
|
|
136730
137230
|
"type": "object",
|
|
136731
137231
|
"properties": {
|
|
136732
137232
|
"surface": {
|
|
136733
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
137233
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
136734
137234
|
"anyOf": [
|
|
136735
137235
|
{
|
|
136736
137236
|
"title": "Surface (by browser engine)",
|
|
@@ -136880,6 +137380,72 @@
|
|
|
136880
137380
|
]
|
|
136881
137381
|
}
|
|
136882
137382
|
}
|
|
137383
|
+
},
|
|
137384
|
+
{
|
|
137385
|
+
"title": "App surface",
|
|
137386
|
+
"type": "object",
|
|
137387
|
+
"additionalProperties": false,
|
|
137388
|
+
"required": [
|
|
137389
|
+
"app"
|
|
137390
|
+
],
|
|
137391
|
+
"properties": {
|
|
137392
|
+
"app": {
|
|
137393
|
+
"type": "string",
|
|
137394
|
+
"minLength": 1,
|
|
137395
|
+
"pattern": "\\S",
|
|
137396
|
+
"transform": [
|
|
137397
|
+
"trim"
|
|
137398
|
+
],
|
|
137399
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
137400
|
+
},
|
|
137401
|
+
"window": {
|
|
137402
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
137403
|
+
"title": "App window selector",
|
|
137404
|
+
"anyOf": [
|
|
137405
|
+
{
|
|
137406
|
+
"title": "By index",
|
|
137407
|
+
"type": "integer",
|
|
137408
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
137409
|
+
},
|
|
137410
|
+
{
|
|
137411
|
+
"title": "By name",
|
|
137412
|
+
"type": "string",
|
|
137413
|
+
"minLength": 1,
|
|
137414
|
+
"pattern": "\\S",
|
|
137415
|
+
"transform": [
|
|
137416
|
+
"trim"
|
|
137417
|
+
],
|
|
137418
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
137419
|
+
},
|
|
137420
|
+
{
|
|
137421
|
+
"title": "By criteria",
|
|
137422
|
+
"type": "object",
|
|
137423
|
+
"additionalProperties": false,
|
|
137424
|
+
"minProperties": 1,
|
|
137425
|
+
"properties": {
|
|
137426
|
+
"name": {
|
|
137427
|
+
"type": "string",
|
|
137428
|
+
"minLength": 1,
|
|
137429
|
+
"pattern": "\\S",
|
|
137430
|
+
"transform": [
|
|
137431
|
+
"trim"
|
|
137432
|
+
],
|
|
137433
|
+
"description": "Assigned window name."
|
|
137434
|
+
},
|
|
137435
|
+
"index": {
|
|
137436
|
+
"type": "integer",
|
|
137437
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
137438
|
+
},
|
|
137439
|
+
"title": {
|
|
137440
|
+
"type": "string",
|
|
137441
|
+
"minLength": 1,
|
|
137442
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
137443
|
+
}
|
|
137444
|
+
}
|
|
137445
|
+
}
|
|
137446
|
+
]
|
|
137447
|
+
}
|
|
137448
|
+
}
|
|
136883
137449
|
}
|
|
136884
137450
|
]
|
|
136885
137451
|
},
|
|
@@ -136945,13 +137511,12 @@
|
|
|
136945
137511
|
},
|
|
136946
137512
|
"target": {
|
|
136947
137513
|
"type": "string",
|
|
136948
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
137514
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
136949
137515
|
"enum": [
|
|
136950
137516
|
"display",
|
|
136951
137517
|
"window",
|
|
136952
137518
|
"viewport"
|
|
136953
|
-
]
|
|
136954
|
-
"default": "display"
|
|
137519
|
+
]
|
|
136955
137520
|
},
|
|
136956
137521
|
"fps": {
|
|
136957
137522
|
"type": "integer",
|
|
@@ -136997,13 +137562,12 @@
|
|
|
136997
137562
|
},
|
|
136998
137563
|
"target": {
|
|
136999
137564
|
"type": "string",
|
|
137000
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
137565
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
137001
137566
|
"enum": [
|
|
137002
137567
|
"display",
|
|
137003
137568
|
"window",
|
|
137004
137569
|
"viewport"
|
|
137005
|
-
]
|
|
137006
|
-
"default": "display"
|
|
137570
|
+
]
|
|
137007
137571
|
},
|
|
137008
137572
|
"fps": {
|
|
137009
137573
|
"type": "integer",
|
|
@@ -137036,6 +137600,22 @@
|
|
|
137036
137600
|
"target": "window",
|
|
137037
137601
|
"fps": 60
|
|
137038
137602
|
}
|
|
137603
|
+
},
|
|
137604
|
+
{
|
|
137605
|
+
"path": "notepad.mp4",
|
|
137606
|
+
"surface": {
|
|
137607
|
+
"app": "notepad"
|
|
137608
|
+
}
|
|
137609
|
+
},
|
|
137610
|
+
{
|
|
137611
|
+
"path": "full-screen.mp4",
|
|
137612
|
+
"surface": {
|
|
137613
|
+
"app": "notepad"
|
|
137614
|
+
},
|
|
137615
|
+
"engine": {
|
|
137616
|
+
"name": "ffmpeg",
|
|
137617
|
+
"target": "display"
|
|
137618
|
+
}
|
|
137039
137619
|
}
|
|
137040
137620
|
]
|
|
137041
137621
|
}
|
|
@@ -181040,7 +181620,7 @@
|
|
|
181040
181620
|
"record": {
|
|
181041
181621
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
181042
181622
|
"title": "record",
|
|
181043
|
-
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
181623
|
+
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
181044
181624
|
"anyOf": [
|
|
181045
181625
|
{
|
|
181046
181626
|
"title": "Record (simple)",
|
|
@@ -181055,7 +181635,7 @@
|
|
|
181055
181635
|
"type": "object",
|
|
181056
181636
|
"properties": {
|
|
181057
181637
|
"surface": {
|
|
181058
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
181638
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
181059
181639
|
"anyOf": [
|
|
181060
181640
|
{
|
|
181061
181641
|
"title": "Surface (by browser engine)",
|
|
@@ -181205,6 +181785,72 @@
|
|
|
181205
181785
|
]
|
|
181206
181786
|
}
|
|
181207
181787
|
}
|
|
181788
|
+
},
|
|
181789
|
+
{
|
|
181790
|
+
"title": "App surface",
|
|
181791
|
+
"type": "object",
|
|
181792
|
+
"additionalProperties": false,
|
|
181793
|
+
"required": [
|
|
181794
|
+
"app"
|
|
181795
|
+
],
|
|
181796
|
+
"properties": {
|
|
181797
|
+
"app": {
|
|
181798
|
+
"type": "string",
|
|
181799
|
+
"minLength": 1,
|
|
181800
|
+
"pattern": "\\S",
|
|
181801
|
+
"transform": [
|
|
181802
|
+
"trim"
|
|
181803
|
+
],
|
|
181804
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
181805
|
+
},
|
|
181806
|
+
"window": {
|
|
181807
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
181808
|
+
"title": "App window selector",
|
|
181809
|
+
"anyOf": [
|
|
181810
|
+
{
|
|
181811
|
+
"title": "By index",
|
|
181812
|
+
"type": "integer",
|
|
181813
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
181814
|
+
},
|
|
181815
|
+
{
|
|
181816
|
+
"title": "By name",
|
|
181817
|
+
"type": "string",
|
|
181818
|
+
"minLength": 1,
|
|
181819
|
+
"pattern": "\\S",
|
|
181820
|
+
"transform": [
|
|
181821
|
+
"trim"
|
|
181822
|
+
],
|
|
181823
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
181824
|
+
},
|
|
181825
|
+
{
|
|
181826
|
+
"title": "By criteria",
|
|
181827
|
+
"type": "object",
|
|
181828
|
+
"additionalProperties": false,
|
|
181829
|
+
"minProperties": 1,
|
|
181830
|
+
"properties": {
|
|
181831
|
+
"name": {
|
|
181832
|
+
"type": "string",
|
|
181833
|
+
"minLength": 1,
|
|
181834
|
+
"pattern": "\\S",
|
|
181835
|
+
"transform": [
|
|
181836
|
+
"trim"
|
|
181837
|
+
],
|
|
181838
|
+
"description": "Assigned window name."
|
|
181839
|
+
},
|
|
181840
|
+
"index": {
|
|
181841
|
+
"type": "integer",
|
|
181842
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
181843
|
+
},
|
|
181844
|
+
"title": {
|
|
181845
|
+
"type": "string",
|
|
181846
|
+
"minLength": 1,
|
|
181847
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
181848
|
+
}
|
|
181849
|
+
}
|
|
181850
|
+
}
|
|
181851
|
+
]
|
|
181852
|
+
}
|
|
181853
|
+
}
|
|
181208
181854
|
}
|
|
181209
181855
|
]
|
|
181210
181856
|
},
|
|
@@ -181270,13 +181916,12 @@
|
|
|
181270
181916
|
},
|
|
181271
181917
|
"target": {
|
|
181272
181918
|
"type": "string",
|
|
181273
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
181919
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
181274
181920
|
"enum": [
|
|
181275
181921
|
"display",
|
|
181276
181922
|
"window",
|
|
181277
181923
|
"viewport"
|
|
181278
|
-
]
|
|
181279
|
-
"default": "display"
|
|
181924
|
+
]
|
|
181280
181925
|
},
|
|
181281
181926
|
"fps": {
|
|
181282
181927
|
"type": "integer",
|
|
@@ -181294,7 +181939,7 @@
|
|
|
181294
181939
|
{
|
|
181295
181940
|
"type": "boolean",
|
|
181296
181941
|
"title": "Record (boolean)",
|
|
181297
|
-
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
181942
|
+
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
181298
181943
|
}
|
|
181299
181944
|
],
|
|
181300
181945
|
"components": {
|
|
@@ -181312,7 +181957,7 @@
|
|
|
181312
181957
|
"type": "object",
|
|
181313
181958
|
"properties": {
|
|
181314
181959
|
"surface": {
|
|
181315
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
181960
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
181316
181961
|
"anyOf": [
|
|
181317
181962
|
{
|
|
181318
181963
|
"title": "Surface (by browser engine)",
|
|
@@ -181462,6 +182107,72 @@
|
|
|
181462
182107
|
]
|
|
181463
182108
|
}
|
|
181464
182109
|
}
|
|
182110
|
+
},
|
|
182111
|
+
{
|
|
182112
|
+
"title": "App surface",
|
|
182113
|
+
"type": "object",
|
|
182114
|
+
"additionalProperties": false,
|
|
182115
|
+
"required": [
|
|
182116
|
+
"app"
|
|
182117
|
+
],
|
|
182118
|
+
"properties": {
|
|
182119
|
+
"app": {
|
|
182120
|
+
"type": "string",
|
|
182121
|
+
"minLength": 1,
|
|
182122
|
+
"pattern": "\\S",
|
|
182123
|
+
"transform": [
|
|
182124
|
+
"trim"
|
|
182125
|
+
],
|
|
182126
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
182127
|
+
},
|
|
182128
|
+
"window": {
|
|
182129
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
182130
|
+
"title": "App window selector",
|
|
182131
|
+
"anyOf": [
|
|
182132
|
+
{
|
|
182133
|
+
"title": "By index",
|
|
182134
|
+
"type": "integer",
|
|
182135
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
182136
|
+
},
|
|
182137
|
+
{
|
|
182138
|
+
"title": "By name",
|
|
182139
|
+
"type": "string",
|
|
182140
|
+
"minLength": 1,
|
|
182141
|
+
"pattern": "\\S",
|
|
182142
|
+
"transform": [
|
|
182143
|
+
"trim"
|
|
182144
|
+
],
|
|
182145
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
182146
|
+
},
|
|
182147
|
+
{
|
|
182148
|
+
"title": "By criteria",
|
|
182149
|
+
"type": "object",
|
|
182150
|
+
"additionalProperties": false,
|
|
182151
|
+
"minProperties": 1,
|
|
182152
|
+
"properties": {
|
|
182153
|
+
"name": {
|
|
182154
|
+
"type": "string",
|
|
182155
|
+
"minLength": 1,
|
|
182156
|
+
"pattern": "\\S",
|
|
182157
|
+
"transform": [
|
|
182158
|
+
"trim"
|
|
182159
|
+
],
|
|
182160
|
+
"description": "Assigned window name."
|
|
182161
|
+
},
|
|
182162
|
+
"index": {
|
|
182163
|
+
"type": "integer",
|
|
182164
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
182165
|
+
},
|
|
182166
|
+
"title": {
|
|
182167
|
+
"type": "string",
|
|
182168
|
+
"minLength": 1,
|
|
182169
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
182170
|
+
}
|
|
182171
|
+
}
|
|
182172
|
+
}
|
|
182173
|
+
]
|
|
182174
|
+
}
|
|
182175
|
+
}
|
|
181465
182176
|
}
|
|
181466
182177
|
]
|
|
181467
182178
|
},
|
|
@@ -181527,13 +182238,12 @@
|
|
|
181527
182238
|
},
|
|
181528
182239
|
"target": {
|
|
181529
182240
|
"type": "string",
|
|
181530
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
182241
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
181531
182242
|
"enum": [
|
|
181532
182243
|
"display",
|
|
181533
182244
|
"window",
|
|
181534
182245
|
"viewport"
|
|
181535
|
-
]
|
|
181536
|
-
"default": "display"
|
|
182246
|
+
]
|
|
181537
182247
|
},
|
|
181538
182248
|
"fps": {
|
|
181539
182249
|
"type": "integer",
|
|
@@ -181579,13 +182289,12 @@
|
|
|
181579
182289
|
},
|
|
181580
182290
|
"target": {
|
|
181581
182291
|
"type": "string",
|
|
181582
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
182292
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
181583
182293
|
"enum": [
|
|
181584
182294
|
"display",
|
|
181585
182295
|
"window",
|
|
181586
182296
|
"viewport"
|
|
181587
|
-
]
|
|
181588
|
-
"default": "display"
|
|
182297
|
+
]
|
|
181589
182298
|
},
|
|
181590
182299
|
"fps": {
|
|
181591
182300
|
"type": "integer",
|
|
@@ -181618,6 +182327,22 @@
|
|
|
181618
182327
|
"target": "window",
|
|
181619
182328
|
"fps": 60
|
|
181620
182329
|
}
|
|
182330
|
+
},
|
|
182331
|
+
{
|
|
182332
|
+
"path": "notepad.mp4",
|
|
182333
|
+
"surface": {
|
|
182334
|
+
"app": "notepad"
|
|
182335
|
+
}
|
|
182336
|
+
},
|
|
182337
|
+
{
|
|
182338
|
+
"path": "full-screen.mp4",
|
|
182339
|
+
"surface": {
|
|
182340
|
+
"app": "notepad"
|
|
182341
|
+
},
|
|
182342
|
+
"engine": {
|
|
182343
|
+
"name": "ffmpeg",
|
|
182344
|
+
"target": "display"
|
|
182345
|
+
}
|
|
181621
182346
|
}
|
|
181622
182347
|
]
|
|
181623
182348
|
}
|
|
@@ -227395,7 +228120,7 @@
|
|
|
227395
228120
|
"record": {
|
|
227396
228121
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
227397
228122
|
"title": "record",
|
|
227398
|
-
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
228123
|
+
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
227399
228124
|
"anyOf": [
|
|
227400
228125
|
{
|
|
227401
228126
|
"title": "Record (simple)",
|
|
@@ -227410,7 +228135,7 @@
|
|
|
227410
228135
|
"type": "object",
|
|
227411
228136
|
"properties": {
|
|
227412
228137
|
"surface": {
|
|
227413
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
228138
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
227414
228139
|
"anyOf": [
|
|
227415
228140
|
{
|
|
227416
228141
|
"title": "Surface (by browser engine)",
|
|
@@ -227560,6 +228285,72 @@
|
|
|
227560
228285
|
]
|
|
227561
228286
|
}
|
|
227562
228287
|
}
|
|
228288
|
+
},
|
|
228289
|
+
{
|
|
228290
|
+
"title": "App surface",
|
|
228291
|
+
"type": "object",
|
|
228292
|
+
"additionalProperties": false,
|
|
228293
|
+
"required": [
|
|
228294
|
+
"app"
|
|
228295
|
+
],
|
|
228296
|
+
"properties": {
|
|
228297
|
+
"app": {
|
|
228298
|
+
"type": "string",
|
|
228299
|
+
"minLength": 1,
|
|
228300
|
+
"pattern": "\\S",
|
|
228301
|
+
"transform": [
|
|
228302
|
+
"trim"
|
|
228303
|
+
],
|
|
228304
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
228305
|
+
},
|
|
228306
|
+
"window": {
|
|
228307
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
228308
|
+
"title": "App window selector",
|
|
228309
|
+
"anyOf": [
|
|
228310
|
+
{
|
|
228311
|
+
"title": "By index",
|
|
228312
|
+
"type": "integer",
|
|
228313
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
228314
|
+
},
|
|
228315
|
+
{
|
|
228316
|
+
"title": "By name",
|
|
228317
|
+
"type": "string",
|
|
228318
|
+
"minLength": 1,
|
|
228319
|
+
"pattern": "\\S",
|
|
228320
|
+
"transform": [
|
|
228321
|
+
"trim"
|
|
228322
|
+
],
|
|
228323
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
228324
|
+
},
|
|
228325
|
+
{
|
|
228326
|
+
"title": "By criteria",
|
|
228327
|
+
"type": "object",
|
|
228328
|
+
"additionalProperties": false,
|
|
228329
|
+
"minProperties": 1,
|
|
228330
|
+
"properties": {
|
|
228331
|
+
"name": {
|
|
228332
|
+
"type": "string",
|
|
228333
|
+
"minLength": 1,
|
|
228334
|
+
"pattern": "\\S",
|
|
228335
|
+
"transform": [
|
|
228336
|
+
"trim"
|
|
228337
|
+
],
|
|
228338
|
+
"description": "Assigned window name."
|
|
228339
|
+
},
|
|
228340
|
+
"index": {
|
|
228341
|
+
"type": "integer",
|
|
228342
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
228343
|
+
},
|
|
228344
|
+
"title": {
|
|
228345
|
+
"type": "string",
|
|
228346
|
+
"minLength": 1,
|
|
228347
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
228348
|
+
}
|
|
228349
|
+
}
|
|
228350
|
+
}
|
|
228351
|
+
]
|
|
228352
|
+
}
|
|
228353
|
+
}
|
|
227563
228354
|
}
|
|
227564
228355
|
]
|
|
227565
228356
|
},
|
|
@@ -227625,13 +228416,12 @@
|
|
|
227625
228416
|
},
|
|
227626
228417
|
"target": {
|
|
227627
228418
|
"type": "string",
|
|
227628
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
228419
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
227629
228420
|
"enum": [
|
|
227630
228421
|
"display",
|
|
227631
228422
|
"window",
|
|
227632
228423
|
"viewport"
|
|
227633
|
-
]
|
|
227634
|
-
"default": "display"
|
|
228424
|
+
]
|
|
227635
228425
|
},
|
|
227636
228426
|
"fps": {
|
|
227637
228427
|
"type": "integer",
|
|
@@ -227649,7 +228439,7 @@
|
|
|
227649
228439
|
{
|
|
227650
228440
|
"type": "boolean",
|
|
227651
228441
|
"title": "Record (boolean)",
|
|
227652
|
-
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
228442
|
+
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
227653
228443
|
}
|
|
227654
228444
|
],
|
|
227655
228445
|
"components": {
|
|
@@ -227667,7 +228457,7 @@
|
|
|
227667
228457
|
"type": "object",
|
|
227668
228458
|
"properties": {
|
|
227669
228459
|
"surface": {
|
|
227670
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
228460
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
227671
228461
|
"anyOf": [
|
|
227672
228462
|
{
|
|
227673
228463
|
"title": "Surface (by browser engine)",
|
|
@@ -227764,14 +228554,85 @@
|
|
|
227764
228554
|
}
|
|
227765
228555
|
]
|
|
227766
228556
|
},
|
|
227767
|
-
"tab": {
|
|
227768
|
-
"description": "Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.",
|
|
227769
|
-
"title": "Window/tab selector",
|
|
228557
|
+
"tab": {
|
|
228558
|
+
"description": "Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.",
|
|
228559
|
+
"title": "Window/tab selector",
|
|
228560
|
+
"anyOf": [
|
|
228561
|
+
{
|
|
228562
|
+
"title": "By index",
|
|
228563
|
+
"type": "integer",
|
|
228564
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest."
|
|
228565
|
+
},
|
|
228566
|
+
{
|
|
228567
|
+
"title": "By name",
|
|
228568
|
+
"type": "string",
|
|
228569
|
+
"minLength": 1,
|
|
228570
|
+
"pattern": "\\S",
|
|
228571
|
+
"transform": [
|
|
228572
|
+
"trim"
|
|
228573
|
+
],
|
|
228574
|
+
"description": "Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
228575
|
+
},
|
|
228576
|
+
{
|
|
228577
|
+
"title": "By criteria",
|
|
228578
|
+
"type": "object",
|
|
228579
|
+
"additionalProperties": false,
|
|
228580
|
+
"minProperties": 1,
|
|
228581
|
+
"properties": {
|
|
228582
|
+
"name": {
|
|
228583
|
+
"type": "string",
|
|
228584
|
+
"minLength": 1,
|
|
228585
|
+
"pattern": "\\S",
|
|
228586
|
+
"transform": [
|
|
228587
|
+
"trim"
|
|
228588
|
+
],
|
|
228589
|
+
"description": "Name assigned when the window/tab was opened."
|
|
228590
|
+
},
|
|
228591
|
+
"index": {
|
|
228592
|
+
"type": "integer",
|
|
228593
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
228594
|
+
},
|
|
228595
|
+
"title": {
|
|
228596
|
+
"type": "string",
|
|
228597
|
+
"minLength": 1,
|
|
228598
|
+
"description": "Page title to match. Substring, or /regex/."
|
|
228599
|
+
},
|
|
228600
|
+
"url": {
|
|
228601
|
+
"type": "string",
|
|
228602
|
+
"minLength": 1,
|
|
228603
|
+
"description": "Page URL to match. Substring, or /regex/."
|
|
228604
|
+
}
|
|
228605
|
+
}
|
|
228606
|
+
}
|
|
228607
|
+
]
|
|
228608
|
+
}
|
|
228609
|
+
}
|
|
228610
|
+
},
|
|
228611
|
+
{
|
|
228612
|
+
"title": "App surface",
|
|
228613
|
+
"type": "object",
|
|
228614
|
+
"additionalProperties": false,
|
|
228615
|
+
"required": [
|
|
228616
|
+
"app"
|
|
228617
|
+
],
|
|
228618
|
+
"properties": {
|
|
228619
|
+
"app": {
|
|
228620
|
+
"type": "string",
|
|
228621
|
+
"minLength": 1,
|
|
228622
|
+
"pattern": "\\S",
|
|
228623
|
+
"transform": [
|
|
228624
|
+
"trim"
|
|
228625
|
+
],
|
|
228626
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
228627
|
+
},
|
|
228628
|
+
"window": {
|
|
228629
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
228630
|
+
"title": "App window selector",
|
|
227770
228631
|
"anyOf": [
|
|
227771
228632
|
{
|
|
227772
228633
|
"title": "By index",
|
|
227773
228634
|
"type": "integer",
|
|
227774
|
-
"description": "Index in creation order. Negative counts from the end; `-1` is the newest."
|
|
228635
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
227775
228636
|
},
|
|
227776
228637
|
{
|
|
227777
228638
|
"title": "By name",
|
|
@@ -227781,7 +228642,7 @@
|
|
|
227781
228642
|
"transform": [
|
|
227782
228643
|
"trim"
|
|
227783
228644
|
],
|
|
227784
|
-
"description": "
|
|
228645
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
227785
228646
|
},
|
|
227786
228647
|
{
|
|
227787
228648
|
"title": "By criteria",
|
|
@@ -227796,7 +228657,7 @@
|
|
|
227796
228657
|
"transform": [
|
|
227797
228658
|
"trim"
|
|
227798
228659
|
],
|
|
227799
|
-
"description": "
|
|
228660
|
+
"description": "Assigned window name."
|
|
227800
228661
|
},
|
|
227801
228662
|
"index": {
|
|
227802
228663
|
"type": "integer",
|
|
@@ -227805,12 +228666,7 @@
|
|
|
227805
228666
|
"title": {
|
|
227806
228667
|
"type": "string",
|
|
227807
228668
|
"minLength": 1,
|
|
227808
|
-
"description": "
|
|
227809
|
-
},
|
|
227810
|
-
"url": {
|
|
227811
|
-
"type": "string",
|
|
227812
|
-
"minLength": 1,
|
|
227813
|
-
"description": "Page URL to match. Substring, or /regex/."
|
|
228669
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
227814
228670
|
}
|
|
227815
228671
|
}
|
|
227816
228672
|
}
|
|
@@ -227882,13 +228738,12 @@
|
|
|
227882
228738
|
},
|
|
227883
228739
|
"target": {
|
|
227884
228740
|
"type": "string",
|
|
227885
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
228741
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
227886
228742
|
"enum": [
|
|
227887
228743
|
"display",
|
|
227888
228744
|
"window",
|
|
227889
228745
|
"viewport"
|
|
227890
|
-
]
|
|
227891
|
-
"default": "display"
|
|
228746
|
+
]
|
|
227892
228747
|
},
|
|
227893
228748
|
"fps": {
|
|
227894
228749
|
"type": "integer",
|
|
@@ -227934,13 +228789,12 @@
|
|
|
227934
228789
|
},
|
|
227935
228790
|
"target": {
|
|
227936
228791
|
"type": "string",
|
|
227937
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
228792
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
227938
228793
|
"enum": [
|
|
227939
228794
|
"display",
|
|
227940
228795
|
"window",
|
|
227941
228796
|
"viewport"
|
|
227942
|
-
]
|
|
227943
|
-
"default": "display"
|
|
228797
|
+
]
|
|
227944
228798
|
},
|
|
227945
228799
|
"fps": {
|
|
227946
228800
|
"type": "integer",
|
|
@@ -227973,6 +228827,22 @@
|
|
|
227973
228827
|
"target": "window",
|
|
227974
228828
|
"fps": 60
|
|
227975
228829
|
}
|
|
228830
|
+
},
|
|
228831
|
+
{
|
|
228832
|
+
"path": "notepad.mp4",
|
|
228833
|
+
"surface": {
|
|
228834
|
+
"app": "notepad"
|
|
228835
|
+
}
|
|
228836
|
+
},
|
|
228837
|
+
{
|
|
228838
|
+
"path": "full-screen.mp4",
|
|
228839
|
+
"surface": {
|
|
228840
|
+
"app": "notepad"
|
|
228841
|
+
},
|
|
228842
|
+
"engine": {
|
|
228843
|
+
"name": "ffmpeg",
|
|
228844
|
+
"target": "display"
|
|
228845
|
+
}
|
|
227976
228846
|
}
|
|
227977
228847
|
]
|
|
227978
228848
|
}
|
|
@@ -271276,7 +272146,7 @@
|
|
|
271276
272146
|
"record": {
|
|
271277
272147
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
271278
272148
|
"title": "record",
|
|
271279
|
-
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
272149
|
+
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
271280
272150
|
"anyOf": [
|
|
271281
272151
|
{
|
|
271282
272152
|
"title": "Record (simple)",
|
|
@@ -271291,7 +272161,7 @@
|
|
|
271291
272161
|
"type": "object",
|
|
271292
272162
|
"properties": {
|
|
271293
272163
|
"surface": {
|
|
271294
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
272164
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
271295
272165
|
"anyOf": [
|
|
271296
272166
|
{
|
|
271297
272167
|
"title": "Surface (by browser engine)",
|
|
@@ -271441,6 +272311,72 @@
|
|
|
271441
272311
|
]
|
|
271442
272312
|
}
|
|
271443
272313
|
}
|
|
272314
|
+
},
|
|
272315
|
+
{
|
|
272316
|
+
"title": "App surface",
|
|
272317
|
+
"type": "object",
|
|
272318
|
+
"additionalProperties": false,
|
|
272319
|
+
"required": [
|
|
272320
|
+
"app"
|
|
272321
|
+
],
|
|
272322
|
+
"properties": {
|
|
272323
|
+
"app": {
|
|
272324
|
+
"type": "string",
|
|
272325
|
+
"minLength": 1,
|
|
272326
|
+
"pattern": "\\S",
|
|
272327
|
+
"transform": [
|
|
272328
|
+
"trim"
|
|
272329
|
+
],
|
|
272330
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
272331
|
+
},
|
|
272332
|
+
"window": {
|
|
272333
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
272334
|
+
"title": "App window selector",
|
|
272335
|
+
"anyOf": [
|
|
272336
|
+
{
|
|
272337
|
+
"title": "By index",
|
|
272338
|
+
"type": "integer",
|
|
272339
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
272340
|
+
},
|
|
272341
|
+
{
|
|
272342
|
+
"title": "By name",
|
|
272343
|
+
"type": "string",
|
|
272344
|
+
"minLength": 1,
|
|
272345
|
+
"pattern": "\\S",
|
|
272346
|
+
"transform": [
|
|
272347
|
+
"trim"
|
|
272348
|
+
],
|
|
272349
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
272350
|
+
},
|
|
272351
|
+
{
|
|
272352
|
+
"title": "By criteria",
|
|
272353
|
+
"type": "object",
|
|
272354
|
+
"additionalProperties": false,
|
|
272355
|
+
"minProperties": 1,
|
|
272356
|
+
"properties": {
|
|
272357
|
+
"name": {
|
|
272358
|
+
"type": "string",
|
|
272359
|
+
"minLength": 1,
|
|
272360
|
+
"pattern": "\\S",
|
|
272361
|
+
"transform": [
|
|
272362
|
+
"trim"
|
|
272363
|
+
],
|
|
272364
|
+
"description": "Assigned window name."
|
|
272365
|
+
},
|
|
272366
|
+
"index": {
|
|
272367
|
+
"type": "integer",
|
|
272368
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
272369
|
+
},
|
|
272370
|
+
"title": {
|
|
272371
|
+
"type": "string",
|
|
272372
|
+
"minLength": 1,
|
|
272373
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
272374
|
+
}
|
|
272375
|
+
}
|
|
272376
|
+
}
|
|
272377
|
+
]
|
|
272378
|
+
}
|
|
272379
|
+
}
|
|
271444
272380
|
}
|
|
271445
272381
|
]
|
|
271446
272382
|
},
|
|
@@ -271506,13 +272442,12 @@
|
|
|
271506
272442
|
},
|
|
271507
272443
|
"target": {
|
|
271508
272444
|
"type": "string",
|
|
271509
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
272445
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
271510
272446
|
"enum": [
|
|
271511
272447
|
"display",
|
|
271512
272448
|
"window",
|
|
271513
272449
|
"viewport"
|
|
271514
|
-
]
|
|
271515
|
-
"default": "display"
|
|
272450
|
+
]
|
|
271516
272451
|
},
|
|
271517
272452
|
"fps": {
|
|
271518
272453
|
"type": "integer",
|
|
@@ -271530,7 +272465,7 @@
|
|
|
271530
272465
|
{
|
|
271531
272466
|
"type": "boolean",
|
|
271532
272467
|
"title": "Record (boolean)",
|
|
271533
|
-
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
272468
|
+
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
271534
272469
|
}
|
|
271535
272470
|
],
|
|
271536
272471
|
"components": {
|
|
@@ -271548,7 +272483,7 @@
|
|
|
271548
272483
|
"type": "object",
|
|
271549
272484
|
"properties": {
|
|
271550
272485
|
"surface": {
|
|
271551
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
272486
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
271552
272487
|
"anyOf": [
|
|
271553
272488
|
{
|
|
271554
272489
|
"title": "Surface (by browser engine)",
|
|
@@ -271698,6 +272633,72 @@
|
|
|
271698
272633
|
]
|
|
271699
272634
|
}
|
|
271700
272635
|
}
|
|
272636
|
+
},
|
|
272637
|
+
{
|
|
272638
|
+
"title": "App surface",
|
|
272639
|
+
"type": "object",
|
|
272640
|
+
"additionalProperties": false,
|
|
272641
|
+
"required": [
|
|
272642
|
+
"app"
|
|
272643
|
+
],
|
|
272644
|
+
"properties": {
|
|
272645
|
+
"app": {
|
|
272646
|
+
"type": "string",
|
|
272647
|
+
"minLength": 1,
|
|
272648
|
+
"pattern": "\\S",
|
|
272649
|
+
"transform": [
|
|
272650
|
+
"trim"
|
|
272651
|
+
],
|
|
272652
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
272653
|
+
},
|
|
272654
|
+
"window": {
|
|
272655
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
272656
|
+
"title": "App window selector",
|
|
272657
|
+
"anyOf": [
|
|
272658
|
+
{
|
|
272659
|
+
"title": "By index",
|
|
272660
|
+
"type": "integer",
|
|
272661
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
272662
|
+
},
|
|
272663
|
+
{
|
|
272664
|
+
"title": "By name",
|
|
272665
|
+
"type": "string",
|
|
272666
|
+
"minLength": 1,
|
|
272667
|
+
"pattern": "\\S",
|
|
272668
|
+
"transform": [
|
|
272669
|
+
"trim"
|
|
272670
|
+
],
|
|
272671
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
272672
|
+
},
|
|
272673
|
+
{
|
|
272674
|
+
"title": "By criteria",
|
|
272675
|
+
"type": "object",
|
|
272676
|
+
"additionalProperties": false,
|
|
272677
|
+
"minProperties": 1,
|
|
272678
|
+
"properties": {
|
|
272679
|
+
"name": {
|
|
272680
|
+
"type": "string",
|
|
272681
|
+
"minLength": 1,
|
|
272682
|
+
"pattern": "\\S",
|
|
272683
|
+
"transform": [
|
|
272684
|
+
"trim"
|
|
272685
|
+
],
|
|
272686
|
+
"description": "Assigned window name."
|
|
272687
|
+
},
|
|
272688
|
+
"index": {
|
|
272689
|
+
"type": "integer",
|
|
272690
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
272691
|
+
},
|
|
272692
|
+
"title": {
|
|
272693
|
+
"type": "string",
|
|
272694
|
+
"minLength": 1,
|
|
272695
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
272696
|
+
}
|
|
272697
|
+
}
|
|
272698
|
+
}
|
|
272699
|
+
]
|
|
272700
|
+
}
|
|
272701
|
+
}
|
|
271701
272702
|
}
|
|
271702
272703
|
]
|
|
271703
272704
|
},
|
|
@@ -271763,13 +272764,12 @@
|
|
|
271763
272764
|
},
|
|
271764
272765
|
"target": {
|
|
271765
272766
|
"type": "string",
|
|
271766
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
272767
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
271767
272768
|
"enum": [
|
|
271768
272769
|
"display",
|
|
271769
272770
|
"window",
|
|
271770
272771
|
"viewport"
|
|
271771
|
-
]
|
|
271772
|
-
"default": "display"
|
|
272772
|
+
]
|
|
271773
272773
|
},
|
|
271774
272774
|
"fps": {
|
|
271775
272775
|
"type": "integer",
|
|
@@ -271815,13 +272815,12 @@
|
|
|
271815
272815
|
},
|
|
271816
272816
|
"target": {
|
|
271817
272817
|
"type": "string",
|
|
271818
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
272818
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
271819
272819
|
"enum": [
|
|
271820
272820
|
"display",
|
|
271821
272821
|
"window",
|
|
271822
272822
|
"viewport"
|
|
271823
|
-
]
|
|
271824
|
-
"default": "display"
|
|
272823
|
+
]
|
|
271825
272824
|
},
|
|
271826
272825
|
"fps": {
|
|
271827
272826
|
"type": "integer",
|
|
@@ -271854,6 +272853,22 @@
|
|
|
271854
272853
|
"target": "window",
|
|
271855
272854
|
"fps": 60
|
|
271856
272855
|
}
|
|
272856
|
+
},
|
|
272857
|
+
{
|
|
272858
|
+
"path": "notepad.mp4",
|
|
272859
|
+
"surface": {
|
|
272860
|
+
"app": "notepad"
|
|
272861
|
+
}
|
|
272862
|
+
},
|
|
272863
|
+
{
|
|
272864
|
+
"path": "full-screen.mp4",
|
|
272865
|
+
"surface": {
|
|
272866
|
+
"app": "notepad"
|
|
272867
|
+
},
|
|
272868
|
+
"engine": {
|
|
272869
|
+
"name": "ffmpeg",
|
|
272870
|
+
"target": "display"
|
|
272871
|
+
}
|
|
271857
272872
|
}
|
|
271858
272873
|
]
|
|
271859
272874
|
}
|
|
@@ -318118,7 +319133,7 @@
|
|
|
318118
319133
|
"record": {
|
|
318119
319134
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
318120
319135
|
"title": "record",
|
|
318121
|
-
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
319136
|
+
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
318122
319137
|
"anyOf": [
|
|
318123
319138
|
{
|
|
318124
319139
|
"title": "Record (simple)",
|
|
@@ -318133,7 +319148,7 @@
|
|
|
318133
319148
|
"type": "object",
|
|
318134
319149
|
"properties": {
|
|
318135
319150
|
"surface": {
|
|
318136
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
319151
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
318137
319152
|
"anyOf": [
|
|
318138
319153
|
{
|
|
318139
319154
|
"title": "Surface (by browser engine)",
|
|
@@ -318230,14 +319245,85 @@
|
|
|
318230
319245
|
}
|
|
318231
319246
|
]
|
|
318232
319247
|
},
|
|
318233
|
-
"tab": {
|
|
318234
|
-
"description": "Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.",
|
|
318235
|
-
"title": "Window/tab selector",
|
|
319248
|
+
"tab": {
|
|
319249
|
+
"description": "Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.",
|
|
319250
|
+
"title": "Window/tab selector",
|
|
319251
|
+
"anyOf": [
|
|
319252
|
+
{
|
|
319253
|
+
"title": "By index",
|
|
319254
|
+
"type": "integer",
|
|
319255
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest."
|
|
319256
|
+
},
|
|
319257
|
+
{
|
|
319258
|
+
"title": "By name",
|
|
319259
|
+
"type": "string",
|
|
319260
|
+
"minLength": 1,
|
|
319261
|
+
"pattern": "\\S",
|
|
319262
|
+
"transform": [
|
|
319263
|
+
"trim"
|
|
319264
|
+
],
|
|
319265
|
+
"description": "Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
319266
|
+
},
|
|
319267
|
+
{
|
|
319268
|
+
"title": "By criteria",
|
|
319269
|
+
"type": "object",
|
|
319270
|
+
"additionalProperties": false,
|
|
319271
|
+
"minProperties": 1,
|
|
319272
|
+
"properties": {
|
|
319273
|
+
"name": {
|
|
319274
|
+
"type": "string",
|
|
319275
|
+
"minLength": 1,
|
|
319276
|
+
"pattern": "\\S",
|
|
319277
|
+
"transform": [
|
|
319278
|
+
"trim"
|
|
319279
|
+
],
|
|
319280
|
+
"description": "Name assigned when the window/tab was opened."
|
|
319281
|
+
},
|
|
319282
|
+
"index": {
|
|
319283
|
+
"type": "integer",
|
|
319284
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
319285
|
+
},
|
|
319286
|
+
"title": {
|
|
319287
|
+
"type": "string",
|
|
319288
|
+
"minLength": 1,
|
|
319289
|
+
"description": "Page title to match. Substring, or /regex/."
|
|
319290
|
+
},
|
|
319291
|
+
"url": {
|
|
319292
|
+
"type": "string",
|
|
319293
|
+
"minLength": 1,
|
|
319294
|
+
"description": "Page URL to match. Substring, or /regex/."
|
|
319295
|
+
}
|
|
319296
|
+
}
|
|
319297
|
+
}
|
|
319298
|
+
]
|
|
319299
|
+
}
|
|
319300
|
+
}
|
|
319301
|
+
},
|
|
319302
|
+
{
|
|
319303
|
+
"title": "App surface",
|
|
319304
|
+
"type": "object",
|
|
319305
|
+
"additionalProperties": false,
|
|
319306
|
+
"required": [
|
|
319307
|
+
"app"
|
|
319308
|
+
],
|
|
319309
|
+
"properties": {
|
|
319310
|
+
"app": {
|
|
319311
|
+
"type": "string",
|
|
319312
|
+
"minLength": 1,
|
|
319313
|
+
"pattern": "\\S",
|
|
319314
|
+
"transform": [
|
|
319315
|
+
"trim"
|
|
319316
|
+
],
|
|
319317
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
319318
|
+
},
|
|
319319
|
+
"window": {
|
|
319320
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
319321
|
+
"title": "App window selector",
|
|
318236
319322
|
"anyOf": [
|
|
318237
319323
|
{
|
|
318238
319324
|
"title": "By index",
|
|
318239
319325
|
"type": "integer",
|
|
318240
|
-
"description": "Index in creation order. Negative counts from the end; `-1` is the newest."
|
|
319326
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
318241
319327
|
},
|
|
318242
319328
|
{
|
|
318243
319329
|
"title": "By name",
|
|
@@ -318247,7 +319333,7 @@
|
|
|
318247
319333
|
"transform": [
|
|
318248
319334
|
"trim"
|
|
318249
319335
|
],
|
|
318250
|
-
"description": "
|
|
319336
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
318251
319337
|
},
|
|
318252
319338
|
{
|
|
318253
319339
|
"title": "By criteria",
|
|
@@ -318262,7 +319348,7 @@
|
|
|
318262
319348
|
"transform": [
|
|
318263
319349
|
"trim"
|
|
318264
319350
|
],
|
|
318265
|
-
"description": "
|
|
319351
|
+
"description": "Assigned window name."
|
|
318266
319352
|
},
|
|
318267
319353
|
"index": {
|
|
318268
319354
|
"type": "integer",
|
|
@@ -318271,12 +319357,7 @@
|
|
|
318271
319357
|
"title": {
|
|
318272
319358
|
"type": "string",
|
|
318273
319359
|
"minLength": 1,
|
|
318274
|
-
"description": "
|
|
318275
|
-
},
|
|
318276
|
-
"url": {
|
|
318277
|
-
"type": "string",
|
|
318278
|
-
"minLength": 1,
|
|
318279
|
-
"description": "Page URL to match. Substring, or /regex/."
|
|
319360
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
318280
319361
|
}
|
|
318281
319362
|
}
|
|
318282
319363
|
}
|
|
@@ -318348,13 +319429,12 @@
|
|
|
318348
319429
|
},
|
|
318349
319430
|
"target": {
|
|
318350
319431
|
"type": "string",
|
|
318351
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
319432
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
318352
319433
|
"enum": [
|
|
318353
319434
|
"display",
|
|
318354
319435
|
"window",
|
|
318355
319436
|
"viewport"
|
|
318356
|
-
]
|
|
318357
|
-
"default": "display"
|
|
319437
|
+
]
|
|
318358
319438
|
},
|
|
318359
319439
|
"fps": {
|
|
318360
319440
|
"type": "integer",
|
|
@@ -318372,7 +319452,7 @@
|
|
|
318372
319452
|
{
|
|
318373
319453
|
"type": "boolean",
|
|
318374
319454
|
"title": "Record (boolean)",
|
|
318375
|
-
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
319455
|
+
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
318376
319456
|
}
|
|
318377
319457
|
],
|
|
318378
319458
|
"components": {
|
|
@@ -318390,7 +319470,7 @@
|
|
|
318390
319470
|
"type": "object",
|
|
318391
319471
|
"properties": {
|
|
318392
319472
|
"surface": {
|
|
318393
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
319473
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
318394
319474
|
"anyOf": [
|
|
318395
319475
|
{
|
|
318396
319476
|
"title": "Surface (by browser engine)",
|
|
@@ -318540,6 +319620,72 @@
|
|
|
318540
319620
|
]
|
|
318541
319621
|
}
|
|
318542
319622
|
}
|
|
319623
|
+
},
|
|
319624
|
+
{
|
|
319625
|
+
"title": "App surface",
|
|
319626
|
+
"type": "object",
|
|
319627
|
+
"additionalProperties": false,
|
|
319628
|
+
"required": [
|
|
319629
|
+
"app"
|
|
319630
|
+
],
|
|
319631
|
+
"properties": {
|
|
319632
|
+
"app": {
|
|
319633
|
+
"type": "string",
|
|
319634
|
+
"minLength": 1,
|
|
319635
|
+
"pattern": "\\S",
|
|
319636
|
+
"transform": [
|
|
319637
|
+
"trim"
|
|
319638
|
+
],
|
|
319639
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
319640
|
+
},
|
|
319641
|
+
"window": {
|
|
319642
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
319643
|
+
"title": "App window selector",
|
|
319644
|
+
"anyOf": [
|
|
319645
|
+
{
|
|
319646
|
+
"title": "By index",
|
|
319647
|
+
"type": "integer",
|
|
319648
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
319649
|
+
},
|
|
319650
|
+
{
|
|
319651
|
+
"title": "By name",
|
|
319652
|
+
"type": "string",
|
|
319653
|
+
"minLength": 1,
|
|
319654
|
+
"pattern": "\\S",
|
|
319655
|
+
"transform": [
|
|
319656
|
+
"trim"
|
|
319657
|
+
],
|
|
319658
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
319659
|
+
},
|
|
319660
|
+
{
|
|
319661
|
+
"title": "By criteria",
|
|
319662
|
+
"type": "object",
|
|
319663
|
+
"additionalProperties": false,
|
|
319664
|
+
"minProperties": 1,
|
|
319665
|
+
"properties": {
|
|
319666
|
+
"name": {
|
|
319667
|
+
"type": "string",
|
|
319668
|
+
"minLength": 1,
|
|
319669
|
+
"pattern": "\\S",
|
|
319670
|
+
"transform": [
|
|
319671
|
+
"trim"
|
|
319672
|
+
],
|
|
319673
|
+
"description": "Assigned window name."
|
|
319674
|
+
},
|
|
319675
|
+
"index": {
|
|
319676
|
+
"type": "integer",
|
|
319677
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
319678
|
+
},
|
|
319679
|
+
"title": {
|
|
319680
|
+
"type": "string",
|
|
319681
|
+
"minLength": 1,
|
|
319682
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
319683
|
+
}
|
|
319684
|
+
}
|
|
319685
|
+
}
|
|
319686
|
+
]
|
|
319687
|
+
}
|
|
319688
|
+
}
|
|
318543
319689
|
}
|
|
318544
319690
|
]
|
|
318545
319691
|
},
|
|
@@ -318605,13 +319751,12 @@
|
|
|
318605
319751
|
},
|
|
318606
319752
|
"target": {
|
|
318607
319753
|
"type": "string",
|
|
318608
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
319754
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
318609
319755
|
"enum": [
|
|
318610
319756
|
"display",
|
|
318611
319757
|
"window",
|
|
318612
319758
|
"viewport"
|
|
318613
|
-
]
|
|
318614
|
-
"default": "display"
|
|
319759
|
+
]
|
|
318615
319760
|
},
|
|
318616
319761
|
"fps": {
|
|
318617
319762
|
"type": "integer",
|
|
@@ -318657,13 +319802,12 @@
|
|
|
318657
319802
|
},
|
|
318658
319803
|
"target": {
|
|
318659
319804
|
"type": "string",
|
|
318660
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
319805
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
318661
319806
|
"enum": [
|
|
318662
319807
|
"display",
|
|
318663
319808
|
"window",
|
|
318664
319809
|
"viewport"
|
|
318665
|
-
]
|
|
318666
|
-
"default": "display"
|
|
319810
|
+
]
|
|
318667
319811
|
},
|
|
318668
319812
|
"fps": {
|
|
318669
319813
|
"type": "integer",
|
|
@@ -318696,6 +319840,22 @@
|
|
|
318696
319840
|
"target": "window",
|
|
318697
319841
|
"fps": 60
|
|
318698
319842
|
}
|
|
319843
|
+
},
|
|
319844
|
+
{
|
|
319845
|
+
"path": "notepad.mp4",
|
|
319846
|
+
"surface": {
|
|
319847
|
+
"app": "notepad"
|
|
319848
|
+
}
|
|
319849
|
+
},
|
|
319850
|
+
{
|
|
319851
|
+
"path": "full-screen.mp4",
|
|
319852
|
+
"surface": {
|
|
319853
|
+
"app": "notepad"
|
|
319854
|
+
},
|
|
319855
|
+
"engine": {
|
|
319856
|
+
"name": "ffmpeg",
|
|
319857
|
+
"target": "display"
|
|
319858
|
+
}
|
|
318699
319859
|
}
|
|
318700
319860
|
]
|
|
318701
319861
|
}
|
|
@@ -361999,7 +363159,7 @@
|
|
|
361999
363159
|
"record": {
|
|
362000
363160
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
362001
363161
|
"title": "record",
|
|
362002
|
-
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
363162
|
+
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
362003
363163
|
"anyOf": [
|
|
362004
363164
|
{
|
|
362005
363165
|
"title": "Record (simple)",
|
|
@@ -362014,7 +363174,7 @@
|
|
|
362014
363174
|
"type": "object",
|
|
362015
363175
|
"properties": {
|
|
362016
363176
|
"surface": {
|
|
362017
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
363177
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
362018
363178
|
"anyOf": [
|
|
362019
363179
|
{
|
|
362020
363180
|
"title": "Surface (by browser engine)",
|
|
@@ -362164,6 +363324,72 @@
|
|
|
362164
363324
|
]
|
|
362165
363325
|
}
|
|
362166
363326
|
}
|
|
363327
|
+
},
|
|
363328
|
+
{
|
|
363329
|
+
"title": "App surface",
|
|
363330
|
+
"type": "object",
|
|
363331
|
+
"additionalProperties": false,
|
|
363332
|
+
"required": [
|
|
363333
|
+
"app"
|
|
363334
|
+
],
|
|
363335
|
+
"properties": {
|
|
363336
|
+
"app": {
|
|
363337
|
+
"type": "string",
|
|
363338
|
+
"minLength": 1,
|
|
363339
|
+
"pattern": "\\S",
|
|
363340
|
+
"transform": [
|
|
363341
|
+
"trim"
|
|
363342
|
+
],
|
|
363343
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
363344
|
+
},
|
|
363345
|
+
"window": {
|
|
363346
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
363347
|
+
"title": "App window selector",
|
|
363348
|
+
"anyOf": [
|
|
363349
|
+
{
|
|
363350
|
+
"title": "By index",
|
|
363351
|
+
"type": "integer",
|
|
363352
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
363353
|
+
},
|
|
363354
|
+
{
|
|
363355
|
+
"title": "By name",
|
|
363356
|
+
"type": "string",
|
|
363357
|
+
"minLength": 1,
|
|
363358
|
+
"pattern": "\\S",
|
|
363359
|
+
"transform": [
|
|
363360
|
+
"trim"
|
|
363361
|
+
],
|
|
363362
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
363363
|
+
},
|
|
363364
|
+
{
|
|
363365
|
+
"title": "By criteria",
|
|
363366
|
+
"type": "object",
|
|
363367
|
+
"additionalProperties": false,
|
|
363368
|
+
"minProperties": 1,
|
|
363369
|
+
"properties": {
|
|
363370
|
+
"name": {
|
|
363371
|
+
"type": "string",
|
|
363372
|
+
"minLength": 1,
|
|
363373
|
+
"pattern": "\\S",
|
|
363374
|
+
"transform": [
|
|
363375
|
+
"trim"
|
|
363376
|
+
],
|
|
363377
|
+
"description": "Assigned window name."
|
|
363378
|
+
},
|
|
363379
|
+
"index": {
|
|
363380
|
+
"type": "integer",
|
|
363381
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
363382
|
+
},
|
|
363383
|
+
"title": {
|
|
363384
|
+
"type": "string",
|
|
363385
|
+
"minLength": 1,
|
|
363386
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
363387
|
+
}
|
|
363388
|
+
}
|
|
363389
|
+
}
|
|
363390
|
+
]
|
|
363391
|
+
}
|
|
363392
|
+
}
|
|
362167
363393
|
}
|
|
362168
363394
|
]
|
|
362169
363395
|
},
|
|
@@ -362229,13 +363455,12 @@
|
|
|
362229
363455
|
},
|
|
362230
363456
|
"target": {
|
|
362231
363457
|
"type": "string",
|
|
362232
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
363458
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
362233
363459
|
"enum": [
|
|
362234
363460
|
"display",
|
|
362235
363461
|
"window",
|
|
362236
363462
|
"viewport"
|
|
362237
|
-
]
|
|
362238
|
-
"default": "display"
|
|
363463
|
+
]
|
|
362239
363464
|
},
|
|
362240
363465
|
"fps": {
|
|
362241
363466
|
"type": "integer",
|
|
@@ -362253,7 +363478,7 @@
|
|
|
362253
363478
|
{
|
|
362254
363479
|
"type": "boolean",
|
|
362255
363480
|
"title": "Record (boolean)",
|
|
362256
|
-
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
363481
|
+
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
362257
363482
|
}
|
|
362258
363483
|
],
|
|
362259
363484
|
"components": {
|
|
@@ -362271,7 +363496,7 @@
|
|
|
362271
363496
|
"type": "object",
|
|
362272
363497
|
"properties": {
|
|
362273
363498
|
"surface": {
|
|
362274
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
363499
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
362275
363500
|
"anyOf": [
|
|
362276
363501
|
{
|
|
362277
363502
|
"title": "Surface (by browser engine)",
|
|
@@ -362421,6 +363646,72 @@
|
|
|
362421
363646
|
]
|
|
362422
363647
|
}
|
|
362423
363648
|
}
|
|
363649
|
+
},
|
|
363650
|
+
{
|
|
363651
|
+
"title": "App surface",
|
|
363652
|
+
"type": "object",
|
|
363653
|
+
"additionalProperties": false,
|
|
363654
|
+
"required": [
|
|
363655
|
+
"app"
|
|
363656
|
+
],
|
|
363657
|
+
"properties": {
|
|
363658
|
+
"app": {
|
|
363659
|
+
"type": "string",
|
|
363660
|
+
"minLength": 1,
|
|
363661
|
+
"pattern": "\\S",
|
|
363662
|
+
"transform": [
|
|
363663
|
+
"trim"
|
|
363664
|
+
],
|
|
363665
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
363666
|
+
},
|
|
363667
|
+
"window": {
|
|
363668
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
363669
|
+
"title": "App window selector",
|
|
363670
|
+
"anyOf": [
|
|
363671
|
+
{
|
|
363672
|
+
"title": "By index",
|
|
363673
|
+
"type": "integer",
|
|
363674
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
363675
|
+
},
|
|
363676
|
+
{
|
|
363677
|
+
"title": "By name",
|
|
363678
|
+
"type": "string",
|
|
363679
|
+
"minLength": 1,
|
|
363680
|
+
"pattern": "\\S",
|
|
363681
|
+
"transform": [
|
|
363682
|
+
"trim"
|
|
363683
|
+
],
|
|
363684
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
363685
|
+
},
|
|
363686
|
+
{
|
|
363687
|
+
"title": "By criteria",
|
|
363688
|
+
"type": "object",
|
|
363689
|
+
"additionalProperties": false,
|
|
363690
|
+
"minProperties": 1,
|
|
363691
|
+
"properties": {
|
|
363692
|
+
"name": {
|
|
363693
|
+
"type": "string",
|
|
363694
|
+
"minLength": 1,
|
|
363695
|
+
"pattern": "\\S",
|
|
363696
|
+
"transform": [
|
|
363697
|
+
"trim"
|
|
363698
|
+
],
|
|
363699
|
+
"description": "Assigned window name."
|
|
363700
|
+
},
|
|
363701
|
+
"index": {
|
|
363702
|
+
"type": "integer",
|
|
363703
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
363704
|
+
},
|
|
363705
|
+
"title": {
|
|
363706
|
+
"type": "string",
|
|
363707
|
+
"minLength": 1,
|
|
363708
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
363709
|
+
}
|
|
363710
|
+
}
|
|
363711
|
+
}
|
|
363712
|
+
]
|
|
363713
|
+
}
|
|
363714
|
+
}
|
|
362424
363715
|
}
|
|
362425
363716
|
]
|
|
362426
363717
|
},
|
|
@@ -362486,13 +363777,12 @@
|
|
|
362486
363777
|
},
|
|
362487
363778
|
"target": {
|
|
362488
363779
|
"type": "string",
|
|
362489
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
363780
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
362490
363781
|
"enum": [
|
|
362491
363782
|
"display",
|
|
362492
363783
|
"window",
|
|
362493
363784
|
"viewport"
|
|
362494
|
-
]
|
|
362495
|
-
"default": "display"
|
|
363785
|
+
]
|
|
362496
363786
|
},
|
|
362497
363787
|
"fps": {
|
|
362498
363788
|
"type": "integer",
|
|
@@ -362538,13 +363828,12 @@
|
|
|
362538
363828
|
},
|
|
362539
363829
|
"target": {
|
|
362540
363830
|
"type": "string",
|
|
362541
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
363831
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
362542
363832
|
"enum": [
|
|
362543
363833
|
"display",
|
|
362544
363834
|
"window",
|
|
362545
363835
|
"viewport"
|
|
362546
|
-
]
|
|
362547
|
-
"default": "display"
|
|
363836
|
+
]
|
|
362548
363837
|
},
|
|
362549
363838
|
"fps": {
|
|
362550
363839
|
"type": "integer",
|
|
@@ -362577,6 +363866,22 @@
|
|
|
362577
363866
|
"target": "window",
|
|
362578
363867
|
"fps": 60
|
|
362579
363868
|
}
|
|
363869
|
+
},
|
|
363870
|
+
{
|
|
363871
|
+
"path": "notepad.mp4",
|
|
363872
|
+
"surface": {
|
|
363873
|
+
"app": "notepad"
|
|
363874
|
+
}
|
|
363875
|
+
},
|
|
363876
|
+
{
|
|
363877
|
+
"path": "full-screen.mp4",
|
|
363878
|
+
"surface": {
|
|
363879
|
+
"app": "notepad"
|
|
363880
|
+
},
|
|
363881
|
+
"engine": {
|
|
363882
|
+
"name": "ffmpeg",
|
|
363883
|
+
"target": "display"
|
|
363884
|
+
}
|
|
362580
363885
|
}
|
|
362581
363886
|
]
|
|
362582
363887
|
}
|
|
@@ -412054,7 +413359,7 @@
|
|
|
412054
413359
|
"record": {
|
|
412055
413360
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
412056
413361
|
"title": "record",
|
|
412057
|
-
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
413362
|
+
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
412058
413363
|
"anyOf": [
|
|
412059
413364
|
{
|
|
412060
413365
|
"title": "Record (simple)",
|
|
@@ -412069,7 +413374,7 @@
|
|
|
412069
413374
|
"type": "object",
|
|
412070
413375
|
"properties": {
|
|
412071
413376
|
"surface": {
|
|
412072
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
413377
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
412073
413378
|
"anyOf": [
|
|
412074
413379
|
{
|
|
412075
413380
|
"title": "Surface (by browser engine)",
|
|
@@ -412219,6 +413524,72 @@
|
|
|
412219
413524
|
]
|
|
412220
413525
|
}
|
|
412221
413526
|
}
|
|
413527
|
+
},
|
|
413528
|
+
{
|
|
413529
|
+
"title": "App surface",
|
|
413530
|
+
"type": "object",
|
|
413531
|
+
"additionalProperties": false,
|
|
413532
|
+
"required": [
|
|
413533
|
+
"app"
|
|
413534
|
+
],
|
|
413535
|
+
"properties": {
|
|
413536
|
+
"app": {
|
|
413537
|
+
"type": "string",
|
|
413538
|
+
"minLength": 1,
|
|
413539
|
+
"pattern": "\\S",
|
|
413540
|
+
"transform": [
|
|
413541
|
+
"trim"
|
|
413542
|
+
],
|
|
413543
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
413544
|
+
},
|
|
413545
|
+
"window": {
|
|
413546
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
413547
|
+
"title": "App window selector",
|
|
413548
|
+
"anyOf": [
|
|
413549
|
+
{
|
|
413550
|
+
"title": "By index",
|
|
413551
|
+
"type": "integer",
|
|
413552
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
413553
|
+
},
|
|
413554
|
+
{
|
|
413555
|
+
"title": "By name",
|
|
413556
|
+
"type": "string",
|
|
413557
|
+
"minLength": 1,
|
|
413558
|
+
"pattern": "\\S",
|
|
413559
|
+
"transform": [
|
|
413560
|
+
"trim"
|
|
413561
|
+
],
|
|
413562
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
413563
|
+
},
|
|
413564
|
+
{
|
|
413565
|
+
"title": "By criteria",
|
|
413566
|
+
"type": "object",
|
|
413567
|
+
"additionalProperties": false,
|
|
413568
|
+
"minProperties": 1,
|
|
413569
|
+
"properties": {
|
|
413570
|
+
"name": {
|
|
413571
|
+
"type": "string",
|
|
413572
|
+
"minLength": 1,
|
|
413573
|
+
"pattern": "\\S",
|
|
413574
|
+
"transform": [
|
|
413575
|
+
"trim"
|
|
413576
|
+
],
|
|
413577
|
+
"description": "Assigned window name."
|
|
413578
|
+
},
|
|
413579
|
+
"index": {
|
|
413580
|
+
"type": "integer",
|
|
413581
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
413582
|
+
},
|
|
413583
|
+
"title": {
|
|
413584
|
+
"type": "string",
|
|
413585
|
+
"minLength": 1,
|
|
413586
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
413587
|
+
}
|
|
413588
|
+
}
|
|
413589
|
+
}
|
|
413590
|
+
]
|
|
413591
|
+
}
|
|
413592
|
+
}
|
|
412222
413593
|
}
|
|
412223
413594
|
]
|
|
412224
413595
|
},
|
|
@@ -412284,13 +413655,12 @@
|
|
|
412284
413655
|
},
|
|
412285
413656
|
"target": {
|
|
412286
413657
|
"type": "string",
|
|
412287
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
413658
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
412288
413659
|
"enum": [
|
|
412289
413660
|
"display",
|
|
412290
413661
|
"window",
|
|
412291
413662
|
"viewport"
|
|
412292
|
-
]
|
|
412293
|
-
"default": "display"
|
|
413663
|
+
]
|
|
412294
413664
|
},
|
|
412295
413665
|
"fps": {
|
|
412296
413666
|
"type": "integer",
|
|
@@ -412308,7 +413678,7 @@
|
|
|
412308
413678
|
{
|
|
412309
413679
|
"type": "boolean",
|
|
412310
413680
|
"title": "Record (boolean)",
|
|
412311
|
-
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
413681
|
+
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
412312
413682
|
}
|
|
412313
413683
|
],
|
|
412314
413684
|
"components": {
|
|
@@ -412326,7 +413696,7 @@
|
|
|
412326
413696
|
"type": "object",
|
|
412327
413697
|
"properties": {
|
|
412328
413698
|
"surface": {
|
|
412329
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
413699
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
412330
413700
|
"anyOf": [
|
|
412331
413701
|
{
|
|
412332
413702
|
"title": "Surface (by browser engine)",
|
|
@@ -412476,6 +413846,72 @@
|
|
|
412476
413846
|
]
|
|
412477
413847
|
}
|
|
412478
413848
|
}
|
|
413849
|
+
},
|
|
413850
|
+
{
|
|
413851
|
+
"title": "App surface",
|
|
413852
|
+
"type": "object",
|
|
413853
|
+
"additionalProperties": false,
|
|
413854
|
+
"required": [
|
|
413855
|
+
"app"
|
|
413856
|
+
],
|
|
413857
|
+
"properties": {
|
|
413858
|
+
"app": {
|
|
413859
|
+
"type": "string",
|
|
413860
|
+
"minLength": 1,
|
|
413861
|
+
"pattern": "\\S",
|
|
413862
|
+
"transform": [
|
|
413863
|
+
"trim"
|
|
413864
|
+
],
|
|
413865
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
413866
|
+
},
|
|
413867
|
+
"window": {
|
|
413868
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
413869
|
+
"title": "App window selector",
|
|
413870
|
+
"anyOf": [
|
|
413871
|
+
{
|
|
413872
|
+
"title": "By index",
|
|
413873
|
+
"type": "integer",
|
|
413874
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
413875
|
+
},
|
|
413876
|
+
{
|
|
413877
|
+
"title": "By name",
|
|
413878
|
+
"type": "string",
|
|
413879
|
+
"minLength": 1,
|
|
413880
|
+
"pattern": "\\S",
|
|
413881
|
+
"transform": [
|
|
413882
|
+
"trim"
|
|
413883
|
+
],
|
|
413884
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
413885
|
+
},
|
|
413886
|
+
{
|
|
413887
|
+
"title": "By criteria",
|
|
413888
|
+
"type": "object",
|
|
413889
|
+
"additionalProperties": false,
|
|
413890
|
+
"minProperties": 1,
|
|
413891
|
+
"properties": {
|
|
413892
|
+
"name": {
|
|
413893
|
+
"type": "string",
|
|
413894
|
+
"minLength": 1,
|
|
413895
|
+
"pattern": "\\S",
|
|
413896
|
+
"transform": [
|
|
413897
|
+
"trim"
|
|
413898
|
+
],
|
|
413899
|
+
"description": "Assigned window name."
|
|
413900
|
+
},
|
|
413901
|
+
"index": {
|
|
413902
|
+
"type": "integer",
|
|
413903
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
413904
|
+
},
|
|
413905
|
+
"title": {
|
|
413906
|
+
"type": "string",
|
|
413907
|
+
"minLength": 1,
|
|
413908
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
413909
|
+
}
|
|
413910
|
+
}
|
|
413911
|
+
}
|
|
413912
|
+
]
|
|
413913
|
+
}
|
|
413914
|
+
}
|
|
412479
413915
|
}
|
|
412480
413916
|
]
|
|
412481
413917
|
},
|
|
@@ -412541,13 +413977,12 @@
|
|
|
412541
413977
|
},
|
|
412542
413978
|
"target": {
|
|
412543
413979
|
"type": "string",
|
|
412544
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
413980
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
412545
413981
|
"enum": [
|
|
412546
413982
|
"display",
|
|
412547
413983
|
"window",
|
|
412548
413984
|
"viewport"
|
|
412549
|
-
]
|
|
412550
|
-
"default": "display"
|
|
413985
|
+
]
|
|
412551
413986
|
},
|
|
412552
413987
|
"fps": {
|
|
412553
413988
|
"type": "integer",
|
|
@@ -412593,13 +414028,12 @@
|
|
|
412593
414028
|
},
|
|
412594
414029
|
"target": {
|
|
412595
414030
|
"type": "string",
|
|
412596
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
414031
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
412597
414032
|
"enum": [
|
|
412598
414033
|
"display",
|
|
412599
414034
|
"window",
|
|
412600
414035
|
"viewport"
|
|
412601
|
-
]
|
|
412602
|
-
"default": "display"
|
|
414036
|
+
]
|
|
412603
414037
|
},
|
|
412604
414038
|
"fps": {
|
|
412605
414039
|
"type": "integer",
|
|
@@ -412632,6 +414066,22 @@
|
|
|
412632
414066
|
"target": "window",
|
|
412633
414067
|
"fps": 60
|
|
412634
414068
|
}
|
|
414069
|
+
},
|
|
414070
|
+
{
|
|
414071
|
+
"path": "notepad.mp4",
|
|
414072
|
+
"surface": {
|
|
414073
|
+
"app": "notepad"
|
|
414074
|
+
}
|
|
414075
|
+
},
|
|
414076
|
+
{
|
|
414077
|
+
"path": "full-screen.mp4",
|
|
414078
|
+
"surface": {
|
|
414079
|
+
"app": "notepad"
|
|
414080
|
+
},
|
|
414081
|
+
"engine": {
|
|
414082
|
+
"name": "ffmpeg",
|
|
414083
|
+
"target": "display"
|
|
414084
|
+
}
|
|
412635
414085
|
}
|
|
412636
414086
|
]
|
|
412637
414087
|
}
|
|
@@ -455935,7 +457385,7 @@
|
|
|
455935
457385
|
"record": {
|
|
455936
457386
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
455937
457387
|
"title": "record",
|
|
455938
|
-
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
457388
|
+
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
455939
457389
|
"anyOf": [
|
|
455940
457390
|
{
|
|
455941
457391
|
"title": "Record (simple)",
|
|
@@ -455950,7 +457400,7 @@
|
|
|
455950
457400
|
"type": "object",
|
|
455951
457401
|
"properties": {
|
|
455952
457402
|
"surface": {
|
|
455953
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
457403
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
455954
457404
|
"anyOf": [
|
|
455955
457405
|
{
|
|
455956
457406
|
"title": "Surface (by browser engine)",
|
|
@@ -456100,6 +457550,72 @@
|
|
|
456100
457550
|
]
|
|
456101
457551
|
}
|
|
456102
457552
|
}
|
|
457553
|
+
},
|
|
457554
|
+
{
|
|
457555
|
+
"title": "App surface",
|
|
457556
|
+
"type": "object",
|
|
457557
|
+
"additionalProperties": false,
|
|
457558
|
+
"required": [
|
|
457559
|
+
"app"
|
|
457560
|
+
],
|
|
457561
|
+
"properties": {
|
|
457562
|
+
"app": {
|
|
457563
|
+
"type": "string",
|
|
457564
|
+
"minLength": 1,
|
|
457565
|
+
"pattern": "\\S",
|
|
457566
|
+
"transform": [
|
|
457567
|
+
"trim"
|
|
457568
|
+
],
|
|
457569
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
457570
|
+
},
|
|
457571
|
+
"window": {
|
|
457572
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
457573
|
+
"title": "App window selector",
|
|
457574
|
+
"anyOf": [
|
|
457575
|
+
{
|
|
457576
|
+
"title": "By index",
|
|
457577
|
+
"type": "integer",
|
|
457578
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
457579
|
+
},
|
|
457580
|
+
{
|
|
457581
|
+
"title": "By name",
|
|
457582
|
+
"type": "string",
|
|
457583
|
+
"minLength": 1,
|
|
457584
|
+
"pattern": "\\S",
|
|
457585
|
+
"transform": [
|
|
457586
|
+
"trim"
|
|
457587
|
+
],
|
|
457588
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
457589
|
+
},
|
|
457590
|
+
{
|
|
457591
|
+
"title": "By criteria",
|
|
457592
|
+
"type": "object",
|
|
457593
|
+
"additionalProperties": false,
|
|
457594
|
+
"minProperties": 1,
|
|
457595
|
+
"properties": {
|
|
457596
|
+
"name": {
|
|
457597
|
+
"type": "string",
|
|
457598
|
+
"minLength": 1,
|
|
457599
|
+
"pattern": "\\S",
|
|
457600
|
+
"transform": [
|
|
457601
|
+
"trim"
|
|
457602
|
+
],
|
|
457603
|
+
"description": "Assigned window name."
|
|
457604
|
+
},
|
|
457605
|
+
"index": {
|
|
457606
|
+
"type": "integer",
|
|
457607
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
457608
|
+
},
|
|
457609
|
+
"title": {
|
|
457610
|
+
"type": "string",
|
|
457611
|
+
"minLength": 1,
|
|
457612
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
457613
|
+
}
|
|
457614
|
+
}
|
|
457615
|
+
}
|
|
457616
|
+
]
|
|
457617
|
+
}
|
|
457618
|
+
}
|
|
456103
457619
|
}
|
|
456104
457620
|
]
|
|
456105
457621
|
},
|
|
@@ -456165,13 +457681,12 @@
|
|
|
456165
457681
|
},
|
|
456166
457682
|
"target": {
|
|
456167
457683
|
"type": "string",
|
|
456168
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
457684
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
456169
457685
|
"enum": [
|
|
456170
457686
|
"display",
|
|
456171
457687
|
"window",
|
|
456172
457688
|
"viewport"
|
|
456173
|
-
]
|
|
456174
|
-
"default": "display"
|
|
457689
|
+
]
|
|
456175
457690
|
},
|
|
456176
457691
|
"fps": {
|
|
456177
457692
|
"type": "integer",
|
|
@@ -456189,7 +457704,7 @@
|
|
|
456189
457704
|
{
|
|
456190
457705
|
"type": "boolean",
|
|
456191
457706
|
"title": "Record (boolean)",
|
|
456192
|
-
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
457707
|
+
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
456193
457708
|
}
|
|
456194
457709
|
],
|
|
456195
457710
|
"components": {
|
|
@@ -456207,7 +457722,7 @@
|
|
|
456207
457722
|
"type": "object",
|
|
456208
457723
|
"properties": {
|
|
456209
457724
|
"surface": {
|
|
456210
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
457725
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
456211
457726
|
"anyOf": [
|
|
456212
457727
|
{
|
|
456213
457728
|
"title": "Surface (by browser engine)",
|
|
@@ -456304,14 +457819,85 @@
|
|
|
456304
457819
|
}
|
|
456305
457820
|
]
|
|
456306
457821
|
},
|
|
456307
|
-
"tab": {
|
|
456308
|
-
"description": "Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.",
|
|
456309
|
-
"title": "Window/tab selector",
|
|
457822
|
+
"tab": {
|
|
457823
|
+
"description": "Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.",
|
|
457824
|
+
"title": "Window/tab selector",
|
|
457825
|
+
"anyOf": [
|
|
457826
|
+
{
|
|
457827
|
+
"title": "By index",
|
|
457828
|
+
"type": "integer",
|
|
457829
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest."
|
|
457830
|
+
},
|
|
457831
|
+
{
|
|
457832
|
+
"title": "By name",
|
|
457833
|
+
"type": "string",
|
|
457834
|
+
"minLength": 1,
|
|
457835
|
+
"pattern": "\\S",
|
|
457836
|
+
"transform": [
|
|
457837
|
+
"trim"
|
|
457838
|
+
],
|
|
457839
|
+
"description": "Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
457840
|
+
},
|
|
457841
|
+
{
|
|
457842
|
+
"title": "By criteria",
|
|
457843
|
+
"type": "object",
|
|
457844
|
+
"additionalProperties": false,
|
|
457845
|
+
"minProperties": 1,
|
|
457846
|
+
"properties": {
|
|
457847
|
+
"name": {
|
|
457848
|
+
"type": "string",
|
|
457849
|
+
"minLength": 1,
|
|
457850
|
+
"pattern": "\\S",
|
|
457851
|
+
"transform": [
|
|
457852
|
+
"trim"
|
|
457853
|
+
],
|
|
457854
|
+
"description": "Name assigned when the window/tab was opened."
|
|
457855
|
+
},
|
|
457856
|
+
"index": {
|
|
457857
|
+
"type": "integer",
|
|
457858
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
457859
|
+
},
|
|
457860
|
+
"title": {
|
|
457861
|
+
"type": "string",
|
|
457862
|
+
"minLength": 1,
|
|
457863
|
+
"description": "Page title to match. Substring, or /regex/."
|
|
457864
|
+
},
|
|
457865
|
+
"url": {
|
|
457866
|
+
"type": "string",
|
|
457867
|
+
"minLength": 1,
|
|
457868
|
+
"description": "Page URL to match. Substring, or /regex/."
|
|
457869
|
+
}
|
|
457870
|
+
}
|
|
457871
|
+
}
|
|
457872
|
+
]
|
|
457873
|
+
}
|
|
457874
|
+
}
|
|
457875
|
+
},
|
|
457876
|
+
{
|
|
457877
|
+
"title": "App surface",
|
|
457878
|
+
"type": "object",
|
|
457879
|
+
"additionalProperties": false,
|
|
457880
|
+
"required": [
|
|
457881
|
+
"app"
|
|
457882
|
+
],
|
|
457883
|
+
"properties": {
|
|
457884
|
+
"app": {
|
|
457885
|
+
"type": "string",
|
|
457886
|
+
"minLength": 1,
|
|
457887
|
+
"pattern": "\\S",
|
|
457888
|
+
"transform": [
|
|
457889
|
+
"trim"
|
|
457890
|
+
],
|
|
457891
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
457892
|
+
},
|
|
457893
|
+
"window": {
|
|
457894
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
457895
|
+
"title": "App window selector",
|
|
456310
457896
|
"anyOf": [
|
|
456311
457897
|
{
|
|
456312
457898
|
"title": "By index",
|
|
456313
457899
|
"type": "integer",
|
|
456314
|
-
"description": "Index in creation order. Negative counts from the end; `-1` is the newest."
|
|
457900
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
456315
457901
|
},
|
|
456316
457902
|
{
|
|
456317
457903
|
"title": "By name",
|
|
@@ -456321,7 +457907,7 @@
|
|
|
456321
457907
|
"transform": [
|
|
456322
457908
|
"trim"
|
|
456323
457909
|
],
|
|
456324
|
-
"description": "
|
|
457910
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
456325
457911
|
},
|
|
456326
457912
|
{
|
|
456327
457913
|
"title": "By criteria",
|
|
@@ -456336,7 +457922,7 @@
|
|
|
456336
457922
|
"transform": [
|
|
456337
457923
|
"trim"
|
|
456338
457924
|
],
|
|
456339
|
-
"description": "
|
|
457925
|
+
"description": "Assigned window name."
|
|
456340
457926
|
},
|
|
456341
457927
|
"index": {
|
|
456342
457928
|
"type": "integer",
|
|
@@ -456345,12 +457931,7 @@
|
|
|
456345
457931
|
"title": {
|
|
456346
457932
|
"type": "string",
|
|
456347
457933
|
"minLength": 1,
|
|
456348
|
-
"description": "
|
|
456349
|
-
},
|
|
456350
|
-
"url": {
|
|
456351
|
-
"type": "string",
|
|
456352
|
-
"minLength": 1,
|
|
456353
|
-
"description": "Page URL to match. Substring, or /regex/."
|
|
457934
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
456354
457935
|
}
|
|
456355
457936
|
}
|
|
456356
457937
|
}
|
|
@@ -456422,13 +458003,12 @@
|
|
|
456422
458003
|
},
|
|
456423
458004
|
"target": {
|
|
456424
458005
|
"type": "string",
|
|
456425
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
458006
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
456426
458007
|
"enum": [
|
|
456427
458008
|
"display",
|
|
456428
458009
|
"window",
|
|
456429
458010
|
"viewport"
|
|
456430
|
-
]
|
|
456431
|
-
"default": "display"
|
|
458011
|
+
]
|
|
456432
458012
|
},
|
|
456433
458013
|
"fps": {
|
|
456434
458014
|
"type": "integer",
|
|
@@ -456474,13 +458054,12 @@
|
|
|
456474
458054
|
},
|
|
456475
458055
|
"target": {
|
|
456476
458056
|
"type": "string",
|
|
456477
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
458057
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
456478
458058
|
"enum": [
|
|
456479
458059
|
"display",
|
|
456480
458060
|
"window",
|
|
456481
458061
|
"viewport"
|
|
456482
|
-
]
|
|
456483
|
-
"default": "display"
|
|
458062
|
+
]
|
|
456484
458063
|
},
|
|
456485
458064
|
"fps": {
|
|
456486
458065
|
"type": "integer",
|
|
@@ -456513,6 +458092,22 @@
|
|
|
456513
458092
|
"target": "window",
|
|
456514
458093
|
"fps": 60
|
|
456515
458094
|
}
|
|
458095
|
+
},
|
|
458096
|
+
{
|
|
458097
|
+
"path": "notepad.mp4",
|
|
458098
|
+
"surface": {
|
|
458099
|
+
"app": "notepad"
|
|
458100
|
+
}
|
|
458101
|
+
},
|
|
458102
|
+
{
|
|
458103
|
+
"path": "full-screen.mp4",
|
|
458104
|
+
"surface": {
|
|
458105
|
+
"app": "notepad"
|
|
458106
|
+
},
|
|
458107
|
+
"engine": {
|
|
458108
|
+
"name": "ffmpeg",
|
|
458109
|
+
"target": "display"
|
|
458110
|
+
}
|
|
456516
458111
|
}
|
|
456517
458112
|
]
|
|
456518
458113
|
}
|
|
@@ -500702,7 +502297,7 @@
|
|
|
500702
502297
|
"record": {
|
|
500703
502298
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
500704
502299
|
"title": "record",
|
|
500705
|
-
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
502300
|
+
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
500706
502301
|
"anyOf": [
|
|
500707
502302
|
{
|
|
500708
502303
|
"title": "Record (simple)",
|
|
@@ -500717,7 +502312,7 @@
|
|
|
500717
502312
|
"type": "object",
|
|
500718
502313
|
"properties": {
|
|
500719
502314
|
"surface": {
|
|
500720
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
502315
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
500721
502316
|
"anyOf": [
|
|
500722
502317
|
{
|
|
500723
502318
|
"title": "Surface (by browser engine)",
|
|
@@ -500867,6 +502462,72 @@
|
|
|
500867
502462
|
]
|
|
500868
502463
|
}
|
|
500869
502464
|
}
|
|
502465
|
+
},
|
|
502466
|
+
{
|
|
502467
|
+
"title": "App surface",
|
|
502468
|
+
"type": "object",
|
|
502469
|
+
"additionalProperties": false,
|
|
502470
|
+
"required": [
|
|
502471
|
+
"app"
|
|
502472
|
+
],
|
|
502473
|
+
"properties": {
|
|
502474
|
+
"app": {
|
|
502475
|
+
"type": "string",
|
|
502476
|
+
"minLength": 1,
|
|
502477
|
+
"pattern": "\\S",
|
|
502478
|
+
"transform": [
|
|
502479
|
+
"trim"
|
|
502480
|
+
],
|
|
502481
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
502482
|
+
},
|
|
502483
|
+
"window": {
|
|
502484
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
502485
|
+
"title": "App window selector",
|
|
502486
|
+
"anyOf": [
|
|
502487
|
+
{
|
|
502488
|
+
"title": "By index",
|
|
502489
|
+
"type": "integer",
|
|
502490
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
502491
|
+
},
|
|
502492
|
+
{
|
|
502493
|
+
"title": "By name",
|
|
502494
|
+
"type": "string",
|
|
502495
|
+
"minLength": 1,
|
|
502496
|
+
"pattern": "\\S",
|
|
502497
|
+
"transform": [
|
|
502498
|
+
"trim"
|
|
502499
|
+
],
|
|
502500
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
502501
|
+
},
|
|
502502
|
+
{
|
|
502503
|
+
"title": "By criteria",
|
|
502504
|
+
"type": "object",
|
|
502505
|
+
"additionalProperties": false,
|
|
502506
|
+
"minProperties": 1,
|
|
502507
|
+
"properties": {
|
|
502508
|
+
"name": {
|
|
502509
|
+
"type": "string",
|
|
502510
|
+
"minLength": 1,
|
|
502511
|
+
"pattern": "\\S",
|
|
502512
|
+
"transform": [
|
|
502513
|
+
"trim"
|
|
502514
|
+
],
|
|
502515
|
+
"description": "Assigned window name."
|
|
502516
|
+
},
|
|
502517
|
+
"index": {
|
|
502518
|
+
"type": "integer",
|
|
502519
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
502520
|
+
},
|
|
502521
|
+
"title": {
|
|
502522
|
+
"type": "string",
|
|
502523
|
+
"minLength": 1,
|
|
502524
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
502525
|
+
}
|
|
502526
|
+
}
|
|
502527
|
+
}
|
|
502528
|
+
]
|
|
502529
|
+
}
|
|
502530
|
+
}
|
|
500870
502531
|
}
|
|
500871
502532
|
]
|
|
500872
502533
|
},
|
|
@@ -500932,13 +502593,12 @@
|
|
|
500932
502593
|
},
|
|
500933
502594
|
"target": {
|
|
500934
502595
|
"type": "string",
|
|
500935
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
502596
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
500936
502597
|
"enum": [
|
|
500937
502598
|
"display",
|
|
500938
502599
|
"window",
|
|
500939
502600
|
"viewport"
|
|
500940
|
-
]
|
|
500941
|
-
"default": "display"
|
|
502601
|
+
]
|
|
500942
502602
|
},
|
|
500943
502603
|
"fps": {
|
|
500944
502604
|
"type": "integer",
|
|
@@ -500956,7 +502616,7 @@
|
|
|
500956
502616
|
{
|
|
500957
502617
|
"type": "boolean",
|
|
500958
502618
|
"title": "Record (boolean)",
|
|
500959
|
-
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
502619
|
+
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
500960
502620
|
}
|
|
500961
502621
|
],
|
|
500962
502622
|
"components": {
|
|
@@ -500974,7 +502634,7 @@
|
|
|
500974
502634
|
"type": "object",
|
|
500975
502635
|
"properties": {
|
|
500976
502636
|
"surface": {
|
|
500977
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
502637
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
500978
502638
|
"anyOf": [
|
|
500979
502639
|
{
|
|
500980
502640
|
"title": "Surface (by browser engine)",
|
|
@@ -501124,6 +502784,72 @@
|
|
|
501124
502784
|
]
|
|
501125
502785
|
}
|
|
501126
502786
|
}
|
|
502787
|
+
},
|
|
502788
|
+
{
|
|
502789
|
+
"title": "App surface",
|
|
502790
|
+
"type": "object",
|
|
502791
|
+
"additionalProperties": false,
|
|
502792
|
+
"required": [
|
|
502793
|
+
"app"
|
|
502794
|
+
],
|
|
502795
|
+
"properties": {
|
|
502796
|
+
"app": {
|
|
502797
|
+
"type": "string",
|
|
502798
|
+
"minLength": 1,
|
|
502799
|
+
"pattern": "\\S",
|
|
502800
|
+
"transform": [
|
|
502801
|
+
"trim"
|
|
502802
|
+
],
|
|
502803
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
502804
|
+
},
|
|
502805
|
+
"window": {
|
|
502806
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
502807
|
+
"title": "App window selector",
|
|
502808
|
+
"anyOf": [
|
|
502809
|
+
{
|
|
502810
|
+
"title": "By index",
|
|
502811
|
+
"type": "integer",
|
|
502812
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
502813
|
+
},
|
|
502814
|
+
{
|
|
502815
|
+
"title": "By name",
|
|
502816
|
+
"type": "string",
|
|
502817
|
+
"minLength": 1,
|
|
502818
|
+
"pattern": "\\S",
|
|
502819
|
+
"transform": [
|
|
502820
|
+
"trim"
|
|
502821
|
+
],
|
|
502822
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
502823
|
+
},
|
|
502824
|
+
{
|
|
502825
|
+
"title": "By criteria",
|
|
502826
|
+
"type": "object",
|
|
502827
|
+
"additionalProperties": false,
|
|
502828
|
+
"minProperties": 1,
|
|
502829
|
+
"properties": {
|
|
502830
|
+
"name": {
|
|
502831
|
+
"type": "string",
|
|
502832
|
+
"minLength": 1,
|
|
502833
|
+
"pattern": "\\S",
|
|
502834
|
+
"transform": [
|
|
502835
|
+
"trim"
|
|
502836
|
+
],
|
|
502837
|
+
"description": "Assigned window name."
|
|
502838
|
+
},
|
|
502839
|
+
"index": {
|
|
502840
|
+
"type": "integer",
|
|
502841
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
502842
|
+
},
|
|
502843
|
+
"title": {
|
|
502844
|
+
"type": "string",
|
|
502845
|
+
"minLength": 1,
|
|
502846
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
502847
|
+
}
|
|
502848
|
+
}
|
|
502849
|
+
}
|
|
502850
|
+
]
|
|
502851
|
+
}
|
|
502852
|
+
}
|
|
501127
502853
|
}
|
|
501128
502854
|
]
|
|
501129
502855
|
},
|
|
@@ -501189,13 +502915,12 @@
|
|
|
501189
502915
|
},
|
|
501190
502916
|
"target": {
|
|
501191
502917
|
"type": "string",
|
|
501192
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
502918
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
501193
502919
|
"enum": [
|
|
501194
502920
|
"display",
|
|
501195
502921
|
"window",
|
|
501196
502922
|
"viewport"
|
|
501197
|
-
]
|
|
501198
|
-
"default": "display"
|
|
502923
|
+
]
|
|
501199
502924
|
},
|
|
501200
502925
|
"fps": {
|
|
501201
502926
|
"type": "integer",
|
|
@@ -501241,13 +502966,12 @@
|
|
|
501241
502966
|
},
|
|
501242
502967
|
"target": {
|
|
501243
502968
|
"type": "string",
|
|
501244
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
502969
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
501245
502970
|
"enum": [
|
|
501246
502971
|
"display",
|
|
501247
502972
|
"window",
|
|
501248
502973
|
"viewport"
|
|
501249
|
-
]
|
|
501250
|
-
"default": "display"
|
|
502974
|
+
]
|
|
501251
502975
|
},
|
|
501252
502976
|
"fps": {
|
|
501253
502977
|
"type": "integer",
|
|
@@ -501280,6 +503004,22 @@
|
|
|
501280
503004
|
"target": "window",
|
|
501281
503005
|
"fps": 60
|
|
501282
503006
|
}
|
|
503007
|
+
},
|
|
503008
|
+
{
|
|
503009
|
+
"path": "notepad.mp4",
|
|
503010
|
+
"surface": {
|
|
503011
|
+
"app": "notepad"
|
|
503012
|
+
}
|
|
503013
|
+
},
|
|
503014
|
+
{
|
|
503015
|
+
"path": "full-screen.mp4",
|
|
503016
|
+
"surface": {
|
|
503017
|
+
"app": "notepad"
|
|
503018
|
+
},
|
|
503019
|
+
"engine": {
|
|
503020
|
+
"name": "ffmpeg",
|
|
503021
|
+
"target": "display"
|
|
503022
|
+
}
|
|
501283
503023
|
}
|
|
501284
503024
|
]
|
|
501285
503025
|
}
|
|
@@ -547924,7 +549664,7 @@
|
|
|
547924
549664
|
"record": {
|
|
547925
549665
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
547926
549666
|
"title": "record",
|
|
547927
|
-
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
549667
|
+
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
547928
549668
|
"anyOf": [
|
|
547929
549669
|
{
|
|
547930
549670
|
"title": "Record (simple)",
|
|
@@ -547939,7 +549679,7 @@
|
|
|
547939
549679
|
"type": "object",
|
|
547940
549680
|
"properties": {
|
|
547941
549681
|
"surface": {
|
|
547942
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
549682
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
547943
549683
|
"anyOf": [
|
|
547944
549684
|
{
|
|
547945
549685
|
"title": "Surface (by browser engine)",
|
|
@@ -548036,14 +549776,85 @@
|
|
|
548036
549776
|
}
|
|
548037
549777
|
]
|
|
548038
549778
|
},
|
|
548039
|
-
"tab": {
|
|
548040
|
-
"description": "Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.",
|
|
548041
|
-
"title": "Window/tab selector",
|
|
549779
|
+
"tab": {
|
|
549780
|
+
"description": "Which tab to act on. Omit to use the active tab. Without `window`, the selector searches every tab in creation order — including tabs the page opened itself.",
|
|
549781
|
+
"title": "Window/tab selector",
|
|
549782
|
+
"anyOf": [
|
|
549783
|
+
{
|
|
549784
|
+
"title": "By index",
|
|
549785
|
+
"type": "integer",
|
|
549786
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest."
|
|
549787
|
+
},
|
|
549788
|
+
{
|
|
549789
|
+
"title": "By name",
|
|
549790
|
+
"type": "string",
|
|
549791
|
+
"minLength": 1,
|
|
549792
|
+
"pattern": "\\S",
|
|
549793
|
+
"transform": [
|
|
549794
|
+
"trim"
|
|
549795
|
+
],
|
|
549796
|
+
"description": "Name assigned when the window/tab was opened (goTo `newTab`/`newWindow`). The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
549797
|
+
},
|
|
549798
|
+
{
|
|
549799
|
+
"title": "By criteria",
|
|
549800
|
+
"type": "object",
|
|
549801
|
+
"additionalProperties": false,
|
|
549802
|
+
"minProperties": 1,
|
|
549803
|
+
"properties": {
|
|
549804
|
+
"name": {
|
|
549805
|
+
"type": "string",
|
|
549806
|
+
"minLength": 1,
|
|
549807
|
+
"pattern": "\\S",
|
|
549808
|
+
"transform": [
|
|
549809
|
+
"trim"
|
|
549810
|
+
],
|
|
549811
|
+
"description": "Name assigned when the window/tab was opened."
|
|
549812
|
+
},
|
|
549813
|
+
"index": {
|
|
549814
|
+
"type": "integer",
|
|
549815
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
549816
|
+
},
|
|
549817
|
+
"title": {
|
|
549818
|
+
"type": "string",
|
|
549819
|
+
"minLength": 1,
|
|
549820
|
+
"description": "Page title to match. Substring, or /regex/."
|
|
549821
|
+
},
|
|
549822
|
+
"url": {
|
|
549823
|
+
"type": "string",
|
|
549824
|
+
"minLength": 1,
|
|
549825
|
+
"description": "Page URL to match. Substring, or /regex/."
|
|
549826
|
+
}
|
|
549827
|
+
}
|
|
549828
|
+
}
|
|
549829
|
+
]
|
|
549830
|
+
}
|
|
549831
|
+
}
|
|
549832
|
+
},
|
|
549833
|
+
{
|
|
549834
|
+
"title": "App surface",
|
|
549835
|
+
"type": "object",
|
|
549836
|
+
"additionalProperties": false,
|
|
549837
|
+
"required": [
|
|
549838
|
+
"app"
|
|
549839
|
+
],
|
|
549840
|
+
"properties": {
|
|
549841
|
+
"app": {
|
|
549842
|
+
"type": "string",
|
|
549843
|
+
"minLength": 1,
|
|
549844
|
+
"pattern": "\\S",
|
|
549845
|
+
"transform": [
|
|
549846
|
+
"trim"
|
|
549847
|
+
],
|
|
549848
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
549849
|
+
},
|
|
549850
|
+
"window": {
|
|
549851
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
549852
|
+
"title": "App window selector",
|
|
548042
549853
|
"anyOf": [
|
|
548043
549854
|
{
|
|
548044
549855
|
"title": "By index",
|
|
548045
549856
|
"type": "integer",
|
|
548046
|
-
"description": "Index in creation order. Negative counts from the end; `-1` is the newest."
|
|
549857
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
548047
549858
|
},
|
|
548048
549859
|
{
|
|
548049
549860
|
"title": "By name",
|
|
@@ -548053,7 +549864,7 @@
|
|
|
548053
549864
|
"transform": [
|
|
548054
549865
|
"trim"
|
|
548055
549866
|
],
|
|
548056
|
-
"description": "
|
|
549867
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
548057
549868
|
},
|
|
548058
549869
|
{
|
|
548059
549870
|
"title": "By criteria",
|
|
@@ -548068,7 +549879,7 @@
|
|
|
548068
549879
|
"transform": [
|
|
548069
549880
|
"trim"
|
|
548070
549881
|
],
|
|
548071
|
-
"description": "
|
|
549882
|
+
"description": "Assigned window name."
|
|
548072
549883
|
},
|
|
548073
549884
|
"index": {
|
|
548074
549885
|
"type": "integer",
|
|
@@ -548077,12 +549888,7 @@
|
|
|
548077
549888
|
"title": {
|
|
548078
549889
|
"type": "string",
|
|
548079
549890
|
"minLength": 1,
|
|
548080
|
-
"description": "
|
|
548081
|
-
},
|
|
548082
|
-
"url": {
|
|
548083
|
-
"type": "string",
|
|
548084
|
-
"minLength": 1,
|
|
548085
|
-
"description": "Page URL to match. Substring, or /regex/."
|
|
549891
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
548086
549892
|
}
|
|
548087
549893
|
}
|
|
548088
549894
|
}
|
|
@@ -548154,13 +549960,12 @@
|
|
|
548154
549960
|
},
|
|
548155
549961
|
"target": {
|
|
548156
549962
|
"type": "string",
|
|
548157
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
549963
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
548158
549964
|
"enum": [
|
|
548159
549965
|
"display",
|
|
548160
549966
|
"window",
|
|
548161
549967
|
"viewport"
|
|
548162
|
-
]
|
|
548163
|
-
"default": "display"
|
|
549968
|
+
]
|
|
548164
549969
|
},
|
|
548165
549970
|
"fps": {
|
|
548166
549971
|
"type": "integer",
|
|
@@ -548178,7 +549983,7 @@
|
|
|
548178
549983
|
{
|
|
548179
549984
|
"type": "boolean",
|
|
548180
549985
|
"title": "Record (boolean)",
|
|
548181
|
-
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
549986
|
+
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
548182
549987
|
}
|
|
548183
549988
|
],
|
|
548184
549989
|
"components": {
|
|
@@ -548196,7 +550001,7 @@
|
|
|
548196
550001
|
"type": "object",
|
|
548197
550002
|
"properties": {
|
|
548198
550003
|
"surface": {
|
|
548199
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
550004
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
548200
550005
|
"anyOf": [
|
|
548201
550006
|
{
|
|
548202
550007
|
"title": "Surface (by browser engine)",
|
|
@@ -548346,6 +550151,72 @@
|
|
|
548346
550151
|
]
|
|
548347
550152
|
}
|
|
548348
550153
|
}
|
|
550154
|
+
},
|
|
550155
|
+
{
|
|
550156
|
+
"title": "App surface",
|
|
550157
|
+
"type": "object",
|
|
550158
|
+
"additionalProperties": false,
|
|
550159
|
+
"required": [
|
|
550160
|
+
"app"
|
|
550161
|
+
],
|
|
550162
|
+
"properties": {
|
|
550163
|
+
"app": {
|
|
550164
|
+
"type": "string",
|
|
550165
|
+
"minLength": 1,
|
|
550166
|
+
"pattern": "\\S",
|
|
550167
|
+
"transform": [
|
|
550168
|
+
"trim"
|
|
550169
|
+
],
|
|
550170
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
550171
|
+
},
|
|
550172
|
+
"window": {
|
|
550173
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
550174
|
+
"title": "App window selector",
|
|
550175
|
+
"anyOf": [
|
|
550176
|
+
{
|
|
550177
|
+
"title": "By index",
|
|
550178
|
+
"type": "integer",
|
|
550179
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
550180
|
+
},
|
|
550181
|
+
{
|
|
550182
|
+
"title": "By name",
|
|
550183
|
+
"type": "string",
|
|
550184
|
+
"minLength": 1,
|
|
550185
|
+
"pattern": "\\S",
|
|
550186
|
+
"transform": [
|
|
550187
|
+
"trim"
|
|
550188
|
+
],
|
|
550189
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
550190
|
+
},
|
|
550191
|
+
{
|
|
550192
|
+
"title": "By criteria",
|
|
550193
|
+
"type": "object",
|
|
550194
|
+
"additionalProperties": false,
|
|
550195
|
+
"minProperties": 1,
|
|
550196
|
+
"properties": {
|
|
550197
|
+
"name": {
|
|
550198
|
+
"type": "string",
|
|
550199
|
+
"minLength": 1,
|
|
550200
|
+
"pattern": "\\S",
|
|
550201
|
+
"transform": [
|
|
550202
|
+
"trim"
|
|
550203
|
+
],
|
|
550204
|
+
"description": "Assigned window name."
|
|
550205
|
+
},
|
|
550206
|
+
"index": {
|
|
550207
|
+
"type": "integer",
|
|
550208
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
550209
|
+
},
|
|
550210
|
+
"title": {
|
|
550211
|
+
"type": "string",
|
|
550212
|
+
"minLength": 1,
|
|
550213
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
550214
|
+
}
|
|
550215
|
+
}
|
|
550216
|
+
}
|
|
550217
|
+
]
|
|
550218
|
+
}
|
|
550219
|
+
}
|
|
548349
550220
|
}
|
|
548350
550221
|
]
|
|
548351
550222
|
},
|
|
@@ -548411,13 +550282,12 @@
|
|
|
548411
550282
|
},
|
|
548412
550283
|
"target": {
|
|
548413
550284
|
"type": "string",
|
|
548414
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
550285
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
548415
550286
|
"enum": [
|
|
548416
550287
|
"display",
|
|
548417
550288
|
"window",
|
|
548418
550289
|
"viewport"
|
|
548419
|
-
]
|
|
548420
|
-
"default": "display"
|
|
550290
|
+
]
|
|
548421
550291
|
},
|
|
548422
550292
|
"fps": {
|
|
548423
550293
|
"type": "integer",
|
|
@@ -548463,13 +550333,12 @@
|
|
|
548463
550333
|
},
|
|
548464
550334
|
"target": {
|
|
548465
550335
|
"type": "string",
|
|
548466
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
550336
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
548467
550337
|
"enum": [
|
|
548468
550338
|
"display",
|
|
548469
550339
|
"window",
|
|
548470
550340
|
"viewport"
|
|
548471
|
-
]
|
|
548472
|
-
"default": "display"
|
|
550341
|
+
]
|
|
548473
550342
|
},
|
|
548474
550343
|
"fps": {
|
|
548475
550344
|
"type": "integer",
|
|
@@ -548502,6 +550371,22 @@
|
|
|
548502
550371
|
"target": "window",
|
|
548503
550372
|
"fps": 60
|
|
548504
550373
|
}
|
|
550374
|
+
},
|
|
550375
|
+
{
|
|
550376
|
+
"path": "notepad.mp4",
|
|
550377
|
+
"surface": {
|
|
550378
|
+
"app": "notepad"
|
|
550379
|
+
}
|
|
550380
|
+
},
|
|
550381
|
+
{
|
|
550382
|
+
"path": "full-screen.mp4",
|
|
550383
|
+
"surface": {
|
|
550384
|
+
"app": "notepad"
|
|
550385
|
+
},
|
|
550386
|
+
"engine": {
|
|
550387
|
+
"name": "ffmpeg",
|
|
550388
|
+
"target": "display"
|
|
550389
|
+
}
|
|
548505
550390
|
}
|
|
548506
550391
|
]
|
|
548507
550392
|
}
|
|
@@ -591805,7 +593690,7 @@
|
|
|
591805
593690
|
"record": {
|
|
591806
593691
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
591807
593692
|
"title": "record",
|
|
591808
|
-
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
593693
|
+
"description": "Start recording. Must be followed by a `stopRecord` step. The `browser` engine captures the Chrome viewport (works under concurrency); the `ffmpeg` engine captures the screen and supports any application. On Android/iOS contexts, recording captures the device screen through the device itself — `engine` doesn't apply. Supported extensions: [ '.mp4', '.webm', '.gif' ]",
|
|
591809
593694
|
"anyOf": [
|
|
591810
593695
|
{
|
|
591811
593696
|
"title": "Record (simple)",
|
|
@@ -591820,7 +593705,7 @@
|
|
|
591820
593705
|
"type": "object",
|
|
591821
593706
|
"properties": {
|
|
591822
593707
|
"surface": {
|
|
591823
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
593708
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
591824
593709
|
"anyOf": [
|
|
591825
593710
|
{
|
|
591826
593711
|
"title": "Surface (by browser engine)",
|
|
@@ -591970,6 +593855,72 @@
|
|
|
591970
593855
|
]
|
|
591971
593856
|
}
|
|
591972
593857
|
}
|
|
593858
|
+
},
|
|
593859
|
+
{
|
|
593860
|
+
"title": "App surface",
|
|
593861
|
+
"type": "object",
|
|
593862
|
+
"additionalProperties": false,
|
|
593863
|
+
"required": [
|
|
593864
|
+
"app"
|
|
593865
|
+
],
|
|
593866
|
+
"properties": {
|
|
593867
|
+
"app": {
|
|
593868
|
+
"type": "string",
|
|
593869
|
+
"minLength": 1,
|
|
593870
|
+
"pattern": "\\S",
|
|
593871
|
+
"transform": [
|
|
593872
|
+
"trim"
|
|
593873
|
+
],
|
|
593874
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
593875
|
+
},
|
|
593876
|
+
"window": {
|
|
593877
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
593878
|
+
"title": "App window selector",
|
|
593879
|
+
"anyOf": [
|
|
593880
|
+
{
|
|
593881
|
+
"title": "By index",
|
|
593882
|
+
"type": "integer",
|
|
593883
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
593884
|
+
},
|
|
593885
|
+
{
|
|
593886
|
+
"title": "By name",
|
|
593887
|
+
"type": "string",
|
|
593888
|
+
"minLength": 1,
|
|
593889
|
+
"pattern": "\\S",
|
|
593890
|
+
"transform": [
|
|
593891
|
+
"trim"
|
|
593892
|
+
],
|
|
593893
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
593894
|
+
},
|
|
593895
|
+
{
|
|
593896
|
+
"title": "By criteria",
|
|
593897
|
+
"type": "object",
|
|
593898
|
+
"additionalProperties": false,
|
|
593899
|
+
"minProperties": 1,
|
|
593900
|
+
"properties": {
|
|
593901
|
+
"name": {
|
|
593902
|
+
"type": "string",
|
|
593903
|
+
"minLength": 1,
|
|
593904
|
+
"pattern": "\\S",
|
|
593905
|
+
"transform": [
|
|
593906
|
+
"trim"
|
|
593907
|
+
],
|
|
593908
|
+
"description": "Assigned window name."
|
|
593909
|
+
},
|
|
593910
|
+
"index": {
|
|
593911
|
+
"type": "integer",
|
|
593912
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
593913
|
+
},
|
|
593914
|
+
"title": {
|
|
593915
|
+
"type": "string",
|
|
593916
|
+
"minLength": 1,
|
|
593917
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
593918
|
+
}
|
|
593919
|
+
}
|
|
593920
|
+
}
|
|
593921
|
+
]
|
|
593922
|
+
}
|
|
593923
|
+
}
|
|
591973
593924
|
}
|
|
591974
593925
|
]
|
|
591975
593926
|
},
|
|
@@ -592035,13 +593986,12 @@
|
|
|
592035
593986
|
},
|
|
592036
593987
|
"target": {
|
|
592037
593988
|
"type": "string",
|
|
592038
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
593989
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
592039
593990
|
"enum": [
|
|
592040
593991
|
"display",
|
|
592041
593992
|
"window",
|
|
592042
593993
|
"viewport"
|
|
592043
|
-
]
|
|
592044
|
-
"default": "display"
|
|
593994
|
+
]
|
|
592045
593995
|
},
|
|
592046
593996
|
"fps": {
|
|
592047
593997
|
"type": "integer",
|
|
@@ -592059,7 +594009,7 @@
|
|
|
592059
594009
|
{
|
|
592060
594010
|
"type": "boolean",
|
|
592061
594011
|
"title": "Record (boolean)",
|
|
592062
|
-
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
594012
|
+
"description": "If `true`, starts recording — auto-selecting the `browser` engine for a visible Chrome context, the device screen on Android/iOS contexts, and the `ffmpeg` engine otherwise. If `false`, doesn't record."
|
|
592063
594013
|
}
|
|
592064
594014
|
],
|
|
592065
594015
|
"components": {
|
|
@@ -592077,7 +594027,7 @@
|
|
|
592077
594027
|
"type": "object",
|
|
592078
594028
|
"properties": {
|
|
592079
594029
|
"surface": {
|
|
592080
|
-
"description": "The browser window/tab to record. Omit to record the active
|
|
594030
|
+
"description": "The browser window/tab or app window to record. Omit to record the active surface. The targeted surface stays focused afterward. App surfaces use the object form ({ \"app\": … }) and are captured via the `ffmpeg` engine, cropped to the app window by default.",
|
|
592081
594031
|
"anyOf": [
|
|
592082
594032
|
{
|
|
592083
594033
|
"title": "Surface (by browser engine)",
|
|
@@ -592227,6 +594177,72 @@
|
|
|
592227
594177
|
]
|
|
592228
594178
|
}
|
|
592229
594179
|
}
|
|
594180
|
+
},
|
|
594181
|
+
{
|
|
594182
|
+
"title": "App surface",
|
|
594183
|
+
"type": "object",
|
|
594184
|
+
"additionalProperties": false,
|
|
594185
|
+
"required": [
|
|
594186
|
+
"app"
|
|
594187
|
+
],
|
|
594188
|
+
"properties": {
|
|
594189
|
+
"app": {
|
|
594190
|
+
"type": "string",
|
|
594191
|
+
"minLength": 1,
|
|
594192
|
+
"pattern": "\\S",
|
|
594193
|
+
"transform": [
|
|
594194
|
+
"trim"
|
|
594195
|
+
],
|
|
594196
|
+
"description": "Name of an app surface opened by `startSurface` (its `name`, or the default derived from the app identifier)."
|
|
594197
|
+
},
|
|
594198
|
+
"window": {
|
|
594199
|
+
"description": "Which app window to act on. Omit to use the active window. Apps have windows, no tabs.",
|
|
594200
|
+
"title": "App window selector",
|
|
594201
|
+
"anyOf": [
|
|
594202
|
+
{
|
|
594203
|
+
"title": "By index",
|
|
594204
|
+
"type": "integer",
|
|
594205
|
+
"description": "Index in creation order. Negative counts from the end; `-1` is the newest (e.g. a dialog the app just opened)."
|
|
594206
|
+
},
|
|
594207
|
+
{
|
|
594208
|
+
"title": "By name",
|
|
594209
|
+
"type": "string",
|
|
594210
|
+
"minLength": 1,
|
|
594211
|
+
"pattern": "\\S",
|
|
594212
|
+
"transform": [
|
|
594213
|
+
"trim"
|
|
594214
|
+
],
|
|
594215
|
+
"description": "Assigned window name. The integer branch is listed first because Ajv validates with coerceTypes — string-first would coerce integer indexes into name strings."
|
|
594216
|
+
},
|
|
594217
|
+
{
|
|
594218
|
+
"title": "By criteria",
|
|
594219
|
+
"type": "object",
|
|
594220
|
+
"additionalProperties": false,
|
|
594221
|
+
"minProperties": 1,
|
|
594222
|
+
"properties": {
|
|
594223
|
+
"name": {
|
|
594224
|
+
"type": "string",
|
|
594225
|
+
"minLength": 1,
|
|
594226
|
+
"pattern": "\\S",
|
|
594227
|
+
"transform": [
|
|
594228
|
+
"trim"
|
|
594229
|
+
],
|
|
594230
|
+
"description": "Assigned window name."
|
|
594231
|
+
},
|
|
594232
|
+
"index": {
|
|
594233
|
+
"type": "integer",
|
|
594234
|
+
"description": "Index in creation order. Negative counts from the end."
|
|
594235
|
+
},
|
|
594236
|
+
"title": {
|
|
594237
|
+
"type": "string",
|
|
594238
|
+
"minLength": 1,
|
|
594239
|
+
"description": "Window title to match. Substring, or /regex/."
|
|
594240
|
+
}
|
|
594241
|
+
}
|
|
594242
|
+
}
|
|
594243
|
+
]
|
|
594244
|
+
}
|
|
594245
|
+
}
|
|
592230
594246
|
}
|
|
592231
594247
|
]
|
|
592232
594248
|
},
|
|
@@ -592292,13 +594308,12 @@
|
|
|
592292
594308
|
},
|
|
592293
594309
|
"target": {
|
|
592294
594310
|
"type": "string",
|
|
592295
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
594311
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
592296
594312
|
"enum": [
|
|
592297
594313
|
"display",
|
|
592298
594314
|
"window",
|
|
592299
594315
|
"viewport"
|
|
592300
|
-
]
|
|
592301
|
-
"default": "display"
|
|
594316
|
+
]
|
|
592302
594317
|
},
|
|
592303
594318
|
"fps": {
|
|
592304
594319
|
"type": "integer",
|
|
@@ -592344,13 +594359,12 @@
|
|
|
592344
594359
|
},
|
|
592345
594360
|
"target": {
|
|
592346
594361
|
"type": "string",
|
|
592347
|
-
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped).",
|
|
594362
|
+
"description": "What the `ffmpeg` engine captures. `display` records the full screen, `window` the active window, `viewport` the browser content area. Ignored by the `browser` engine, which always captures its tab. `window` and `viewport` are best-effort (captured full-screen, then cropped). If unset, defaults to `window` when the recording's `surface` is an app surface and to `display` otherwise. `viewport` doesn't apply to app surfaces (they have no browser viewport).",
|
|
592348
594363
|
"enum": [
|
|
592349
594364
|
"display",
|
|
592350
594365
|
"window",
|
|
592351
594366
|
"viewport"
|
|
592352
|
-
]
|
|
592353
|
-
"default": "display"
|
|
594367
|
+
]
|
|
592354
594368
|
},
|
|
592355
594369
|
"fps": {
|
|
592356
594370
|
"type": "integer",
|
|
@@ -592383,6 +594397,22 @@
|
|
|
592383
594397
|
"target": "window",
|
|
592384
594398
|
"fps": 60
|
|
592385
594399
|
}
|
|
594400
|
+
},
|
|
594401
|
+
{
|
|
594402
|
+
"path": "notepad.mp4",
|
|
594403
|
+
"surface": {
|
|
594404
|
+
"app": "notepad"
|
|
594405
|
+
}
|
|
594406
|
+
},
|
|
594407
|
+
{
|
|
594408
|
+
"path": "full-screen.mp4",
|
|
594409
|
+
"surface": {
|
|
594410
|
+
"app": "notepad"
|
|
594411
|
+
},
|
|
594412
|
+
"engine": {
|
|
594413
|
+
"name": "ffmpeg",
|
|
594414
|
+
"target": "display"
|
|
594415
|
+
}
|
|
592386
594416
|
}
|
|
592387
594417
|
]
|
|
592388
594418
|
}
|