Validate dependsOnID is non-empty before setting discoveredFromParentID
to prevent attempting to fetch an issue with empty ID.
Also added validation to ensure parent issue exists before generating
child IDs in direct mode.
Fixes: bd-ia8r
Fixes bd-bxha
Previously, bd init prompted users to install git hooks and merge driver,
which could result in incomplete setup if declined. Changed to install
both by default for better out-of-the-box experience.
Changes:
- Install git hooks automatically unless --skip-hooks is passed
- Install merge driver automatically unless --skip-merge-driver is passed
- Remove interactive prompts (no longer needed)
- Add warning messages on failure with suggestion to run bd doctor --fix
- Add --skip-hooks flag for explicit opt-out
Users who want to skip installation can now use:
bd init --skip-hooks --skip-merge-driver
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implements bd-zwtq: After bd init completes, run doctor diagnostics
to catch configuration problems before user encounters them in normal
workflow. If any warnings or errors are detected, show a summary with
issue names and messages, then direct user to run 'bd doctor --fix'.
This helps users immediately identify and fix setup issues like:
- Missing git hooks
- Unconfigured merge driver
- Missing agent documentation
- Metadata tracking not initialized
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Critical fixes from code review:
1. **Moved auto-migration to correct location**
- Now runs AFTER daemon check but BEFORE opening database
- Prevents: database opened twice, conflicts with daemon
- Was: Running too early, before knowing if daemon exists
2. **Fixed context cancellation issue**
- Check if rootCtx is canceled before using it
- Fall back to Background() if canceled
- Fixes: "context canceled" errors in test suite
3. **Updated function signature**
- Takes dbPath as parameter (no longer searches for it)
- Simpler, more explicit, easier to test
- Caller already has dbPath, no need to re-discover
4. **Enhanced test reliability**
- Save/restore all global state
- Add debug logging for troubleshooting
- Verify preconditions before migration
Changes:
- cmd/bd/main.go: Move autoMigrateOnVersionBump call to correct location
- cmd/bd/version_tracking.go: Fix context handling, update signature
- cmd/bd/version_tracking_test.go: Improve test reliability
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
When CLI is upgraded (e.g., 0.24.0 → 0.24.1), the database version
is now automatically updated to match the CLI version during
PersistentPreRun. This fixes the recurring UX issue where bd doctor
shows version mismatch after every CLI upgrade.
Implementation:
- Added autoMigrateOnVersionBump() function in version_tracking.go
- Calls after trackBdVersion() in PersistentPreRun
- Best-effort and silent failures to avoid disrupting commands
- Only updates bd_version metadata field
- Includes comprehensive test coverage
Changes:
- cmd/bd/main.go: Call autoMigrateOnVersionBump() in PersistentPreRun
- cmd/bd/version_tracking.go: Implement auto-migration logic
- cmd/bd/version_tracking_test.go: Add tests for auto-migration
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add comprehensive validation of metadata.json version tracking to bd doctor:
Checks added:
- metadata.json exists and is valid JSON
- LastBdVersion field is present and non-empty
- LastBdVersion is valid semver format (e.g., 0.24.2)
- Warns if LastBdVersion is very old (> 10 minor versions behind)
- Provides helpful fix messages for each validation failure
Implementation:
- New checkMetadataVersionTracking() function
- Helper functions: isValidSemver(), parseVersionParts()
- Comprehensive test coverage for all validation scenarios
Tests:
- TestCheckMetadataVersionTracking: 7 test cases covering all scenarios
- TestIsValidSemver: Version format validation
- TestParseVersionParts: Version parsing logic
This helps ensure version tracking (bd-loka) is working correctly and
alerts users if they've missed important upgrade notifications.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Address code review findings from bd-p3b0:
1. Fix variable shadowing in upgradeAckCmd
- Renamed local 'previousVersion' to 'lastSeenVersion'
- Prevents confusion with global variable
2. Fix getVersionsSince() logic bug
- versionChanges array is reverse chronological (newest first)
- Function now correctly returns versions before the index
- Reverses result to provide chronological order (oldest first)
- Adds comprehensive documentation
3. Add comprehensive unit tests
- Test getVersionsSince with various scenarios
- Test trackBdVersion with no dir, first run, upgrade, same version
- Test maybeShowUpgradeNotification behavior
- All tests passing
Fixes found bugs and adds 100% test coverage for version tracking.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>