{"record":{"id":"a19fadd2e91900b8","repo":"Hmbown/CodeWhale","slug":"failed-to-update-setting-invalid-key-value-a19fad","errorCode":null,"errorMessage":"Failed to update setting: invalid {key} '{value}'. Expected 0 or a positive integer.","messagePattern":"Failed to update setting: invalid (.+?) '(.+?)'\\. Expected 0 or a positive integer\\.","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/tui/src/settings.rs","lineNumber":2574,"sourceCode":"        \"on\" | \"true\" | \"yes\" | \"1\" | \"enabled\" => Ok(true),\n        \"off\" | \"false\" | \"no\" | \"0\" | \"disabled\" => Ok(false),\n        _ => {\n            anyhow::bail!(\"Failed to parse boolean '{value}': expected on/off, true/false, yes/no.\")\n        }\n    }\n}\n\nfn default_thinking_preview_lines() -> usize {\n    2\n}\n\nfn default_true() -> bool {\n    true\n}\n\nfn parse_usize_setting(key: &str, value: &str) -> Result<usize> {\n    value.trim().parse::<usize>().map_err(|_| {\n        anyhow::anyhow!(\n            \"Failed to update setting: invalid {key} '{value}'. Expected 0 or a positive integer.\"\n        )\n    })\n}\n\nfn parse_u16_range(key: &str, value: &str, min: u16, max: u16) -> Result<u16> {\n    let parsed = value\n        .trim()\n        .parse::<u16>()\n        .map_err(|_| anyhow::anyhow!(\"Invalid {key} '{value}': expected {min}-{max}\"))?;\n    if !(min..=max).contains(&parsed) {\n        anyhow::bail!(\"Invalid {key} '{value}': expected {min}-{max}\");\n    }\n    Ok(parsed)\n}\n\nfn parse_percent_setting(key: &str, value: &str) -> Result<f64> {\n    let trimmed = value.trim().trim_end_matches('%').trim();","sourceCodeStart":2556,"sourceCodeEnd":2592,"githubUrl":"https://github.com/Hmbown/CodeWhale/blob/0c42157ee52f9d55af2b506d71b46249910f77d3/crates/tui/src/settings.rs#L2556-L2592","documentation":"Generic parse_usize_setting failure: value.trim().parse::<usize>() returned Err for the named key — the input is not a bare non-negative integer. Used by numeric settings in Settings::set; the key in the message identifies which numeric setting failed to parse.","triggerScenarios":"Thrown at crates/tui/src/settings.rs:2574 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Enter a decimal non-negative integer with no sign, units, or separators","Very large values overflow usize — pick a smaller number","Re-check the setting's documented range before retrying"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0c42157ee52f9d55af2b506d71b46249910f77d3","analyzedAt":"2026-08-20T21:50:45.477Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}