{ "status": "pass", "mode": "smoke", "strict": false, "platform": "linux", "arch": "arm64", "hostname": "850d0711b42a", "startedAt": "2026-06-05T15:40:10.774Z", "endedAt": "2026-06-05T15:40:45.392Z", "reportDir": "/workspaces/fluxer/fluxer_desktop/native-media-reports/2026-06-05T15-40-10-773Z", "gates": [ { "name": "mode-valid", "status": "pass", "mode": "smoke" }, { "name": "documentation-current", "status": "pass", "missing": [] }, { "name": "strict-prerequisites", "status": "skip", "reason": "smoke mode" }, { "name": "strict-command-plan", "status": "skip", "reason": "smoke mode" } ], "plannedCommands": [ { "name": "main-process-native-media-unit-tests", "command": "node --test src/main/WebrtcScreenPublish.test.mjs src/main/NativeVoiceEngine.test.mjs src/main/NativeScreenCapture.test.mjs", "category": "shared", "cwd": "." }, { "name": "desktop-typecheck", "command": "pnpm typecheck", "category": "shared", "cwd": "." }, { "name": "webrtc-sender-build", "command": "pnpm --dir native/webrtc-sender build", "category": "native-sender", "cwd": "." }, { "name": "webrtc-sender-tests", "command": "pnpm --dir native/webrtc-sender test", "category": "native-sender", "cwd": "." }, { "name": "webrtc-sender-livekit-harness", "command": "pnpm --dir native/webrtc-sender test:livekit", "category": "livekit", "cwd": "." }, { "name": "linux-screen-capture-build", "command": "pnpm --dir native/linux-screen-capture build", "category": "platform-native", "cwd": "." }, { "name": "linux-screen-capture-tests", "command": "pnpm --dir native/linux-screen-capture test", "category": "platform-native", "cwd": "." }, { "name": "linux-audio-capture-build", "command": "pnpm --dir native/linux-audio-capture build", "category": "platform-native", "cwd": "." }, { "name": "linux-audio-capture-tests", "command": "pnpm --dir native/linux-audio-capture test", "category": "platform-native", "cwd": "." } ], "commands": [ { "name": "main-process-native-media-unit-tests", "command": "node --test src/main/WebrtcScreenPublish.test.mjs src/main/NativeVoiceEngine.test.mjs src/main/NativeScreenCapture.test.mjs", "category": "shared", "status": "pass", "code": 0, "signal": null, "startedAt": "2026-06-05T15:40:10.775Z", "endedAt": "2026-06-05T15:40:10.863Z", "durationMs": 88, "stdoutTail": "▶ NativeScreenCapture DMA-BUF metadata validation\n ✔ accepts valid DMA-BUF metadata and pads native plane arrays (1.747886ms)\n ✔ keeps valid handles when optional device UUID metadata is absent or malformed (0.452503ms)\n ✔ rejects invalid plane counts, FDs, strides, and format metadata (0.616004ms)\n✔ NativeScreenCapture DMA-BUF metadata validation (3.258061ms)\n▶ NativeVoiceEngine screen frame routing\n ✔ prefers Windows shared texture handles over DMA-BUF and CPU frames (2.165721ms)\n ✔ uses Linux DMA-BUF handles before CPU conversion (0.671504ms)\n ✔ falls back to CPU frames when GPU paths are unavailable or rejected (0.583295ms)\n✔ NativeVoiceEngine screen frame routing (3.909315ms)\n▶ WebrtcScreenPublish native frame routing\n ✔ prefers Windows shared texture handles over DMA-BUF and CPU buffers (1.627218ms)\n ✔ uses Linux DMA-BUF handles before CPU conversion (0.594711ms)\n ✔ falls back to CPU frames when GPU paths are unavailable or rejected (0.41371ms)\n✔ WebrtcScreenPublish native frame routing (3.18327ms)\nℹ tests 9\nℹ suites 3\nℹ pass 9\nℹ fail 0\nℹ cancelled 0\nℹ skipped 0\nℹ todo 0\nℹ duration_ms 69.874336\n", "stderrTail": "" }, { "name": "desktop-typecheck", "command": "pnpm typecheck", "category": "shared", "status": "pass", "code": 0, "signal": null, "startedAt": "2026-06-05T15:40:10.863Z", "endedAt": "2026-06-05T15:40:13.457Z", "durationMs": 2594, "stdoutTail": "native/mac-app-audio |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\nnative/mac-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\nnative/mac-screen-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\nnative/mac-sysctl |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\nnative/mac-tcc |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\nnative/macos-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\nnative/win-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\nnative/win-game-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\nnative/win-process-loopback |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\nnative/win-shell |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\nnative/win-toast |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\nnative/windows-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n\n> fluxer_desktop@0.0.0 typecheck /workspaces/fluxer/fluxer_desktop\n> tsgo --noEmit\n\n", "stderrTail": "" }, { "name": "webrtc-sender-build", "command": "pnpm --dir native/webrtc-sender build", "category": "native-sender", "status": "pass", "code": 0, "signal": null, "startedAt": "2026-06-05T15:40:13.457Z", "endedAt": "2026-06-05T15:40:25.076Z", "durationMs": 11619, "stdoutTail": "../mac-app-audio |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-screen-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-sysctl |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-tcc |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../macos-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-game-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-process-loopback |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-shell |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-toast |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../windows-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n\n> @fluxer/webrtc-sender@0.0.0 build /workspaces/fluxer/fluxer_desktop/native/webrtc-sender\n> node scripts/build-rust.mjs\n\n[buildRustNodeAddon] cwd=/workspaces/fluxer/fluxer_desktop/native/webrtc-sender\ncargo build --release --target aarch64-unknown-linux-gnu --manifest-path Cargo.toml --features camera-native\n", "stderrTail": "warning: webrtc-sys@0.3.33: cuda.h not found; building without hardware accelerated video codec support for NVidia GPUs\nwarning: unused import: `enum_dispatch`\n --> vendor/libwebrtc/src/audio_source.rs:15:13\n |\n15 | use crate::{enum_dispatch, imp::audio_source as imp_as};\n | ^^^^^^^^^^^^^\n |\n = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\nwarning: unnecessary `unsafe` block\n --> vendor/libwebrtc/src/native/apm.rs:32:25\n |\n32 | sys_handle: unsafe {\n | ^^^^^^ unnecessary `unsafe` block\n |\n = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default\n\nwarning: variable does not need to be mutable\n --> vendor/libwebrtc/src/native/desktop_capturer.rs:66:13\n |\n66 | let mut sys_handle = sys_dc::ffi::DesktopCapturerOptions {\n | ----^^^^^^^^^^\n | |\n | help: remove this `mut`\n |\n = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default\n\nwarning: hiding a lifetime that's elided elsewhere is confusing\n --> vendor/libwebrtc/src/native/audio_mixer.rs:30:34\n |\n30 | fn get_audio_frame_with_info(&self, target_sample_rate: u32) -> Option;\n | ^^^^^ the lifetime is elided here ^^^^^^^^^^ the same lifetime is hidden here\n |\n = help: the same lifetime is referred to in inconsistent ways, making the signature confusing\n = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default\nhelp: use `'_` for type paths\n |\n30 | fn get_audio_frame_with_info(&self, target_sample_rate: u32) -> Option>;\n | ++++\n\nwarning: `libwebrtc` (lib) generated 4 warnings (run `cargo fix --lib -p libwebrtc` to apply 3 suggestions)\n Compiling fluxer_webrtc_sender v0.0.0 (/workspaces/fluxer/fluxer_desktop/native/webrtc-sender)\n Finished `release` profile [optimized] target(s) in 9.11s\n" }, { "name": "webrtc-sender-tests", "command": "pnpm --dir native/webrtc-sender test", "category": "native-sender", "status": "pass", "code": 0, "signal": null, "startedAt": "2026-06-05T15:40:25.076Z", "endedAt": "2026-06-05T15:40:27.641Z", "durationMs": 2565, "stdoutTail": "../mac-app-audio |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-screen-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-sysctl |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-tcc |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../macos-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-game-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-process-loopback |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-shell |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-toast |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../windows-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n\n> @fluxer/webrtc-sender@0.0.0 test /workspaces/fluxer/fluxer_desktop/native/webrtc-sender\n> cargo test --features publisher,camera-native && node --test index.test.mjs\n\n\nrunning 89 tests\ntest audio::tests::clamp_volume_holds_the_contract_range ... ok\ntest audio::tests::clamp_volume_maps_non_finite_to_unity ... ok\ntest audio::tests::input_devices_json_array ... ok\ntest audio::tests::output_devices_json_array ... ok\ntest audio::tests::processing_options_preserve_defaults_unless_overridden ... ok\ntest audio::tests::output_device_json_locks_the_contract_shape ... ok\ntest audio::tests::shape_input_marks_index_zero_default_and_drops_empty_ids ... ok\ntest audio::tests::is_muted_only_at_zero ... ok\ntest audio::tests::shape_marks_index_zero_default_and_drops_empty_ids ... ok\ntest camera::tests::from_opts_applies_defaults ... ok\ntest camera::tests::from_opts_forces_even_dims_and_honours_overrides ... ok\ntest camera::tests::from_opts_parses_device_index ... ok\ntest camera::tests::from_opts_preserves_string_device_ids ... ok\ntest camera::tests::from_opts_rejects_degenerate_dims_and_fps ... ok\ntest config::tests::canonical_codec_name_accepts_all_five_case_insensitively ... ok\ntest config::tests::canonical_codec_name_rejects_empty_and_unknown ... ok\ntest config::tests::rejects_bad_url ... ok\ntest config::tests::rejects_empty_token ... ok\ntest config::tests::rejects_odd_or_oob_dimensions ... ok\ntest config::tests::state_gates_frames_and_connect ... ok\ntest engine::tests::parse_codec_agrees_with_pure_canonicaliser ... ok\ntest config::tests::valid_config_passes ... ok\ntest engine::tests::parse_codec_maps_all_five_including_h265 ... ok\ntest engine::tests::parse_codec_rejects_empty_and_unknown ... ok\ntest engine::tests::parse_track_source_accepts_renderer_and_livekit_spellings ... ok\ntest engine::tests::parse_video_quality_accepts_subscription_quality_levels ... ok\ntest engine::tests::pcm16_audio_frame_rejects_malformed_buffers ... ok\ntest engine::tests::pcm16_audio_frame_shapes_interleaved_stereo_samples ... ok\ntest engine::tests::tight_i420_len_matches_plane_geometry ... ok\ntest engine::tests::video_frame_meta_json_matches_contract ... ok\ntest events::tests::empty_object_and_array ... ok\ntest events::tests::escapes_quote_backslash_and_control_chars ... ok\ntest events::tests::json_object_preserves_order_and_mixes_str_and_raw ... ok\ntest events::tests::json_u8_array_serializes_bytes_as_numbers ... ok\ntest events::tests::leaves_plain_ascii_and_unicode_untouched ... ok\ntest events::tests::raw_array_preserves_prebuilt_json_objects ... ok\ntest hardware_encoder::tests::reports_available_nvenc_when_compiled_and_runtime_ready ... ok\ntest hardware_encoder::tests::reports_driver_sdk_incompatibility_before_encode_session ... ok\ntest hardware_encoder::tests::reports_missing_runtime_prerequisites_when_compiled ... ok\ntest hardware_encoder::tests::reports_missing_runtime_prerequisites_when_probe_is_absent ... ok\ntest hardware_encoder::tests::reports_not_compiled_before_runtime_missing ... ok\ntest hardware_encoder::tests::reports_no_supported_codecs_when_guid_query_finds_no_fluxer_codecs ... ok\ntest hardware_encoder::tests::reports_h264_only_when_hevc_guid_is_absent ... ok\ntest hardware_encoder::tests::reports_no_cuda_devices_using_obs_style_reason ... ok\ntest hardware_encoder::tests::reports_unsupported_platforms_clearly ... ok\ntest publisher::tests::i420_plane_copy_fills_libwebrtc_buffer ... ok\ntest stats::tests::bitrate_computes_kbps_from_byte_delta ... ok\ntest stats::tests::bitrate_first_sample_is_zero ... ok\ntest publisher::tests::parse_codec_maps_known_names ... ok\ntest stats::tests::bitrate_half_second_doubles_rate ... ok\ntest stats::tests::bitrate_rejects_backwards_time_and_bytes ... ok\ntest stats::tests::empty_stats_serialise_to_null_rtt_and_empty_arrays ... ok\ntest stats::tests::full_stats_serialise_to_exact_contract_shape ... ok\ntest stats::tests::sanitize_kbps_drops_nan_inf_negative_and_rounds ... ok\ntest stats::tests::sanitize_audio_level_clamps ... ok\ntest stats::tests::video_inbound_omits_audio_level_audio_omits_fps ... ok\ntest stats::tests::unit_conversions_seconds_to_ms ... ok\ntest texture_source::tests::dmabuf_desc_from_parts_rejects_negative_fds ... ok\ntest texture_source::tests::dxgi_format_gate_accepts_8bit_rgba_bgra_only ... ok\ntest texture_source::tests::drm_format_gate_accepts_obs_vkcapture_texture_formats ... ok\ntest texture_source::tests::error_strings_are_stable ... ok\ntest texture_source::tests::probe_is_available_only_for_explicit_hardware_codecs ... ok\ntest texture_source::tests::should_attempt_dmabuf_is_sdk_gated_after_validation_capability ... ok\ntest texture_source::tests::should_attempt_falls_back_when_capability_unavailable ... ok\ntest texture_source::tests::should_attempt_validates_frame_when_capability_available ... ok\ntest texture_source::tests::validate_accepts_a_clean_bgra_texture ... ok\ntest texture_source::tests::validate_dmabuf_accepts_supported_formats_with_optional_uuid ... ok\ntest texture_source::tests::validate_dmabuf_rejects_invalid_planes ... ok\ntest texture_source::tests::validate_precedence_handle_before_dims_before_format ... ok\ntest texture_source::tests::validate_rejects_odd_zero_and_oversized_dims ... ok\ntest texture_source::tests::validate_rejects_unsupported_format ... ok\ntest texture_source::tests::validate_rejects_zero_handle_as_no_texture ... ok\ntest yuv::tests::bgra_black_white_grey_levels ... ok\ntest yuv::tests::bgra_golden_2x2_solid_colour_exact_bytes ... ok\ntest yuv::tests::bgra_golden_strided_2x2_skips_row_padding ... ok\ntest yuv::tests::bgra_primaries_have_expected_chroma_signs ... ok\ntest yuv::tests::bgra_plane_sizes ... ok\ntest yuv::tests::copy_nv12_planes_preserves_nv12_layout ... ok\ntest yuv::tests::copy_nv12_planes_rejects_short_buffers ... ok\ntest yuv::tests::copy_nv12_planes_respects_destination_stride ... ok\ntest yuv::tests::nv12_4x4_deinterleaves_two_chroma_columns ... ok\ntest yuv::tests::nv12_golden_4x2_packed_to_i420 ... ok\ntest yuv::tests::nv12_packed_2x2_deinterleaves ... ok\ntest yuv::tests::nv12_respects_row_padding ... ok\ntest yuv::tests::nv12_short_buffer_is_rejected ... ok\ntest yuv::tests::rejects_odd_or_tiny_dimensions ... ok\ntest yuv::tests::rgb_golden_2x2_solid_colour_matches_bgra_path ... ok\ntest yuv::tests::rgb_plane_sizes_and_levels ... ok\ntest yuv::tests::rgb_rejects_odd_dims_and_short_buffer ... ok\n\ntest result: ok. 89 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n\nrunning 6 tests\ntest outbound_covers_the_single_identity_publish_path ... ok\ntest e2ee_state_is_ok_on_the_wire ... ok\ntest outbound_fixtures_match_contract ... ok\ntest inbound_covers_subscribe_and_lifecycle ... ok\ntest video_frame_meta_matches_contract ... ok\ntest inbound_fixtures_match_contract ... ok\n\ntest result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n\nrunning 0 tests\n\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n▶ webrtc-sender loader wrapper\n ✔ resolves the native addon filename for every desktop OS/arch target (0.414128ms)\n ✔ rejects unsupported platform/architecture pairs explicitly (0.194543ms)\n ✔ returns a native hardware encoder capability when the binding exports one (0.19071ms)\n ✔ delegates dropped video callback metrics through the VoiceEngine wrapper (0.08925ms)\n ✔ delegates shared texture handles through the WebrtcPublisher wrapper (0.244294ms)\n ✔ treats shared texture publishing as unavailable for older publisher bindings (0.05975ms)\n ✔ delegates dma-buf frames through the WebrtcPublisher wrapper (0.130917ms)\n ✔ delegates shared texture handles through the VoiceEngine wrapper (0.093ms)\n ✔ treats shared texture publishing as unavailable for older voice bindings (0.074ms)\n ✔ treats dma-buf publishing as unavailable for older native bindings (0.109542ms)\n ✔ defaults dropped video callback metrics to zero for older native bindings (0.072001ms)\n ✔ delegates remote track subscription updates through the VoiceEngine wrapper (0.090292ms)\n ✔ ignores remote track subscription updates for older native bindings (0.054792ms)\n ✔ delegates data packets through the VoiceEngine wrapper (0.129459ms)\n ✔ rejects invalid data packet payloads in the wrapper (0.139584ms)\n ✔ returns an unavailable hardware encoder capability without a binding (0.063959ms)\n✔ webrtc-sender loader wrapper (3.186227ms)\nℹ tests 16\nℹ suites 1\nℹ pass 16\nℹ fail 0\nℹ cancelled 0\nℹ skipped 0\nℹ todo 0\nℹ duration_ms 39.277319\n", "stderrTail": "warning: webrtc-sys@0.3.33: cuda.h not found; building without hardware accelerated video codec support for NVidia GPUs\nwarning: unused import: `enum_dispatch`\n --> vendor/libwebrtc/src/audio_source.rs:15:13\n |\n15 | use crate::{enum_dispatch, imp::audio_source as imp_as};\n | ^^^^^^^^^^^^^\n |\n = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default\n\nwarning: unnecessary `unsafe` block\n --> vendor/libwebrtc/src/native/apm.rs:32:25\n |\n32 | sys_handle: unsafe {\n | ^^^^^^ unnecessary `unsafe` block\n |\n = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default\n\nwarning: variable does not need to be mutable\n --> vendor/libwebrtc/src/native/desktop_capturer.rs:66:13\n |\n66 | let mut sys_handle = sys_dc::ffi::DesktopCapturerOptions {\n | ----^^^^^^^^^^\n | |\n | help: remove this `mut`\n |\n = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default\n\nwarning: hiding a lifetime that's elided elsewhere is confusing\n --> vendor/libwebrtc/src/native/audio_mixer.rs:30:34\n |\n30 | fn get_audio_frame_with_info(&self, target_sample_rate: u32) -> Option;\n | ^^^^^ the lifetime is elided here ^^^^^^^^^^ the same lifetime is hidden here\n |\n = help: the same lifetime is referred to in inconsistent ways, making the signature confusing\n = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default\nhelp: use `'_` for type paths\n |\n30 | fn get_audio_frame_with_info(&self, target_sample_rate: u32) -> Option>;\n | ++++\n\nwarning: `libwebrtc` (lib) generated 4 warnings (run `cargo fix --lib -p libwebrtc` to apply 3 suggestions)\n Finished `test` profile [unoptimized + debuginfo] target(s) in 0.15s\n Running unittests src/lib.rs (target/debug/deps/fluxer_webrtc_sender-96ed47cbef11f6a0)\n Running tests/event_contract.rs (target/debug/deps/event_contract-c09db034b80d5f00)\n Doc-tests fluxer_webrtc_sender\n" }, { "name": "webrtc-sender-livekit-harness", "command": "pnpm --dir native/webrtc-sender test:livekit", "category": "livekit", "status": "pass", "code": 0, "signal": null, "startedAt": "2026-06-05T15:40:27.641Z", "endedAt": "2026-06-05T15:40:30.440Z", "durationMs": 2799, "stdoutTail": "../mac-app-audio |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-screen-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-sysctl |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-tcc |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../macos-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-game-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-process-loopback |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-shell |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-toast |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../windows-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n\n> @fluxer/webrtc-sender@0.0.0 test:livekit /workspaces/fluxer/fluxer_desktop/native/webrtc-sender\n> node scripts/livekit-harness.mjs\n\n[livekit-harness] SKIP: LiveKit is unreachable at ws://localhost:7880 (connect ECONNREFUSED 127.0.0.1:7880). Set FLUXER_WEBRTC_SENDER_LIVEKIT_REQUIRED=1 to fail instead.\n", "stderrTail": "" }, { "name": "linux-screen-capture-build", "command": "pnpm --dir native/linux-screen-capture build", "category": "platform-native", "status": "pass", "code": 0, "signal": null, "startedAt": "2026-06-05T15:40:30.440Z", "endedAt": "2026-06-05T15:40:32.883Z", "durationMs": 2443, "stdoutTail": "../mac-app-audio |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-screen-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-sysctl |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-tcc |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../macos-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-game-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-process-loopback |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-shell |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-toast |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../windows-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n\n> @fluxer/linux-screen-capture@0.0.0 build /workspaces/fluxer/fluxer_desktop/native/linux-screen-capture\n> node scripts/build-rust.mjs\n\n[buildRustNodeAddon] cwd=/workspaces/fluxer/fluxer_desktop/native/linux-screen-capture\ncargo build --release --target aarch64-unknown-linux-gnu --manifest-path Cargo.toml\n", "stderrTail": " Finished `release` profile [optimized] target(s) in 0.13s\n" }, { "name": "linux-screen-capture-tests", "command": "pnpm --dir native/linux-screen-capture test", "category": "platform-native", "status": "pass", "code": 0, "signal": null, "startedAt": "2026-06-05T15:40:32.883Z", "endedAt": "2026-06-05T15:40:37.620Z", "durationMs": 4737, "stdoutTail": "../mac-app-audio |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-screen-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-sysctl |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-tcc |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../macos-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-game-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-process-loopback |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-shell |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-toast |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../windows-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n\n> @fluxer/linux-screen-capture@0.0.0 test /workspaces/fluxer/fluxer_desktop/native/linux-screen-capture\n> cargo test --manifest-path Cargo.toml && node --test index.test.mjs\n\n\nrunning 42 tests\ntest game_capture::tests::auto_import_policy_walks_obs_fallback_ladder ... ok\ntest game_capture::tests::converts_abgr10_row_to_bgra ... ok\ntest game_capture::tests::diagnostics_can_pin_host_mapped_capture_policy ... ok\ntest game_capture::tests::converts_fp16_rgba_row_to_bgra_srgb ... ok\ntest game_capture::tests::diagnostics_modifier_uses_obs_invalid_name ... ok\ntest game_capture::tests::control_message_encodes_obs_import_modes ... ok\ntest game_capture::tests::host_mapped_import_rejects_invalid_stride_and_offset_with_diagnostics ... ok\ntest game_capture::tests::host_mapped_import_rejects_multiplane_descriptors_with_diagnostic ... ok\ntest game_capture::tests::diagnostics_default_to_obs_fallback_capture_policy ... ok\ntest game_capture::tests::identifies_rgba_memory_formats_that_need_swizzle ... ok\ntest game_capture::tests::host_mapped_import_rejects_unsupported_formats_with_supported_list ... ok\ntest game_capture::tests::lifecycle_messages_update_diagnostics_snapshot ... ok\ntest game_capture::tests::host_mapped_import_rejects_invalid_fd_with_diagnostic ... ok\ntest game_capture::tests::host_mapped_import_reads_cpu_nv12_and_preserves_source_dmabuf_metadata ... ok\ntest game_capture::tests::import_mode_env_parses_nvidia_debug_shortcuts ... ok\ntest game_capture::tests::non_host_mapped_import_reports_fallback_requirement ... ok\ntest game_capture::tests::mapped_texture_exports_dmabuf_metadata_for_native_encoder ... ok\ntest napi_surface_linux::tests::parse_source_id_roundtrip ... ok\ntest napi_surface_linux::tests::stream_dimensions_for_node_uses_selected_portal_stream ... ok\ntest nv12_packing::tests::bgra_to_nv12_rejects_short_stride ... ok\ntest game_capture::tests::parses_obs_vkcapture_texture_layout ... ok\ntest napi_surface_linux::tests::parse_source_id_rejects_malformed ... ok\ntest game_capture::tests::parses_client_name_as_c_string ... ok\ntest napi_surface_linux::tests::source_kind_for_type_maps_bits ... ok\ntest nv12_packing::tests::bgra_to_nv12_solid_black ... ok\ntest nv12_packing::tests::pack_nv12_rejects_short_source ... ok\ntest nv12_packing::tests::pack_nv12_rejects_undersized_stride ... ok\ntest nv12_packing::tests::pack_nv12_rejects_wrong_dst_size ... ok\ntest nv12_packing::tests::pack_nv12_strips_row_padding ... ok\ntest nv12_packing::tests::pack_nv12_zero_padding_is_identity ... ok\ntest nv12_packing::tests::packed_size_matches_yuv420_layout ... ok\ntest nv12_packing::tests::packed_size_rejects_odd_height ... ok\ntest nv12_packing::tests::packed_size_rejects_zero_dims ... ok\ntest portal::tests::cursor_mode_constants_match_portal_spec ... ok\ntest portal::tests::cursor_mode_matches_treats_missing_key_as_honoured ... ok\ntest portal::tests::mint_token_is_distinct_and_prefixed ... ok\ntest portal::tests::normalize_desktop_entry_app_id_accepts_fluxer_ids ... ok\ntest portal::tests::normalize_desktop_entry_app_id_rejects_paths_and_empty_values ... ok\ntest portal::tests::request_path_sanitizes_unique_bus_name ... ok\ntest portal::tests::session_path_sanitizes_unique_bus_name ... ok\ntest portal::tests::source_type_mask_combines_monitor_and_window ... ok\ntest nv12_packing::tests::bgra_to_nv12_solid_white_is_in_range ... ok\n\ntest result: ok. 42 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n\nrunning 0 tests\n\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n▶ linux-screen-capture game capture launch environment\n ✔ enables OBS Vulkan capture and names the client (0.838797ms)\n ✔ prefers bundled hook assets and can force PRIME/NVIDIA launch variables (0.434836ms)\n ✔ does not duplicate launch path entries or Vulkan layer names (0.278376ms)\n ✔ can force a specific NVIDIA Vulkan ICD for hybrid GPU systems (0.627129ms)\n ✔ keeps obs-vkcapture runtime assets and license notes in the package surface (0.78638ms)\n✔ linux-screen-capture game capture launch environment (3.608563ms)\nℹ tests 5\nℹ suites 1\nℹ pass 5\nℹ fail 0\nℹ cancelled 0\nℹ skipped 0\nℹ todo 0\nℹ duration_ms 58.707644\n", "stderrTail": " Compiling fluxer_linux_screen_capture v0.0.0 (/workspaces/fluxer/fluxer_desktop/native/linux-screen-capture)\n Finished `test` profile [unoptimized + debuginfo] target(s) in 2.44s\n Running unittests src/lib.rs (target/debug/deps/fluxer_linux_screen_capture-0784dd97ce1aa9bb)\n Doc-tests fluxer_linux_screen_capture\n" }, { "name": "linux-audio-capture-build", "command": "pnpm --dir native/linux-audio-capture build", "category": "platform-native", "status": "pass", "code": 0, "signal": null, "startedAt": "2026-06-05T15:40:37.620Z", "endedAt": "2026-06-05T15:40:41.518Z", "durationMs": 3898, "stdoutTail": "../mac-app-audio |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-screen-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-sysctl |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-tcc |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../macos-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-game-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-process-loopback |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-shell |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-toast |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../windows-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n\n> @fluxer/linux-audio-capture@0.0.0 build /workspaces/fluxer/fluxer_desktop/native/linux-audio-capture\n> node scripts/build-rust.mjs\n\n[buildRustNodeAddon] cwd=/workspaces/fluxer/fluxer_desktop/native/linux-audio-capture\ncargo build --release --target aarch64-unknown-linux-gnu --manifest-path Cargo.toml\n", "stderrTail": " Compiling fluxer_linux_audio_capture v0.0.0 (/workspaces/fluxer/fluxer_desktop/native/linux-audio-capture)\n Finished `release` profile [optimized] target(s) in 1.29s\n" }, { "name": "linux-audio-capture-tests", "command": "pnpm --dir native/linux-audio-capture test", "category": "platform-native", "status": "pass", "code": 0, "signal": null, "startedAt": "2026-06-05T15:40:41.518Z", "endedAt": "2026-06-05T15:40:45.392Z", "durationMs": 3874, "stdoutTail": "../mac-app-audio |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-screen-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-sysctl |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../mac-tcc |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../macos-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"darwin\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-clipboard |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-game-capture |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-process-loopback |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-shell |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../win-toast |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n../windows-input-hook |  WARN  Unsupported platform: wanted: {\"cpu\":[\"x64\",\"arm64\"],\"os\":[\"win32\"],\"libc\":[\"any\"]} (current: {\"os\":\"linux\",\"cpu\":\"arm64\",\"libc\":\"glibc\"})\n\n> @fluxer/linux-audio-capture@0.0.0 test /workspaces/fluxer/fluxer_desktop/native/linux-audio-capture\n> cargo test --manifest-path Cargo.toml\n\n\nrunning 69 tests\ntest audio_contract::tests::sample_duration_conversion_uses_whole_audio_frames ... ok\ntest audio_contract::tests::whole_frame_sample_count_trims_incomplete_channel_frames ... ok\ntest audio_contract::tests::routing_parser_caps_are_intentionally_finite ... ok\ntest audio_contract::tests::direct_append_slice_keeps_only_complete_stereo_samples_within_queue_cap ... ok\ntest audio_contract::tests::direct_read_count_is_bounded_and_stereo_aligned ... ok\ntest audio_contract::tests::direct_read_count_uses_stable_twenty_ms_chunks ... ok\ntest audio_contract::tests::direct_capture_latency_matches_stable_screen_share_buffer ... ok\ntest direct_buffer::tests::format_changes_clear_queued_samples ... ok\ntest env::tests::hint_str_matches_audio_backend_js_contract ... ok\ntest direct_buffer::tests::read_emits_stable_twenty_ms_chunks_with_continuous_timestamps ... ok\ntest env::tests::none_when_no_audio_hint_present ... ok\ntest env::tests::pipewire_wins_when_both_present ... ok\ntest env::tests::prefers_pipewire_when_pipewire_runtime_dir_set ... ok\ntest env::tests::pulse_server_falls_through_to_pulseaudio_when_no_pipewire_hint ... ok\ntest env::tests::xdg_runtime_dir_alone_is_enough_for_pipewire_hint ... ok\ntest pipewire_bridge::tests::direct_chunk_payload_range_respects_pipewire_chunk_offset ... ok\ntest pipewire_bridge::tests::direct_stream_props_capture_private_sink_monitor ... ok\ntest pipewire_bridge::tests::direct_audio_info_advertises_stereo_fl_fr ... ok\ntest pipewire_bridge::tests::is_routable_media_class_matches_audio_node_classes ... ok\ntest pipewire_bridge::tests::link_props_carry_per_port_routing ... ok\ntest pipewire_bridge::tests::private_sink_props_advertise_hidden_audio_sink ... ok\ntest pipewire_bridge::tests::virtual_sink_props_match_legacy_contract ... ok\ntest pipewire_bridge::tests::next_direct_sink_name_is_unique_per_call ... ok\ntest pulse_bridge::tests::pulse_direct_read_size_matches_capture_latency ... ok\ntest pipewire_bridge::tests::default_sink_target_id_uses_object_serial_for_matching_node_name ... ok\ntest pipewire_bridge::tests::inventory_does_not_inherit_client_object_serial_as_node_target ... ok\ntest pipewire_bridge::tests::inventory_falls_back_to_pipewire_security_pid ... ok\ntest pipewire_bridge::tests::inventory_enriches_nodes_with_owning_client_identity ... ok\ntest pipewire_bridge::tests::inventory_keeps_node_properties_authoritative_over_client_props ... ok\ntest pipewire_bridge::tests::matching_pinned_capture_nodes_only_matches_record_stream_inputs ... ok\ntest pipewire_bridge::tests::pick_node_ports_applies_same_fallback_to_private_capture_inputs ... ok\ntest pipewire_bridge::tests::pick_source_output_ports_falls_back_to_first_two_jack_style_ports ... ok\ntest pipewire_bridge::tests::pick_source_output_ports_fans_mono_to_both_inputs ... ok\ntest direct_buffer::tests::overflow_drops_from_front_and_advances_timestamp ... ok\ntest pipewire_bridge::tests::pick_source_output_ports_prefers_stereo_pair ... ok\ntest pipewire_bridge::tests::pick_source_output_ports_returns_none_when_only_one_side_present ... ok\ntest pipewire_bridge::tests::pick_source_output_ports_treats_blank_channel_as_mono ... ok\ntest pulse_bridge::tests::build_input_props_synthesises_media_class_and_target_object ... ok\ntest pulse_bridge::tests::extract_target_pid_prefers_include_then_pin ... ok\ntest pipewire_bridge::tests::pick_source_output_ports_returns_none_when_no_outputs ... ok\ntest routing::tests::empty_rules_route_nothing_and_sink_id_is_excluded ... ok\ntest pulse_bridge::tests::daemon_unreachable_returns_none_from_open ... ok\ntest routing::tests::include_mode_honors_hardware_filtering_and_never_rules ... ok\ntest routing::tests::include_mode_rejects_non_playback_nodes_that_match_the_include_filter ... ok\ntest routing::tests::matches_any_requires_at_least_one_matching_pattern ... ok\ntest routing::tests::missing_keys_and_mismatched_values_do_not_match ... ok\ntest routing::tests::parse_default_sink_name_is_strict_and_tolerant ... ok\ntest routing::tests::routing_refuses_non_playback_media_classes_even_when_included ... ok\ntest routing::tests::self_identity_matches_across_documented_pipewire_keys ... ok\ntest routing::tests::structural_self_identity_wins_over_include_rules ... ok\ntest routing::tests::synthetic_display_pattern_keys_do_not_affect_routing ... ok\ntest routing::tests::system_mode_routes_only_default_playback_streams ... ok\ntest self_identity::tests::parse_ppid_handles_comm_with_spaces_and_parens ... ok\ntest routing::tests::synthetic_target_object_pattern_matches_name_or_serial ... ok\ntest self_identity::tests::parse_ppid_handles_plain_stat ... ok\ntest pipewire_bridge::tests::daemon_unreachable_returns_none_from_open ... ok\ntest pipewire_bridge::tests::integration_smoke_apply_release_cycle_is_safe ... ok\ntest pulse_bridge::tests::direct_capture_open_then_drop_is_safe_without_daemon ... ok\ntest routing::tests::system_mode_accepts_default_sink_object_id_targets ... ok\ntest self_identity::tests::strip_exe_suffix_handles_known_extensions ... ok\ntest routing::tests::system_mode_accepts_untargeted_and_node_target_streams ... ok\ntest pipewire_bridge::tests::direct_open_returns_none_or_cleans_up ... ok\ntest self_identity::tests::parse_ppid_returns_none_on_malformed_input ... ok\ntest self_identity::tests::populate_self_identity_records_own_pid ... ok\ntest pulse_bridge::tests::direct_capture_start_then_drop_without_daemon_is_clean ... ok\ntest pulse_bridge::tests::per_pid_sink_args_format_is_stable ... ok\ntest routing::tests::empty_pattern_matches_any_candidate ... ok\ntest pulse_bridge::tests::integration_smoke_apply_release_cycle_does_not_deadlock ... ok\ntest pulse_bridge::tests::push_f32_chunk_respects_queue_cap_and_self_consistent_after_drain ... ok\n\ntest result: ok. 69 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s\n\n\nrunning 0 tests\n\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s\n\n", "stderrTail": " Compiling fluxer_linux_audio_capture v0.0.0 (/workspaces/fluxer/fluxer_desktop/native/linux-audio-capture)\n Finished `test` profile [unoptimized + debuginfo] target(s) in 1.32s\n Running unittests src/lib.rs (target/debug/deps/fluxer_linux_audio_capture-d5f10b7d43827c26)\n[W][15:40:45.313376] pw.conf | [ conf.c: 1182 try_load_conf()] can't load config client.conf: No such file or directory\n[E][15:40:45.313405] pw.conf | [ conf.c: 1215 pw_conf_load_conf_for_context()] can't load config client.conf: No such file or directory\n[W][15:40:45.313191] pw.conf | [ conf.c: 1182 try_load_conf()] can't load config client.conf: No such file or directory\n[E][15:40:45.313441] pw.conf | [ conf.c: 1215 pw_conf_load_conf_for_context()] can't load config client.conf: No such file or directory\n[W][15:40:45.313613] pw.conf | [ conf.c: 1182 try_load_conf()] can't load config client.conf: No such file or directory\n[E][15:40:45.313620] pw.conf | [ conf.c: 1215 pw_conf_load_conf_for_context()] can't load config client.conf: No such file or directory\n Doc-tests fluxer_linux_audio_capture\n" } ] }