Files
fluxer-desktop-patched/fluxer_desktop/native-media-reports/2026-06-05T15-40-10-773Z/summary.json
T
brenden 682afacd30 Add native self-hosted instance connection to fluxer_desktop
Trimmed monorepo checkout (fluxer_desktop + packages/voice_engine_v2 +
tools/ci) with a "Connect to a Different Server" menu item and popout
that lets the desktop app switch to any self-hosted Fluxer instance,
plus fixes for well-known discovery on single-domain self-hosted
deployments and a false-positive ERR_ABORTED on same-origin client
redirects during the switch. Defaults to chat.fluxr.chat and uses an
isolated userData directory from the official build.
2026-07-01 18:22:43 -04:00

209 lines
53 KiB
JSON
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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<AudioFrame>;\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<AudioFrame<'_>>;\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<AudioFrame>;\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<AudioFrame<'_>>;\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"
}
]
}