[INFO] cloning repository https://github.com/j-c-b-s-t-w-s-k/systymn
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/j-c-b-s-t-w-s-k/systymn" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fj-c-b-s-t-w-s-k%2Fsystymn", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fj-c-b-s-t-w-s-k%2Fsystymn'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4bfc264c9ef10a7e8a228fe92cd57b45ad727970
[INFO] checking j-c-b-s-t-w-s-k/systymn against master#656ccbe796ff98def9b555c118e1620c5389e3b2 for pr-133502-24
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fj-c-b-s-t-w-s-k%2Fsystymn" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/j-c-b-s-t-w-s-k/systymn
[INFO] finished tweaking git repo https://github.com/j-c-b-s-t-w-s-k/systymn
[INFO] tweaked toml for git repo https://github.com/j-c-b-s-t-w-s-k/systymn written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/j-c-b-s-t-w-s-k/systymn on toolchain 656ccbe796ff98def9b555c118e1620c5389e3b2
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+656ccbe796ff98def9b555c118e1620c5389e3b2" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/j-c-b-s-t-w-s-k/systymn 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" "+656ccbe796ff98def9b555c118e1620c5389e3b2" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 68450b9788d9156a169d1256f9c6e3ab38e78275b740b21e4f1903f63caa3b0e
[INFO] running `Command { std: "docker" "start" "68450b9788d9156a169d1256f9c6e3ab38e78275b740b21e4f1903f63caa3b0e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "68450b9788d9156a169d1256f9c6e3ab38e78275b740b21e4f1903f63caa3b0e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "68450b9788d9156a169d1256f9c6e3ab38e78275b740b21e4f1903f63caa3b0e" "/opt/rustwide/cargo-home/bin/cargo" "+656ccbe796ff98def9b555c118e1620c5389e3b2" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "68450b9788d9156a169d1256f9c6e3ab38e78275b740b21e4f1903f63caa3b0e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "68450b9788d9156a169d1256f9c6e3ab38e78275b740b21e4f1903f63caa3b0e" "/opt/rustwide/cargo-home/bin/cargo" "+656ccbe796ff98def9b555c118e1620c5389e3b2" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]     Checking futures-task v0.3.31
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling instability v0.3.11
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking ratatui v0.28.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking h2 v0.4.13
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking hyper-util v0.1.19
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking systymn v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `EditOperation` and `History`
[INFO] [stdout]  --> src/buffer/mod.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use history::{EditOperation, History};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EditOperation` and `History`
[INFO] [stdout]  --> src/buffer/mod.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use history::{EditOperation, History};
[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 variable: `col`
[INFO] [stdout]   --> src/buffer/history.rs:43:50
[INFO] [stdout]    |
[INFO] [stdout] 43 |             EditOperation::InsertNewline { line, col } => EditOperation::DeleteNewline {
[INFO] [stdout]    |                                                  ^^^ help: try ignoring the field: `col: _`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `col`
[INFO] [stdout]   --> src/buffer/history.rs:43:50
[INFO] [stdout]    |
[INFO] [stdout] 43 |             EditOperation::InsertNewline { line, col } => EditOperation::DeleteNewline {
[INFO] [stdout]    |                                                  ^^^ help: try ignoring the field: `col: _`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cursor` is never read
[INFO] [stdout]   --> src/app.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct EditorState {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] 18 |     buffer: TextBuffer,
[INFO] [stdout] 19 |     cursor: (usize, usize),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EditorState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `start_selection`, `replace_all`, `current_ai_provider`, `ai_status_text`, and `get_emoji_engine` are never used
[INFO] [stdout]    --> src/app.rs:318:12
[INFO] [stdout]     |
[INFO] [stdout]  54 | impl App {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn start_selection(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub fn replace_all(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 661 |     pub fn current_ai_provider(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 669 |     pub fn ai_status_text(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 746 |     pub fn get_emoji_engine(&self) -> &EmojiEngine {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `current_line`, `current_line_mut`, `last_word`, `visual_cursor_x`, `wrapped_cursor_position`, and `lines_mut` are never used
[INFO] [stdout]    --> src/buffer/text.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl TextBuffer {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn current_line(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn current_line_mut(&mut self) -> &mut String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn last_word(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 372 |     pub fn visual_cursor_x(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     pub fn wrapped_cursor_position(&self, width: usize) -> (usize, usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 458 |     pub fn lines_mut(&mut self) -> &mut Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `line`, `col`, and `text` are never read
[INFO] [stdout]  --> src/buffer/history.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 5 |     Insert {
[INFO] [stdout]   |     ------ fields in this variant
[INFO] [stdout] 6 |         line: usize,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout] 7 |         col: usize,
[INFO] [stdout]   |         ^^^
[INFO] [stdout] 8 |         text: String,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `EditOperation` 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 `line`, `col`, and `text` are never read
[INFO] [stdout]   --> src/buffer/history.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |     Delete {
[INFO] [stdout]    |     ------ fields in this variant
[INFO] [stdout] 12 |         line: usize,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 13 |         col: usize,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 14 |         text: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EditOperation` 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 `line` and `col` are never read
[INFO] [stdout]   --> src/buffer/history.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |     InsertNewline {
[INFO] [stdout]    |     ------------- fields in this variant
[INFO] [stdout] 18 |         line: usize,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 19 |         col: usize,
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EditOperation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `line` is never read
[INFO] [stdout]   --> src/buffer/history.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     DeleteNewline {
[INFO] [stdout]    |     ------------- field in this variant
[INFO] [stdout] 23 |         line: usize,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EditOperation` 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: variant `Batch` is never constructed
[INFO] [stdout]   --> src/buffer/history.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout]  3 | pub enum EditOperation {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 26 |     Batch(Vec<EditOperation>),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EditOperation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `inverse` is never used
[INFO] [stdout]   --> src/buffer/history.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl EditOperation {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 30 |     /// Returns the inverse operation for undo
[INFO] [stdout] 31 |     pub fn inverse(&self) -> EditOperation {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `History` is never constructed
[INFO] [stdout]   --> src/buffer/history.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct History {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/buffer/history.rs:65:12
[INFO] [stdout]     |
[INFO] [stdout]  64 | impl History {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout]  65 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn push(&mut self, op: EditOperation) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn undo(&mut self) -> Option<EditOperation> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn redo(&mut self) -> Option<EditOperation> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn can_undo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn can_redo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_suggestion` is never used
[INFO] [stdout]  --> src/ui/suggestions.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn format_suggestion(suggestion: &Suggestion) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `suggestion_color_intensity` is never used
[INFO] [stdout]   --> src/ui/suggestions.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn suggestion_color_intensity(pulse_phase: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `source` is never read
[INFO] [stdout]   --> src/ai/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Suggestion {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub source: SuggestionSource,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Suggestion` 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: variant `SentenceSuggestion` is never constructed
[INFO] [stdout]   --> src/ai/mod.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum ApiResponse {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] 26 |     WordSuggestion(Option<Suggestion>),
[INFO] [stdout] 27 |     SentenceSuggestion(Option<Suggestion>),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ApiResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `suggest_sentence` is never used
[INFO] [stdout]   --> src/ai/api.rs:89:18
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl OpenAIClient {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub async fn suggest_sentence(&self, context: &str) -> Option<Suggestion> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_model`, `suggest_sentence`, and `model_name` are never used
[INFO] [stdout]    --> src/ai/anthropic.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl AnthropicClient {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn with_model(config: Config, model: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub async fn suggest_sentence(&self, context: &str) -> Option<Suggestion> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn model_name(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `api`, `config`, and `last_api_call` are never read
[INFO] [stdout]   --> src/ai/hybrid.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct HybridEngine {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout]  7 |     local: MarkovEngine,
[INFO] [stdout]  8 |     api: OpenAIClient,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]  9 |     config: Config,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 10 |     last_api_call: Option<Instant>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `should_call_api`, `start_api_request`, and `start_sentence_request` are never used
[INFO] [stdout]   --> src/ai/hybrid.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl HybridEngine {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn should_call_api(&self, local_suggestions: &[Suggestion]) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn start_api_request(&mut self, context: String, tx: mpsc::Sender<Option<Suggestion>>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn start_sentence_request(&mut self, context: String, tx: mpsc::Sender<Option<Suggestion>>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `preview` is never used
[INFO] [stdout]   --> src/commands/generators.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Generators {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn preview(command: &Command) -> String {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `has_any_api_key` and `current_model` are never used
[INFO] [stdout]    --> src/config.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  86 | impl Config {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn has_any_api_key(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn current_model(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `all_categories` is never used
[INFO] [stdout]    --> src/emoji.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl EmojiEngine {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn all_categories(&self) -> Vec<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_replace_char`, `backspace_replace`, `match_count`, and `current_match_index` are never used
[INFO] [stdout]    --> src/search.rs:73:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl SearchState {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn add_replace_char(&mut self, c: char) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn backspace_replace(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn match_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn current_match_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cursor` is never read
[INFO] [stdout]   --> src/app.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct EditorState {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] 18 |     buffer: TextBuffer,
[INFO] [stdout] 19 |     cursor: (usize, usize),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EditorState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `start_selection`, `replace_all`, `current_ai_provider`, `ai_status_text`, and `get_emoji_engine` are never used
[INFO] [stdout]    --> src/app.rs:318:12
[INFO] [stdout]     |
[INFO] [stdout]  54 | impl App {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub fn start_selection(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub fn replace_all(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 661 |     pub fn current_ai_provider(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 669 |     pub fn ai_status_text(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 746 |     pub fn get_emoji_engine(&self) -> &EmojiEngine {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `current_line`, `current_line_mut`, `last_word`, `visual_cursor_x`, `wrapped_cursor_position`, and `lines_mut` are never used
[INFO] [stdout]    --> src/buffer/text.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl TextBuffer {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn current_line(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn current_line_mut(&mut self) -> &mut String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn last_word(&self) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 372 |     pub fn visual_cursor_x(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     pub fn wrapped_cursor_position(&self, width: usize) -> (usize, usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 458 |     pub fn lines_mut(&mut self) -> &mut Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `line`, `col`, and `text` are never read
[INFO] [stdout]  --> src/buffer/history.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 5 |     Insert {
[INFO] [stdout]   |     ------ fields in this variant
[INFO] [stdout] 6 |         line: usize,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout] 7 |         col: usize,
[INFO] [stdout]   |         ^^^
[INFO] [stdout] 8 |         text: String,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `EditOperation` 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 `line`, `col`, and `text` are never read
[INFO] [stdout]   --> src/buffer/history.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |     Delete {
[INFO] [stdout]    |     ------ fields in this variant
[INFO] [stdout] 12 |         line: usize,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 13 |         col: usize,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 14 |         text: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EditOperation` 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 `line` and `col` are never read
[INFO] [stdout]   --> src/buffer/history.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |     InsertNewline {
[INFO] [stdout]    |     ------------- fields in this variant
[INFO] [stdout] 18 |         line: usize,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 19 |         col: usize,
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EditOperation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `line` is never read
[INFO] [stdout]   --> src/buffer/history.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     DeleteNewline {
[INFO] [stdout]    |     ------------- field in this variant
[INFO] [stdout] 23 |         line: usize,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EditOperation` 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: variant `Batch` is never constructed
[INFO] [stdout]   --> src/buffer/history.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout]  3 | pub enum EditOperation {
[INFO] [stdout]    |          ------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 26 |     Batch(Vec<EditOperation>),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EditOperation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `inverse` is never used
[INFO] [stdout]   --> src/buffer/history.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl EditOperation {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 30 |     /// Returns the inverse operation for undo
[INFO] [stdout] 31 |     pub fn inverse(&self) -> EditOperation {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `History` is never constructed
[INFO] [stdout]   --> src/buffer/history.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct History {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/buffer/history.rs:65:12
[INFO] [stdout]     |
[INFO] [stdout]  64 | impl History {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout]  65 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn push(&mut self, op: EditOperation) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn undo(&mut self) -> Option<EditOperation> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn redo(&mut self) -> Option<EditOperation> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn can_undo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn can_redo(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_suggestion` is never used
[INFO] [stdout]  --> src/ui/suggestions.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn format_suggestion(suggestion: &Suggestion) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `suggestion_color_intensity` is never used
[INFO] [stdout]   --> src/ui/suggestions.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn suggestion_color_intensity(pulse_phase: f32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `source` is never read
[INFO] [stdout]   --> src/ai/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Suggestion {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub source: SuggestionSource,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Suggestion` 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: variant `SentenceSuggestion` is never constructed
[INFO] [stdout]   --> src/ai/mod.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum ApiResponse {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] 26 |     WordSuggestion(Option<Suggestion>),
[INFO] [stdout] 27 |     SentenceSuggestion(Option<Suggestion>),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ApiResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `suggest_sentence` is never used
[INFO] [stdout]   --> src/ai/api.rs:89:18
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl OpenAIClient {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub async fn suggest_sentence(&self, context: &str) -> Option<Suggestion> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_model`, `suggest_sentence`, and `model_name` are never used
[INFO] [stdout]    --> src/ai/anthropic.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl AnthropicClient {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn with_model(config: Config, model: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub async fn suggest_sentence(&self, context: &str) -> Option<Suggestion> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn model_name(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `api`, `config`, and `last_api_call` are never read
[INFO] [stdout]   --> src/ai/hybrid.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct HybridEngine {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout]  7 |     local: MarkovEngine,
[INFO] [stdout]  8 |     api: OpenAIClient,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]  9 |     config: Config,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 10 |     last_api_call: Option<Instant>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `should_call_api`, `start_api_request`, and `start_sentence_request` are never used
[INFO] [stdout]   --> src/ai/hybrid.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl HybridEngine {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn should_call_api(&self, local_suggestions: &[Suggestion]) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn start_api_request(&mut self, context: String, tx: mpsc::Sender<Option<Suggestion>>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn start_sentence_request(&mut self, context: String, tx: mpsc::Sender<Option<Suggestion>>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `preview` is never used
[INFO] [stdout]   --> src/commands/generators.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Generators {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn preview(command: &Command) -> String {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `has_any_api_key` and `current_model` are never used
[INFO] [stdout]    --> src/config.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  86 | impl Config {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn has_any_api_key(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn current_model(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `all_categories` is never used
[INFO] [stdout]    --> src/emoji.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout]   9 | impl EmojiEngine {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn all_categories(&self) -> Vec<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_replace_char`, `backspace_replace`, `match_count`, and `current_match_index` are never used
[INFO] [stdout]    --> src/search.rs:73:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl SearchState {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn add_replace_char(&mut self, c: char) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn backspace_replace(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn match_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn current_match_index(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 30.98s
[INFO] running `Command { std: "docker" "inspect" "68450b9788d9156a169d1256f9c6e3ab38e78275b740b21e4f1903f63caa3b0e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "68450b9788d9156a169d1256f9c6e3ab38e78275b740b21e4f1903f63caa3b0e", kill_on_drop: false }`
[INFO] [stdout] 68450b9788d9156a169d1256f9c6e3ab38e78275b740b21e4f1903f63caa3b0e
