From 336eaa74e36c9361c045071866bfadd88084e081 Mon Sep 17 00:00:00 2001 From: Jamie Date: Fri, 9 Jan 2026 23:17:06 -0600 Subject: [PATCH] fix: bd init hangs on Windows when not in a git repository (#991) Traversing up to C:\ creates infinite loop. --- internal/beads/beads.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/internal/beads/beads.go b/internal/beads/beads.go index 1c1e9dc1..d3761fb3 100644 --- a/internal/beads/beads.go +++ b/internal/beads/beads.go @@ -470,7 +470,7 @@ func FindBeadsDir() string { gitRoot = mainRepoRoot } - for dir := cwd; dir != "/" && dir != "."; dir = filepath.Dir(dir) { + for dir := cwd; dir != "/" && dir != "."; { beadsDir := filepath.Join(dir, ".beads") if info, err := os.Stat(beadsDir); err == nil && info.IsDir() { // Follow redirect if present @@ -486,6 +486,16 @@ func FindBeadsDir() string { if gitRoot != "" && dir == gitRoot { break } + + // Move up one directory + parent := filepath.Dir(dir) + if parent == dir { + // Reached filesystem root (works on both Unix and Windows) + // On Unix: filepath.Dir("/") returns "/" + // On Windows: filepath.Dir("C:\\") returns "C:\\" + break + } + dir = parent } return ""