tursodatabase/turso · warning
Manual page not found: {page_name}
Error message
Manual page not found: {page_name} What it means
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.
Source
Thrown at cli/manual.rs:155
let content = strip_frontmatter(content);
if IsTerminal::is_terminal(&std::io::stdout()) {
render_in_terminal(content)?;
} else {
writeln!(writer, "{content}")?;
}
Ok(())
} else if page.is_none() {
// If no page specified, list available pages
return list_available_manuals(writer);
} else {
let available_pages = MANUAL_DIR
.files()
.filter_map(|file| file.path().file_stem().and_then(|stem| stem.to_str()));
let mut error_message = format!("Manual page not found: {page_name}");
if let Some(suggestion) = find_closest_manual_page(page_name, available_pages) {
error_message.push_str(&format!("\n\nDid you mean '.manual {suggestion}'?"));
}
Err(anyhow::anyhow!(error_message))
}
}
fn render_in_terminal(content: &str) -> anyhow::Result<()> {
// Create a skin with nice styling
let mut skin = MadSkin::default();
// Customize the skin for better appearance
skin.set_headers_fg(termimad::crossterm::style::Color::Cyan);
skin.bold.set_fg(termimad::crossterm::style::Color::Yellow);
skin.italic
.set_fg(termimad::crossterm::style::Color::Magenta);
skin.inline_code
.set_fg(termimad::crossterm::style::Color::Green);
skin.code_block
.set_fg(termimad::crossterm::style::Color::Green);
let mut w = stdout();View on GitHub (pinned to 244cde92a7)
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
Example fix
-- before .manual querry -- Did you mean '.manual query'? -- after .manual query
Defensive patterns
Strategy: validation
Validate before calling
let known: Vec<&str> = MANUAL_DIR.files()
.filter_map(|f| f.path().file_stem().and_then(|s| s.to_str()))
.collect();
anyhow::ensure!(known.contains(&page), "unknown page; available: {known:?}"); Prevention
- 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
When it happens
Trigger: 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.
Common situations: Pages renamed between versions while muscle memory uses old names; not using shell completion; case-sensitive mismatch in the page name.
Related errors
- Failed to read manual page: {}
- Could not determine home directory
- Error setting Ctrl-C handler
- Page number must be a positive integer.
- Page number {pgno} is out of bounds. The database only has {
AI-assisted analysis of tursodatabase/turso@244cde92a7 (2026-08-20).
Data as JSON: /api/errors/c7c779c4a2de3096.
Report an issue: GitHub.