Commit Graph

2752 Commits

Author SHA1 Message Date
matt wilkie 3e0ae1c555 bd sync: apply DB changes after import 2025-11-29 00:54:42 -07:00
matt wilkie e3e7db355f Merge branch 'fix-ci' of https://github.com/maphew/beads into fix-ci 2025-11-29 00:54:27 -07:00
matt wilkie a043e34d3f bd sync: 2025-11-29 00:54:21 2025-11-29 00:54:21 -07:00
matt wilkie 2eec4f038a fix: clean up .beads directory before Nix Flake test
The Nix Flake CI test was failing because the repository has an existing
.beads/issues.jsonl file checked in, which caused bd init to refuse to
initialize (detecting it as a fresh clone with existing data).

Solution: Remove .beads before running bd init in the test to start fresh.
2025-11-29 00:54:03 -07:00
matt wilkie 9182e9f30d fix: suppress gosec lint warnings for file operations
All file reads/writes are from controlled paths (.beads/, .git/, or git root).
Add #nosec comments to suppress G304 and G204 warnings.

- cmd/bd/doctor.go:664 - ReadFile from .beads/config.yaml
- cmd/bd/main.go:645 - ReadFile from .beads/{issues,beads}.jsonl
- cmd/bd/doctor/fix/database_config.go:166 - ReadFile from git root .gitattributes
- cmd/bd/doctor/fix/untracked.go:61 - exec Command with whitelisted JSONL files
2025-11-29 00:54:03 -07:00
matt wilkie e24147c2fe fix: remove duplicate countIssuesInJSONLFile function
Fixes build failure in Test, Lint, Test (Windows), and Test Nix Flake jobs.
The function was defined in both init.go and doctor.go. Removed the init.go
version which is now unused. The doctor.go version (which calls
countJSONLIssues) is the canonical implementation.

Fixes #19780439467
2025-11-29 00:54:03 -07:00
matt wilkie 83c2a8c196 fix: clean up .beads directory before Nix Flake test
The Nix Flake CI test was failing because the repository has an existing
.beads/issues.jsonl file checked in, which caused bd init to refuse to
initialize (detecting it as a fresh clone with existing data).

Solution: Remove .beads before running bd init in the test to start fresh.
2025-11-29 00:49:33 -07:00
matt wilkie dee16db0c0 fix: suppress gosec lint warnings for file operations
All file reads/writes are from controlled paths (.beads/, .git/, or git root).
Add #nosec comments to suppress G304 and G204 warnings.

- cmd/bd/doctor.go:664 - ReadFile from .beads/config.yaml
- cmd/bd/main.go:645 - ReadFile from .beads/{issues,beads}.jsonl
- cmd/bd/doctor/fix/database_config.go:166 - ReadFile from git root .gitattributes
- cmd/bd/doctor/fix/untracked.go:61 - exec Command with whitelisted JSONL files
2025-11-29 00:44:23 -07:00
matt wilkie f134a3d658 fix: remove duplicate countIssuesInJSONLFile function
Fixes build failure in Test, Lint, Test (Windows), and Test Nix Flake jobs.
The function was defined in both init.go and doctor.go. Removed the init.go
version which is now unused. The doctor.go version (which calls
countJSONLIssues) is the canonical implementation.

Fixes #19780439467
2025-11-29 00:39:28 -07:00
Steve Yegge 078efdf07b bd sync: 2025-11-28 23:37:56 2025-11-28 23:37:56 -08:00
Steve Yegge 65baeecce1 bd sync: 2025-11-28 23:36:21 2025-11-28 23:36:21 -08:00
Steve Yegge a4e0f9dbc8 fix(no-db): auto-detect JSONL-only mode when config has no-db:true (bd-5kj)
When .beads exists with issues.jsonl but no SQLite database, and config.yaml
has no-db: true, automatically enable JSONL-only mode instead of failing
with 'no beads database found'. Also improved error message to mention
--no-db option.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 23:36:11 -08:00
Steve Yegge 092863b4dd bd sync: 2025-11-28 23:34:12 2025-11-28 23:34:12 -08:00
Steve Yegge cd114b7bd5 feat: extract error handling helpers FatalError/WarnError (bd-s0z)
Create reusable error handling helpers to reduce boilerplate and
enforce consistency across the codebase:

