{"record":{"id":"c7c779c4a2de3096","repo":"tursodatabase/turso","slug":"manual-page-not-found-page-name","errorCode":null,"errorMessage":"Manual page not found: {page_name}","messagePattern":"Manual page not found: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"cli/manual.rs","lineNumber":155,"sourceCode":"        let content = strip_frontmatter(content);\n        if IsTerminal::is_terminal(&std::io::stdout()) {\n            render_in_terminal(content)?;\n        } else {\n            writeln!(writer, \"{content}\")?;\n        }\n        Ok(())\n    } else if page.is_none() {\n        // If no page specified, list available pages\n        return list_available_manuals(writer);\n    } else {\n        let available_pages = MANUAL_DIR\n            .files()\n            .filter_map(|file| file.path().file_stem().and_then(|stem| stem.to_str()));\n        let mut error_message = format!(\"Manual page not found: {page_name}\");\n        if let Some(suggestion) = find_closest_manual_page(page_name, available_pages) {\n            error_message.push_str(&format!(\"\\n\\nDid you mean '.manual {suggestion}'?\"));\n        }\n        Err(anyhow::anyhow!(error_message))\n    }\n}\n\nfn render_in_terminal(content: &str) -> anyhow::Result<()> {\n    // Create a skin with nice styling\n    let mut skin = MadSkin::default();\n\n    // Customize the skin for better appearance\n    skin.set_headers_fg(termimad::crossterm::style::Color::Cyan);\n    skin.bold.set_fg(termimad::crossterm::style::Color::Yellow);\n    skin.italic\n        .set_fg(termimad::crossterm::style::Color::Magenta);\n    skin.inline_code\n        .set_fg(termimad::crossterm::style::Color::Green);\n    skin.code_block\n        .set_fg(termimad::crossterm::style::Color::Green);\n\n    let mut w = stdout();","sourceCodeStart":137,"sourceCodeEnd":173,"githubUrl":"https://github.com/tursodatabase/turso/blob/244cde92a7df7f9b8b8b7a4075c35a12977e303e/cli/manual.rs#L137-L173","documentation":"Returned by .manual <page> when no embedded page matches the name (cli/manual.rs:155). The CLI appends a 'Did you mean .manual X?' suggestion using closest-name matching, and .manual with no argument lists all available pages instead of erroring.","triggerScenarios":"Typo in the page name (.manual indxe); asking for a page that was renamed or removed; expecting a page that exists in external docs but was never added to the embedded MANUAL_DIR.","commonSituations":"Pages renamed between versions while muscle memory uses old names; not using shell completion; case-sensitive mismatch in the page name.","solutions":["Take the suggestion in the error message - it usually names the correct page","Run .manual with no argument to list every available page","Check spelling and case of the page name"],"exampleFix":"-- before\n.manual querry\n-- Did you mean '.manual query'?\n-- after\n.manual query","handlingStrategy":"validation","validationCode":"let known: Vec<&str> = MANUAL_DIR.files()\n    .filter_map(|f| f.path().file_stem().and_then(|s| s.to_str()))\n    .collect();\nanyhow::ensure!(known.contains(&page), \"unknown page; available: {known:?}\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run .manual with no argument to list valid pages","Use the 'Did you mean' suggestion the error already provides","Use shell completion instead of typing page names from memory"],"tags":["cli","manual","not-found","did-you-mean","rust"],"backgroundTag":"documentation-page-not-found","analyzedSha":"244cde92a7df7f9b8b8b7a4075c35a12977e303e","analyzedAt":"2026-08-20T07:02:18.389Z","contentChangedAt":"2026-08-20T07:02:18.389Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}