[INFO] cloning repository https://github.com/0xDEADBEEFC0DEBABE/FFmpeg_Rust_GUI_Automation
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/0xDEADBEEFC0DEBABE/FFmpeg_Rust_GUI_Automation" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F0xDEADBEEFC0DEBABE%2FFFmpeg_Rust_GUI_Automation", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F0xDEADBEEFC0DEBABE%2FFFmpeg_Rust_GUI_Automation'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d35f286a1568e52f61b1f5d377824d4fa3168c11
[INFO] checking 0xDEADBEEFC0DEBABE/FFmpeg_Rust_GUI_Automation against master#a2db9280539229a3b8a084a09886670a57bc7e9c for pr-147185
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F0xDEADBEEFC0DEBABE%2FFFmpeg_Rust_GUI_Automation" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:   5% (13/235)
Updating files:   6% (15/235)
Updating files:   7% (17/235)
Updating files:   7% (18/235)
Updating files:   8% (19/235)
Updating files:   9% (22/235)
Updating files:  10% (24/235)
Updating files:  11% (26/235)
Updating files:  12% (29/235)
Updating files:  13% (31/235)
Updating files:  14% (33/235)
Updating files:  15% (36/235)
Updating files:  16% (38/235)
Updating files:  17% (40/235)
Updating files:  18% (43/235)
Updating files:  19% (45/235)
Updating files:  20% (47/235)
Updating files:  21% (50/235)
Updating files:  22% (52/235)
Updating files:  23% (55/235)
Updating files:  24% (57/235)
Updating files:  25% (59/235)
Updating files:  26% (62/235)
Updating files:  27% (64/235)
Updating files:  28% (66/235)
Updating files:  29% (69/235)
Updating files:  30% (71/235)
Updating files:  31% (73/235)
Updating files:  32% (76/235)
Updating files:  33% (78/235)
Updating files:  34% (80/235)
Updating files:  35% (83/235)
Updating files:  36% (85/235)
Updating files:  37% (87/235)
Updating files:  38% (90/235)
Updating files:  39% (92/235)
Updating files:  40% (94/235)
Updating files:  41% (97/235)
Updating files:  42% (99/235)
Updating files:  43% (102/235)
Updating files:  44% (104/235)
Updating files:  45% (106/235)
Updating files:  46% (109/235)
Updating files:  47% (111/235)
Updating files:  48% (113/235)
Updating files:  49% (116/235)
Updating files:  50% (118/235)
Updating files:  51% (120/235)
Updating files:  52% (123/235)
Updating files:  53% (125/235)
Updating files:  54% (127/235)
Updating files:  55% (130/235)
Updating files:  56% (132/235)
Updating files:  57% (134/235)
Updating files:  58% (137/235)
Updating files:  59% (139/235)
Updating files:  60% (141/235)
Updating files:  61% (144/235)
Updating files:  62% (146/235)
Updating files:  63% (149/235)
Updating files:  64% (151/235)
Updating files:  65% (153/235)
Updating files:  66% (156/235)
Updating files:  67% (158/235)
Updating files:  68% (160/235)
Updating files:  69% (163/235)
Updating files:  70% (165/235)
Updating files:  71% (167/235)
Updating files:  72% (170/235)
Updating files:  73% (172/235)
Updating files:  74% (174/235)
Updating files:  75% (177/235)
Updating files:  76% (179/235)
Updating files:  77% (181/235)
Updating files:  78% (184/235)
Updating files:  79% (186/235)
Updating files:  80% (188/235)
Updating files:  81% (191/235)
Updating files:  82% (193/235)
Updating files:  83% (196/235)
Updating files:  84% (198/235)
Updating files:  85% (200/235)
Updating files:  86% (203/235)
Updating files:  87% (205/235)
Updating files:  88% (207/235)
Updating files:  89% (210/235)
Updating files:  90% (212/235)
Updating files:  91% (214/235)
Updating files:  92% (217/235)
Updating files:  93% (219/235)
Updating files:  94% (221/235)
Updating files:  95% (224/235)
Updating files:  96% (226/235)
Updating files:  97% (228/235)
Updating files:  98% (231/235)
Updating files:  99% (233/235)
Updating files: 100% (235/235)
Updating files: 100% (235/235), done.
[INFO] started tweaking git repo https://github.com/0xDEADBEEFC0DEBABE/FFmpeg_Rust_GUI_Automation
[INFO] finished tweaking git repo https://github.com/0xDEADBEEFC0DEBABE/FFmpeg_Rust_GUI_Automation
[INFO] tweaked toml for git repo https://github.com/0xDEADBEEFC0DEBABE/FFmpeg_Rust_GUI_Automation written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/0xDEADBEEFC0DEBABE/FFmpeg_Rust_GUI_Automation on toolchain a2db9280539229a3b8a084a09886670a57bc7e9c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a2db9280539229a3b8a084a09886670a57bc7e9c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/0xDEADBEEFC0DEBABE/FFmpeg_Rust_GUI_Automation already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a2db9280539229a3b8a084a09886670a57bc7e9c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded winres v0.1.12
[INFO] [stderr]   Downloaded zbus_names v4.2.0
[INFO] [stderr]   Downloaded block2 v0.6.1
[INFO] [stderr]   Downloaded zvariant_derive v5.6.0
[INFO] [stderr]   Downloaded zvariant_utils v3.2.0
[INFO] [stderr]   Downloaded async-fs v2.1.3
[INFO] [stderr]   Downloaded rfd v0.15.4
[INFO] [stderr]   Downloaded async-process v2.4.0
[INFO] [stderr]   Downloaded zvariant v5.6.0
[INFO] [stderr]   Downloaded ashpd v0.11.0
[INFO] [stderr]   Downloaded zbus_macros v5.9.0
[INFO] [stderr]   Downloaded zbus v5.9.0
[INFO] [stderr]   Downloaded nix v0.30.1
[INFO] [stderr]   Downloaded image v0.24.9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+a2db9280539229a3b8a084a09886670a57bc7e9c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 85dad738823278f2e7a2de4f49a116f0b02b3abbb77bd174db8794e5a003d182
[INFO] running `Command { std: "docker" "start" "-a" "85dad738823278f2e7a2de4f49a116f0b02b3abbb77bd174db8794e5a003d182", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "85dad738823278f2e7a2de4f49a116f0b02b3abbb77bd174db8794e5a003d182", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "85dad738823278f2e7a2de4f49a116f0b02b3abbb77bd174db8794e5a003d182", kill_on_drop: false }`
[INFO] [stdout] 85dad738823278f2e7a2de4f49a116f0b02b3abbb77bd174db8794e5a003d182
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+a2db9280539229a3b8a084a09886670a57bc7e9c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8b05fcd8135504c841b76094cbdf22f03f268de5bb453ba2f848cb56ce7402b4
[INFO] running `Command { std: "docker" "start" "-a" "8b05fcd8135504c841b76094cbdf22f03f268de5bb453ba2f848cb56ce7402b4", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.95
[INFO] [stderr]     Checking cfg-if v1.0.1
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling winnow v0.7.12
[INFO] [stderr]    Compiling hashbrown v0.15.4
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]    Compiling rustix v1.0.8
[INFO] [stderr]     Checking slab v0.4.10
[INFO] [stderr]     Checking linux-raw-sys v0.9.4
[INFO] [stderr]    Compiling zerocopy v0.8.26
[INFO] [stderr]     Checking libloading v0.8.8
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling cc v1.2.30
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]     Checking tracing-core v0.1.34
[INFO] [stderr]     Checking wayland-sys v0.31.6
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling xml-rs v0.8.27
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.9
[INFO] [stderr]    Compiling quick-xml v0.37.5
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]     Checking xcursor v0.3.10
[INFO] [stderr]     Checking cursor-icon v1.2.0
[INFO] [stderr]     Checking unicode-ident v1.0.18
[INFO] [stderr]     Checking accesskit v0.16.3
[INFO] [stderr]    Compiling indexmap v2.10.0
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]     Checking adler2 v2.0.1
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]     Checking event-listener v5.4.0
[INFO] [stderr]     Checking async-executor v1.13.2
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]    Compiling wayland-scanner v0.31.6
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking async-lock v3.4.0
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking async-broadcast v0.7.2
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]     Checking accesskit_consumer v0.24.3
[INFO] [stderr]     Checking async-fs v2.1.3
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling wayland-backend v0.3.10
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking xdg-home v1.3.0
[INFO] [stderr]     Checking nix v0.29.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking memmap2 v0.9.7
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]     Checking signal-hook-registry v1.4.5
[INFO] [stderr]    Compiling glutin_egl_sys v0.7.1
[INFO] [stderr]    Compiling glutin_glx_sys v0.6.1
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]     Checking epaint_default_fonts v0.29.1
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking owned_ttf_parser v0.25.1
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]    Compiling glutin v0.32.3
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking ab_glyph v0.2.31
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]    Compiling glutin-winit v0.5.0
[INFO] [stderr]     Checking weezl v0.1.10
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking half v2.6.0
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]    Compiling serde_json v1.0.141
[INFO] [stderr]     Checking lebe v0.5.2
[INFO] [stderr]    Compiling rfd v0.15.4
[INFO] [stderr]     Checking color_quant v1.1.0
[INFO] [stderr]     Checking glow v0.14.2
[INFO] [stderr]    Compiling anyhow v1.0.98
[INFO] [stderr]     Checking bit_field v0.10.2
[INFO] [stderr]     Checking gif v0.13.3
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking socket2 v0.6.0
[INFO] [stderr]     Checking exr v1.73.0
[INFO] [stderr]     Checking urlencoding v2.1.3
[INFO] [stderr]     Checking ryu v1.0.20
[INFO] [stderr]     Checking itoa v1.0.15
[INFO] [stderr]    Compiling ffmpeg_gui v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking bytes v1.10.1
[INFO] [stderr]     Checking pollster v0.4.0
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]    Compiling proc-macro-crate v3.3.0
[INFO] [stderr]     Checking iana-time-zone v0.1.63
[INFO] [stderr] warning: ffmpeg_gui@0.1.0: Using bundled FFmpeg executables - no static library linking required
[INFO] [stderr]     Checking uuid v1.17.0
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking x11rb v0.13.1
[INFO] [stderr]     Checking which v6.0.3
[INFO] [stderr]     Checking wayland-client v0.31.10
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking wayland-protocols v0.32.8
[INFO] [stderr]     Checking wayland-cursor v0.31.10
[INFO] [stderr]     Checking polling v3.9.0
[INFO] [stderr]     Checking arboard v3.6.0
[INFO] [stderr]     Checking async-io v2.5.0
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zvariant_utils v2.1.0
[INFO] [stderr]     Checking async-signal v0.2.12
[INFO] [stderr]     Checking async-net v2.0.0
[INFO] [stderr]     Checking async-process v2.4.0
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling zvariant_derive v4.2.0
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling bytemuck_derive v1.10.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling zbus_macros v4.4.0
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking tokio v1.47.0
[INFO] [stderr]     Checking bytemuck v1.23.1
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking emath v0.29.1
[INFO] [stderr]     Checking image v0.25.6
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking zerovec v0.11.2
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]     Checking ecolor v0.29.1
[INFO] [stderr]     Checking epaint v0.29.1
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking egui v0.29.1
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.8
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.8
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking enumflags2 v0.7.12
[INFO] [stderr]     Checking quick-xml v0.30.0
[INFO] [stderr]     Checking zvariant_utils v3.2.0
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking zvariant v4.2.0
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking webbrowser v1.0.5
[INFO] [stderr]    Compiling zvariant_derive v5.6.0
[INFO] [stderr]     Checking egui_glow v0.29.1
[INFO] [stderr]    Compiling zvariant v5.6.0
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking smithay-clipboard v0.7.2
[INFO] [stderr]     Checking winit v0.30.11
[INFO] [stderr]    Compiling zbus_names v3.0.0
[INFO] [stderr]    Compiling zbus_xml v4.0.0
[INFO] [stderr]     Checking zbus v4.4.0
[INFO] [stderr]     Checking zbus-lockstep v0.4.4
[INFO] [stderr]    Compiling zbus-lockstep-macros v0.4.4
[INFO] [stderr]     Checking zbus_names v4.2.0
[INFO] [stderr]    Compiling zbus_macros v5.9.0
[INFO] [stderr]     Checking zbus v5.9.0
[INFO] [stderr]     Checking atspi-common v0.6.0
[INFO] [stderr]     Checking atspi-proxies v0.6.0
[INFO] [stderr]     Checking accesskit_atspi_common v0.9.3
[INFO] [stderr]     Checking ashpd v0.11.0
[INFO] [stderr]     Checking atspi-connection v0.6.0
[INFO] [stderr]     Checking atspi v0.22.0
[INFO] [stderr]     Checking accesskit_unix v0.12.3
[INFO] [stderr]     Checking accesskit_winit v0.22.4
[INFO] [stderr]     Checking egui-winit v0.29.1
[INFO] [stderr]     Checking eframe v0.29.1
[INFO] [stdout] warning: unused imports: `log_debug`, `log_error`, `log_info`, and `log_warn`
[INFO] [stdout]   --> src/task_executor.rs:11:13
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::{log_debug, log_info, log_warn, log_error};
[INFO] [stdout]    |             ^^^^^^^^^  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `log_debug` and `log_info`
[INFO] [stdout]  --> src/codec_manager.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{log_debug, log_info};
[INFO] [stdout]   |             ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `log_debug` and `log_error`
[INFO] [stdout]  --> src/automation_flow.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{log_debug, log_error};
[INFO] [stdout]   |             ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `log_debug`, `log_error`, `log_info`, and `log_warn`
[INFO] [stdout]   --> src/task_executor.rs:11:13
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::{log_debug, log_info, log_warn, log_error};
[INFO] [stdout]    |             ^^^^^^^^^  ^^^^^^^^  ^^^^^^^^  ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `log_debug` and `log_info`
[INFO] [stdout]  --> src/codec_manager.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{log_debug, log_info};
[INFO] [stdout]   |             ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `log_debug` and `log_error`
[INFO] [stdout]  --> src/automation_flow.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{log_debug, log_error};
[INFO] [stdout]   |             ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `gpus` is never read
[INFO] [stdout]    --> src/hardware_detector.rs:108:13
[INFO] [stdout]     |
[INFO] [stdout] 108 |             gpus = Self::detect_gpus_simple();
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/hardware_detector.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 122 |         let mut gpus = Vec::new();
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `gpus` is never read
[INFO] [stdout]    --> src/hardware_detector.rs:108:13
[INFO] [stdout]     |
[INFO] [stdout] 108 |             gpus = Self::detect_gpus_simple();
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/hardware_detector.rs:122:13
[INFO] [stdout]     |
[INFO] [stdout] 122 |         let mut gpus = Vec::new();
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/main.rs:78:5
[INFO] [stdout]     |
[INFO] [stdout]  39 | struct FFmpegGui {
[INFO] [stdout]     |        --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  78 |     hardware_detection_started: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     dragging_node: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 105 |     dragging_offset: egui::Vec2,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 106 |     workflow_canvas_offset: egui::Vec2,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     workflow_window_pos: Option<egui::Pos2>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 111 |     workflow_window_size: Option<egui::Vec2>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 112 |     workflow_window_context: Option<eframe::egui::Context>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `refresh_hardware_cache` is never used
[INFO] [stdout]    --> src/main.rs:246:8
[INFO] [stdout]     |
[INFO] [stdout] 222 | impl FFmpegGui {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 246 |     fn refresh_hardware_cache(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `show_automation_editor_window`, `draw_connections`, `draw_single_node`, `copy_selected_node`, and `paste_node` are never used
[INFO] [stdout]     --> src/main.rs:2346:8
[INFO] [stdout]      |
[INFO] [stdout]  758 | impl FFmpegGui {
[INFO] [stdout]      | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2346 |     fn show_automation_editor_window(&mut self, ctx: &egui::Context) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2898 |     fn draw_connections(&mut self, ui: &mut egui::Ui, workflow: &automation_flow::AutomationWorkflow) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3372 |     fn draw_single_node(&mut self, ui: &mut egui::Ui, node: &automation_flow::AutomationNode) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3806 |     fn copy_selected_node(&mut self) -> Option<automation_flow::AutomationNode> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3815 |     fn paste_node(&mut self, node: &automation_flow::AutomationNode, offset: egui::Vec2) {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `progress_callback` is never read
[INFO] [stdout]   --> src/ffmpeg_worker_simple.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub struct FFmpegWorker {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 79 |     progress_callback: Option<Arc<Mutex<Box<dyn Fn(f32) + Send + Sync>>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `convert_video`, `add_hard_subtitle`, `add_soft_subtitle`, `execute_command_args`, and `set_progress_callback` are never used
[INFO] [stdout]    --> src/ffmpeg_worker_simple.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout]  82 | impl FFmpegWorker {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn convert_video(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn add_hard_subtitle(&self, video_input: &str, subtitle_input: &str, output: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn add_soft_subtitle(&self, video_input: &str, subtitle_input: &str, output: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn execute_command_args(&self, args: Vec<String>) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn set_progress_callback<F>(&mut self, callback: F)
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `ffmpeg_path`, `ffprobe_path`, and `get_version` are never used
[INFO] [stdout]    --> src/bundled_ffmpeg.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl BundledFFmpeg {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn ffmpeg_path(&self) -> &Path {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn ffprobe_path(&self) -> &Path {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn get_version(&self) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `category` is never used
[INFO] [stdout]   --> src/app_state.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl OperationType {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn category(&self, translations: &crate::language::Translations) -> String {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `estimated_total_time` is never read
[INFO] [stdout]    --> src/app_state.rs:242:9
[INFO] [stdout]     |
[INFO] [stdout] 231 | pub struct ProcessingTask {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub estimated_total_time: Option<std::time::Duration>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ProcessingTask` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_default_extension` is never used
[INFO] [stdout]    --> src/ui_components.rs:524:8
[INFO] [stdout]     |
[INFO] [stdout] 262 | impl OutputSelector {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 524 |     fn get_default_extension(operation: &OperationType) -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `show_video_codec_option` and `show_audio_codec_option` are never used
[INFO] [stdout]     --> src/ui_components.rs:991:8
[INFO] [stdout]      |
[INFO] [stdout]  545 | impl SettingsPanel {
[INFO] [stdout]      | ------------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  991 |     fn show_video_codec_option(ui: &mut egui::Ui, current_codec: &mut String, codec: &str, display_name: &str, _translations: &Translatio...
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1011 |     fn show_audio_codec_option(ui: &mut egui::Ui, current_codec: &mut String, codec: &str, display_name: &str, _translations: &Translatio...
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/language.rs:66:12
[INFO] [stdout]      |
[INFO] [stdout]   25 | impl Translations {
[INFO] [stdout]      | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]   66 |     pub fn save_project(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]   73 |     pub fn load_project(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]   87 |     pub fn show_advanced_settings(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  101 |     pub fn toggle_dark_mode(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  336 |     pub fn input_file(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  343 |     pub fn output_file(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  350 |     pub fn select_file(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  357 |     pub fn select_location(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  371 |     pub fn drop_file_here(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  393 |     pub fn codec(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  400 |     pub fn encoder(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  456 |     pub fn use_hardware_acceleration(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  477 |     pub fn volume(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  692 |     pub fn missing_files_for_subtitle(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  699 |     pub fn video_selected_subtitle_reminder(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  706 |     pub fn subtitle_file_ready(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  720 |     pub fn watermark_image_ready(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  807 |     pub fn select_files(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  814 |     pub fn drag_drop_hint(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  821 |     pub fn selected_files(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  828 |     pub fn files(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  842 |     pub fn auto_select(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  884 |     pub fn width_height(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  898 |     pub fn keep_original_quality(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  983 |     pub fn subtitle_file(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1012 |     pub fn watermark_file(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1140 |     pub fn select_file_button(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1334 |     pub fn codec_auto(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1348 |     pub fn keep_original(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1355 |     pub fn sample_rate_44_1(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1362 |     pub fn sample_rate_48(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1369 |     pub fn sample_rate_96(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1376 |     pub fn high_quality_hint(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1384 |     pub fn audio_files(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1406 |     pub fn lossless(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1413 |     pub fn copy_stream(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1420 |     pub fn no_reencoding(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1579 |     pub fn gif_settings(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1629 |     pub fn codec_category_h264_family(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1636 |     pub fn codec_category_h265_family(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1643 |     pub fn codec_category_vp8vp9_family(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1650 |     pub fn codec_category_av1_family(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1657 |     pub fn codec_category_hardware_encoders(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1664 |     pub fn codec_category_legacy_video(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1671 |     pub fn codec_category_high_quality_audio(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1678 |     pub fn codec_category_compressed_audio(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1685 |     pub fn codec_category_lossless_audio(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1692 |     pub fn codec_category_speech_codecs(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1699 |     pub fn codec_category_legacy_audio(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1706 |     pub fn format_category_modern_video(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1713 |     pub fn format_category_web_optimized(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1720 |     pub fn format_category_professional(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1727 |     pub fn format_category_legacy_video(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1734 |     pub fn format_category_high_quality_audio(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1741 |     pub fn format_category_compressed_audio(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1748 |     pub fn format_category_lossless_audio(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1755 |     pub fn format_category_specialized(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1769 |     pub fn hardware_not_supported(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1776 |     pub fn codec_not_compatible_with_format(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `has_audio_stream`, `add_hardware_acceleration_args`, and `calculate_target_bitrate` are never used
[INFO] [stdout]     --> src/task_executor.rs:848:8
[INFO] [stdout]      |
[INFO] [stdout]   30 | impl TaskExecutor {
[INFO] [stdout]      | ----------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  848 |     fn has_audio_stream(input_file: &str) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1114 |     fn add_hardware_acceleration_args(cmd: &mut Command, codec: &str, use_hw_accel: bool) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1148 |     fn calculate_target_bitrate(input_file: &str, target_size_mb: i32) -> Result<i32> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CodecInfo` is never constructed
[INFO] [stdout]   --> src/codec_manager.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct CodecInfo {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `extension`, `display_name`, `preferred_audio_codecs`, and `container_features` are never read
[INFO] [stdout]   --> src/codec_manager.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct FormatInfo {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 26 |     pub extension: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 27 |     pub display_name: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 28 |     pub preferred_audio_codecs: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 29 |     pub preferred_video_codecs: Vec<String>,
[INFO] [stdout] 30 |     pub container_features: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FormatInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]     --> src/codec_manager.rs:35:12
[INFO] [stdout]      |
[INFO] [stdout]   33 | impl CodecManager {
[INFO] [stdout]      | ----------------- associated functions in this implementation
[INFO] [stdout]   34 |     /// Get all supported audio encoders
[INFO] [stdout]   35 |     pub fn get_audio_codecs() -> HashMap<String, CodecInfo> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  305 |     pub fn get_video_codecs() -> HashMap<String, CodecInfo> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1071 |     pub fn validate_sample_rate(codec: &str, sample_rate: u32) -> Result<u32> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1094 |     pub fn validate_bitrate(codec: &str, bitrate: &str) -> Result<String> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1119 |     pub fn detect_available_codecs() -> Result<Vec<String>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1153 |     fn get_hardware_encoders_by_detection() -> Vec<&'static str> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1181 |     fn has_nvidia_gpu() -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1192 |     fn has_amd_gpu() -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1203 |     fn has_intel_gpu() -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1214 |     fn get_platform_hardware_encoders() -> Vec<&'static str> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1463 |     pub fn get_audio_codec_description(codec: &str) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1491 |     pub fn get_video_codec_description(codec: &str) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1536 |     pub fn get_codec_quality_rating(codec: &str, is_audio: bool) -> u8 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1566 |     pub fn get_codec_speed_rating(codec: &str, is_audio: bool) -> u8 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1597 |     pub fn recommend_hardware_codec(software_codec: &str, output_format: &str) -> Option<String> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1677 |     pub fn is_hardware_encoder(codec: &str) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_formats_by_category` and `get_codecs_by_category` are never used
[INFO] [stdout]     --> src/comprehensive_codec_registry.rs:1182:12
[INFO] [stdout]      |
[INFO] [stdout]  100 | impl ComprehensiveCodecRegistry {
[INFO] [stdout]      | ------------------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1182 |     pub fn get_formats_by_category() -> HashMap<FormatCategory, Vec<String>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1196 |     pub fn get_codecs_by_category() -> HashMap<CodecCategory, Vec<String>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/comprehensive_ui_components.rs:483:8
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl ComprehensiveUIComponents {
[INFO] [stdout]     | ------------------------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 483 |     fn group_codecs_by_category(codecs: &HashMap<String, CodecInfo>) -> Vec<(CodecCategory, Vec<String>)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 504 |     fn group_formats_by_category(formats: &HashMap<String, FormatInfo>, purpose: FormatPurpose) -> Vec<(FormatCategory, Vec<String>)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 567 |     fn show_format_option(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 627 |     fn show_format_info_panel(ui: &mut egui::Ui, format_info: &FormatInfo, _translations: &Translations) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 656 |     fn show_format_codec_compatibility_info(ui: &mut egui::Ui, current_format: &str, _translations: &Translations) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 714 |     fn get_category_display_name(category: &CodecCategory, translations: &Translations) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 734 |     fn get_format_category_display_name(category: &FormatCategory, translations: &Translations) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 751 |     fn get_category_priority(category: &CodecCategory) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 771 |     fn get_format_category_priority(category: &FormatCategory) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 788 |     fn format_matches_purpose(format_info: &FormatInfo, purpose: FormatPurpose) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_compatible_formats` and `get_compatible_codecs` are never used
[INFO] [stdout]    --> src/comprehensive_command_builder.rs:387:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl ComprehensiveCommandBuilder {
[INFO] [stdout]     | -------------------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 387 |     pub fn get_compatible_formats(codec: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     pub fn get_compatible_codecs(format: &str, codec_type: CodecType) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `create_custom_preset`, `save_custom_preset`, `load_custom_preset`, and `validate_preset` are never used
[INFO] [stdout]    --> src/preset_manager.rs:386:12
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 386 |     pub fn create_custom_preset(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     pub fn save_custom_preset(preset: &EncodingPreset, filename: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 408 |     pub fn load_custom_preset(filename: &str) -> Result<EncodingPreset> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 414 |     pub fn validate_preset(preset: &EncodingPreset) -> Result<Vec<String>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `parse_csv_line` and `get_cached_hardware_info` are never used
[INFO] [stdout]    --> src/hardware_detector.rs:391:8
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl HardwareDetector {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 391 |     fn parse_csv_line(line: &str) -> Vec<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 713 |     pub fn get_cached_hardware_info() -> HardwareInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_input_port_position` and `get_output_port_position` are never used
[INFO] [stdout]     --> src/automation_flow.rs:1757:12
[INFO] [stdout]      |
[INFO] [stdout] 1030 | impl AutomationNode {
[INFO] [stdout]      | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1757 |     pub fn get_input_port_position(&self, port_index: usize) -> Option<Pos2> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1767 |     pub fn get_output_port_position(&self, port_index: usize) -> Option<Pos2> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Cancelled` is never constructed
[INFO] [stdout]     --> src/automation_flow.rs:2553:5
[INFO] [stdout]      |
[INFO] [stdout] 2548 | pub enum ExecutionStatus {
[INFO] [stdout]      |          --------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 2553 |     Cancelled,
[INFO] [stdout]      |     ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `ExecutionStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `execution_time` is never read
[INFO] [stdout]     --> src/automation_flow.rs:2563:9
[INFO] [stdout]      |
[INFO] [stdout] 2558 | pub struct NodeExecutionResult {
[INFO] [stdout]      |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2563 |     pub execution_time: std::time::Duration,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `NodeExecutionResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/automation_flow.rs:2595:12
[INFO] [stdout]      |
[INFO] [stdout] 2579 | impl WorkflowExecutor {
[INFO] [stdout]      | --------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2595 |     pub fn new_with_hardware_cache(hardware_encoders: Vec<String>) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 4719 |     pub fn cancel_execution(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 4765 |     pub fn copy_output_to_destination(&self, temp_file_path: &str, destination_path: &str) -> Result<(), String> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 4779 |     pub fn cleanup_temp_files(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 4789 |     pub fn get_progress_percentage(&self) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 5325 |     pub fn get_execution_summary(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 5346 |     fn generate_output_file_for_node(&self, node: &AutomationNode, input_file: &str, default_ext: &str) -> Result<String, String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 5633 |     fn validate_input_file(&self, file_path: &str) -> Result<(), String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 5663 |     fn validate_output_path(&self, file_path: &str) -> Result<(), String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/main.rs:78:5
[INFO] [stdout]     |
[INFO] [stdout]  39 | struct FFmpegGui {
[INFO] [stdout]     |        --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  78 |     hardware_detection_started: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     dragging_node: Option<String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 105 |     dragging_offset: egui::Vec2,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 106 |     workflow_canvas_offset: egui::Vec2,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     workflow_window_pos: Option<egui::Pos2>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 111 |     workflow_window_size: Option<egui::Vec2>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 112 |     workflow_window_context: Option<eframe::egui::Context>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `refresh_hardware_cache` is never used
[INFO] [stdout]    --> src/main.rs:246:8
[INFO] [stdout]     |
[INFO] [stdout] 222 | impl FFmpegGui {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 246 |     fn refresh_hardware_cache(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `show_automation_editor_window`, `draw_connections`, `draw_single_node`, `copy_selected_node`, and `paste_node` are never used
[INFO] [stdout]     --> src/main.rs:2346:8
[INFO] [stdout]      |
[INFO] [stdout]  758 | impl FFmpegGui {
[INFO] [stdout]      | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2346 |     fn show_automation_editor_window(&mut self, ctx: &egui::Context) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2898 |     fn draw_connections(&mut self, ui: &mut egui::Ui, workflow: &automation_flow::AutomationWorkflow) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3372 |     fn draw_single_node(&mut self, ui: &mut egui::Ui, node: &automation_flow::AutomationNode) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3806 |     fn copy_selected_node(&mut self) -> Option<automation_flow::AutomationNode> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 3815 |     fn paste_node(&mut self, node: &automation_flow::AutomationNode, offset: egui::Vec2) {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `progress_callback` is never read
[INFO] [stdout]   --> src/ffmpeg_worker_simple.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub struct FFmpegWorker {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 79 |     progress_callback: Option<Arc<Mutex<Box<dyn Fn(f32) + Send + Sync>>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `convert_video`, `add_hard_subtitle`, `add_soft_subtitle`, `execute_command_args`, and `set_progress_callback` are never used
[INFO] [stdout]    --> src/ffmpeg_worker_simple.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout]  82 | impl FFmpegWorker {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn convert_video(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn add_hard_subtitle(&self, video_input: &str, subtitle_input: &str, output: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn add_soft_subtitle(&self, video_input: &str, subtitle_input: &str, output: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn execute_command_args(&self, args: Vec<String>) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn set_progress_callback<F>(&mut self, callback: F)
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `ffmpeg_path`, `ffprobe_path`, and `get_version` are never used
[INFO] [stdout]    --> src/bundled_ffmpeg.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl BundledFFmpeg {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn ffmpeg_path(&self) -> &Path {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn ffprobe_path(&self) -> &Path {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn get_version(&self) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `category` is never used
[INFO] [stdout]   --> src/app_state.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl OperationType {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn category(&self, translations: &crate::language::Translations) -> String {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `estimated_total_time` is never read
[INFO] [stdout]    --> src/app_state.rs:242:9
[INFO] [stdout]     |
[INFO] [stdout] 231 | pub struct ProcessingTask {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub estimated_total_time: Option<std::time::Duration>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ProcessingTask` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_default_extension` is never used
[INFO] [stdout]    --> src/ui_components.rs:524:8
[INFO] [stdout]     |
[INFO] [stdout] 262 | impl OutputSelector {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 524 |     fn get_default_extension(operation: &OperationType) -> &'static str {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `show_video_codec_option` and `show_audio_codec_option` are never used
[INFO] [stdout]     --> src/ui_components.rs:991:8
[INFO] [stdout]      |
[INFO] [stdout]  545 | impl SettingsPanel {
[INFO] [stdout]      | ------------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  991 |     fn show_video_codec_option(ui: &mut egui::Ui, current_codec: &mut String, codec: &str, display_name: &str, _translations: &Translatio...
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1011 |     fn show_audio_codec_option(ui: &mut egui::Ui, current_codec: &mut String, codec: &str, display_name: &str, _translations: &Translatio...
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/language.rs:66:12
[INFO] [stdout]      |
[INFO] [stdout]   25 | impl Translations {
[INFO] [stdout]      | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]   66 |     pub fn save_project(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]   73 |     pub fn load_project(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]   87 |     pub fn show_advanced_settings(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  101 |     pub fn toggle_dark_mode(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  336 |     pub fn input_file(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  343 |     pub fn output_file(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  350 |     pub fn select_file(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  357 |     pub fn select_location(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  371 |     pub fn drop_file_here(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  393 |     pub fn codec(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  400 |     pub fn encoder(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  456 |     pub fn use_hardware_acceleration(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  477 |     pub fn volume(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  692 |     pub fn missing_files_for_subtitle(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  699 |     pub fn video_selected_subtitle_reminder(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  706 |     pub fn subtitle_file_ready(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  720 |     pub fn watermark_image_ready(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  807 |     pub fn select_files(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  814 |     pub fn drag_drop_hint(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  821 |     pub fn selected_files(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  828 |     pub fn files(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  842 |     pub fn auto_select(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  884 |     pub fn width_height(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  898 |     pub fn keep_original_quality(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  983 |     pub fn subtitle_file(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1012 |     pub fn watermark_file(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1140 |     pub fn select_file_button(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1334 |     pub fn codec_auto(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1348 |     pub fn keep_original(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1355 |     pub fn sample_rate_44_1(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1362 |     pub fn sample_rate_48(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1369 |     pub fn sample_rate_96(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1376 |     pub fn high_quality_hint(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1384 |     pub fn audio_files(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1406 |     pub fn lossless(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1413 |     pub fn copy_stream(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1420 |     pub fn no_reencoding(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1579 |     pub fn gif_settings(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1629 |     pub fn codec_category_h264_family(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1636 |     pub fn codec_category_h265_family(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1643 |     pub fn codec_category_vp8vp9_family(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1650 |     pub fn codec_category_av1_family(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1657 |     pub fn codec_category_hardware_encoders(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1664 |     pub fn codec_category_legacy_video(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1671 |     pub fn codec_category_high_quality_audio(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1678 |     pub fn codec_category_compressed_audio(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1685 |     pub fn codec_category_lossless_audio(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1692 |     pub fn codec_category_speech_codecs(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1699 |     pub fn codec_category_legacy_audio(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1706 |     pub fn format_category_modern_video(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1713 |     pub fn format_category_web_optimized(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1720 |     pub fn format_category_professional(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1727 |     pub fn format_category_legacy_video(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1734 |     pub fn format_category_high_quality_audio(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1741 |     pub fn format_category_compressed_audio(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1748 |     pub fn format_category_lossless_audio(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1755 |     pub fn format_category_specialized(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1769 |     pub fn hardware_not_supported(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1776 |     pub fn codec_not_compatible_with_format(&self) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `has_audio_stream`, `add_hardware_acceleration_args`, and `calculate_target_bitrate` are never used
[INFO] [stdout]     --> src/task_executor.rs:848:8
[INFO] [stdout]      |
[INFO] [stdout]   30 | impl TaskExecutor {
[INFO] [stdout]      | ----------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  848 |     fn has_audio_stream(input_file: &str) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1114 |     fn add_hardware_acceleration_args(cmd: &mut Command, codec: &str, use_hw_accel: bool) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1148 |     fn calculate_target_bitrate(input_file: &str, target_size_mb: i32) -> Result<i32> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CodecInfo` is never constructed
[INFO] [stdout]   --> src/codec_manager.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct CodecInfo {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `extension`, `display_name`, `preferred_audio_codecs`, and `container_features` are never read
[INFO] [stdout]   --> src/codec_manager.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct FormatInfo {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 26 |     pub extension: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 27 |     pub display_name: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 28 |     pub preferred_audio_codecs: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 29 |     pub preferred_video_codecs: Vec<String>,
[INFO] [stdout] 30 |     pub container_features: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FormatInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]     --> src/codec_manager.rs:35:12
[INFO] [stdout]      |
[INFO] [stdout]   33 | impl CodecManager {
[INFO] [stdout]      | ----------------- associated functions in this implementation
[INFO] [stdout]   34 |     /// Get all supported audio encoders
[INFO] [stdout]   35 |     pub fn get_audio_codecs() -> HashMap<String, CodecInfo> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  305 |     pub fn get_video_codecs() -> HashMap<String, CodecInfo> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1071 |     pub fn validate_sample_rate(codec: &str, sample_rate: u32) -> Result<u32> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1094 |     pub fn validate_bitrate(codec: &str, bitrate: &str) -> Result<String> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1119 |     pub fn detect_available_codecs() -> Result<Vec<String>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1153 |     fn get_hardware_encoders_by_detection() -> Vec<&'static str> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1181 |     fn has_nvidia_gpu() -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1192 |     fn has_amd_gpu() -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1203 |     fn has_intel_gpu() -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1214 |     fn get_platform_hardware_encoders() -> Vec<&'static str> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1463 |     pub fn get_audio_codec_description(codec: &str) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1491 |     pub fn get_video_codec_description(codec: &str) -> &'static str {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1536 |     pub fn get_codec_quality_rating(codec: &str, is_audio: bool) -> u8 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1566 |     pub fn get_codec_speed_rating(codec: &str, is_audio: bool) -> u8 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1597 |     pub fn recommend_hardware_codec(software_codec: &str, output_format: &str) -> Option<String> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1677 |     pub fn is_hardware_encoder(codec: &str) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_formats_by_category` and `get_codecs_by_category` are never used
[INFO] [stdout]     --> src/comprehensive_codec_registry.rs:1182:12
[INFO] [stdout]      |
[INFO] [stdout]  100 | impl ComprehensiveCodecRegistry {
[INFO] [stdout]      | ------------------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1182 |     pub fn get_formats_by_category() -> HashMap<FormatCategory, Vec<String>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1196 |     pub fn get_codecs_by_category() -> HashMap<CodecCategory, Vec<String>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/comprehensive_ui_components.rs:483:8
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl ComprehensiveUIComponents {
[INFO] [stdout]     | ------------------------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 483 |     fn group_codecs_by_category(codecs: &HashMap<String, CodecInfo>) -> Vec<(CodecCategory, Vec<String>)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 504 |     fn group_formats_by_category(formats: &HashMap<String, FormatInfo>, purpose: FormatPurpose) -> Vec<(FormatCategory, Vec<String>)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 567 |     fn show_format_option(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 627 |     fn show_format_info_panel(ui: &mut egui::Ui, format_info: &FormatInfo, _translations: &Translations) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 656 |     fn show_format_codec_compatibility_info(ui: &mut egui::Ui, current_format: &str, _translations: &Translations) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 714 |     fn get_category_display_name(category: &CodecCategory, translations: &Translations) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 734 |     fn get_format_category_display_name(category: &FormatCategory, translations: &Translations) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 751 |     fn get_category_priority(category: &CodecCategory) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 771 |     fn get_format_category_priority(category: &FormatCategory) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 788 |     fn format_matches_purpose(format_info: &FormatInfo, purpose: FormatPurpose) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `get_compatible_formats` and `get_compatible_codecs` are never used
[INFO] [stdout]    --> src/comprehensive_command_builder.rs:387:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl ComprehensiveCommandBuilder {
[INFO] [stdout]     | -------------------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 387 |     pub fn get_compatible_formats(codec: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     pub fn get_compatible_codecs(format: &str, codec_type: CodecType) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `create_custom_preset`, `save_custom_preset`, `load_custom_preset`, and `validate_preset` are never used
[INFO] [stdout]    --> src/preset_manager.rs:386:12
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl PresetManager {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 386 |     pub fn create_custom_preset(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     pub fn save_custom_preset(preset: &EncodingPreset, filename: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 408 |     pub fn load_custom_preset(filename: &str) -> Result<EncodingPreset> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 414 |     pub fn validate_preset(preset: &EncodingPreset) -> Result<Vec<String>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `parse_csv_line` and `get_cached_hardware_info` are never used
[INFO] [stdout]    --> src/hardware_detector.rs:391:8
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl HardwareDetector {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 391 |     fn parse_csv_line(line: &str) -> Vec<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 713 |     pub fn get_cached_hardware_info() -> HardwareInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_input_port_position` and `get_output_port_position` are never used
[INFO] [stdout]     --> src/automation_flow.rs:1757:12
[INFO] [stdout]      |
[INFO] [stdout] 1030 | impl AutomationNode {
[INFO] [stdout]      | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1757 |     pub fn get_input_port_position(&self, port_index: usize) -> Option<Pos2> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1767 |     pub fn get_output_port_position(&self, port_index: usize) -> Option<Pos2> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Cancelled` is never constructed
[INFO] [stdout]     --> src/automation_flow.rs:2553:5
[INFO] [stdout]      |
[INFO] [stdout] 2548 | pub enum ExecutionStatus {
[INFO] [stdout]      |          --------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 2553 |     Cancelled,
[INFO] [stdout]      |     ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `ExecutionStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `execution_time` is never read
[INFO] [stdout]     --> src/automation_flow.rs:2563:9
[INFO] [stdout]      |
[INFO] [stdout] 2558 | pub struct NodeExecutionResult {
[INFO] [stdout]      |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2563 |     pub execution_time: std::time::Duration,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `NodeExecutionResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/automation_flow.rs:2595:12
[INFO] [stdout]      |
[INFO] [stdout] 2579 | impl WorkflowExecutor {
[INFO] [stdout]      | --------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2595 |     pub fn new_with_hardware_cache(hardware_encoders: Vec<String>) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 4719 |     pub fn cancel_execution(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 4765 |     pub fn copy_output_to_destination(&self, temp_file_path: &str, destination_path: &str) -> Result<(), String> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 4779 |     pub fn cleanup_temp_files(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 4789 |     pub fn get_progress_percentage(&self) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 5325 |     pub fn get_execution_summary(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 5346 |     fn generate_output_file_for_node(&self, node: &AutomationNode, input_file: &str, default_ext: &str) -> Result<String, String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 5633 |     fn validate_input_file(&self, file_path: &str) -> Result<(), String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 5663 |     fn validate_output_path(&self, file_path: &str) -> Result<(), String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Ui::small_button` that must be used
[INFO] [stdout]    --> src/comprehensive_ui_components.rs:555:21
[INFO] [stdout]     |
[INFO] [stdout] 555 |                     ui.small_button("⚡ HW");
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: You should check if the user clicked this with `if ui.small_button(…).clicked() { … } 
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 555 |                     let _ = ui.small_button("⚡ HW");
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Ui::small_button` that must be used
[INFO] [stdout]    --> src/comprehensive_ui_components.rs:558:21
[INFO] [stdout]     |
[INFO] [stdout] 558 |                     ui.small_button("📊 VBR");
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: You should check if the user clicked this with `if ui.small_button(…).clicked() { … } 
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 558 |                     let _ = ui.small_button("📊 VBR");
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Ui::small_button` that must be used
[INFO] [stdout]    --> src/comprehensive_ui_components.rs:561:21
[INFO] [stdout]     |
[INFO] [stdout] 561 |                     ui.small_button("💎 Lossless");
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: You should check if the user clicked this with `if ui.small_button(…).clicked() { … } 
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 561 |                     let _ = ui.small_button("💎 Lossless");
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Ui::small_button` that must be used
[INFO] [stdout]    --> src/comprehensive_ui_components.rs:591:17
[INFO] [stdout]     |
[INFO] [stdout] 591 |                 ui.small_button("📝 Subs");
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: You should check if the user clicked this with `if ui.small_button(…).clicked() { … } 
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 591 |                 let _ = ui.small_button("📝 Subs");
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Ui::small_button` that must be used
[INFO] [stdout]    --> src/comprehensive_ui_components.rs:594:17
[INFO] [stdout]     |
[INFO] [stdout] 594 |                 ui.small_button("📚 Chapters");
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: You should check if the user clicked this with `if ui.small_button(…).clicked() { … } 
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 594 |                 let _ = ui.small_button("📚 Chapters");
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Ui::small_button` that must be used
[INFO] [stdout]    --> src/comprehensive_ui_components.rs:597:17
[INFO] [stdout]     |
[INFO] [stdout] 597 |                 ui.small_button("📎 Attachments");
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: You should check if the user clicked this with `if ui.small_button(…).clicked() { … } 
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 597 |                 let _ = ui.small_button("📎 Attachments");
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Ui::small_button` that must be used
[INFO] [stdout]    --> src/comprehensive_ui_components.rs:555:21
[INFO] [stdout]     |
[INFO] [stdout] 555 |                     ui.small_button("⚡ HW");
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: You should check if the user clicked this with `if ui.small_button(…).clicked() { … } 
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 555 |                     let _ = ui.small_button("⚡ HW");
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Ui::small_button` that must be used
[INFO] [stdout]    --> src/comprehensive_ui_components.rs:558:21
[INFO] [stdout]     |
[INFO] [stdout] 558 |                     ui.small_button("📊 VBR");
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: You should check if the user clicked this with `if ui.small_button(…).clicked() { … } 
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 558 |                     let _ = ui.small_button("📊 VBR");
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Ui::small_button` that must be used
[INFO] [stdout]    --> src/comprehensive_ui_components.rs:561:21
[INFO] [stdout]     |
[INFO] [stdout] 561 |                     ui.small_button("💎 Lossless");
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: You should check if the user clicked this with `if ui.small_button(…).clicked() { … } 
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 561 |                     let _ = ui.small_button("💎 Lossless");
[INFO] [stdout]     |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Ui::small_button` that must be used
[INFO] [stdout]    --> src/comprehensive_ui_components.rs:591:17
[INFO] [stdout]     |
[INFO] [stdout] 591 |                 ui.small_button("📝 Subs");
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: You should check if the user clicked this with `if ui.small_button(…).clicked() { … } 
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 591 |                 let _ = ui.small_button("📝 Subs");
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Ui::small_button` that must be used
[INFO] [stdout]    --> src/comprehensive_ui_components.rs:594:17
[INFO] [stdout]     |
[INFO] [stdout] 594 |                 ui.small_button("📚 Chapters");
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: You should check if the user clicked this with `if ui.small_button(…).clicked() { … } 
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 594 |                 let _ = ui.small_button("📚 Chapters");
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Ui::small_button` that must be used
[INFO] [stdout]    --> src/comprehensive_ui_components.rs:597:17
[INFO] [stdout]     |
[INFO] [stdout] 597 |                 ui.small_button("📎 Attachments");
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: You should check if the user clicked this with `if ui.small_button(…).clicked() { … } 
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 597 |                 let _ = ui.small_button("📎 Attachments");
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 46s
[INFO] running `Command { std: "docker" "inspect" "8b05fcd8135504c841b76094cbdf22f03f268de5bb453ba2f848cb56ce7402b4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8b05fcd8135504c841b76094cbdf22f03f268de5bb453ba2f848cb56ce7402b4", kill_on_drop: false }`
[INFO] [stdout] 8b05fcd8135504c841b76094cbdf22f03f268de5bb453ba2f848cb56ce7402b4