- FatalError(format, args...): writes "Error: ..." to stderr and exits
- FatalErrorWithHint(message, hint): includes actionable suggestion
- WarnError(format, args...): writes "Warning: ..." to stderr

Prototyped in create.go to validate the approach - converted 13 error
patterns and 5 warning patterns. This reduces code from:

    fmt.Fprintf(os.Stderr, "Error: %v\n", err)
    os.Exit(1)

To simply:

    FatalError("%v", err)

Also fixed countIssuesInJSONLFile reference after earlier refactoring.

See docs/ERROR_HANDLING.md for the three-pattern guideline.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 23:28:30 -08:00
Steve Yegge 0ab815dd5a bd sync: 2025-11-28 23:28:10 2025-11-28 23:28:17 -08:00
Steve Yegge 642f1c286b bd sync: 2025-11-28 23:27:36 2025-11-28 23:27:36 -08:00
Steve Yegge 50f64ecece docs: extend error handling audit with Phase 2 (bd-3gc)
Audited 10 additional cmd/bd files for error handling consistency:
- daemon_sync.go, list.go, show.go, dep.go, label.go
- comments.go, delete.go, compact.go, config.go, validate.go

Key findings:
- Pattern compliance is excellent (~97% for Pattern A, ~95% for Pattern B)
- Identified good patterns: batch operations continue, daemon fallback
- Updated compliance scorecard with new results

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 23:27:24 -08:00
Steve Yegge d672eb0684 bd sync: 2025-11-28 23:27:08 2025-11-28 23:27:24 -08:00
Steve Yegge 975da2f6f9 bd sync: 2025-11-28 23:26:28 2025-11-28 23:26:28 -08:00
Steve Yegge ad0babce96 bd sync: 2025-11-28 23:26:20 2025-11-28 23:26:28 -08:00
Steve Yegge d6f19d71f7 bd sync: apply DB changes after import 2025-11-28 23:26:24 -08:00
Steve Yegge 0d6298f2d3 docs: add performance testing guide (bd-zj8e)
Created docs/PERFORMANCE_TESTING.md with comprehensive coverage of:
- Running benchmarks (make bench, make bench-quick)
- Running specific benchmarks
- Understanding benchmark output (ns/op, allocs/op)
- CPU profiling with pprof and flamegraphs
- Memory profiling
- User diagnostics (bd doctor --perf)
- Comparing performance with benchstat
- Optimization tips and common patterns

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 23:26:24 -08:00
Steve Yegge 24999931a5 bd sync: 2025-11-28 23:25:41 2025-11-28 23:25:41 -08:00
Steve Yegge 7a38cb2d6b bd sync: 2025-11-28 23:25:34 2025-11-28 23:25:41 -08:00
Steve Yegge 65e8fa14f8 bd sync: apply DB changes after import 2025-11-28 23:20:15 -08:00
Steve Yegge 9b86e8ba10 bd sync: apply DB changes after import 2025-11-28 23:20:10 -08:00
Steve Yegge 608eeb82ec bd sync: 2025-11-28 23:19:26 2025-11-28 23:19:26 -08:00
Steve Yegge a5ec5c6977 feat(bd-1pj6): Add custom status states via config
Users can now define custom status states for multi-step pipelines using:
  bd config set status.custom "awaiting_review,awaiting_testing,awaiting_docs"

Changes:
- Add Status.IsValidWithCustom() method for custom status validation
- Add Issue.ValidateWithCustomStatuses() method
- Add GetCustomStatuses() method to storage interface
- Update CreateIssue/UpdateIssue to support custom statuses
- Add comprehensive tests for custom status functionality
- Update config command help text with custom status documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 23:19:21 -08:00
Steve Yegge 26f84b6a47 bd sync: 2025-11-28 23:19:01 2025-11-28 23:19:21 -08:00
Steve Yegge ce53a4373c bd sync: 2025-11-28 23:15:17 2025-11-28 23:15:17 -08:00
Steve Yegge f269554b72 bd sync: apply DB changes after import 2025-11-28 23:14:45 -08:00
Steve Yegge 061d11d138 bd sync: apply DB changes after import 2025-11-28 23:14:12 -08:00
Steve Yegge f59f8c20d0 refactor: rename last_import_hash to jsonl_content_hash (bd-39o)
The metadata key 'last_import_hash' was misleading because it's updated on
both import AND export. Renamed to 'jsonl_content_hash' which more accurately
describes its purpose - tracking the content hash of the JSONL file.

