dashcam 0.8.3 → 1.0.1-beta.10
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/.dashcam/cli-config.json +3 -0
- package/.dashcam/recording.log +135 -0
- package/.dashcam/web-config.json +11 -0
- package/.github/RELEASE.md +59 -0
- package/.github/workflows/publish.yml +43 -0
- package/BACKWARD_COMPATIBILITY.md +177 -0
- package/LOG_TRACKING_GUIDE.md +225 -0
- package/README.md +709 -155
- package/bin/dashcam-background.js +177 -0
- package/bin/dashcam.cjs +8 -0
- package/bin/dashcam.js +696 -0
- package/bin/index.js +63 -0
- package/examples/execute-script.js +152 -0
- package/examples/simple-test.js +37 -0
- package/lib/applicationTracker.js +311 -0
- package/lib/auth.js +222 -0
- package/lib/binaries.js +21 -0
- package/lib/config.js +34 -0
- package/lib/extension-logs/helpers.js +182 -0
- package/lib/extension-logs/index.js +347 -0
- package/lib/extension-logs/manager.js +344 -0
- package/lib/ffmpeg.js +155 -0
- package/lib/logTracker.js +23 -0
- package/lib/logger.js +118 -0
- package/lib/logs/index.js +488 -0
- package/lib/permissions.js +85 -0
- package/lib/processManager.js +317 -0
- package/lib/recorder.js +690 -0
- package/lib/store.js +58 -0
- package/lib/tracking/FileTracker.js +105 -0
- package/lib/tracking/FileTrackerManager.js +62 -0
- package/lib/tracking/LogsTracker.js +161 -0
- package/lib/tracking/active-win.js +212 -0
- package/lib/tracking/icons/darwin.js +39 -0
- package/lib/tracking/icons/index.js +167 -0
- package/lib/tracking/icons/windows.js +27 -0
- package/lib/tracking/idle.js +82 -0
- package/lib/tracking.js +23 -0
- package/lib/uploader.js +456 -0
- package/lib/utilities/jsonl.js +77 -0
- package/lib/webLogsDaemon.js +234 -0
- package/lib/websocket/server.js +223 -0
- package/package.json +53 -21
- package/recording.log +814 -0
- package/sea-bundle.mjs +34595 -0
- package/test-page.html +15 -0
- package/test.log +1 -0
- package/test_run.log +48 -0
- package/test_workflow.sh +154 -0
- package/examples/crash-test.js +0 -11
- package/examples/github-issue.sh +0 -1
- package/examples/protocol.html +0 -22
- package/index.js +0 -177
- package/lib.js +0 -199
- package/recorder.js +0 -85
package/recording.log
ADDED
|
@@ -0,0 +1,814 @@
|
|
|
1
|
+
02:23:44.886 [[32minfo[39m] Verbose logging enabled
|
|
2
|
+
Starting recording...
|
|
3
|
+
02:23:44.983 [[32minfo[39m] Started tracking logs for /tmp/test-cli-log.txt
|
|
4
|
+
02:23:44.987 [[34mdebug[39m] IconCache initialized
|
|
5
|
+
{
|
|
6
|
+
"folderPath": "/var/folders/7s/2nhyb0rj2bs_rkswlgqnnhdm0000gn/T/dashcam-cli-icons",
|
|
7
|
+
"cachedIcons": 2
|
|
8
|
+
}
|
|
9
|
+
02:23:44.988 [[32minfo[39m] Starting recording directly
|
|
10
|
+
{
|
|
11
|
+
"options": {
|
|
12
|
+
"fps": 30,
|
|
13
|
+
"includeAudio": false,
|
|
14
|
+
"customOutputPath": null
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
02:23:44.988 [[34mdebug[39m] → Entering generateOutputPath
|
|
18
|
+
{
|
|
19
|
+
"args": {}
|
|
20
|
+
}
|
|
21
|
+
02:23:44.988 [[34mdebug[39m] [VERBOSE] Generating output path
|
|
22
|
+
{
|
|
23
|
+
"directory": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings",
|
|
24
|
+
"filepath": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.webm",
|
|
25
|
+
"directoryExists": true
|
|
26
|
+
}
|
|
27
|
+
02:23:44.989 [[34mdebug[39m] Created recordings directory
|
|
28
|
+
{
|
|
29
|
+
"directory": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings"
|
|
30
|
+
}
|
|
31
|
+
02:23:44.989 [[34mdebug[39m] ← Exiting generateOutputPath
|
|
32
|
+
{
|
|
33
|
+
"result": "undefined"
|
|
34
|
+
}
|
|
35
|
+
02:23:44.989 [[34mdebug[39m] → Entering getPlatformArgs
|
|
36
|
+
{
|
|
37
|
+
"args": {
|
|
38
|
+
"fps": 30,
|
|
39
|
+
"includeAudio": false
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
02:23:44.989 [[34mdebug[39m] → Entering detectPrimaryScreenDevice
|
|
43
|
+
{
|
|
44
|
+
"args": {}
|
|
45
|
+
}
|
|
46
|
+
02:23:45.238 [[34mdebug[39m] AVFoundation device list output:
|
|
47
|
+
{
|
|
48
|
+
"totalLines": 21
|
|
49
|
+
}
|
|
50
|
+
02:23:45.239 [[34mdebug[39m] Found screen capture device:
|
|
51
|
+
{
|
|
52
|
+
"deviceIndex": 2,
|
|
53
|
+
"screenNumber": 0
|
|
54
|
+
}
|
|
55
|
+
02:23:45.239 [[32minfo[39m] Detected primary screen device:
|
|
56
|
+
{
|
|
57
|
+
"deviceIndex": 2,
|
|
58
|
+
"screenNumber": 0,
|
|
59
|
+
"screenInput": "2:none",
|
|
60
|
+
"totalScreenDevices": 1
|
|
61
|
+
}
|
|
62
|
+
02:23:45.239 [[34mdebug[39m] ← Exiting detectPrimaryScreenDevice
|
|
63
|
+
{
|
|
64
|
+
"result": "undefined"
|
|
65
|
+
}
|
|
66
|
+
02:23:45.239 [[34mdebug[39m] [VERBOSE] Using platform configuration
|
|
67
|
+
{
|
|
68
|
+
"platform": "darwin",
|
|
69
|
+
"config": {
|
|
70
|
+
"inputFormat": "avfoundation",
|
|
71
|
+
"screenInput": "2:none",
|
|
72
|
+
"audioInput": "0"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
02:23:45.239 [[34mdebug[39m] FFmpeg capture command:
|
|
76
|
+
{
|
|
77
|
+
"args": "-f avfoundation -video_size 1920x1080 -pixel_format uyvy422 -r 30 -framerate 30 -i 2:none"
|
|
78
|
+
}
|
|
79
|
+
02:23:45.240 [[34mdebug[39m] [VERBOSE] Platform-specific arguments added
|
|
80
|
+
{
|
|
81
|
+
"totalArgs": 12,
|
|
82
|
+
"includeAudio": false,
|
|
83
|
+
"fps": 30,
|
|
84
|
+
"screenInput": "2:none"
|
|
85
|
+
}
|
|
86
|
+
02:23:45.240 [[34mdebug[39m] ← Exiting getPlatformArgs
|
|
87
|
+
{
|
|
88
|
+
"result": "undefined"
|
|
89
|
+
}
|
|
90
|
+
02:23:45.240 [[32minfo[39m] Generated temp file path
|
|
91
|
+
{
|
|
92
|
+
"tempFile": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/temp-1761722625240.webm",
|
|
93
|
+
"tempDir": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings"
|
|
94
|
+
}
|
|
95
|
+
02:23:45.240 [[32minfo[39m] Wrote temp file info to disk
|
|
96
|
+
{
|
|
97
|
+
"path": "/Users/ianjennings/Development/dashcam-cli-minimal/.dashcam/temp-file.json",
|
|
98
|
+
"tempFileInfo": {
|
|
99
|
+
"tempFile": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/temp-1761722625240.webm",
|
|
100
|
+
"outputPath": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.webm",
|
|
101
|
+
"startTime": 1761722625240
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
02:23:45.240 [[32minfo[39m] Starting recording with options:
|
|
105
|
+
{
|
|
106
|
+
"fps": 30,
|
|
107
|
+
"includeAudio": false,
|
|
108
|
+
"platform": "darwin",
|
|
109
|
+
"outputPath": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.webm",
|
|
110
|
+
"tempFile": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/temp-1761722625240.webm"
|
|
111
|
+
}
|
|
112
|
+
02:23:45.240 [[34mdebug[39m] [VERBOSE] FFmpeg command details
|
|
113
|
+
{
|
|
114
|
+
"ffmpegPath": "/Users/ianjennings/Development/dashcam-cli-minimal/node_modules/ffmpeg-static/ffmpeg",
|
|
115
|
+
"totalArgs": 28,
|
|
116
|
+
"outputArgs": "-c:v libvpx -b:v 1M -r 30 -g 30 -f webm -flush_packets 1 -max_muxing_queue_size 1024",
|
|
117
|
+
"platformArgs": "-f avfoundation -video_size 1920x1080 -pixel_format uyvy422 -r 30 -framerate 30 -i 2:none"
|
|
118
|
+
}
|
|
119
|
+
02:23:45.240 [[35msilly[39m] [TRACE] Full FFmpeg command
|
|
120
|
+
{
|
|
121
|
+
"command": "/Users/ianjennings/Development/dashcam-cli-minimal/node_modules/ffmpeg-static/ffmpeg -f avfoundation -video_size 1920x1080 -pixel_format uyvy422 -r 30 -framerate 30 -i 2:none -c:v libvpx -b:v 1M -r 30 -g 30 -f webm -flush_packets 1 -max_muxing_queue_size 1024 -y /Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/temp-1761722625240.webm"
|
|
122
|
+
}
|
|
123
|
+
02:23:45.240 [[34mdebug[39m] Spawning FFmpeg process...
|
|
124
|
+
02:23:45.243 [[32minfo[39m] FFmpeg process spawned
|
|
125
|
+
{
|
|
126
|
+
"pid": 12173,
|
|
127
|
+
"args": [
|
|
128
|
+
"1",
|
|
129
|
+
"-max_muxing_queue_size",
|
|
130
|
+
"1024",
|
|
131
|
+
"-y",
|
|
132
|
+
"/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/temp-1761722625240.webm"
|
|
133
|
+
],
|
|
134
|
+
"tempFile": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/temp-1761722625240.webm"
|
|
135
|
+
}
|
|
136
|
+
02:23:45.243 [[34mdebug[39m] Starting application tracking...
|
|
137
|
+
02:23:45.250 [[34mdebug[39m] → Entering ApplicationTracker.start
|
|
138
|
+
{
|
|
139
|
+
"args": {}
|
|
140
|
+
}
|
|
141
|
+
02:23:45.250 [[34mdebug[39m] Starting enhanced application tracking
|
|
142
|
+
{
|
|
143
|
+
"trackingDir": "/var/folders/7s/2nhyb0rj2bs_rkswlgqnnhdm0000gn/T/dashcam-cli-tracking",
|
|
144
|
+
"logFile": "/var/folders/7s/2nhyb0rj2bs_rkswlgqnnhdm0000gn/T/dashcam-cli-tracking/active-win.jsonl"
|
|
145
|
+
}
|
|
146
|
+
02:23:45.250 [[34mdebug[39m] ← Exiting ApplicationTracker.start
|
|
147
|
+
{
|
|
148
|
+
"result": "undefined"
|
|
149
|
+
}
|
|
150
|
+
02:23:45.250 [[34mdebug[39m] Starting log tracking...
|
|
151
|
+
{
|
|
152
|
+
"recorderId": "recording-2025-10-29T07-23-44-988Z"
|
|
153
|
+
}
|
|
154
|
+
02:23:45.250 [[34mdebug[39m] LogsTrackerManager: Starting new logs tracker instance
|
|
155
|
+
{
|
|
156
|
+
"recorderId": "recording-2025-10-29T07-23-44-988Z",
|
|
157
|
+
"screenId": "1",
|
|
158
|
+
"directory": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings"
|
|
159
|
+
}
|
|
160
|
+
02:23:45.250 [[34mdebug[39m] LogsTrackerManager: Ensuring web daemon is running...
|
|
161
|
+
02:23:45.250 [[34mdebug[39m] Checking if daemon process is still running...
|
|
162
|
+
{
|
|
163
|
+
"pid": 6719
|
|
164
|
+
}
|
|
165
|
+
02:23:45.251 [[34mdebug[39m] Daemon process not running or not accessible
|
|
166
|
+
{
|
|
167
|
+
"error": "kill ESRCH"
|
|
168
|
+
}
|
|
169
|
+
02:23:45.251 [[32minfo[39m] Web logs daemon not running, starting it...
|
|
170
|
+
02:23:45.251 [[34mdebug[39m] Spawned daemon process
|
|
171
|
+
{
|
|
172
|
+
"pid": 12176
|
|
173
|
+
}
|
|
174
|
+
02:23:45.251 [[34mdebug[39m] Waiting for daemon to start...
|
|
175
|
+
02:23:46.364 [[35msilly[39m] Icon already cached
|
|
176
|
+
{
|
|
177
|
+
"name": "code"
|
|
178
|
+
}
|
|
179
|
+
02:23:46.365 [[35msilly[39m] Tracked active window with icon extraction
|
|
180
|
+
{
|
|
181
|
+
"app": "code",
|
|
182
|
+
"title": "server.js — dashcam-cli-minimal (Workspace)",
|
|
183
|
+
"hasId": true
|
|
184
|
+
}
|
|
185
|
+
02:23:46.365 [[34mdebug[39m] Checking if daemon process is still running...
|
|
186
|
+
{
|
|
187
|
+
"pid": 12176
|
|
188
|
+
}
|
|
189
|
+
02:23:46.365 [[34mdebug[39m] Daemon process is running
|
|
190
|
+
{
|
|
191
|
+
"pid": 12176
|
|
192
|
+
}
|
|
193
|
+
02:23:46.365 [[32minfo[39m] Web logs daemon started successfully
|
|
194
|
+
02:23:46.365 [[32minfo[39m] Started tracking logs for /tmp/test-cli-log.txt
|
|
195
|
+
02:23:46.365 [[32minfo[39m] Started new logs tracker instance
|
|
196
|
+
{
|
|
197
|
+
"recorderId": "recording-2025-10-29T07-23-44-988Z",
|
|
198
|
+
"screenId": "1",
|
|
199
|
+
"directory": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings"
|
|
200
|
+
}
|
|
201
|
+
02:23:46.365 [[32minfo[39m] Recording process started successfully
|
|
202
|
+
{
|
|
203
|
+
"pid": 12173,
|
|
204
|
+
"startTime": 1761722625243
|
|
205
|
+
}
|
|
206
|
+
02:23:46.366 [[32minfo[39m] Recording started successfully
|
|
207
|
+
{
|
|
208
|
+
"outputPath": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.webm",
|
|
209
|
+
"startTime": 1761722625243
|
|
210
|
+
}
|
|
211
|
+
Recording started successfully (PID: 12170)
|
|
212
|
+
Output: /Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.webm
|
|
213
|
+
Use "dashcam status" to check progress
|
|
214
|
+
Use "dashcam stop" to stop recording and upload
|
|
215
|
+
Recording is running in background...
|
|
216
|
+
02:23:46.366 [[32minfo[39m] FFmpeg output: 2025-10-29 02:23:46.249 ffmpeg[12173:76141] WARNING: AVCaptureDeviceTypeExternal is deprecated for Continuity Cameras. Please use AVCaptureDeviceTypeContinuityCamera and add NSCameraUseContinuityCameraDeviceType to your Info.plist.
|
|
217
|
+
objc[12173]: class `NSKVONotifying_AVCaptureScreenInput' not linked into application
|
|
218
|
+
objc[12173]: class `NSKVONotifying_AVCaptureScreenInput' not linked into application
|
|
219
|
+
objc[12173]: class `NSKVONotifying_AVCaptureScreenInput' not linked into application
|
|
220
|
+
[AVFoundation indev @ 0x14a0048d0] Configuration of video device failed, falling back to default.
|
|
221
|
+
02:23:46.366 [[31merror[39m] PERMISSION ISSUE DETECTED: Screen recording failed. This happens because the Node.js subprocess doesn't inherit VS Code's screen recording permissions.
|
|
222
|
+
02:23:46.366 [[31merror[39m] SOLUTION: Add Node.js to screen recording permissions:
|
|
223
|
+
02:23:46.366 [[31merror[39m] 1. Open System Preferences > Security & Privacy > Privacy > Screen Recording
|
|
224
|
+
02:23:46.366 [[31merror[39m] 2. Click the lock to unlock
|
|
225
|
+
02:23:46.366 [[31merror[39m] 3. Click the + button and add: /usr/local/bin/node (or your Node.js installation path)
|
|
226
|
+
02:23:46.366 [[31merror[39m] 4. Alternatively, find node with: which node
|
|
227
|
+
02:23:46.367 [[31merror[39m] 5. Restart the terminal after adding permissions
|
|
228
|
+
02:23:46.367 [[34mdebug[39m] FFmpeg: 2025-10-29 02:23:46.249 ffmpeg[12173:76141] WARNING: AVCaptureDeviceTypeExternal is deprecated for Continuity Cameras. Please use AVCaptureDeviceTypeContinuityCamera and add NSCameraUseContinuityCameraDeviceType to your Info.plist.
|
|
229
|
+
objc[12173]: class `NSKVONotifying_AVCaptureScreenInput' not linked into application
|
|
230
|
+
objc[12173]: class `NSKVONotifying_AVCaptureScreenInput' not linked into application
|
|
231
|
+
objc[12173]: class `NSKVONotifying_AVCaptureScreenInput' not linked into application
|
|
232
|
+
[AVFoundation indev @ 0x14a0048d0] Configuration of video device failed, falling back to default.
|
|
233
|
+
02:23:46.602 [[32minfo[39m] FFmpeg output: [avfoundation @ 0x14a004600] Stream #0: not enough frames to estimate rate; consider increasing probesize
|
|
234
|
+
02:23:46.602 [[34mdebug[39m] FFmpeg: [avfoundation @ 0x14a004600] Stream #0: not enough frames to estimate rate; consider increasing probesize
|
|
235
|
+
02:23:46.603 [[32minfo[39m] FFmpeg output: Input #0, avfoundation, from '2:none':
|
|
236
|
+
Duration: N/A, start: 2406.551500, bitrate: N/A
|
|
237
|
+
Stream #0:0: Video: rawvideo (UYVY / 0x59565955), uyvy422, 3456x2234, 1000k tbr, 1000k tbn
|
|
238
|
+
02:23:46.603 [[34mdebug[39m] FFmpeg: Input #0, avfoundation, from '2:none':
|
|
239
|
+
Duration: N/A, start: 2406.551500, bitrate: N/A
|
|
240
|
+
Stream #0:0: Video: rawvideo (UYVY / 0x59565955), uyvy422, 3456x2234, 1000k tbr, 1000k tbn
|
|
241
|
+
02:23:46.604 [[32minfo[39m] FFmpeg output: Stream mapping:
|
|
242
|
+
Stream #0:0 -> #0:0
|
|
243
|
+
02:23:46.604 [[34mdebug[39m] FFmpeg: Stream mapping:
|
|
244
|
+
Stream #0:0 -> #0:0
|
|
245
|
+
02:23:46.605 [[32minfo[39m] FFmpeg output: (rawvideo (native) -> vp8 (libvpx))
|
|
246
|
+
Press [q] to stop, [?] for help
|
|
247
|
+
02:23:46.605 [[34mdebug[39m] FFmpeg: (rawvideo (native) -> vp8 (libvpx))
|
|
248
|
+
Press [q] to stop, [?] for help
|
|
249
|
+
02:23:46.616 [[32minfo[39m] FFmpeg output: [libvpx @ 0x14a2673b0] v1.12.0-251-g7a8052ccd
|
|
250
|
+
02:23:46.616 [[34mdebug[39m] FFmpeg: [libvpx @ 0x14a2673b0] v1.12.0-251-g7a8052ccd
|
|
251
|
+
02:23:46.674 [[32minfo[39m] FFmpeg output: Output #0, webm, to '/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/temp-1761722625240.webm':
|
|
252
|
+
Metadata:
|
|
253
|
+
encoder : Lavf60.3.100
|
|
254
|
+
02:23:46.674 [[34mdebug[39m] FFmpeg: Output #0, webm, to '/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/temp-1761722625240.webm':
|
|
255
|
+
Metadata:
|
|
256
|
+
encoder : Lavf60.3.100
|
|
257
|
+
02:23:46.674 [[32minfo[39m] FFmpeg output: Stream #0:0: Video: vp8, yuv420p(tv, progressive), 3456x2234, q=2-31, 1000 kb/s, 30 fps, 1k tbn
|
|
258
|
+
Metadata:
|
|
259
|
+
encoder : Lavc60.3.100 libvpx
|
|
260
|
+
Side data:
|
|
261
|
+
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
|
|
262
|
+
02:23:46.675 [[34mdebug[39m] FFmpeg: Stream #0:0: Video: vp8, yuv420p(tv, progressive), 3456x2234, q=2-31, 1000 kb/s, 30 fps, 1k tbn
|
|
263
|
+
Metadata:
|
|
264
|
+
encoder : Lavc60.3.100 libvpx
|
|
265
|
+
Side data:
|
|
266
|
+
cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
|
|
267
|
+
02:23:47.160 [[32minfo[39m] FFmpeg output: frame= 0 fps=0.0 q=42.0 size= 0kB time=00:00:00.00 bitrate=N/A speed=N/A
|
|
268
|
+
02:23:47.160 [[34mdebug[39m] [VERBOSE] FFmpeg progress: frame= 0 fps=0.0 q=42.0 size= 0kB time=00:00:00.00 bitrate=N/A speed=N/A
|
|
269
|
+
02:23:47.222 [[32minfo[39m] FFmpeg output: frame= 1 fps=0.0 q=63.0 size= 0kB time=00:00:00.03 bitrate= 113.7kbits/s speed=0.0594x
|
|
270
|
+
02:23:47.222 [[34mdebug[39m] [VERBOSE] FFmpeg progress: frame= 1 fps=0.0 q=63.0 size= 0kB time=00:00:00.03 bitrate= 113.7kbits/s speed=0.0594x
|
|
271
|
+
02:23:47.450 [[35msilly[39m] Icon already cached
|
|
272
|
+
{
|
|
273
|
+
"name": "code"
|
|
274
|
+
}
|
|
275
|
+
02:23:47.451 [[35msilly[39m] Tracked active window with icon extraction
|
|
276
|
+
{
|
|
277
|
+
"app": "code",
|
|
278
|
+
"title": "server.js — dashcam-cli-minimal (Workspace)",
|
|
279
|
+
"hasId": true
|
|
280
|
+
}
|
|
281
|
+
02:23:47.757 [[32minfo[39m] FFmpeg output: frame= 8 fps=7.3 q=63.0 size= 0kB time=00:00:00.26 bitrate= 14.1kbits/s speed=0.242x
|
|
282
|
+
02:23:47.757 [[34mdebug[39m] [VERBOSE] FFmpeg progress: frame= 8 fps=7.3 q=63.0 size= 0kB time=00:00:00.26 bitrate= 14.1kbits/s speed=0.242x
|
|
283
|
+
|
|
284
|
+
Received SIGTERM, stopping background recording...
|
|
285
|
+
02:23:47.913 [[34mdebug[39m] → Entering stopRecording
|
|
286
|
+
{
|
|
287
|
+
"args": {}
|
|
288
|
+
}
|
|
289
|
+
02:23:47.913 [[32minfo[39m] Stopping recording
|
|
290
|
+
{
|
|
291
|
+
"pid": 12173,
|
|
292
|
+
"duration": 2670,
|
|
293
|
+
"durationSeconds": "2.7"
|
|
294
|
+
}
|
|
295
|
+
02:23:47.913 [[34mdebug[39m] Sending quit signal to FFmpeg...
|
|
296
|
+
02:23:48.100 [[32minfo[39m] FFmpeg output: frame= 12 fps=8.0 q=63.0 Lsize= 249kB time=00:00:00.36 bitrate=5547.3kbits/s speed=0.245x
|
|
297
|
+
video:248kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.230803%
|
|
298
|
+
02:23:48.100 [[34mdebug[39m] [VERBOSE] FFmpeg progress: frame= 12 fps=8.0 q=63.0 Lsize= 249kB time=00:00:00.36 bitrate=5547.3kbits/s speed=0.245x
|
|
299
|
+
video:248kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.230803%
|
|
300
|
+
02:23:48.113 [[32minfo[39m] FFmpeg output: Exiting normally, received signal 15.
|
|
301
|
+
02:23:48.113 [[34mdebug[39m] FFmpeg: Exiting normally, received signal 15.
|
|
302
|
+
02:23:48.244 [[32minfo[39m] Temp file created successfully
|
|
303
|
+
{
|
|
304
|
+
"path": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/temp-1761722625240.webm",
|
|
305
|
+
"size": 254482
|
|
306
|
+
}
|
|
307
|
+
02:23:48.376 [[35msilly[39m] Icon already cached
|
|
308
|
+
{
|
|
309
|
+
"name": "code"
|
|
310
|
+
}
|
|
311
|
+
02:23:48.376 [[35msilly[39m] Tracked active window with icon extraction
|
|
312
|
+
{
|
|
313
|
+
"app": "code",
|
|
314
|
+
"title": "server.js — dashcam-cli-minimal (Workspace)",
|
|
315
|
+
"hasId": true
|
|
316
|
+
}
|
|
317
|
+
02:23:49.363 [[35msilly[39m] Icon already cached
|
|
318
|
+
{
|
|
319
|
+
"name": "code"
|
|
320
|
+
}
|
|
321
|
+
02:23:49.363 [[35msilly[39m] Tracked active window with icon extraction
|
|
322
|
+
{
|
|
323
|
+
"app": "code",
|
|
324
|
+
"title": "server.js — dashcam-cli-minimal (Workspace)",
|
|
325
|
+
"hasId": true
|
|
326
|
+
}
|
|
327
|
+
02:23:50.392 [[35msilly[39m] Icon already cached
|
|
328
|
+
{
|
|
329
|
+
"name": "code"
|
|
330
|
+
}
|
|
331
|
+
02:23:50.392 [[35msilly[39m] Tracked active window with icon extraction
|
|
332
|
+
{
|
|
333
|
+
"app": "code",
|
|
334
|
+
"title": "server.js — dashcam-cli-minimal (Workspace)",
|
|
335
|
+
"hasId": true
|
|
336
|
+
}
|
|
337
|
+
02:23:51.124 [[32minfo[39m] Looking for temp file
|
|
338
|
+
{
|
|
339
|
+
"inMemory": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/temp-1761722625240.webm",
|
|
340
|
+
"infoFileExists": true,
|
|
341
|
+
"infoPath": "/Users/ianjennings/Development/dashcam-cli-minimal/.dashcam/temp-file.json"
|
|
342
|
+
}
|
|
343
|
+
DEBUG: Looking for temp file {
|
|
344
|
+
inMemory: '/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/temp-1761722625240.webm',
|
|
345
|
+
infoFileExists: true,
|
|
346
|
+
infoPath: '/Users/ianjennings/Development/dashcam-cli-minimal/.dashcam/temp-file.json'
|
|
347
|
+
}
|
|
348
|
+
02:23:51.128 [[32minfo[39m] Debug: temp file check
|
|
349
|
+
{
|
|
350
|
+
"tempFile": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/temp-1761722625240.webm",
|
|
351
|
+
"exists": true,
|
|
352
|
+
"size": 254482
|
|
353
|
+
}
|
|
354
|
+
02:23:51.128 [[34mdebug[39m] Temp file stats:
|
|
355
|
+
{
|
|
356
|
+
"size": 254482,
|
|
357
|
+
"path": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/temp-1761722625240.webm"
|
|
358
|
+
}
|
|
359
|
+
02:23:51.128 [[34mdebug[39m] Copying temp file to final output...
|
|
360
|
+
02:23:51.130 [[32minfo[39m] Successfully copied temp file to final output
|
|
361
|
+
02:23:51.130 [[34mdebug[39m] Stopping application tracking...
|
|
362
|
+
02:23:51.131 [[34mdebug[39m] → Entering ApplicationTracker.stop
|
|
363
|
+
{
|
|
364
|
+
"args": {}
|
|
365
|
+
}
|
|
366
|
+
02:23:51.131 [[34mdebug[39m] Stopping enhanced application tracking
|
|
367
|
+
02:23:51.132 [[32minfo[39m] Enhanced application tracking stopped
|
|
368
|
+
{
|
|
369
|
+
"uniqueApps": 1,
|
|
370
|
+
"totalEvents": 5,
|
|
371
|
+
"iconsExtracted": 1
|
|
372
|
+
}
|
|
373
|
+
02:23:51.133 [[34mdebug[39m] ← Exiting ApplicationTracker.stop
|
|
374
|
+
{
|
|
375
|
+
"result": "undefined"
|
|
376
|
+
}
|
|
377
|
+
02:23:51.133 [[34mdebug[39m] Stopping log tracking...
|
|
378
|
+
{
|
|
379
|
+
"recorderId": "recording-2025-10-29T07-23-44-988Z"
|
|
380
|
+
}
|
|
381
|
+
02:23:51.133 [[32minfo[39m] Stopped tracking logs for /tmp/test-cli-log.txt
|
|
382
|
+
02:23:51.133 [[32minfo[39m] Destroyed log tracker
|
|
383
|
+
02:23:51.134 [[32minfo[39m] Stopped logs tracker instance
|
|
384
|
+
{
|
|
385
|
+
"recorderId": "recording-2025-10-29T07-23-44-988Z",
|
|
386
|
+
"screenId": "1"
|
|
387
|
+
}
|
|
388
|
+
02:23:51.134 [[34mdebug[39m] Tracking results collected
|
|
389
|
+
{
|
|
390
|
+
"appResults": {
|
|
391
|
+
"apps": 1,
|
|
392
|
+
"icons": 1,
|
|
393
|
+
"events": 5
|
|
394
|
+
},
|
|
395
|
+
"logResults": {
|
|
396
|
+
"trackers": 1,
|
|
397
|
+
"totalEvents": 0
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
02:23:51.134 [[34mdebug[39m] Creating GIF
|
|
401
|
+
{
|
|
402
|
+
"inputVideoPath": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.webm",
|
|
403
|
+
"outputGifPath": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.gif"
|
|
404
|
+
}
|
|
405
|
+
02:23:51.144 [[34mdebug[39m] Creating snapshot
|
|
406
|
+
{
|
|
407
|
+
"inputVideoPath": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.webm",
|
|
408
|
+
"outputSnapshotPath": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.png",
|
|
409
|
+
"snapshotTimeSeconds": 0
|
|
410
|
+
}
|
|
411
|
+
02:24:00.151 [[34mdebug[39m] → Entering ApplicationTracker.stop
|
|
412
|
+
{
|
|
413
|
+
"args": {}
|
|
414
|
+
}
|
|
415
|
+
02:24:00.153 [[34mdebug[39m] Application tracking not started
|
|
416
|
+
02:24:00.153 [[34mdebug[39m] ← Exiting ApplicationTracker.stop
|
|
417
|
+
{
|
|
418
|
+
"result": "undefined"
|
|
419
|
+
}
|
|
420
|
+
Recording stopped: /Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.webm
|
|
421
|
+
Starting upload...
|
|
422
|
+
02:24:00.154 [[34mdebug[39m] → Entering upload
|
|
423
|
+
{
|
|
424
|
+
"args": {
|
|
425
|
+
"filePath": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.webm",
|
|
426
|
+
"metadata": {
|
|
427
|
+
"title": "Dashcam Recording",
|
|
428
|
+
"description": "Recorded with Dashcam CLI",
|
|
429
|
+
"duration": 14908,
|
|
430
|
+
"clientStartDate": 1761722625243,
|
|
431
|
+
"apps": [
|
|
432
|
+
"code"
|
|
433
|
+
],
|
|
434
|
+
"logs": [
|
|
435
|
+
{
|
|
436
|
+
"id": "CLI",
|
|
437
|
+
"name": "CLI",
|
|
438
|
+
"type": "cli",
|
|
439
|
+
"fileLocation": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/dashcam_logs_cli.jsonl",
|
|
440
|
+
"items": [
|
|
441
|
+
{
|
|
442
|
+
"item": 1,
|
|
443
|
+
"count": 0
|
|
444
|
+
}
|
|
445
|
+
],
|
|
446
|
+
"count": 0
|
|
447
|
+
}
|
|
448
|
+
],
|
|
449
|
+
"gifPath": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.gif",
|
|
450
|
+
"snapshotPath": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.png"
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
02:24:00.182 [[32minfo[39m] Starting upload process
|
|
455
|
+
{
|
|
456
|
+
"filePath": "recording-2025-10-29T07-23-44-988Z.webm",
|
|
457
|
+
"fileType": "video",
|
|
458
|
+
"extension": "webm",
|
|
459
|
+
"title": "Dashcam Recording",
|
|
460
|
+
"hasProject": false
|
|
461
|
+
}
|
|
462
|
+
02:24:00.182 [[34mdebug[39m] No project ID provided, fetching user projects...
|
|
463
|
+
02:24:00.182 [[34mdebug[39m] → Entering auth.getProjects
|
|
464
|
+
{
|
|
465
|
+
"args": {}
|
|
466
|
+
}
|
|
467
|
+
02:24:00.182 [[34mdebug[39m] Fetching user projects...
|
|
468
|
+
02:24:00.524 [[34mdebug[39m] [VERBOSE] Projects fetched successfully
|
|
469
|
+
{
|
|
470
|
+
"projectCount": 8
|
|
471
|
+
}
|
|
472
|
+
02:24:00.525 [[34mdebug[39m] ← Exiting auth.getProjects
|
|
473
|
+
{
|
|
474
|
+
"result": "undefined"
|
|
475
|
+
}
|
|
476
|
+
02:24:00.525 [[32minfo[39m] Automatically selected first project
|
|
477
|
+
{
|
|
478
|
+
"projectId": "6387dc1e7c5392006384b0a8",
|
|
479
|
+
"projectName": "Demo Project"
|
|
480
|
+
}
|
|
481
|
+
02:24:00.525 [[34mdebug[39m] [VERBOSE] Creating replay with config
|
|
482
|
+
{
|
|
483
|
+
"duration": 14908,
|
|
484
|
+
"apps": [
|
|
485
|
+
"code"
|
|
486
|
+
],
|
|
487
|
+
"title": "Dashcam Recording",
|
|
488
|
+
"system": {
|
|
489
|
+
"platform": "darwin",
|
|
490
|
+
"arch": "arm64",
|
|
491
|
+
"nodeVersion": "v22.3.0"
|
|
492
|
+
},
|
|
493
|
+
"clientStartDate": 1761722625243,
|
|
494
|
+
"project": "6387dc1e7c5392006384b0a8",
|
|
495
|
+
"description": "Recorded with Dashcam CLI"
|
|
496
|
+
}
|
|
497
|
+
02:24:00.526 [[32minfo[39m] Creating replay
|
|
498
|
+
{
|
|
499
|
+
"duration": 14908,
|
|
500
|
+
"apps": [
|
|
501
|
+
"code"
|
|
502
|
+
],
|
|
503
|
+
"title": "Dashcam Recording",
|
|
504
|
+
"system": {
|
|
505
|
+
"platform": "darwin",
|
|
506
|
+
"arch": "arm64",
|
|
507
|
+
"nodeVersion": "v22.3.0"
|
|
508
|
+
},
|
|
509
|
+
"clientStartDate": 1761722625243,
|
|
510
|
+
"project": "6387dc1e7c5392006384b0a8",
|
|
511
|
+
"description": "Recorded with Dashcam CLI"
|
|
512
|
+
}
|
|
513
|
+
02:24:00.620 [[32minfo[39m] Replay created successfully
|
|
514
|
+
{
|
|
515
|
+
"replayId": "6901c11000f26659ed1a91da",
|
|
516
|
+
"shareKey": "QZ4PH5VQI4wpl1xGACI2A",
|
|
517
|
+
"shareLink": "https://app.dashcam.io/replay/6901c11000f26659ed1a91da?share=QZ4PH5VQI4wpl1xGACI2A"
|
|
518
|
+
}
|
|
519
|
+
02:24:00.621 [[34mdebug[39m] [VERBOSE] Getting STS credentials for replay
|
|
520
|
+
{
|
|
521
|
+
"replayId": "6901c11000f26659ed1a91da"
|
|
522
|
+
}
|
|
523
|
+
02:24:00.621 [[34mdebug[39m] → Entering auth.getStsCredentials
|
|
524
|
+
{
|
|
525
|
+
"args": {}
|
|
526
|
+
}
|
|
527
|
+
02:24:00.621 [[34mdebug[39m] Fetching STS credentials for upload...
|
|
528
|
+
02:24:00.621 [[34mdebug[39m] [VERBOSE] Making STS request
|
|
529
|
+
{
|
|
530
|
+
"tokenPrefix": "eyJhbGciOi...",
|
|
531
|
+
"replayData": {
|
|
532
|
+
"id": "6901c11000f26659ed1a91da",
|
|
533
|
+
"duration": 14908,
|
|
534
|
+
"title": "Dashcam Recording",
|
|
535
|
+
"hasApps": true,
|
|
536
|
+
"hasIcons": true,
|
|
537
|
+
"hasProject": true
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
02:24:00.878 [[34mdebug[39m] [VERBOSE] STS response received
|
|
541
|
+
{
|
|
542
|
+
"hasVideo": true,
|
|
543
|
+
"hasGif": true,
|
|
544
|
+
"hasImage": true,
|
|
545
|
+
"hasIcons": true
|
|
546
|
+
}
|
|
547
|
+
02:24:00.878 [[34mdebug[39m] ← Exiting auth.getStsCredentials
|
|
548
|
+
{
|
|
549
|
+
"result": "undefined"
|
|
550
|
+
}
|
|
551
|
+
02:24:00.878 [[34mdebug[39m] [VERBOSE] STS credentials received
|
|
552
|
+
{
|
|
553
|
+
"hasVideo": true,
|
|
554
|
+
"hasImage": true,
|
|
555
|
+
"hasGif": true
|
|
556
|
+
}
|
|
557
|
+
02:24:00.879 [[34mdebug[39m] → Entering uploadFile
|
|
558
|
+
{
|
|
559
|
+
"args": {
|
|
560
|
+
"fileType": "video",
|
|
561
|
+
"extension": "mp4",
|
|
562
|
+
"file": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.webm"
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
02:24:00.879 [[32minfo[39m] Starting upload of video
|
|
566
|
+
{
|
|
567
|
+
"file": "recording-2025-10-29T07-23-44-988Z.webm",
|
|
568
|
+
"fileType": "video",
|
|
569
|
+
"extension": "mp4",
|
|
570
|
+
"clipId": "1761722640621"
|
|
571
|
+
}
|
|
572
|
+
02:24:00.879 [[34mdebug[39m] → Entering createS3Client
|
|
573
|
+
{
|
|
574
|
+
"args": {}
|
|
575
|
+
}
|
|
576
|
+
02:24:00.879 [[34mdebug[39m] [VERBOSE] Creating S3 client
|
|
577
|
+
{
|
|
578
|
+
"fallbackRegion": "us-east-2",
|
|
579
|
+
"bucket": "replayable-prod",
|
|
580
|
+
"hasAccessKey": true,
|
|
581
|
+
"hasSecretKey": true,
|
|
582
|
+
"hasSessionToken": true
|
|
583
|
+
}
|
|
584
|
+
02:24:00.882 [[34mdebug[39m] S3 client created
|
|
585
|
+
{
|
|
586
|
+
"configuredRegion": "us-east-2",
|
|
587
|
+
"bucket": "replayable-prod"
|
|
588
|
+
}
|
|
589
|
+
02:24:00.882 [[34mdebug[39m] ← Exiting createS3Client
|
|
590
|
+
{
|
|
591
|
+
"result": "undefined"
|
|
592
|
+
}
|
|
593
|
+
02:24:00.882 [[34mdebug[39m] Generating upload params:
|
|
594
|
+
{
|
|
595
|
+
"bucket": "replayable-prod",
|
|
596
|
+
"key": "uploads/6387dc1e7c5392006384b0a8/6901c11000f26659ed1a91da/6901c11000f26659ed1a91da.mp4",
|
|
597
|
+
"contentType": "video/mp4"
|
|
598
|
+
}
|
|
599
|
+
02:24:00.882 [[34mdebug[39m] [VERBOSE] File upload details
|
|
600
|
+
{
|
|
601
|
+
"fileSizeBytes": 254482,
|
|
602
|
+
"fileSizeMB": "0.24",
|
|
603
|
+
"bucket": "replayable-prod",
|
|
604
|
+
"key": "uploads/6387dc1e7c5392006384b0a8/6901c11000f26659ed1a91da/6901c11000f26659ed1a91da.mp4",
|
|
605
|
+
"contentType": "video/mp4"
|
|
606
|
+
}
|
|
607
|
+
02:24:00.883 [[34mdebug[39m] Adding GIF upload to queue
|
|
608
|
+
{
|
|
609
|
+
"gifPath": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.gif"
|
|
610
|
+
}
|
|
611
|
+
02:24:00.883 [[34mdebug[39m] → Entering uploadFile
|
|
612
|
+
{
|
|
613
|
+
"args": {
|
|
614
|
+
"fileType": "image",
|
|
615
|
+
"extension": "gif",
|
|
616
|
+
"file": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.gif"
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
02:24:00.883 [[32minfo[39m] Starting upload of image
|
|
620
|
+
{
|
|
621
|
+
"file": "recording-2025-10-29T07-23-44-988Z.gif",
|
|
622
|
+
"fileType": "image",
|
|
623
|
+
"extension": "gif",
|
|
624
|
+
"clipId": "1761722640621"
|
|
625
|
+
}
|
|
626
|
+
02:24:00.883 [[34mdebug[39m] → Entering createS3Client
|
|
627
|
+
{
|
|
628
|
+
"args": {}
|
|
629
|
+
}
|
|
630
|
+
02:24:00.883 [[34mdebug[39m] [VERBOSE] Creating S3 client
|
|
631
|
+
{
|
|
632
|
+
"fallbackRegion": "us-east-2",
|
|
633
|
+
"bucket": "replayable-prod",
|
|
634
|
+
"hasAccessKey": true,
|
|
635
|
+
"hasSecretKey": true,
|
|
636
|
+
"hasSessionToken": true
|
|
637
|
+
}
|
|
638
|
+
02:24:00.889 [[34mdebug[39m] S3 client created
|
|
639
|
+
{
|
|
640
|
+
"configuredRegion": "us-east-2",
|
|
641
|
+
"bucket": "replayable-prod"
|
|
642
|
+
}
|
|
643
|
+
02:24:00.890 [[34mdebug[39m] ← Exiting createS3Client
|
|
644
|
+
{
|
|
645
|
+
"result": "undefined"
|
|
646
|
+
}
|
|
647
|
+
02:24:00.890 [[34mdebug[39m] Generating upload params:
|
|
648
|
+
{
|
|
649
|
+
"bucket": "replayable-prod",
|
|
650
|
+
"key": "uploads/6387dc1e7c5392006384b0a8/6901c11000f26659ed1a91da/6901c11000f26659ed1a91da.gif",
|
|
651
|
+
"contentType": "image/gif"
|
|
652
|
+
}
|
|
653
|
+
02:24:00.890 [[34mdebug[39m] [VERBOSE] File upload details
|
|
654
|
+
{
|
|
655
|
+
"fileSizeBytes": 119939262,
|
|
656
|
+
"fileSizeMB": "114.38",
|
|
657
|
+
"bucket": "replayable-prod",
|
|
658
|
+
"key": "uploads/6387dc1e7c5392006384b0a8/6901c11000f26659ed1a91da/6901c11000f26659ed1a91da.gif",
|
|
659
|
+
"contentType": "image/gif"
|
|
660
|
+
}
|
|
661
|
+
02:24:00.890 [[34mdebug[39m] Adding snapshot upload to queue
|
|
662
|
+
{
|
|
663
|
+
"snapshotPath": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.png"
|
|
664
|
+
}
|
|
665
|
+
02:24:00.890 [[34mdebug[39m] → Entering uploadFile
|
|
666
|
+
{
|
|
667
|
+
"args": {
|
|
668
|
+
"fileType": "image",
|
|
669
|
+
"extension": "png",
|
|
670
|
+
"file": "/Users/ianjennings/Development/dashcam-cli-minimal/tmp/recordings/recording-2025-10-29T07-23-44-988Z.png"
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
02:24:00.890 [[32minfo[39m] Starting upload of image
|
|
674
|
+
{
|
|
675
|
+
"file": "recording-2025-10-29T07-23-44-988Z.png",
|
|
676
|
+
"fileType": "image",
|
|
677
|
+
"extension": "png",
|
|
678
|
+
"clipId": "1761722640621"
|
|
679
|
+
}
|
|
680
|
+
02:24:00.890 [[34mdebug[39m] → Entering createS3Client
|
|
681
|
+
{
|
|
682
|
+
"args": {}
|
|
683
|
+
}
|
|
684
|
+
02:24:00.890 [[34mdebug[39m] [VERBOSE] Creating S3 client
|
|
685
|
+
{
|
|
686
|
+
"fallbackRegion": "us-east-2",
|
|
687
|
+
"bucket": "replayable-prod",
|
|
688
|
+
"hasAccessKey": true,
|
|
689
|
+
"hasSecretKey": true,
|
|
690
|
+
"hasSessionToken": true
|
|
691
|
+
}
|
|
692
|
+
02:24:00.890 [[34mdebug[39m] S3 client created
|
|
693
|
+
{
|
|
694
|
+
"configuredRegion": "us-east-2",
|
|
695
|
+
"bucket": "replayable-prod"
|
|
696
|
+
}
|
|
697
|
+
02:24:00.890 [[34mdebug[39m] ← Exiting createS3Client
|
|
698
|
+
{
|
|
699
|
+
"result": "undefined"
|
|
700
|
+
}
|
|
701
|
+
02:24:00.890 [[34mdebug[39m] Generating upload params:
|
|
702
|
+
{
|
|
703
|
+
"bucket": "replayable-prod",
|
|
704
|
+
"key": "uploads/6387dc1e7c5392006384b0a8/6901c11000f26659ed1a91da/6901c11000f26659ed1a91da.png",
|
|
705
|
+
"contentType": "image/png"
|
|
706
|
+
}
|
|
707
|
+
02:24:00.890 [[34mdebug[39m] [VERBOSE] File upload details
|
|
708
|
+
{
|
|
709
|
+
"fileSizeBytes": 196908,
|
|
710
|
+
"fileSizeMB": "0.19",
|
|
711
|
+
"bucket": "replayable-prod",
|
|
712
|
+
"key": "uploads/6387dc1e7c5392006384b0a8/6901c11000f26659ed1a91da/6901c11000f26659ed1a91da.png",
|
|
713
|
+
"contentType": "image/png"
|
|
714
|
+
}
|
|
715
|
+
02:24:00.890 [[32minfo[39m] Starting asset uploads
|
|
716
|
+
{
|
|
717
|
+
"totalUploads": 3
|
|
718
|
+
}
|
|
719
|
+
02:24:00.890 [[34mdebug[39m] Processing logs for upload
|
|
720
|
+
{
|
|
721
|
+
"logCount": 1
|
|
722
|
+
}
|
|
723
|
+
02:24:00.890 [[34mdebug[39m] Trimming logs
|
|
724
|
+
{
|
|
725
|
+
"startTime": 1761722625243,
|
|
726
|
+
"endTime": 1761722640151,
|
|
727
|
+
"duration": 14908
|
|
728
|
+
}
|
|
729
|
+
02:24:00.899 [[32minfo[39m] Trimming logs
|
|
730
|
+
{
|
|
731
|
+
"count": 1
|
|
732
|
+
}
|
|
733
|
+
02:24:00.899 [[34mdebug[39m] Logs trimmed
|
|
734
|
+
{
|
|
735
|
+
"trimmedCount": 0,
|
|
736
|
+
"logsWithContent": 0
|
|
737
|
+
}
|
|
738
|
+
02:24:00.899 [[32minfo[39m] Added log uploads to queue
|
|
739
|
+
{
|
|
740
|
+
"totalUploads": 3,
|
|
741
|
+
"logUploads": 0
|
|
742
|
+
}
|
|
743
|
+
02:24:01.244 [[34mdebug[39m] [VERBOSE] Upload image progress: 100%
|
|
744
|
+
{
|
|
745
|
+
"loaded": 196908,
|
|
746
|
+
"total": 196908,
|
|
747
|
+
"speedMBps": "0.52"
|
|
748
|
+
}
|
|
749
|
+
02:24:01.244 [[34mdebug[39m] ← Exiting uploadFile
|
|
750
|
+
{
|
|
751
|
+
"result": "undefined"
|
|
752
|
+
}
|
|
753
|
+
02:24:01.323 [[34mdebug[39m] [VERBOSE] Upload video progress: 100%
|
|
754
|
+
{
|
|
755
|
+
"loaded": 254482,
|
|
756
|
+
"total": 254482,
|
|
757
|
+
"speedMBps": "0.55"
|
|
758
|
+
}
|
|
759
|
+
02:24:01.323 [[32minfo[39m] Successfully uploaded video
|
|
760
|
+
{
|
|
761
|
+
"key": "uploads/6387dc1e7c5392006384b0a8/6901c11000f26659ed1a91da/6901c11000f26659ed1a91da.mp4",
|
|
762
|
+
"location": "https://replayable-prod.s3.us-east-2.amazonaws.com/uploads/6387dc1e7c5392006384b0a8/6901c11000f26659ed1a91da/6901c11000f26659ed1a91da.mp4",
|
|
763
|
+
"duration": "0.4s",
|
|
764
|
+
"averageSpeed": "0.55 MB/s"
|
|
765
|
+
}
|
|
766
|
+
02:24:01.323 [[34mdebug[39m] ← Exiting uploadFile
|
|
767
|
+
{
|
|
768
|
+
"result": "undefined"
|
|
769
|
+
}
|
|
770
|
+
02:24:06.039 [[34mdebug[39m] [VERBOSE] Upload image progress: 30%
|
|
771
|
+
{
|
|
772
|
+
"loaded": 36053182,
|
|
773
|
+
"total": 119939262,
|
|
774
|
+
"speedMBps": "6.67"
|
|
775
|
+
}
|
|
776
|
+
02:24:07.751 [[34mdebug[39m] [VERBOSE] Upload image progress: 100%
|
|
777
|
+
{
|
|
778
|
+
"loaded": 119939262,
|
|
779
|
+
"total": 119939262,
|
|
780
|
+
"speedMBps": "16.66"
|
|
781
|
+
}
|
|
782
|
+
02:24:07.904 [[32minfo[39m] Successfully uploaded image
|
|
783
|
+
{
|
|
784
|
+
"key": "uploads/6387dc1e7c5392006384b0a8/6901c11000f26659ed1a91da/6901c11000f26659ed1a91da.gif",
|
|
785
|
+
"location": "https://replayable-prod.s3.us-east-2.amazonaws.com/uploads/6387dc1e7c5392006384b0a8/6901c11000f26659ed1a91da/6901c11000f26659ed1a91da.gif",
|
|
786
|
+
"duration": "7.0s",
|
|
787
|
+
"averageSpeed": "16.29 MB/s"
|
|
788
|
+
}
|
|
789
|
+
02:24:07.905 [[34mdebug[39m] ← Exiting uploadFile
|
|
790
|
+
{
|
|
791
|
+
"result": "undefined"
|
|
792
|
+
}
|
|
793
|
+
02:24:07.905 [[34mdebug[39m] Cleaning up uploaded files
|
|
794
|
+
{
|
|
795
|
+
"files": [
|
|
796
|
+
"recording-2025-10-29T07-23-44-988Z.webm",
|
|
797
|
+
"recording-2025-10-29T07-23-44-988Z.gif",
|
|
798
|
+
"recording-2025-10-29T07-23-44-988Z.png"
|
|
799
|
+
]
|
|
800
|
+
}
|
|
801
|
+
02:24:07.905 [[34mdebug[39m] Deleted uploaded file: recording-2025-10-29T07-23-44-988Z.webm
|
|
802
|
+
02:24:07.919 [[34mdebug[39m] Deleted uploaded file: recording-2025-10-29T07-23-44-988Z.gif
|
|
803
|
+
02:24:07.920 [[34mdebug[39m] Deleted uploaded file: recording-2025-10-29T07-23-44-988Z.png
|
|
804
|
+
02:24:07.920 [[34mdebug[39m] Publishing replay...
|
|
805
|
+
02:24:08.147 [[32minfo[39m] Upload process completed successfully
|
|
806
|
+
{
|
|
807
|
+
"replayId": "6901c11000f26659ed1a91da",
|
|
808
|
+
"shareLink": "https://app.dashcam.io/replay/6901c11000f26659ed1a91da?share=QZ4PH5VQI4wpl1xGACI2A"
|
|
809
|
+
}
|
|
810
|
+
02:24:08.147 [[34mdebug[39m] ← Exiting upload
|
|
811
|
+
{
|
|
812
|
+
"result": "undefined"
|
|
813
|
+
}
|
|
814
|
+
Upload completed successfully!
|