d70b8e2363
Backend (git_repositories.py): - get_repository_branches: check for .git dir OR HEAD file (handles bare repos) - When local repo is missing, git ls-remote fallback now uses SSH key auth via _prepare_ssh_env() for repos with ssh_key_id - Cleans up temp SSH key file after ls-remote - Logs ls-remote stderr/exit code for debugging - Returns server's detail message instead of raw axios 404 text Frontend (use-git-repo.ts): - extractError() helper pulls server detail/message from axios responses - User sees 'repository not found on disk — re-clone or re-create' instead of generic 'Request failed with status code 404' Quality gates: ruff clean, tsc --noEmit clean, 11 passed + 1 pre-existing failure