Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
3ef4e63
fix(enc-avfoundation): quantize video PTS to writer resolution before…
cursoragent Aug 6, 2026
9fdb61d
fix(enc-avfoundation): hold the pending frame across pause to keep sa…
cursoragent Aug 6, 2026
12a7721
test(enc-ffmpeg): replay stall-recovery same-microsecond burst agains…
cursoragent Aug 6, 2026
924265d
test(recording): gate hardware instant harness to macOS and exercise …
cursoragent Aug 6, 2026
9a40218
test(recording): cover pause/resume and stall bursts across the insta…
cursoragent Aug 6, 2026
fcc5f60
test(recording): make instant scenario harness deterministic across e…
cursoragent Aug 6, 2026
d404b88
ci: run the instant mode scenario harness in sync-tests
cursoragent Aug 6, 2026
8ae7959
fix(enc-avfoundation): shift a held frame's deferred offset with cons…
cursoragent Aug 6, 2026
ec6ca60
fix(recording): keep AVAssetWriter alive on disk exhaustion and debug…
cursoragent Aug 6, 2026
257d12b
fix(mediafoundation-ffmpeg): keep muxer pts strictly monotonic in str…
cursoragent Aug 6, 2026
05cecfa
test(recording): add real-hardware studio pause/resume harness and co…
cursoragent Aug 6, 2026
4c3ee04
test(rendering): skip notch pixel asserts when a software adapter can…
cursoragent Aug 6, 2026
c2d750d
test(recording): tolerate encoder-overload drops and drift re-pinning…
cursoragent Aug 6, 2026
49dd531
test(recording): skip sync matrix cases when the runner stalls mid-em…
cursoragent Aug 6, 2026
b9996c7
chore: retrigger ci after github actions outage
cursoragent Aug 6, 2026
65584ef
chore: retrigger ci after github actions recovery
cursoragent Aug 7, 2026
0999f5c
fix(recording): route AVFoundation disk guards through DiskSpaceMonit…
richiemcilroy Aug 7, 2026
2fc12b2
fix(recording): finalize the camera writer when its encoder thread er…
richiemcilroy Aug 7, 2026
e1c6ef5
fix(desktop): truncate telemetry reasons on char boundaries
richiemcilroy Aug 7, 2026
03e4d3d
fix(mediafoundation-ffmpeg): surface stuck-clock tie-bump runs
richiemcilroy Aug 7, 2026
a764926
test(enc-avfoundation): cover the deferred-offset shift across a held…
richiemcilroy Aug 7, 2026
51a61ac
style(enc-ffmpeg): drop a redundant cast in the remux jitter test
richiemcilroy Aug 7, 2026
bd3d75c
test(enc-ffmpeg): pin default-cadence segment cuts to the encoder key…
richiemcilroy Aug 7, 2026
19357a9
test(rendering): limit the notch skip escape to named WARP adapters, …
richiemcilroy Aug 7, 2026
43439ce
test(recording): make sync-matrix skips and overload tolerance honest
richiemcilroy Aug 7, 2026
3abb775
test(recording): compare tight-pair distributions instead of budgetin…
richiemcilroy Aug 7, 2026
19c626f
test(recording): keep sync-matrix skips honest under backpressure and…
richiemcilroy Aug 7, 2026
f94cefa
test(enc-avfoundation): namespace test outputs per process, document …
richiemcilroy Aug 7, 2026
241eeb6
chore(recording): correct the camera finalize comment, print notch sk…
richiemcilroy Aug 7, 2026
f0a075d
test(recording): scope the backpressure-fails rule to production-repr…
richiemcilroy Aug 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 27 additions & 2 deletions .github/workflows/sync-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,27 @@ jobs:
run: |
cargo test --locked -p cap-timestamp -p cap-enc-ffmpeg
cargo test --locked -p cap-recording --lib
cargo test --locked -p cap-rendering
# --nocapture so a WARP-adapter notch skip prints instead of
# looking identical to a pass in the CI log.
cargo test --locked -p cap-rendering -- --nocapture

# Real encoders + DASH muxer + remux/validation over full instant-mode
# scenarios: pause/resume excision, stall-recovery bursts with
# same-microsecond timestamps, segment assembly and A/V alignment.
- name: Instant mode scenario harness
shell: bash
run: |
cargo test --locked -p cap-recording --test instant_mode_scenarios

# The hardware harnesses (real screen/mic recordings) only run on
# developer machines, but they must keep compiling: nothing else
# builds the full test target set, and hardware_instant_recording
# once rotted into breaking every non-macOS test build via ungated
# macOS-only imports.
- name: Compile recording test harnesses
shell: bash
run: |
cargo check --locked -p cap-recording --tests

# The AVFoundation encoder (studio camera/display on macOS) has its own
# pts handling; its fps-matrix duration tests guard against re-timing
Expand Down Expand Up @@ -185,7 +205,12 @@ jobs:
print("| Case | Result | Detail |")
print("| --- | --- | --- |")
for case in report.get("cases", []):
verdict = "PASS" if case["pass"] else "FAIL"
if not case["pass"]:
verdict = "FAIL"
elif "skipped:" in case["detail"]:
verdict = "SKIP"
else:
verdict = "PASS"
detail = case["detail"].replace("|", "\\|")
print(f"| {case['name']} | {verdict} | {detail} |")
PYEOF
Expand Down
8 changes: 7 additions & 1 deletion apps/desktop/src-tauri/src/telemetry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,13 @@ pub enum AnalyticsEvent {
fn truncate_reason(mut s: String) -> String {
const MAX_LEN: usize = 240;
if s.len() > MAX_LEN {
s.truncate(MAX_LEN);
// Reasons carry NSError debug strings whose localized text is
// multi-byte; String::truncate panics off a char boundary.
let end = (0..=MAX_LEN)
.rev()
.find(|&i| s.is_char_boundary(i))
.unwrap_or(0);
s.truncate(end);
s.push('…');
}
s
Expand Down
Loading
Loading