[INFO] cloning repository https://github.com/annasba07/clicky-windows
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/annasba07/clicky-windows" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fannasba07%2Fclicky-windows", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fannasba07%2Fclicky-windows'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 9d206a9ede5e8d3a6796f3e3ba7024e2cb4bab6a
[INFO] checking annasba07/clicky-windows against master#df1ae0f7dd168513de2d89beb2cb7a95d4fdc118 for pr-159343
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fannasba07%2Fclicky-windows" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-5-tc1/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/annasba07/clicky-windows
[INFO] finished tweaking git repo https://github.com/annasba07/clicky-windows
[INFO] tweaked toml for git repo https://github.com/annasba07/clicky-windows written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/annasba07/clicky-windows on toolchain df1ae0f7dd168513de2d89beb2cb7a95d4fdc118
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+df1ae0f7dd168513de2d89beb2cb7a95d4fdc118" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/annasba07/clicky-windows 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" "+df1ae0f7dd168513de2d89beb2cb7a95d4fdc118" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded symphonia-bundle-mp3 v0.5.5
[INFO] [stderr]   Downloaded ringbuf v0.4.8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] f3f94b567475d7523945e461e38ce22c4dcde0032b08d1c384a6a88c7c330831
[INFO] running `Command { std: "docker" "start" "f3f94b567475d7523945e461e38ce22c4dcde0032b08d1c384a6a88c7c330831", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f3f94b567475d7523945e461e38ce22c4dcde0032b08d1c384a6a88c7c330831", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f3f94b567475d7523945e461e38ce22c4dcde0032b08d1c384a6a88c7c330831" "/opt/rustwide/cargo-home/bin/cargo" "+df1ae0f7dd168513de2d89beb2cb7a95d4fdc118" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f3f94b567475d7523945e461e38ce22c4dcde0032b08d1c384a6a88c7c330831", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f3f94b567475d7523945e461e38ce22c4dcde0032b08d1c384a6a88c7c330831" "/opt/rustwide/cargo-home/bin/cargo" "+df1ae0f7dd168513de2d89beb2cb7a95d4fdc118" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling cc v1.2.59
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]     Checking mio v1.2.0
[INFO] [stderr]     Checking socket2 v0.6.3
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking rustls-pki-types v1.14.0
[INFO] [stderr]     Checking hashbrown v0.17.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]     Checking symphonia-core v0.5.5
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking simd-adler32 v0.3.9
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]    Compiling openssl v0.10.76
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking indexmap v2.14.0
[INFO] [stderr]     Checking tokio v1.51.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking as-slice v0.2.1
[INFO] [stderr]    Compiling built v0.8.0
[INFO] [stderr]    Compiling winnow v1.0.1
[INFO] [stderr]    Compiling av-scenechange v0.14.1
[INFO] [stderr]     Checking aligned v0.4.3
[INFO] [stderr]     Checking webpki-roots v1.0.6
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling profiling-procmacros v1.0.17
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]    Compiling rav1e v0.8.1
[INFO] [stderr]     Checking symphonia-metadata v0.5.5
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking core2 v0.4.0
[INFO] [stderr]     Checking y4m v0.8.0
[INFO] [stderr]     Checking regex-syntax v0.8.10
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]    Compiling pastey v0.1.1
[INFO] [stderr]     Checking symphonia-utils-xiph v0.5.5
[INFO] [stderr]     Checking bitstream-io v4.9.0
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling openssl-sys v0.9.112
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]     Checking zerofrom v0.1.7
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking yoke v0.8.2
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]    Compiling fax_derive v0.2.0
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]     Checking zune-core v0.5.1
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling toml_datetime v0.7.5+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking weezl v0.1.12
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking imgref v1.12.0
[INFO] [stderr]     Checking fax v0.2.6
[INFO] [stderr]     Checking zune-jpeg v0.5.15
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]    Compiling toml v0.9.12+spec-1.1.0
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking avif-serialize v0.8.8
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking bit_field v0.10.3
[INFO] [stderr]     Checking iri-string v0.7.12
[INFO] [stderr]     Checking rgb v0.8.53
[INFO] [stderr]     Checking data-encoding v2.10.0
[INFO] [stderr]     Checking lebe v0.5.3
[INFO] [stderr]     Checking pxfm v0.1.28
[INFO] [stderr]     Checking extended v0.1.0
[INFO] [stderr]     Checking gif v0.14.2
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking symphonia-format-riff v0.5.5
[INFO] [stderr]     Checking alsa v0.9.1
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking av1-grain v0.2.5
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking image-webp v0.2.4
[INFO] [stderr]     Checking png v0.18.1
[INFO] [stderr]    Compiling embed-resource v3.0.8
[INFO] [stderr]     Checking symphonia-format-ogg v0.5.5
[INFO] [stderr]     Checking symphonia-bundle-flac v0.5.5
[INFO] [stderr]     Checking symphonia-codec-vorbis v0.5.5
[INFO] [stderr]     Checking symphonia-format-mkv v0.5.5
[INFO] [stderr]     Checking symphonia-bundle-mp3 v0.5.5
[INFO] [stderr]    Compiling clicky v0.1.0 (/opt/rustwide/workdir/app)
[INFO] [stderr]     Checking symphonia-codec-pcm v0.5.5
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stdout] warning: unused `CompilationResult` that must be used
[INFO] [stdout]  --> app/build.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     embed_resource::compile("app.manifest", embed_resource::NONE);
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[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] 4 |     let _ = embed_resource::compile("app.manifest", embed_resource::NONE);
[INFO] [stdout]   |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking symphonia-codec-adpcm v0.5.5
[INFO] [stderr]     Checking webpki-roots v0.26.11
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking cpal v0.15.3
[INFO] [stderr]     Checking ringbuf v0.4.8
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking h2 v0.4.13
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking symphonia v0.5.5
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking eventsource-stream v0.2.3
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking tiff v0.11.3
[INFO] [stderr]     Checking exr v1.74.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking rustls-webpki v0.103.10
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking hyper v1.9.0
[INFO] [stderr]     Checking ravif v0.13.0
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking tungstenite v0.24.0
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking tokio-tungstenite v0.24.0
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> app/src/audio/capture.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::Arc;
[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 import: `warn`
[INFO] [stdout]   --> app/src/audio/capture.rs:13:28
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tracing::{error, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> app/src/claude.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 | use tracing::{error, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> app/src/hotkey.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{error, info};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]  --> app/src/screen_capture.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> app/src/tray.rs:5:15
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tracing::{error, info};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> app/src/tts.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{error, info};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CompanionState`
[INFO] [stdout]   --> app/src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     CompanionState, ConversationExchange, VoiceState, create_shared_companion_state,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> app/src/audio/capture.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::Arc;
[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 import: `warn`
[INFO] [stdout]   --> app/src/audio/capture.rs:13:28
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tracing::{error, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> app/src/claude.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 | use tracing::{error, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> app/src/hotkey.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{error, info};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]  --> app/src/screen_capture.rs:7:15
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> app/src/tray.rs:5:15
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tracing::{error, info};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> app/src/tts.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{error, info};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CompanionState`
[INFO] [stdout]   --> app/src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     CompanionState, ConversationExchange, VoiceState, create_shared_companion_state,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `begin_message`
[INFO] [stdout]   --> app/src/transcription/assemblyai.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |     let begin_message = timeout(session_begin_timeout, async {
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_begin_message`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `transcription_task`
[INFO] [stdout]    --> app/src/main.rs:232:9
[INFO] [stdout]     |
[INFO] [stdout] 232 |     let transcription_task = tokio::spawn(async move {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_transcription_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TARGET_CHANNELS` is never used
[INFO] [stdout]   --> app/src/audio/convert.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const TARGET_CHANNELS: u16 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `provider` is never read
[INFO] [stdout]   --> app/src/config.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct TranscriptionConfig {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub provider: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TranscriptionConfig` 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: method `analytics_enabled` is never used
[INFO] [stdout]    --> app/src/config.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout]  51 | impl ClickyConfig {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn analytics_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_point_on_monitor` is never used
[INFO] [stdout]   --> app/src/coords.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn is_point_on_monitor(point: ScreenPoint, screen_capture: &ScreenCapture) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ClickyError` is never used
[INFO] [stdout]  --> app/src/errors.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum ClickyError {
[INFO] [stdout]   |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Pressed` is never constructed
[INFO] [stdout]   --> app/src/hotkey.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum PushToTalkEvent {
[INFO] [stdout]    |          --------------- variant in this enum
[INFO] [stdout]  9 |     /// The Ctrl+Alt combination was pressed (both keys now held).
[INFO] [stdout] 10 |     Pressed,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PushToTalkEvent` 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: constant `VK_CONTROL` is never used
[INFO] [stdout]   --> app/src/hotkey.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const VK_CONTROL: u32 = 0x11;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VK_LCONTROL` is never used
[INFO] [stdout]   --> app/src/hotkey.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const VK_LCONTROL: u32 = 0xA2;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VK_RCONTROL` is never used
[INFO] [stdout]   --> app/src/hotkey.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const VK_RCONTROL: u32 = 0xA3;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VK_MENU` is never used
[INFO] [stdout]   --> app/src/hotkey.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const VK_MENU: u32 = 0x12;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VK_LMENU` is never used
[INFO] [stdout]   --> app/src/hotkey.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const VK_LMENU: u32 = 0xA4;
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VK_RMENU` is never used
[INFO] [stdout]   --> app/src/hotkey.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const VK_RMENU: u32 = 0xA5;
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> app/src/overlay/mod.rs:29:19
[INFO] [stdout]    |
[INFO] [stdout] 29 |     SetVoiceState(crate::state::VoiceState),
[INFO] [stdout]    |     ------------- ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OverlayCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 29 -     SetVoiceState(crate::state::VoiceState),
[INFO] [stdout] 29 +     SetVoiceState(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> app/src/overlay/mod.rs:32:24
[INFO] [stdout]    |
[INFO] [stdout] 32 |     SetAudioPowerLevel(f32),
[INFO] [stdout]    |     ------------------ ^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OverlayCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 32 -     SetAudioPowerLevel(f32),
[INFO] [stdout] 32 +     SetAudioPowerLevel(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> app/src/overlay/mod.rs:35:30
[INFO] [stdout]    |
[INFO] [stdout] 35 |     SetStreamingResponseText(String),
[INFO] [stdout]    |     ------------------------ ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OverlayCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 35 -     SetStreamingResponseText(String),
[INFO] [stdout] 35 +     SetStreamingResponseText(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> app/src/overlay/mod.rs:38:30
[INFO] [stdout]    |
[INFO] [stdout] 38 |     SetResponseBubbleVisible(bool),
[INFO] [stdout]    |     ------------------------ ^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OverlayCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 38 -     SetResponseBubbleVisible(bool),
[INFO] [stdout] 38 +     SetResponseBubbleVisible(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `target_x`, `target_y`, and `bubble_text` are never read
[INFO] [stdout]   --> app/src/overlay/mod.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |     NavigateToTarget {
[INFO] [stdout]    |     ---------------- fields in this variant
[INFO] [stdout] 42 |         target_x: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 43 |         target_y: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 44 |         bubble_text: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OverlayCommand` 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 `0` is never read
[INFO] [stdout]   --> app/src/overlay/mod.rs:48:23
[INFO] [stdout]    |
[INFO] [stdout] 48 |     SetOverlayVisible(bool),
[INFO] [stdout]    |     ----------------- ^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OverlayCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 48 -     SetOverlayVisible(bool),
[INFO] [stdout] 48 +     SetOverlayVisible(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OverlayPoint` is never constructed
[INFO] [stdout]  --> app/src/overlay/animation.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct OverlayPoint {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `distance_to` is never used
[INFO] [stdout]   --> app/src/overlay/animation.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl OverlayPoint {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 15 |     pub fn distance_to(&self, other: OverlayPoint) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BezierFrameResult` is never constructed
[INFO] [stdout]   --> app/src/overlay/animation.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct BezierFrameResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_bezier_frame` is never used
[INFO] [stdout]   --> app/src/overlay/animation.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn compute_bezier_frame(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `flight_duration_seconds` is never used
[INFO] [stdout]    --> app/src/overlay/animation.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub fn flight_duration_seconds(distance: f64) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CURSOR_RESTING_ROTATION_DEGREES` is never used
[INFO] [stdout]    --> app/src/overlay/animation.rs:111:11
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub const CURSOR_RESTING_ROTATION_DEGREES: f64 = -35.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CURSOR_FOLLOW_SPRING_FACTOR` is never used
[INFO] [stdout]    --> app/src/overlay/animation.rs:115:11
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub const CURSOR_FOLLOW_SPRING_FACTOR: f64 = 0.25;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CURSOR_OFFSET_X` is never used
[INFO] [stdout]    --> app/src/overlay/animation.rs:119:11
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub const CURSOR_OFFSET_X: f64 = 35.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CURSOR_OFFSET_Y` is never used
[INFO] [stdout]    --> app/src/overlay/animation.rs:120:11
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub const CURSOR_OFFSET_Y: f64 = 25.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RETURN_FLIGHT_CANCEL_DISTANCE` is never used
[INFO] [stdout]    --> app/src/overlay/animation.rs:124:11
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub const RETURN_FLIGHT_CANCEL_DISTANCE: f64 = 100.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRIANGLE_SIZE` is never used
[INFO] [stdout]   --> app/src/overlay/cursor_visuals.rs:76:11
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub const TRIANGLE_SIZE: f64 = 16.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `triangle_vertices` is never used
[INFO] [stdout]   --> app/src/overlay/cursor_visuals.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub fn triangle_vertices() -> [(f64, f64); 3] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GLOW_RADII` is never used
[INFO] [stdout]   --> app/src/overlay/cursor_visuals.rs:93:11
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub const GLOW_RADII: [f32; 3] = [12.0, 18.0, 26.0];
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAVEFORM_BAR_COUNT` is never used
[INFO] [stdout]   --> app/src/overlay/cursor_visuals.rs:99:11
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub const WAVEFORM_BAR_COUNT: usize = 5;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAVEFORM_BAR_WIDTH` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:100:11
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub const WAVEFORM_BAR_WIDTH: f32 = 2.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAVEFORM_BAR_SPACING` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:101:11
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub const WAVEFORM_BAR_SPACING: f32 = 2.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAVEFORM_BAR_AMPLITUDE_PROFILE` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:104:7
[INFO] [stdout]     |
[INFO] [stdout] 104 | const WAVEFORM_BAR_AMPLITUDE_PROFILE: [f32; 5] = [0.4, 0.7, 1.0, 0.7, 0.4];
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_waveform_bar_heights` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub fn compute_waveform_bar_heights(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `waveform_total_width` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn waveform_total_width() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPINNER_RADIUS` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const SPINNER_RADIUS: f32 = 7.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPINNER_STROKE_WIDTH` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:149:11
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub const SPINNER_STROKE_WIDTH: f32 = 2.5;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPINNER_ARC_SWEEP_DEGREES` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:151:11
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub const SPINNER_ARC_SWEEP_DEGREES: f32 = 306.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ARRIVAL_PHRASES` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const ARRIVAL_PHRASES: &[&str] = &[
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POINTING_HOLD_FRAME_COUNT` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const POINTING_HOLD_FRAME_COUNT: u32 = 180; // 3 seconds
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUBBLE_FADE_OUT_FRAME_COUNT` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const BUBBLE_FADE_OUT_FRAME_COUNT: u32 = 30; // 0.5 seconds
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRANSIENT_FADE_IN_FRAME_COUNT` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const TRANSIENT_FADE_IN_FRAME_COUNT: u32 = 24; // 0.4 seconds
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRANSIENT_FADE_OUT_FRAME_COUNT` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:37:7
[INFO] [stdout]    |
[INFO] [stdout] 37 | const TRANSIENT_FADE_OUT_FRAME_COUNT: u32 = 24; // 0.4 seconds
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRANSIENT_POST_INTERACTION_DELAY_FRAMES` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:40:7
[INFO] [stdout]    |
[INFO] [stdout] 40 | const TRANSIENT_POST_INTERACTION_DELAY_FRAMES: u32 = 60; // 1 second
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHARS_PER_FRAME_MIN` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:44:7
[INFO] [stdout]    |
[INFO] [stdout] 44 | const CHARS_PER_FRAME_MIN: f64 = 0.25; // 1 char per 4 frames = 67ms
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHARS_PER_FRAME_MAX` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:45:7
[INFO] [stdout]    |
[INFO] [stdout] 45 | const CHARS_PER_FRAME_MAX: f64 = 0.5; // 1 char per 2 frames = 33ms
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `NavigationPhase` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:49:10
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub enum NavigationPhase {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OverlayNavigationState` is never constructed
[INFO] [stdout]   --> app/src/overlay/navigation.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct OverlayNavigationState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> app/src/overlay/navigation.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 157 | impl OverlayNavigationState {
[INFO] [stdout]     | --------------------------- associated items in this implementation
[INFO] [stdout] 158 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn advance_frame(&mut self, current_mouse_position: OverlayPoint) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn navigate_to_target(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub fn begin_transient_fade_in(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn begin_transient_fade_out_countdown(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn advance_following_cursor(&mut self, mouse_position: OverlayPoint) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 312 |     fn advance_navigating_to_target(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 370 |     fn advance_pointing_at_target(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |     fn advance_bubble_fading_out(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 449 |     fn start_return_flight(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     fn advance_returning_to_cursor(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 523 |     fn advance_transient_opacity(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     pub fn is_in_flight(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 563 |     pub fn should_draw_navigation_bubble(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `w_str` is never used
[INFO] [stdout]    --> app/src/overlay/renderer.rs:792:4
[INFO] [stdout]     |
[INFO] [stdout] 792 | fn w_str(s: &str) -> Vec<u16> {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESPONSE_BUBBLE_MAX_CONTENT_WIDTH` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const RESPONSE_BUBBLE_MAX_CONTENT_WIDTH: f32 = 300.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESPONSE_BUBBLE_HORIZONTAL_PADDING` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const RESPONSE_BUBBLE_HORIZONTAL_PADDING: f32 = 14.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESPONSE_BUBBLE_VERTICAL_PADDING` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const RESPONSE_BUBBLE_VERTICAL_PADDING: f32 = 10.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESPONSE_BUBBLE_OFFSET_X` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const RESPONSE_BUBBLE_OFFSET_X: f32 = 22.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESPONSE_BUBBLE_OFFSET_Y` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const RESPONSE_BUBBLE_OFFSET_Y: f32 = 6.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAVIGATION_BUBBLE_MAX_CONTENT_WIDTH` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const NAVIGATION_BUBBLE_MAX_CONTENT_WIDTH: f32 = 200.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAVIGATION_BUBBLE_HORIZONTAL_PADDING` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const NAVIGATION_BUBBLE_HORIZONTAL_PADDING: f32 = 10.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAVIGATION_BUBBLE_VERTICAL_PADDING` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const NAVIGATION_BUBBLE_VERTICAL_PADDING: f32 = 6.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAVIGATION_BUBBLE_OFFSET_X` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const NAVIGATION_BUBBLE_OFFSET_X: f32 = 20.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAVIGATION_BUBBLE_OFFSET_Y` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const NAVIGATION_BUBBLE_OFFSET_Y: f32 = -20.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FONT_FAMILY` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const FONT_FAMILY: &str = "Segoe UI";
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESPONSE_FONT_SIZE` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const RESPONSE_FONT_SIZE: f32 = 13.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAVIGATION_FONT_SIZE` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const NAVIGATION_FONT_SIZE: f32 = 12.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINE_SPACING` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const LINE_SPACING: f32 = 3.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUBBLE_CORNER_RADIUS` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:78:11
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub const BUBBLE_CORNER_RADIUS: f32 = 8.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUBBLE_SHADOW_OFFSET_X` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:81:11
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub const BUBBLE_SHADOW_OFFSET_X: f32 = 2.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUBBLE_SHADOW_OFFSET_Y` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:82:11
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub const BUBBLE_SHADOW_OFFSET_Y: f32 = 3.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUBBLE_SHADOW_EXTRA_SIZE` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:83:11
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub const BUBBLE_SHADOW_EXTRA_SIZE: f32 = 4.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BubbleDimensions` is never constructed
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct BubbleDimensions {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_bubble_dimensions` is never used
[INFO] [stdout]    --> app/src/overlay/text_bubble.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub fn compute_bubble_dimensions(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_bubble_flip` is never used
[INFO] [stdout]    --> app/src/overlay/text_bubble.rs:134:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn compute_bubble_flip(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RENDER_TIMER_ID` is never used
[INFO] [stdout]   --> app/src/overlay/window.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const RENDER_TIMER_ID: usize = 1;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RENDER_TIMER_INTERVAL_MS` is never used
[INFO] [stdout]   --> app/src/overlay/window.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const RENDER_TIMER_INTERVAL_MS: u32 = 16;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_overlay_command` is never used
[INFO] [stdout]    --> app/src/overlay/window.rs:247:4
[INFO] [stdout]     |
[INFO] [stdout] 247 | fn apply_overlay_command(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `is_cursor_screen` is never read
[INFO] [stdout]   --> app/src/screen_capture.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct ScreenCapture {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub is_cursor_screen: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScreenCapture` 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: constant `MAX_SCREENSHOT_DIMENSION` is never used
[INFO] [stdout]   --> app/src/screen_capture.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const MAX_SCREENSHOT_DIMENSION: u32 = 1280;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bgra_to_rgb` is never used
[INFO] [stdout]    --> app/src/screen_capture.rs:299:4
[INFO] [stdout]     |
[INFO] [stdout] 299 | fn bgra_to_rgb(bgra_pixels: &[u8], width: u32, height: u32) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_scaled_dimensions` is never used
[INFO] [stdout]    --> app/src/screen_capture.rs:336:4
[INFO] [stdout]     |
[INFO] [stdout] 336 | fn calculate_scaled_dimensions(source_width: u32, source_height: u32) -> (u32, u32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_screen_label` is never used
[INFO] [stdout]    --> app/src/screen_capture.rs:351:4
[INFO] [stdout]     |
[INFO] [stdout] 351 | fn build_screen_label(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Opus` is never constructed
[INFO] [stdout]   --> app/src/state.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum ClaudeModel {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] 31 |     Sonnet,
[INFO] [stdout] 32 |     Opus,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ClaudeModel` 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 `show_cursor_overlay` is never read
[INFO] [stdout]   --> app/src/state.rs:90:9
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct CompanionState {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub show_cursor_overlay: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FINAL_TRANSCRIPT_GRACE_PERIOD` is never used
[INFO] [stdout]   --> app/src/transcription/assemblyai.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const FINAL_TRANSCRIPT_GRACE_PERIOD: Duration = Duration::from_millis(1400);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `is_formatted` is never read
[INFO] [stdout]   --> app/src/transcription/assemblyai.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | struct StoredTurnTranscript {
[INFO] [stdout]    |        -------------------- field in this struct
[INFO] [stdout] 39 |     transcript_text: String,
[INFO] [stdout] 40 |     is_formatted: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StoredTurnTranscript` 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: unused variable: `begin_message`
[INFO] [stdout]   --> app/src/transcription/assemblyai.rs:91:9
[INFO] [stdout]    |
[INFO] [stdout] 91 |     let begin_message = timeout(session_begin_timeout, async {
[INFO] [stdout]    |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_begin_message`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `transcription_task`
[INFO] [stdout]    --> app/src/main.rs:232:9
[INFO] [stdout]     |
[INFO] [stdout] 232 |     let transcription_task = tokio::spawn(async move {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_transcription_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TARGET_CHANNELS` is never used
[INFO] [stdout]   --> app/src/audio/convert.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const TARGET_CHANNELS: u16 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `provider` is never read
[INFO] [stdout]   --> app/src/config.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct TranscriptionConfig {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub provider: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TranscriptionConfig` 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: method `analytics_enabled` is never used
[INFO] [stdout]    --> app/src/config.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout]  51 | impl ClickyConfig {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn analytics_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_point_on_monitor` is never used
[INFO] [stdout]   --> app/src/coords.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn is_point_on_monitor(point: ScreenPoint, screen_capture: &ScreenCapture) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ClickyError` is never used
[INFO] [stdout]  --> app/src/errors.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum ClickyError {
[INFO] [stdout]   |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Pressed` is never constructed
[INFO] [stdout]   --> app/src/hotkey.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum PushToTalkEvent {
[INFO] [stdout]    |          --------------- variant in this enum
[INFO] [stdout]  9 |     /// The Ctrl+Alt combination was pressed (both keys now held).
[INFO] [stdout] 10 |     Pressed,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PushToTalkEvent` 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: constant `VK_CONTROL` is never used
[INFO] [stdout]   --> app/src/hotkey.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const VK_CONTROL: u32 = 0x11;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VK_LCONTROL` is never used
[INFO] [stdout]   --> app/src/hotkey.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const VK_LCONTROL: u32 = 0xA2;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VK_RCONTROL` is never used
[INFO] [stdout]   --> app/src/hotkey.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const VK_RCONTROL: u32 = 0xA3;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VK_MENU` is never used
[INFO] [stdout]   --> app/src/hotkey.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const VK_MENU: u32 = 0x12;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VK_LMENU` is never used
[INFO] [stdout]   --> app/src/hotkey.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const VK_LMENU: u32 = 0xA4;
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VK_RMENU` is never used
[INFO] [stdout]   --> app/src/hotkey.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const VK_RMENU: u32 = 0xA5;
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> app/src/overlay/mod.rs:29:19
[INFO] [stdout]    |
[INFO] [stdout] 29 |     SetVoiceState(crate::state::VoiceState),
[INFO] [stdout]    |     ------------- ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OverlayCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 29 -     SetVoiceState(crate::state::VoiceState),
[INFO] [stdout] 29 +     SetVoiceState(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> app/src/overlay/mod.rs:32:24
[INFO] [stdout]    |
[INFO] [stdout] 32 |     SetAudioPowerLevel(f32),
[INFO] [stdout]    |     ------------------ ^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OverlayCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 32 -     SetAudioPowerLevel(f32),
[INFO] [stdout] 32 +     SetAudioPowerLevel(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> app/src/overlay/mod.rs:35:30
[INFO] [stdout]    |
[INFO] [stdout] 35 |     SetStreamingResponseText(String),
[INFO] [stdout]    |     ------------------------ ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OverlayCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 35 -     SetStreamingResponseText(String),
[INFO] [stdout] 35 +     SetStreamingResponseText(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> app/src/overlay/mod.rs:38:30
[INFO] [stdout]    |
[INFO] [stdout] 38 |     SetResponseBubbleVisible(bool),
[INFO] [stdout]    |     ------------------------ ^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OverlayCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 38 -     SetResponseBubbleVisible(bool),
[INFO] [stdout] 38 +     SetResponseBubbleVisible(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `target_x`, `target_y`, and `bubble_text` are never read
[INFO] [stdout]   --> app/src/overlay/mod.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |     NavigateToTarget {
[INFO] [stdout]    |     ---------------- fields in this variant
[INFO] [stdout] 42 |         target_x: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 43 |         target_y: f64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 44 |         bubble_text: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OverlayCommand` 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 `0` is never read
[INFO] [stdout]   --> app/src/overlay/mod.rs:48:23
[INFO] [stdout]    |
[INFO] [stdout] 48 |     SetOverlayVisible(bool),
[INFO] [stdout]    |     ----------------- ^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OverlayCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 48 -     SetOverlayVisible(bool),
[INFO] [stdout] 48 +     SetOverlayVisible(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rotation_degrees` is never read
[INFO] [stdout]   --> app/src/overlay/animation.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct BezierFrameResult {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub rotation_degrees: f64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BezierFrameResult` 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: constant `CURSOR_RESTING_ROTATION_DEGREES` is never used
[INFO] [stdout]    --> app/src/overlay/animation.rs:111:11
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub const CURSOR_RESTING_ROTATION_DEGREES: f64 = -35.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CURSOR_FOLLOW_SPRING_FACTOR` is never used
[INFO] [stdout]    --> app/src/overlay/animation.rs:115:11
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub const CURSOR_FOLLOW_SPRING_FACTOR: f64 = 0.25;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CURSOR_OFFSET_X` is never used
[INFO] [stdout]    --> app/src/overlay/animation.rs:119:11
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub const CURSOR_OFFSET_X: f64 = 35.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CURSOR_OFFSET_Y` is never used
[INFO] [stdout]    --> app/src/overlay/animation.rs:120:11
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub const CURSOR_OFFSET_Y: f64 = 25.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RETURN_FLIGHT_CANCEL_DISTANCE` is never used
[INFO] [stdout]    --> app/src/overlay/animation.rs:124:11
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub const RETURN_FLIGHT_CANCEL_DISTANCE: f64 = 100.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRIANGLE_SIZE` is never used
[INFO] [stdout]   --> app/src/overlay/cursor_visuals.rs:76:11
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub const TRIANGLE_SIZE: f64 = 16.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `triangle_vertices` is never used
[INFO] [stdout]   --> app/src/overlay/cursor_visuals.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub fn triangle_vertices() -> [(f64, f64); 3] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GLOW_RADII` is never used
[INFO] [stdout]   --> app/src/overlay/cursor_visuals.rs:93:11
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub const GLOW_RADII: [f32; 3] = [12.0, 18.0, 26.0];
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAVEFORM_BAR_COUNT` is never used
[INFO] [stdout]   --> app/src/overlay/cursor_visuals.rs:99:11
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub const WAVEFORM_BAR_COUNT: usize = 5;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAVEFORM_BAR_WIDTH` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:100:11
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub const WAVEFORM_BAR_WIDTH: f32 = 2.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAVEFORM_BAR_SPACING` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:101:11
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub const WAVEFORM_BAR_SPACING: f32 = 2.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAVEFORM_BAR_AMPLITUDE_PROFILE` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:104:7
[INFO] [stdout]     |
[INFO] [stdout] 104 | const WAVEFORM_BAR_AMPLITUDE_PROFILE: [f32; 5] = [0.4, 0.7, 1.0, 0.7, 0.4];
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_waveform_bar_heights` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub fn compute_waveform_bar_heights(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `waveform_total_width` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn waveform_total_width() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPINNER_RADIUS` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:148:11
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub const SPINNER_RADIUS: f32 = 7.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPINNER_STROKE_WIDTH` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:149:11
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub const SPINNER_STROKE_WIDTH: f32 = 2.5;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPINNER_ARC_SWEEP_DEGREES` is never used
[INFO] [stdout]    --> app/src/overlay/cursor_visuals.rs:151:11
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub const SPINNER_ARC_SWEEP_DEGREES: f32 = 306.0;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ARRIVAL_PHRASES` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const ARRIVAL_PHRASES: &[&str] = &[
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `POINTING_HOLD_FRAME_COUNT` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const POINTING_HOLD_FRAME_COUNT: u32 = 180; // 3 seconds
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUBBLE_FADE_OUT_FRAME_COUNT` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const BUBBLE_FADE_OUT_FRAME_COUNT: u32 = 30; // 0.5 seconds
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRANSIENT_FADE_IN_FRAME_COUNT` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const TRANSIENT_FADE_IN_FRAME_COUNT: u32 = 24; // 0.4 seconds
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRANSIENT_FADE_OUT_FRAME_COUNT` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:37:7
[INFO] [stdout]    |
[INFO] [stdout] 37 | const TRANSIENT_FADE_OUT_FRAME_COUNT: u32 = 24; // 0.4 seconds
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRANSIENT_POST_INTERACTION_DELAY_FRAMES` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:40:7
[INFO] [stdout]    |
[INFO] [stdout] 40 | const TRANSIENT_POST_INTERACTION_DELAY_FRAMES: u32 = 60; // 1 second
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHARS_PER_FRAME_MIN` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:44:7
[INFO] [stdout]    |
[INFO] [stdout] 44 | const CHARS_PER_FRAME_MIN: f64 = 0.25; // 1 char per 4 frames = 67ms
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHARS_PER_FRAME_MAX` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:45:7
[INFO] [stdout]    |
[INFO] [stdout] 45 | const CHARS_PER_FRAME_MAX: f64 = 0.5; // 1 char per 2 frames = 33ms
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `NavigationPhase` is never used
[INFO] [stdout]   --> app/src/overlay/navigation.rs:49:10
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub enum NavigationPhase {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OverlayNavigationState` is never constructed
[INFO] [stdout]   --> app/src/overlay/navigation.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct OverlayNavigationState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> app/src/overlay/navigation.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 157 | impl OverlayNavigationState {
[INFO] [stdout]     | --------------------------- associated items in this implementation
[INFO] [stdout] 158 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn advance_frame(&mut self, current_mouse_position: OverlayPoint) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn navigate_to_target(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub fn begin_transient_fade_in(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn begin_transient_fade_out_countdown(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn advance_following_cursor(&mut self, mouse_position: OverlayPoint) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 312 |     fn advance_navigating_to_target(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 370 |     fn advance_pointing_at_target(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |     fn advance_bubble_fading_out(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 449 |     fn start_return_flight(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     fn advance_returning_to_cursor(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 523 |     fn advance_transient_opacity(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     pub fn is_in_flight(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 563 |     pub fn should_draw_navigation_bubble(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `w_str` is never used
[INFO] [stdout]    --> app/src/overlay/renderer.rs:792:4
[INFO] [stdout]     |
[INFO] [stdout] 792 | fn w_str(s: &str) -> Vec<u16> {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESPONSE_BUBBLE_MAX_CONTENT_WIDTH` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const RESPONSE_BUBBLE_MAX_CONTENT_WIDTH: f32 = 300.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESPONSE_BUBBLE_HORIZONTAL_PADDING` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const RESPONSE_BUBBLE_HORIZONTAL_PADDING: f32 = 14.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESPONSE_BUBBLE_VERTICAL_PADDING` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const RESPONSE_BUBBLE_VERTICAL_PADDING: f32 = 10.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESPONSE_BUBBLE_OFFSET_X` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const RESPONSE_BUBBLE_OFFSET_X: f32 = 22.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESPONSE_BUBBLE_OFFSET_Y` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const RESPONSE_BUBBLE_OFFSET_Y: f32 = 6.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAVIGATION_BUBBLE_MAX_CONTENT_WIDTH` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const NAVIGATION_BUBBLE_MAX_CONTENT_WIDTH: f32 = 200.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAVIGATION_BUBBLE_HORIZONTAL_PADDING` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const NAVIGATION_BUBBLE_HORIZONTAL_PADDING: f32 = 10.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAVIGATION_BUBBLE_VERTICAL_PADDING` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const NAVIGATION_BUBBLE_VERTICAL_PADDING: f32 = 6.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAVIGATION_BUBBLE_OFFSET_X` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const NAVIGATION_BUBBLE_OFFSET_X: f32 = 20.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAVIGATION_BUBBLE_OFFSET_Y` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const NAVIGATION_BUBBLE_OFFSET_Y: f32 = -20.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FONT_FAMILY` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const FONT_FAMILY: &str = "Segoe UI";
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESPONSE_FONT_SIZE` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const RESPONSE_FONT_SIZE: f32 = 13.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAVIGATION_FONT_SIZE` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const NAVIGATION_FONT_SIZE: f32 = 12.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINE_SPACING` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const LINE_SPACING: f32 = 3.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUBBLE_CORNER_RADIUS` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:78:11
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub const BUBBLE_CORNER_RADIUS: f32 = 8.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUBBLE_SHADOW_OFFSET_X` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:81:11
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub const BUBBLE_SHADOW_OFFSET_X: f32 = 2.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUBBLE_SHADOW_OFFSET_Y` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:82:11
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub const BUBBLE_SHADOW_OFFSET_Y: f32 = 3.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUBBLE_SHADOW_EXTRA_SIZE` is never used
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:83:11
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub const BUBBLE_SHADOW_EXTRA_SIZE: f32 = 4.0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BubbleDimensions` is never constructed
[INFO] [stdout]   --> app/src/overlay/text_bubble.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct BubbleDimensions {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_bubble_dimensions` is never used
[INFO] [stdout]    --> app/src/overlay/text_bubble.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub fn compute_bubble_dimensions(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_bubble_flip` is never used
[INFO] [stdout]    --> app/src/overlay/text_bubble.rs:134:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn compute_bubble_flip(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RENDER_TIMER_ID` is never used
[INFO] [stdout]   --> app/src/overlay/window.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const RENDER_TIMER_ID: usize = 1;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RENDER_TIMER_INTERVAL_MS` is never used
[INFO] [stdout]   --> app/src/overlay/window.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const RENDER_TIMER_INTERVAL_MS: u32 = 16;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_overlay_command` is never used
[INFO] [stdout]    --> app/src/overlay/window.rs:247:4
[INFO] [stdout]     |
[INFO] [stdout] 247 | fn apply_overlay_command(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `is_cursor_screen` is never read
[INFO] [stdout]   --> app/src/screen_capture.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct ScreenCapture {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub is_cursor_screen: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ScreenCapture` 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: constant `MAX_SCREENSHOT_DIMENSION` is never used
[INFO] [stdout]   --> app/src/screen_capture.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const MAX_SCREENSHOT_DIMENSION: u32 = 1280;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bgra_to_rgb` is never used
[INFO] [stdout]    --> app/src/screen_capture.rs:299:4
[INFO] [stdout]     |
[INFO] [stdout] 299 | fn bgra_to_rgb(bgra_pixels: &[u8], width: u32, height: u32) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_scaled_dimensions` is never used
[INFO] [stdout]    --> app/src/screen_capture.rs:336:4
[INFO] [stdout]     |
[INFO] [stdout] 336 | fn calculate_scaled_dimensions(source_width: u32, source_height: u32) -> (u32, u32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_screen_label` is never used
[INFO] [stdout]    --> app/src/screen_capture.rs:351:4
[INFO] [stdout]     |
[INFO] [stdout] 351 | fn build_screen_label(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Opus` is never constructed
[INFO] [stdout]   --> app/src/state.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum ClaudeModel {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] 31 |     Sonnet,
[INFO] [stdout] 32 |     Opus,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ClaudeModel` 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 `show_cursor_overlay` is never read
[INFO] [stdout]   --> app/src/state.rs:90:9
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct CompanionState {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub show_cursor_overlay: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FINAL_TRANSCRIPT_GRACE_PERIOD` is never used
[INFO] [stdout]   --> app/src/transcription/assemblyai.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const FINAL_TRANSCRIPT_GRACE_PERIOD: Duration = Duration::from_millis(1400);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `is_formatted` is never read
[INFO] [stdout]   --> app/src/transcription/assemblyai.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | struct StoredTurnTranscript {
[INFO] [stdout]    |        -------------------- field in this struct
[INFO] [stdout] 39 |     transcript_text: String,
[INFO] [stdout] 40 |     is_formatted: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StoredTurnTranscript` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 42.45s
[INFO] running `Command { std: "docker" "inspect" "f3f94b567475d7523945e461e38ce22c4dcde0032b08d1c384a6a88c7c330831", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f3f94b567475d7523945e461e38ce22c4dcde0032b08d1c384a6a88c7c330831", kill_on_drop: false }`
[INFO] [stdout] f3f94b567475d7523945e461e38ce22c4dcde0032b08d1c384a6a88c7c330831
