Commit 11eafca
fix(ci): use v9 branch config for python-semantic-release (#13)
* feat: disable window capture by default, add recording profiling with auto-wormhole
- Make window reader/writer conditional on RECORD_WINDOW_DATA (defaults to False),
eliminating unnecessary thread + process + expensive platform API calls
- Add throttle to read_window_events (0.1s) and memory_writer (1s) loops
- Add profiling summary at end of record() with duration, event counts/rates,
config flags, main thread check, and thread count
- Auto-send profiling.json via Magic Wormhole after recording stops
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: skip window requirement when RECORD_WINDOW_DATA=False, set log level to WARNING
- When window capture is disabled, skip the window timestamp requirement
in process_events instead of discarding all action events
- Set loguru log level to WARNING by default (was DEBUG) to reduce noise
during recording
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: set log level to INFO not WARNING
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: handle missing video frames on early Ctrl+C
video_post_callback crashes with KeyError 'last_frame' when recording
stops before any action triggers a video frame write. Guard against
missing state keys and close the container gracefully.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: guard window event save when capture disabled, fix PyAV pict_type compat
- Second reference to prev_window_event in process_events was unguarded,
causing AttributeError when RECORD_WINDOW_DATA=False
- PyAV pict_type="I" raises TypeError on newer versions; fall back to
integer constant
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: use PictureType.I enum for PyAV pict_type, add video tests
- Use av.video.frame.PictureType.I instead of string "I" which is
unsupported in current PyAV versions
- Add test_video.py with tests for frame writing, key frames, and
PictureType enum compatibility
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: use Agg backend for matplotlib, improve wormhole-not-found message
- Set matplotlib to non-interactive Agg backend so plotting works from
background threads (fixes RuntimeError when Recorder runs record()
in a non-main thread)
- Improve wormhole-not-found message with install instructions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: reset stop sequence index after match to prevent IndexError
When the stop sequence was fully matched, the index wasn't reset.
Extra keypresses after the match would index past the end of the
sequence list, causing IndexError.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add per-screenshot timing to profiling, fix stop sequence IndexError
- Track screenshot duration (avg/max/min ms) and total iteration duration
per screen reader loop iteration in profiling.json
- Reset stop sequence index after match to prevent IndexError on extra
keypresses
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: make send_profile opt-in CLI flag, add magic-wormhole as regular dep
Profiling data is no longer auto-sent via wormhole after every recording.
Use --send_profile flag to opt in. Also promotes magic-wormhole from
optional [share] extra to a regular dependency since sharing is core
functionality.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: add pixel_ratio and audio_start_time to CaptureSession
HTML visualizer referenced these attributes which didn't exist on
CaptureSession. Added properties with safe fallbacks and updated
html.py to use getattr with defaults.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(ci): use v9 branch config for python-semantic-release
The `branch = "main"` key is from v7/v8 and is silently ignored
by v9, causing "No release will be made, 0.3.0 has already been
released!" on every push. Use the v9 `[branches.main]` table.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>1 parent d7134a8 commit 11eafca
File tree
8 files changed
+282
-52
lines changed- openadapt_capture
- visualize
- tests
8 files changed
+282
-52
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
314 | 314 | | |
315 | 315 | | |
316 | 316 | | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
317 | 345 | | |
318 | 346 | | |
319 | 347 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
21 | 22 | | |
22 | 23 | | |
| |||
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
| 30 | + | |
29 | 31 | | |
30 | 32 | | |
31 | 33 | | |
| |||
43 | 45 | | |
44 | 46 | | |
45 | 47 | | |
| 48 | + | |
46 | 49 | | |
47 | 50 | | |
48 | 51 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
13 | 17 | | |
14 | 18 | | |
15 | 19 | | |
| |||
0 commit comments