pub async fn list_issues(repo_dir: &str) -> Option<Vec<IssueInfo>>
Fetch open issues for a repository using gh CLI (cached with 30s TTL)