Added migration support: read operations try new key first, then fall back
to old key for backwards compatibility with existing databases.

Files modified:
- cmd/bd/integrity.go: Update key name with migration support
- cmd/bd/import.go: Update key name
- cmd/bd/sync.go: Update key name
- cmd/bd/autoflush.go: Update key name with migration support
- cmd/bd/daemon_sync.go: Update key name
- cmd/bd/daemon_event_loop.go: Update key name with migration support
- internal/autoimport/autoimport.go: Update key name with migration support
- Updated all related tests

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 23:14:12 -08:00
Steve Yegge bca8022bee bd sync: 2025-11-28 23:13:57 2025-11-28 23:14:12 -08:00
Steve Yegge 7fb2122601 bd sync: apply DB changes after import 2025-11-28 23:12:58 -08:00
Steve Yegge 9abe99e05a docs(UX): improve daemon and merge documentation (bd-bt6y)
- Clarify bd merge help text: git merge driver, not for duplicate issues
- Add Do I Need the Daemon section to DAEMON.md
- Add daemon overview section to QUICKSTART.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 23:11:24 -08:00
Steve Yegge 51db4c8212 bd sync: 2025-11-28 23:10:52 2025-11-28 23:11:00 -08:00
Steve Yegge 39909c1f80 feat: implement health checks in daemon event loop (bd-gqo)
Add health checks to checkDaemonHealth() function:
- Database integrity check using PRAGMA quick_check(1)
- Disk space check with 100MB warning threshold (platform-specific)
- Memory usage check with 500MB heap warning threshold

Platform-specific disk space implementations:
- Unix: uses unix.Statfs
- Windows: uses windows.GetDiskFreeSpaceEx
- WASM: returns unsupported (false)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 23:10:44 -08:00
Steve Yegge 5882a2f105 bd sync: 2025-11-28 23:10:29 2025-11-28 23:10:35 -08:00
Steve Yegge 3ccfc8e6ad bd sync: 2025-11-28 23:09:20 2025-11-28 23:09:21 -08:00
Steve Yegge 9efd31de5f bd-o2e: Add --squash flag to bd sync for batching commits
For solo developers who don't need real-time multi-agent coordination,
--squash accumulates changes in JSONL without committing. Run 'bd sync'
later (without --squash) to commit all accumulated changes in one commit.

This reduces git history noise while preserving the default behavior
needed for multi-agent orchestration.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 23:09:20 -08:00
Steve Yegge 116acd4698 bd sync: 2025-11-28 23:09:11 2025-11-28 23:09:11 -08:00
Steve Yegge 70dc0704af bd sync: 2025-11-28 23:08:50 2025-11-28 23:09:05 -08:00
Steve Yegge 4c713e03ff bd sync: 2025-11-28 23:08:12 2025-11-28 23:08:12 -08:00
Steve Yegge 12b678058a bd sync: 2025-11-28 23:08:01 2025-11-28 23:08:08 -08:00
Steve Yegge 40b07045c7 refactor: deduplicate FindJSONLInDir function (bd-8a5)
Extract shared JSONL file discovery logic to internal/utils/path.go.
Both autoimport and beads packages now use this shared implementation.

Changes:
- Add utils.FindJSONLInDir with common logic
- Update autoimport.go to use utils.FindJSONLInDir
- Update beads.go to delegate to utils.FindJSONLInDir
- Update server_export_import_auto.go to use utils.FindJSONLInDir
- Move FindJSONLInDir test to utils/path_test.go
- Fix pre-existing duplicate countIssuesInJSONLFile in init.go

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 23:07:53 -08:00
Steve Yegge 52fe60859a bd sync: 2025-11-28 23:07:13 2025-11-28 23:07:30 -08:00
Steve Yegge 93b1c47e54 bd sync: apply DB changes after import 2025-11-28 23:04:22 -08:00
Steve Yegge 4ef5a28afc bd sync: 2025-11-28 22:17:18 2025-11-28 22:17:18 -08:00
Steve Yegge 01dde64b82 bd sync: apply DB changes after import 2025-11-28 22:17:12 -08:00