[INFO] cloning repository https://github.com/ximbi1/SupaTermX
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ximbi1/SupaTermX" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fximbi1%2FSupaTermX", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fximbi1%2FSupaTermX'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 06048cf161355354556147b9fdac3a3bad1ad6cd
[INFO] checking ximbi1/SupaTermX against try#bac5816c5f3d02cebd0599070af62d1782530294 for pr-150408
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fximbi1%2FSupaTermX" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ximbi1/SupaTermX
[INFO] finished tweaking git repo https://github.com/ximbi1/SupaTermX
[INFO] tweaked toml for git repo https://github.com/ximbi1/SupaTermX written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ximbi1/SupaTermX on toolchain bac5816c5f3d02cebd0599070af62d1782530294
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bac5816c5f3d02cebd0599070af62d1782530294" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ximbi1/SupaTermX 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" "+bac5816c5f3d02cebd0599070af62d1782530294" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+bac5816c5f3d02cebd0599070af62d1782530294" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 62932251c8fe5a0236942b10d9be92b5193b3a8554a71b69141218bac20c1a2d
[INFO] running `Command { std: "docker" "start" "-a" "62932251c8fe5a0236942b10d9be92b5193b3a8554a71b69141218bac20c1a2d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "62932251c8fe5a0236942b10d9be92b5193b3a8554a71b69141218bac20c1a2d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "62932251c8fe5a0236942b10d9be92b5193b3a8554a71b69141218bac20c1a2d", kill_on_drop: false }`
[INFO] [stdout] 62932251c8fe5a0236942b10d9be92b5193b3a8554a71b69141218bac20c1a2d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+bac5816c5f3d02cebd0599070af62d1782530294" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 47da10c7822302c188f24ff7fdfa0ffa78b5f0af21626c3a7450d755da97fee2
[INFO] running `Command { std: "docker" "start" "-a" "47da10c7822302c188f24ff7fdfa0ffa78b5f0af21626c3a7450d755da97fee2", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.172
[INFO] [stderr]    Compiling cc v1.2.24
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]     Checking hashbrown v0.15.3
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling nom v5.1.3
[INFO] [stderr]     Checking ucd-trie v0.1.7
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking ordered-float v3.9.2
[INFO] [stderr]     Checking ordered-float v4.6.0
[INFO] [stderr]    Compiling memoffset v0.7.1
[INFO] [stderr]    Compiling minreq v2.13.4
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]     Checking lab v0.11.0
[INFO] [stderr]    Compiling phf_codegen v0.11.3
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking phf_shared v0.10.0
[INFO] [stderr]    Compiling terminfo v0.7.5
[INFO] [stderr]    Compiling strum_macros v0.25.3
[INFO] [stderr]     Checking indexmap v2.9.0
[INFO] [stderr]     Checking deltae v0.3.2
[INFO] [stderr]     Checking block-buffer v0.9.0
[INFO] [stderr]     Checking digest v0.9.0
[INFO] [stderr]     Checking sha2 v0.9.9
[INFO] [stderr]     Checking phf v0.11.3
[INFO] [stderr]     Checking clap_builder v4.5.38
[INFO] [stderr]     Checking rustix v1.0.7
[INFO] [stderr]     Checking csscolorparser v0.6.2
[INFO] [stderr]    Compiling clap_derive v4.5.32
[INFO] [stderr]     Checking toml_edit v0.22.26
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking phf v0.10.1
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]     Checking itertools v0.11.0
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]    Compiling pest v2.8.0
[INFO] [stderr]     Checking signal-hook-registry v1.4.5
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking zerovec v0.11.2
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]    Compiling openssl-sys v0.9.108
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling openssl v0.10.72
[INFO] [stderr]     Checking tokio v1.45.1
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking serial-core v0.4.0
[INFO] [stderr]     Checking dirs-sys v0.3.7
[INFO] [stderr]     Checking termios v0.2.2
[INFO] [stderr]     Checking mio v0.8.11
[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 ioctl-rs v0.1.6
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]    Compiling pest_meta v2.8.0
[INFO] [stderr]     Checking serial-unix v0.4.0
[INFO] [stderr]     Checking dirs v4.0.0
[INFO] [stderr]     Checking filedescriptor v0.8.3
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]     Checking signal-hook-mio v0.2.4
[INFO] [stderr]     Checking serial v0.4.0
[INFO] [stderr]     Checking strum v0.25.0
[INFO] [stderr]     Checking crossterm v0.27.0
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking signal-hook v0.1.17
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking nix v0.25.1
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking nix v0.24.3
[INFO] [stderr]     Checking termios v0.3.3
[INFO] [stderr]     Checking vtparse v0.6.2
[INFO] [stderr]    Compiling vte_generate_state_changes v0.1.2
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]    Compiling pest_generator v2.8.0
[INFO] [stderr]     Checking home v0.5.11
[INFO] [stderr]     Checking shell-words v1.1.0
[INFO] [stderr]     Checking finl_unicode v1.3.0
[INFO] [stderr]     Checking memmem v0.1.1
[INFO] [stderr]     Checking ratatui v0.23.0
[INFO] [stderr]     Checking env_logger v0.9.3
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking tempfile v3.20.0
[INFO] [stderr]     Checking which v4.4.2
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking vte v0.11.1
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking toml v0.8.22
[INFO] [stderr]     Checking semver-parser v0.10.3
[INFO] [stderr]     Checking semver v0.11.0
[INFO] [stderr]     Checking clap v4.5.38
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking uuid v1.17.0
[INFO] [stderr]     Checking nix v0.26.4
[INFO] [stderr]     Checking similar v2.7.0
[INFO] [stderr]     Checking glob v0.3.2
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking downcast-rs v2.0.1
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking htmlescape v0.3.1
[INFO] [stderr]    Compiling pest_derive v2.8.0
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]    Compiling wezterm-dynamic-derive v0.1.1
[INFO] [stderr]    Compiling num-derive v0.3.3
[INFO] [stderr]     Checking wezterm-dynamic v0.2.1
[INFO] [stderr]     Checking wezterm-dynamic v0.1.0
[INFO] [stderr]     Checking wezterm-bidi v0.2.3
[INFO] [stderr]     Checking wezterm-color-types v0.2.0
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]     Checking portable-pty v0.8.1
[INFO] [stderr]     Checking termwiz v0.20.0
[INFO] [stderr]     Checking tokio-util v0.7.15
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking h2 v0.3.26
[INFO] [stderr]     Checking openai-api-rs v3.0.1
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking supaterm v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]     --> src/scaffold/mod.rs:1250:9
[INFO] [stdout]      |
[INFO] [stdout] 1250 |     use super::*;
[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: `OpenOptions`
[INFO] [stdout]  --> src/session/mod.rs:6:27
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::fs::{self, File, OpenOptions};
[INFO] [stdout]   |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/session/mod.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::{Read, Write};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/session/mod.rs:14:23
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::terminal::{self, TerminalOutput};
[INFO] [stdout]    |                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OpenOptions`
[INFO] [stdout]  --> src/session/mod.rs:6:27
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::fs::{self, File, OpenOptions};
[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: `Write`
[INFO] [stdout]  --> src/session/mod.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::{Read, Write};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/session/mod.rs:14:23
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::terminal::{self, TerminalOutput};
[INFO] [stdout]    |                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]     --> src/session/mod.rs:1026:39
[INFO] [stdout]      |
[INFO] [stdout] 1026 |                 let encoded = base64::encode(&content);
[INFO] [stdout]      |                                       ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]     --> src/session/mod.rs:1026:39
[INFO] [stdout]      |
[INFO] [stdout] 1026 |                 let encoded = base64::encode(&content);
[INFO] [stdout]      |                                       ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/terminal/mod.rs:883:29
[INFO] [stdout]     |
[INFO] [stdout] 883 |                         let mut to_write = if line.ends_with('\n') {
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/terminal/mod.rs:883:29
[INFO] [stdout]     |
[INFO] [stdout] 883 |                         let mut to_write = if line.ends_with('\n') {
[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: unused variable: `panic_info`
[INFO] [stdout]    --> src/terminal/mod.rs:955:41
[INFO] [stdout]     |
[INFO] [stdout] 955 |     std::panic::set_hook(Box::new(move |panic_info| {
[INFO] [stdout]     |                                         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_panic_info`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `panic_info`
[INFO] [stdout]    --> src/terminal/mod.rs:955:41
[INFO] [stdout]     |
[INFO] [stdout] 955 |     std::panic::set_hook(Box::new(move |panic_info| {
[INFO] [stdout]     |                                         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_panic_info`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lock`
[INFO] [stdout]    --> src/session/mod.rs:609:25
[INFO] [stdout]     |
[INFO] [stdout] 609 |                     let lock = replay_lock.lock().unwrap();
[INFO] [stdout]     |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_lock`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_control`
[INFO] [stdout]    --> src/session/mod.rs:634:29
[INFO] [stdout]     |
[INFO] [stdout] 634 |                         let is_control = event.metadata.get("is_control")
[INFO] [stdout]     |                             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_control`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamp`
[INFO] [stdout]    --> src/session/mod.rs:662:29
[INFO] [stdout]     |
[INFO] [stdout] 662 |                         let timestamp = event.metadata.get("timestamp")
[INFO] [stdout]     |                             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lock`
[INFO] [stdout]    --> src/session/mod.rs:609:25
[INFO] [stdout]     |
[INFO] [stdout] 609 |                     let lock = replay_lock.lock().unwrap();
[INFO] [stdout]     |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_lock`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_control`
[INFO] [stdout]    --> src/session/mod.rs:634:29
[INFO] [stdout]     |
[INFO] [stdout] 634 |                         let is_control = event.metadata.get("is_control")
[INFO] [stdout]     |                             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_control`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamp`
[INFO] [stdout]    --> src/session/mod.rs:662:29
[INFO] [stdout]     |
[INFO] [stdout] 662 |                         let timestamp = event.metadata.get("timestamp")
[INFO] [stdout]     |                             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timestamp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsAny` is never used
[INFO] [stdout]   --> src/terminal/mod.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | trait AsAny {
[INFO] [stdout]    |       ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_control`, `csi_params`, and `csi_action` are never read
[INFO] [stdout]   --> src/terminal/mod.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct TerminalOutput {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub is_control: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 55 |     /// Optional CSI parameters for control sequences
[INFO] [stdout] 56 |     pub csi_params: Option<Vec<u16>>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 57 |     /// Optional action character for CSI sequences
[INFO] [stdout] 58 |     pub csi_action: Option<char>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TerminalOutput` 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: struct `WriterAdapter` is never constructed
[INFO] [stdout]   --> src/terminal/mod.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | struct WriterAdapter {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/terminal/mod.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl WriterAdapter {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 67 |     fn new(tx: tokio::sync::mpsc::Sender<Vec<u8>>) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `vte_parser` is never read
[INFO] [stdout]    --> src/terminal/mod.rs:115:5
[INFO] [stdout]     |
[INFO] [stdout]  93 | pub struct Terminal {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 115 |     vte_parser: Option<Parser>,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `raw_mode` is never read
[INFO] [stdout]    --> src/terminal/mod.rs:124:5
[INFO] [stdout]     |
[INFO] [stdout] 122 | struct OriginalState {
[INFO] [stdout]     |        ------------- field in this struct
[INFO] [stdout] 123 |     /// Whether the terminal was in raw mode
[INFO] [stdout] 124 |     raw_mode: bool,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OriginalState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `csi_buffer` is never read
[INFO] [stdout]    --> src/terminal/mod.rs:136:5
[INFO] [stdout]     |
[INFO] [stdout] 131 | struct VteHandler {
[INFO] [stdout]     |        ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 136 |     csi_buffer: String,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `VteHandler` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `flush_line`, `send_control_sequence`, and `send_control_sequence_sync` are never used
[INFO] [stdout]    --> src/terminal/mod.rs:173:14
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl VteHandler {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 173 |     async fn flush_line(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     async fn send_control_sequence(&mut self, seq: String, params: Option<Vec<u16>>, action: Option<char>) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     fn send_control_sequence_sync(&mut self, seq: String, params: Option<Vec<u16>>, action: Option<char>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `convert_screen_size` and `emergency_restore` are never used
[INFO] [stdout]    --> src/terminal/mod.rs:648:8
[INFO] [stdout]     |
[INFO] [stdout] 646 | impl Terminal {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] 647 |     /// Convert between terminal size types
[INFO] [stdout] 648 |     fn convert_screen_size(&self, size: &ScreenSize) -> PtySize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 905 |     pub fn emergency_restore(&mut self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timestamp` is never read
[INFO] [stdout]    --> src/tui/mod.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct ChatMessage {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub timestamp: chrono::DateTime<chrono::Local>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ChatMessage` 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: methods `render_diff`, `send_ai_message`, and `execute_shell_command` are never used
[INFO] [stdout]    --> src/tui/mod.rs:551:8
[INFO] [stdout]     |
[INFO] [stdout] 147 | impl App {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 551 |     fn render_diff<'a>(&self, original: &'a str, modified: &'a str) -> Vec<Line<'a>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |     async fn send_ai_message(&mut self, message: String) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 592 |     async fn execute_shell_command(&mut self, command: String) -> Result<String> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_RETRIES` is never used
[INFO] [stdout]   --> src/ai/mod.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const MAX_RETRIES: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INITIAL_BACKOFF_MS` is never used
[INFO] [stdout]   --> src/ai/mod.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const INITIAL_BACKOFF_MS: u64 = 500;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_CONTEXT_MESSAGES` is never used
[INFO] [stdout]   --> src/ai/mod.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const MAX_CONTEXT_MESSAGES: usize = 10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STREAMING_TIMEOUT_SECS` is never used
[INFO] [stdout]   --> src/ai/mod.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const STREAMING_TIMEOUT_SECS: u64 = 60;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_COMMAND_SUGGESTIONS` is never used
[INFO] [stdout]   --> src/ai/mod.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const MAX_COMMAND_SUGGESTIONS: usize = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AiResponse` is never constructed
[INFO] [stdout]   --> src/ai/mod.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct AiResponse {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ResponseType` is never used
[INFO] [stdout]   --> src/ai/mod.rs:47:10
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub enum ResponseType {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `model`, `max_tokens`, and `temperature` are never read
[INFO] [stdout]   --> src/ai/mod.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub model: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub max_tokens: Option<u32>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 75 |     /// Temperature (randomness)
[INFO] [stdout] 76 |     pub temperature: Option<f64>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: struct `CommandSuggestion` is never constructed
[INFO] [stdout]   --> src/ai/mod.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct CommandSuggestion {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ErrorAnalysis` is never constructed
[INFO] [stdout]    --> src/ai/mod.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct ErrorAnalysis {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `client` and `config` are never read
[INFO] [stdout]    --> src/ai/mod.rs:153:5
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub struct AiClient {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 152 |     /// OpenAI client
[INFO] [stdout] 153 |     client: Arc<Client>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 154 |     /// Configuration
[INFO] [stdout] 155 |     config: Config,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AiClient` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ai/mod.rs:179:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | impl AiClient {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn new_with_defaults() -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub async fn process_query(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub async fn generate_scaffold(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub async fn analyze_output(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 395 |     pub async fn suggest_commands(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     pub async fn autocomplete(
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub async fn analyze_shell_error(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 665 |     pub async fn generate_diff(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 734 |     async fn streaming_completion_with_retry(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 789 |     fn determine_response_type(content: &str) -> ResponseType {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 819 |     pub fn extract_code_blocks(content: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 850 |     pub fn parse_scaffold_data(json_str: &str) -> Result<Vec<(String, String)>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 878 |     pub fn extract_commands(content: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 909 |     pub fn format_error(error: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 914 |     pub fn is_api_key_configured() -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Generated` is never constructed
[INFO] [stdout]   --> src/scaffold/mod.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum TemplateSource {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 22 |     Generated,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TemplateSource` 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: enum `ScaffoldStatus` is never used
[INFO] [stdout]   --> src/scaffold/mod.rs:87:10
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub enum ScaffoldStatus {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScaffoldProgress` is never constructed
[INFO] [stdout]    --> src/scaffold/mod.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct ScaffoldProgress {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScaffoldFile` is never constructed
[INFO] [stdout]    --> src/scaffold/mod.rs:121:12
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub struct ScaffoldFile {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppliedChange` is never constructed
[INFO] [stdout]    --> src/scaffold/mod.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub struct AppliedChange {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChangeType` is never used
[INFO] [stdout]    --> src/scaffold/mod.rs:145:10
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub enum ChangeType {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScaffoldResult` is never constructed
[INFO] [stdout]    --> src/scaffold/mod.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub struct ScaffoldResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `ai_client`, `current_dir`, `modified_files`, and `template_variables` are never read
[INFO] [stdout]    --> src/scaffold/mod.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub struct Scaffolder {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 169 |     /// AI client for generating content
[INFO] [stdout] 170 |     ai_client: AiClient,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 171 |     /// Current working directory
[INFO] [stdout] 172 |     current_dir: PathBuf,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 173 |     /// Set of modified files to prevent double-modification
[INFO] [stdout] 174 |     modified_files: HashSet<PathBuf>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     template_variables: std::collections::HashMap<String, String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/scaffold/mod.rs:212:12
[INFO] [stdout]      |
[INFO] [stdout]  189 | impl Scaffolder {
[INFO] [stdout]      | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  212 |     pub fn find_template(&self, name: &str) -> Option<ProjectTemplate> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  368 |     fn process_template(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  401 |     fn evaluate_condition(condition: &str, user_inputs: &HashMap<String, String>) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  432 |     fn process_variables(text: &str, user_inputs: &HashMap<String, String>, project_name: &str) -> String {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  447 |     pub fn set_working_directory<P: AsRef<Path>>(&mut self, path: P) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  460 |     pub async fn generate_scaffold(&mut self, description: &str) -> Result<(Receiver<AiResponse>, Sender<bool>)> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  558 |     pub async fn generate_from_template(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  763 |     pub async fn apply_diff(&mut self, original_path: &Path, diff_text: &str) -> Result<AppliedChange> {
[INFO] [stdout]      |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  806 |     pub fn generate_diff(original: &str, modified: &str) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  823 |     fn parse_and_apply_diff(&self, original: &str, diff_text: &str) -> Result<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  857 |     pub fn create_file(&mut self, path: &Path, content: &str) -> Result<AppliedChange> {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  901 |     pub fn create_directory(&mut self, path: &Path) -> Result<AppliedChange> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  927 |     fn resolve_and_validate_path(&self, path: &Path) -> Result<PathBuf> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  957 |     fn write_file(&self, path: &Path, content: &str) -> Result<()> {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  975 |     fn create_files(files: &[ScaffoldFile]) -> Result<ScaffoldResult> {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1092 |     pub fn read_file(&self, path: &Path) -> Result<String> {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1111 |     pub fn file_exists(&self, path: &Path) -> Result<bool> {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1117 |     pub fn directory_exists(&self, path: &Path) -> Result<bool> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1123 |     pub fn list_directory(&self, path: &Path) -> Result<Vec<PathBuf>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1145 |     pub fn backup_file(&self, path: &Path) -> Result<PathBuf> {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1175 |     pub fn verify_file(&self, path: &Path, expected_content: &str) -> Result<bool> {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1181 |     pub fn delete_file(&mut self, path: &Path) -> Result<AppliedChange> {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1228 |     pub fn format_error_message(error: &str) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1233 |     pub fn format_success_message(message: &str) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1238 |     pub fn get_modified_files(&self) -> Vec<PathBuf> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1243 |     pub fn reset_modified_files(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ErrorKind` is never used
[INFO] [stdout]  --> src/utils/error.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum ErrorKind {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_error` is never used
[INFO] [stdout]   --> src/utils/error.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn format_error(error: &anyhow::Error) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Style` is never constructed
[INFO] [stdout]  --> src/utils/format.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Style {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `default` and `fg` are never used
[INFO] [stdout]   --> src/utils/format.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Style {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn default() -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn fg(mut self, color: Color) -> Self {
[INFO] [stdout]    |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FormatStyle` is never used
[INFO] [stdout]   --> src/utils/format.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum FormatStyle {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_style` is never used
[INFO] [stdout]   --> src/utils/format.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl FormatStyle {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 50 |     /// Get the appropriate style for TUI rendering
[INFO] [stdout] 51 |     pub fn to_style(self) -> Style {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_markdown` is never used
[INFO] [stdout]   --> src/utils/format.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn format_markdown(text: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_file_with_parents` is never used
[INFO] [stdout]  --> src/utils/fs.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn create_file_with_parents(path: &Path, content: &str) -> Result<()> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file_to_string` is never used
[INFO] [stdout]   --> src/utils/fs.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn read_file_to_string(path: &Path) -> Result<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_child_path` is never used
[INFO] [stdout]   --> src/utils/fs.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn is_child_path(parent: &Path, child: &Path) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_files` is never used
[INFO] [stdout]   --> src/utils/fs.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn find_files(dir: &Path, pattern: &str) -> Result<Vec<PathBuf>> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_directories` is never used
[INFO] [stdout]   --> src/utils/fs.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn find_directories(dir: &Path, pattern: &str) -> Result<Vec<PathBuf>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_file_extension` is never used
[INFO] [stdout]   --> src/utils/fs.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn get_file_extension(path: &Path) -> Option<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_file_older_than` is never used
[INFO] [stdout]   --> src/utils/fs.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn is_file_older_than(path: &Path, duration: std::time::Duration) -> Result<bool> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_file` is never used
[INFO] [stdout]   --> src/utils/fs.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn create_temp_file(content: &str) -> Result<(PathBuf, tempfile::NamedTempFile)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `backup_file` is never used
[INFO] [stdout]    --> src/utils/fs.rs:103:8
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub fn backup_file(path: &Path) -> Result<PathBuf> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_test_file` is never used
[INFO] [stdout]   --> src/utils/test.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn create_test_file(dir: &Path, name: &str, content: &str) -> Result<PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_test_project` is never used
[INFO] [stdout]   --> src/utils/test.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn create_test_project(dir: &Path) -> Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MockCommand` is never constructed
[INFO] [stdout]   --> src/utils/test.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct MockCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_args`, `with_stdout`, `with_stderr`, `with_exit_code`, and `execute` are never used
[INFO] [stdout]    --> src/utils/test.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | impl MockCommand {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 103 |     /// Create a new MockCommand
[INFO] [stdout] 104 |     pub fn new(command: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn with_args(mut self, args: &[&str]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn with_stdout(mut self, stdout: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn with_stderr(mut self, stderr: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn with_exit_code(mut self, code: i32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn execute(&self) -> Result<Output> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MockFile` is never constructed
[INFO] [stdout]    --> src/utils/test.rs:146:12
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub struct MockFile {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `read`, and `write` are never used
[INFO] [stdout]    --> src/utils/test.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 155 | impl MockFile {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 156 |     /// Create a new MockFile
[INFO] [stdout] 157 |     pub fn new(path: &Path, content: &str, exists: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn read(&self) -> Result<String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn write(&mut self, content: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_SESSION_DIR` is never used
[INFO] [stdout]   --> src/session/mod.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const DEFAULT_SESSION_DIR: &str = ".supaterm/sessions";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOG_EXTENSION` is never used
[INFO] [stdout]   --> src/session/mod.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const LOG_EXTENSION: &str = "term";
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_SESSION_HISTORY` is never used
[INFO] [stdout]   --> src/session/mod.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const MAX_SESSION_HISTORY: usize = 50;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_REPLAY_SPEED` is never used
[INFO] [stdout]   --> src/session/mod.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const DEFAULT_REPLAY_SPEED: f32 = 1.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SessionEventType` is never used
[INFO] [stdout]   --> src/session/mod.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum SessionEventType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionData` is never constructed
[INFO] [stdout]   --> src/session/mod.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct SessionData {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayStatus` is never constructed
[INFO] [stdout]   --> src/session/mod.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct ReplayStatus {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AsciicastHeader` is never constructed
[INFO] [stdout]   --> src/session/mod.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct AsciicastHeader {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionEvent` is never constructed
[INFO] [stdout]   --> src/session/mod.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct SessionEvent {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionInfo` is never constructed
[INFO] [stdout]    --> src/session/mod.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub struct SessionInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SharingOptions` is never constructed
[INFO] [stdout]    --> src/session/mod.rs:133:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct SharingOptions {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ExportFormat` is never used
[INFO] [stdout]    --> src/session/mod.rs:154:10
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub enum ExportFormat {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ReplayState` is never used
[INFO] [stdout]    --> src/session/mod.rs:182:10
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub enum ReplayState {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionManager` is never constructed
[INFO] [stdout]    --> src/session/mod.rs:194:12
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub struct SessionManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/session/mod.rs:221:12
[INFO] [stdout]      |
[INFO] [stdout]  219 | impl SessionManager {
[INFO] [stdout]      | ------------------- associated items in this implementation
[INFO] [stdout]  220 |     /// Create a new session manager
[INFO] [stdout]  221 |     pub fn new() -> Result<Self> {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  246 |     pub fn start_recording(&mut self, session_name: &str, shell: &str) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  295 |     pub fn stop_recording(&mut self) -> Result<SessionInfo> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  345 |     pub fn add_event(
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  381 |     pub fn record_input(&mut self, input: &str) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  391 |     pub fn record_output(&mut self, output: &TerminalOutput) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  399 |     pub fn record_command(&mut self, command: &str) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  413 |     pub fn record_resize(&mut self, cols: u16, rows: u16) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  422 |     fn save_session(&mut self) -> Result<SessionInfo> {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  455 |     pub fn list_sessions(&self) -> Result<Vec<SessionInfo>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  487 |     fn load_session_info(&self, path: &Path) -> Result<SessionInfo> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  503 |     pub fn load_session(&self, path: &Path) -> Result<SessionData> {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  525 |     fn validate_session_data(&self, data: &SessionData) -> Result<()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  547 |     pub fn set_output_channel(&mut self, tx: Sender<TerminalOutput>) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  552 |     pub async fn start_replay(
[INFO] [stdout]      |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  710 |     pub fn toggle_replay_pause(&mut self) -> Result<ReplayState> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  728 |     pub fn set_replay_speed(&mut self, speed: f32) -> Result<f32> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  740 |     pub fn stop_replay(&mut self) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  756 |     pub fn export_session(&self, session_path: &Path, output_path: &Path, format: ExportFormat) -> Result<PathBuf> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  779 |     fn export_as_json(&self, session: &SessionData) -> Result<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  785 |     fn export_as_text(&self, session: &SessionData) -> Result<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  820 |     fn export_as_asciicast(&self, session: &SessionData) -> Result<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  893 |     fn export_as_markdown(&self, session: &SessionData) -> Result<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  930 |     fn export_as_html(&self, session: &SessionData) -> Result<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  991 |     pub async fn share_session(&self, session_path: &Path, options: SharingOptions) -> Result<String> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1041 |     pub fn get_session_stats(&self, session_path: &Path) -> Result<HashMap<String, String>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1077 |     pub fn delete_session(&self, session_path: &Path) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `AsAny` is never used
[INFO] [stdout]   --> src/terminal/mod.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | trait AsAny {
[INFO] [stdout]    |       ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_control`, `csi_params`, and `csi_action` are never read
[INFO] [stdout]   --> src/terminal/mod.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct TerminalOutput {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub is_control: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 55 |     /// Optional CSI parameters for control sequences
[INFO] [stdout] 56 |     pub csi_params: Option<Vec<u16>>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 57 |     /// Optional action character for CSI sequences
[INFO] [stdout] 58 |     pub csi_action: Option<char>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TerminalOutput` 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: struct `WriterAdapter` is never constructed
[INFO] [stdout]   --> src/terminal/mod.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | struct WriterAdapter {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/terminal/mod.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl WriterAdapter {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 67 |     fn new(tx: tokio::sync::mpsc::Sender<Vec<u8>>) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `vte_parser` is never read
[INFO] [stdout]    --> src/terminal/mod.rs:115:5
[INFO] [stdout]     |
[INFO] [stdout]  93 | pub struct Terminal {
[INFO] [stdout]     |            -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 115 |     vte_parser: Option<Parser>,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `raw_mode` is never read
[INFO] [stdout]    --> src/terminal/mod.rs:124:5
[INFO] [stdout]     |
[INFO] [stdout] 122 | struct OriginalState {
[INFO] [stdout]     |        ------------- field in this struct
[INFO] [stdout] 123 |     /// Whether the terminal was in raw mode
[INFO] [stdout] 124 |     raw_mode: bool,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `OriginalState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `csi_buffer` is never read
[INFO] [stdout]    --> src/terminal/mod.rs:136:5
[INFO] [stdout]     |
[INFO] [stdout] 131 | struct VteHandler {
[INFO] [stdout]     |        ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 136 |     csi_buffer: String,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `VteHandler` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `flush_line`, `send_control_sequence`, and `send_control_sequence_sync` are never used
[INFO] [stdout]    --> src/terminal/mod.rs:173:14
[INFO] [stdout]     |
[INFO] [stdout] 159 | impl VteHandler {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 173 |     async fn flush_line(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     async fn send_control_sequence(&mut self, seq: String, params: Option<Vec<u16>>, action: Option<char>) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     fn send_control_sequence_sync(&mut self, seq: String, params: Option<Vec<u16>>, action: Option<char>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `convert_screen_size` and `emergency_restore` are never used
[INFO] [stdout]    --> src/terminal/mod.rs:648:8
[INFO] [stdout]     |
[INFO] [stdout] 646 | impl Terminal {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] 647 |     /// Convert between terminal size types
[INFO] [stdout] 648 |     fn convert_screen_size(&self, size: &ScreenSize) -> PtySize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 905 |     pub fn emergency_restore(&mut self) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timestamp` is never read
[INFO] [stdout]    --> src/tui/mod.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct ChatMessage {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub timestamp: chrono::DateTime<chrono::Local>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ChatMessage` 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: methods `render_diff`, `send_ai_message`, and `execute_shell_command` are never used
[INFO] [stdout]    --> src/tui/mod.rs:551:8
[INFO] [stdout]     |
[INFO] [stdout] 147 | impl App {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 551 |     fn render_diff<'a>(&self, original: &'a str, modified: &'a str) -> Vec<Line<'a>> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |     async fn send_ai_message(&mut self, message: String) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 592 |     async fn execute_shell_command(&mut self, command: String) -> Result<String> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_RETRIES` is never used
[INFO] [stdout]   --> src/ai/mod.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const MAX_RETRIES: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INITIAL_BACKOFF_MS` is never used
[INFO] [stdout]   --> src/ai/mod.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const INITIAL_BACKOFF_MS: u64 = 500;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_CONTEXT_MESSAGES` is never used
[INFO] [stdout]   --> src/ai/mod.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const MAX_CONTEXT_MESSAGES: usize = 10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STREAMING_TIMEOUT_SECS` is never used
[INFO] [stdout]   --> src/ai/mod.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const STREAMING_TIMEOUT_SECS: u64 = 60;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_COMMAND_SUGGESTIONS` is never used
[INFO] [stdout]   --> src/ai/mod.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const MAX_COMMAND_SUGGESTIONS: usize = 5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AiResponse` is never constructed
[INFO] [stdout]   --> src/ai/mod.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct AiResponse {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `CommandSuggestion` and `Autocompletion` are never constructed
[INFO] [stdout]   --> src/ai/mod.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub enum ResponseType {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 59 |     CommandSuggestion,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 60 |     /// Autocompletion
[INFO] [stdout] 61 |     Autocompletion,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ResponseType` 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: fields `model`, `max_tokens`, and `temperature` are never read
[INFO] [stdout]   --> src/ai/mod.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct Config {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub model: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub max_tokens: Option<u32>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 75 |     /// Temperature (randomness)
[INFO] [stdout] 76 |     pub temperature: Option<f64>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` 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: struct `CommandSuggestion` is never constructed
[INFO] [stdout]   --> src/ai/mod.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct CommandSuggestion {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ErrorAnalysis` is never constructed
[INFO] [stdout]    --> src/ai/mod.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct ErrorAnalysis {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `client` and `config` are never read
[INFO] [stdout]    --> src/ai/mod.rs:153:5
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub struct AiClient {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 152 |     /// OpenAI client
[INFO] [stdout] 153 |     client: Arc<Client>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 154 |     /// Configuration
[INFO] [stdout] 155 |     config: Config,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AiClient` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/ai/mod.rs:179:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | impl AiClient {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn new_with_defaults() -> Result<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub async fn process_query(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub async fn generate_scaffold(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub async fn analyze_output(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 395 |     pub async fn suggest_commands(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     pub async fn autocomplete(
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 549 |     pub async fn analyze_shell_error(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 665 |     pub async fn generate_diff(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 734 |     async fn streaming_completion_with_retry(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 850 |     pub fn parse_scaffold_data(json_str: &str) -> Result<Vec<(String, String)>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 878 |     pub fn extract_commands(content: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 909 |     pub fn format_error(error: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 914 |     pub fn is_api_key_configured() -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Generated` is never constructed
[INFO] [stdout]   --> src/scaffold/mod.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum TemplateSource {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 22 |     Generated,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TemplateSource` 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: enum `ScaffoldStatus` is never used
[INFO] [stdout]   --> src/scaffold/mod.rs:87:10
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub enum ScaffoldStatus {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScaffoldProgress` is never constructed
[INFO] [stdout]    --> src/scaffold/mod.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct ScaffoldProgress {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScaffoldFile` is never constructed
[INFO] [stdout]    --> src/scaffold/mod.rs:121:12
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub struct ScaffoldFile {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppliedChange` is never constructed
[INFO] [stdout]    --> src/scaffold/mod.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub struct AppliedChange {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChangeType` is never used
[INFO] [stdout]    --> src/scaffold/mod.rs:145:10
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub enum ChangeType {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScaffoldResult` is never constructed
[INFO] [stdout]    --> src/scaffold/mod.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub struct ScaffoldResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `ai_client`, `current_dir`, `modified_files`, and `template_variables` are never read
[INFO] [stdout]    --> src/scaffold/mod.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub struct Scaffolder {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 169 |     /// AI client for generating content
[INFO] [stdout] 170 |     ai_client: AiClient,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 171 |     /// Current working directory
[INFO] [stdout] 172 |     current_dir: PathBuf,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 173 |     /// Set of modified files to prevent double-modification
[INFO] [stdout] 174 |     modified_files: HashSet<PathBuf>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     template_variables: std::collections::HashMap<String, String>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/scaffold/mod.rs:212:12
[INFO] [stdout]      |
[INFO] [stdout]  189 | impl Scaffolder {
[INFO] [stdout]      | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  212 |     pub fn find_template(&self, name: &str) -> Option<ProjectTemplate> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  368 |     fn process_template(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  401 |     fn evaluate_condition(condition: &str, user_inputs: &HashMap<String, String>) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  432 |     fn process_variables(text: &str, user_inputs: &HashMap<String, String>, project_name: &str) -> String {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  447 |     pub fn set_working_directory<P: AsRef<Path>>(&mut self, path: P) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  460 |     pub async fn generate_scaffold(&mut self, description: &str) -> Result<(Receiver<AiResponse>, Sender<bool>)> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  558 |     pub async fn generate_from_template(
[INFO] [stdout]      |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  763 |     pub async fn apply_diff(&mut self, original_path: &Path, diff_text: &str) -> Result<AppliedChange> {
[INFO] [stdout]      |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  806 |     pub fn generate_diff(original: &str, modified: &str) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  823 |     fn parse_and_apply_diff(&self, original: &str, diff_text: &str) -> Result<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  857 |     pub fn create_file(&mut self, path: &Path, content: &str) -> Result<AppliedChange> {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  901 |     pub fn create_directory(&mut self, path: &Path) -> Result<AppliedChange> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  927 |     fn resolve_and_validate_path(&self, path: &Path) -> Result<PathBuf> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  957 |     fn write_file(&self, path: &Path, content: &str) -> Result<()> {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  975 |     fn create_files(files: &[ScaffoldFile]) -> Result<ScaffoldResult> {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1092 |     pub fn read_file(&self, path: &Path) -> Result<String> {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1111 |     pub fn file_exists(&self, path: &Path) -> Result<bool> {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1117 |     pub fn directory_exists(&self, path: &Path) -> Result<bool> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1123 |     pub fn list_directory(&self, path: &Path) -> Result<Vec<PathBuf>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1145 |     pub fn backup_file(&self, path: &Path) -> Result<PathBuf> {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1175 |     pub fn verify_file(&self, path: &Path, expected_content: &str) -> Result<bool> {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1181 |     pub fn delete_file(&mut self, path: &Path) -> Result<AppliedChange> {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1228 |     pub fn format_error_message(error: &str) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1233 |     pub fn format_success_message(message: &str) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1238 |     pub fn get_modified_files(&self) -> Vec<PathBuf> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1243 |     pub fn reset_modified_files(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_test_dir` is never used
[INFO] [stdout]     --> src/scaffold/mod.rs:1254:8
[INFO] [stdout]      |
[INFO] [stdout] 1254 |     fn create_test_dir() -> TempDir {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ErrorKind` is never used
[INFO] [stdout]  --> src/utils/error.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum ErrorKind {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_error` is never used
[INFO] [stdout]   --> src/utils/error.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn format_error(error: &anyhow::Error) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Style` is never constructed
[INFO] [stdout]  --> src/utils/format.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Style {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `default` and `fg` are never used
[INFO] [stdout]   --> src/utils/format.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Style {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn default() -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn fg(mut self, color: Color) -> Self {
[INFO] [stdout]    |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FormatStyle` is never used
[INFO] [stdout]   --> src/utils/format.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum FormatStyle {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_style` is never used
[INFO] [stdout]   --> src/utils/format.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl FormatStyle {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 50 |     /// Get the appropriate style for TUI rendering
[INFO] [stdout] 51 |     pub fn to_style(self) -> Style {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_markdown` is never used
[INFO] [stdout]   --> src/utils/format.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn format_markdown(text: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_file_with_parents` is never used
[INFO] [stdout]  --> src/utils/fs.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn create_file_with_parents(path: &Path, content: &str) -> Result<()> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_file_to_string` is never used
[INFO] [stdout]   --> src/utils/fs.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn read_file_to_string(path: &Path) -> Result<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_child_path` is never used
[INFO] [stdout]   --> src/utils/fs.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn is_child_path(parent: &Path, child: &Path) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_files` is never used
[INFO] [stdout]   --> src/utils/fs.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn find_files(dir: &Path, pattern: &str) -> Result<Vec<PathBuf>> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_directories` is never used
[INFO] [stdout]   --> src/utils/fs.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn find_directories(dir: &Path, pattern: &str) -> Result<Vec<PathBuf>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_file_extension` is never used
[INFO] [stdout]   --> src/utils/fs.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn get_file_extension(path: &Path) -> Option<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_file_older_than` is never used
[INFO] [stdout]   --> src/utils/fs.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn is_file_older_than(path: &Path, duration: std::time::Duration) -> Result<bool> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_temp_file` is never used
[INFO] [stdout]   --> src/utils/fs.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn create_temp_file(content: &str) -> Result<(PathBuf, tempfile::NamedTempFile)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `backup_file` is never used
[INFO] [stdout]    --> src/utils/fs.rs:103:8
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub fn backup_file(path: &Path) -> Result<PathBuf> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_test_file` is never used
[INFO] [stdout]   --> src/utils/test.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn create_test_file(dir: &Path, name: &str, content: &str) -> Result<PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_test_project` is never used
[INFO] [stdout]   --> src/utils/test.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn create_test_project(dir: &Path) -> Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MockCommand` is never constructed
[INFO] [stdout]   --> src/utils/test.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct MockCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_args`, `with_stdout`, `with_stderr`, `with_exit_code`, and `execute` are never used
[INFO] [stdout]    --> src/utils/test.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | impl MockCommand {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 103 |     /// Create a new MockCommand
[INFO] [stdout] 104 |     pub fn new(command: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn with_args(mut self, args: &[&str]) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn with_stdout(mut self, stdout: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn with_stderr(mut self, stderr: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn with_exit_code(mut self, code: i32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn execute(&self) -> Result<Output> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MockFile` is never constructed
[INFO] [stdout]    --> src/utils/test.rs:146:12
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub struct MockFile {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `read`, and `write` are never used
[INFO] [stdout]    --> src/utils/test.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 155 | impl MockFile {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 156 |     /// Create a new MockFile
[INFO] [stdout] 157 |     pub fn new(path: &Path, content: &str, exists: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn read(&self) -> Result<String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn write(&mut self, content: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_SESSION_DIR` is never used
[INFO] [stdout]   --> src/session/mod.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const DEFAULT_SESSION_DIR: &str = ".supaterm/sessions";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOG_EXTENSION` is never used
[INFO] [stdout]   --> src/session/mod.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const LOG_EXTENSION: &str = "term";
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_SESSION_HISTORY` is never used
[INFO] [stdout]   --> src/session/mod.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const MAX_SESSION_HISTORY: usize = 50;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_REPLAY_SPEED` is never used
[INFO] [stdout]   --> src/session/mod.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const DEFAULT_REPLAY_SPEED: f32 = 1.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SessionEventType` is never used
[INFO] [stdout]   --> src/session/mod.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum SessionEventType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionData` is never constructed
[INFO] [stdout]   --> src/session/mod.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct SessionData {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayStatus` is never constructed
[INFO] [stdout]   --> src/session/mod.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct ReplayStatus {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AsciicastHeader` is never constructed
[INFO] [stdout]   --> src/session/mod.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct AsciicastHeader {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionEvent` is never constructed
[INFO] [stdout]   --> src/session/mod.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub struct SessionEvent {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionInfo` is never constructed
[INFO] [stdout]    --> src/session/mod.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub struct SessionInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SharingOptions` is never constructed
[INFO] [stdout]    --> src/session/mod.rs:133:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct SharingOptions {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ExportFormat` is never used
[INFO] [stdout]    --> src/session/mod.rs:154:10
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub enum ExportFormat {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ReplayState` is never used
[INFO] [stdout]    --> src/session/mod.rs:182:10
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub enum ReplayState {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionManager` is never constructed
[INFO] [stdout]    --> src/session/mod.rs:194:12
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub struct SessionManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/session/mod.rs:221:12
[INFO] [stdout]      |
[INFO] [stdout]  219 | impl SessionManager {
[INFO] [stdout]      | ------------------- associated items in this implementation
[INFO] [stdout]  220 |     /// Create a new session manager
[INFO] [stdout]  221 |     pub fn new() -> Result<Self> {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  246 |     pub fn start_recording(&mut self, session_name: &str, shell: &str) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  295 |     pub fn stop_recording(&mut self) -> Result<SessionInfo> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  345 |     pub fn add_event(
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  381 |     pub fn record_input(&mut self, input: &str) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  391 |     pub fn record_output(&mut self, output: &TerminalOutput) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  399 |     pub fn record_command(&mut self, command: &str) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  413 |     pub fn record_resize(&mut self, cols: u16, rows: u16) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  422 |     fn save_session(&mut self) -> Result<SessionInfo> {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  455 |     pub fn list_sessions(&self) -> Result<Vec<SessionInfo>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  487 |     fn load_session_info(&self, path: &Path) -> Result<SessionInfo> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  503 |     pub fn load_session(&self, path: &Path) -> Result<SessionData> {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  525 |     fn validate_session_data(&self, data: &SessionData) -> Result<()> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  547 |     pub fn set_output_channel(&mut self, tx: Sender<TerminalOutput>) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  552 |     pub async fn start_replay(
[INFO] [stdout]      |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  710 |     pub fn toggle_replay_pause(&mut self) -> Result<ReplayState> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  728 |     pub fn set_replay_speed(&mut self, speed: f32) -> Result<f32> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  740 |     pub fn stop_replay(&mut self) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  756 |     pub fn export_session(&self, session_path: &Path, output_path: &Path, format: ExportFormat) -> Result<PathBuf> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  779 |     fn export_as_json(&self, session: &SessionData) -> Result<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  785 |     fn export_as_text(&self, session: &SessionData) -> Result<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  820 |     fn export_as_asciicast(&self, session: &SessionData) -> Result<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  893 |     fn export_as_markdown(&self, session: &SessionData) -> Result<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  930 |     fn export_as_html(&self, session: &SessionData) -> Result<String> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  991 |     pub async fn share_session(&self, session_path: &Path, options: SharingOptions) -> Result<String> {
[INFO] [stdout]      |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1041 |     pub fn get_session_stats(&self, session_path: &Path) -> Result<HashMap<String, String>> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1077 |     pub fn delete_session(&self, session_path: &Path) -> Result<()> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 54.75s
[INFO] running `Command { std: "docker" "inspect" "47da10c7822302c188f24ff7fdfa0ffa78b5f0af21626c3a7450d755da97fee2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "47da10c7822302c188f24ff7fdfa0ffa78b5f0af21626c3a7450d755da97fee2", kill_on_drop: false }`
[INFO] [stdout] 47da10c7822302c188f24ff7fdfa0ffa78b5f0af21626c3a7450d755da97fee2
