Commit Graph

1178 Commits

Author SHA1 Message Date
Steve Yegge
09bd4d3462 Fix CI test failures (bd-1231)
- Always recompute content_hash in importer to avoid stale hashes from JSONL
- Add .gitignore to test repos to prevent database files from being tracked
- Fix daemon auto-import test to use correct RPC operation ('show' not 'get_issue')
- Set last_import_time metadata in test helper to enable staleness check
- Add filesystem settle delay after git pull in tests

Root cause: CloseIssue updates status but not content_hash, so importer
thought issues were unchanged. Always recomputing content_hash fixes this.

Amp-Thread-ID: https://ampcode.com/threads/T-63ef3a7d-8efe-472d-97ed-6ac95bd8318b
Co-authored-by: Amp <amp@ampcode.com>
2025-11-02 08:55:34 -08:00
Steve Yegge
defc90deeb fix: bd migrate respects config.json database name and fixes I/O errors
Fixes #204

Multiple critical bugs in bd migrate:

1. **Respects config.json database name**: migrate now loads config.json
   and uses the configured database name instead of hardcoding beads.db.
   Users with custom database names (e.g., beady.db) will no longer
   have their databases renamed.

2. **Fixes disk I/O error (522)**: Clean up orphaned WAL files before
   reopening database to update schema version. This prevents SQLite
   error 522 (disk I/O error) when WAL files exist from previous
   database sessions.

3. **Creates backup before migration**: First migration now creates
   a timestamped backup (*.backup-pre-migrate-*.db) before renaming
   database, consistent with hash-id migration behavior.

4. **Cleans up orphaned WAL files**: Removes .db-wal and .db-shm
   files after migrating old database to prevent stale files.

Changes:
- Load config.json in migrate command to get target database name
- Use cfg.Database instead of hardcoded beads.CanonicalDatabaseName
- Add loadOrCreateConfig() helper function
- Add cleanupWALFiles() to remove orphaned WAL/SHM files
- Create backup before first migration
- Clean up WAL files before version update and after migration
- Add TestMigrateRespectsConfigJSON test

All migration tests passing.

Amp-Thread-ID: https://ampcode.com/threads/T-e5b9ddd0-621b-418b-bc52-ba9462975c39
Co-authored-by: Amp <amp@ampcode.com>
2025-11-02 08:46:20 -08:00
David Laing
50a324db85 Fix #202: Add dependency_type to bd show --json output (#203)
The JSON output from bd show now includes the dependency_type field
for both dependencies and dependents, enabling programmatic
differentiation between dependency types (blocks, related,
parent-child, discovered-from).

Implementation approach:
- Added IssueWithDependencyMetadata type with embedded Issue and
  DependencyType field
- Extended GetDependenciesWithMetadata and GetDependentsWithMetadata
  to include dependency type from SQL JOIN
- Made GetDependencies and GetDependents wrap the WithMetadata
  methods for backward compatibility
- Added scanIssuesWithDependencyType helper to handle scanning with
  dependency type field
- Updated bd show --json to use WithMetadata methods

Tests added:
- TestGetDependenciesWithMetadata - basic functionality
- TestGetDependentsWithMetadata - dependent retrieval
- TestGetDependenciesWithMetadataEmpty - edge case handling
- TestGetDependenciesWithMetadataMultipleTypes - multiple types

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Happy <yesreply@happy.engineering>
2025-11-02 08:40:10 -08:00
Steve Yegge
d240439868 fix: Resolve Windows test failures and lint warnings
- Fix Windows binary path issues (bd.exe vs bd)
- Skip scripttest on Windows (requires Unix shell)
- Skip file lock tests on Windows (platform locking differences)
- Fix registry tests to use USERPROFILE on Windows
- Fix 8 unparam lint warnings by marking unused params with _

All changes are platform-aware and maintain functionality.

Amp-Thread-ID: https://ampcode.com/threads/T-bc27021a-65db-4b64-a3f3-4e8d7bc8aa0d
Co-authored-by: Amp <amp@ampcode.com>
2025-11-02 08:30:31 -08:00
Steve Yegge
e1c248bb7a fix: Use correct bd binary path for Windows tests
- Add getBDPath() helper to return bd.exe on Windows, bd on Unix
- Fixes TestHashIDs_MultiCloneConverge and TestHashIDs_IdenticalContentDedup on Windows CI
2025-11-02 08:10:43 -08:00
Steve Yegge
15affbe11e fix: Suppress gosec warnings with nolint comments
- Add nolint:gosec comments for safe file operations
- G304: File reads from validated/secure paths
- G306/G302: JSONL/error files need 0644 for sharing/debugging
- G204: Subprocess launches with validated arguments
- G104: Deferred file close errors are non-critical
- G115: Safe integer conversions in backoff
- G201: SQL placeholders for IN clause expansion

All warnings are for intentional behavior that is safe in context.

Amp-Thread-ID: https://ampcode.com/threads/T-d78f2780-4709-497f-97b0-035ca8c809e1
Co-authored-by: Amp <amp@ampcode.com>
2025-11-02 08:09:58 -08:00
Steve Yegge
20b21fda42 fix: Resolve import test failures and add git to Nix build
- Remove broken import special case that created vc.db instead of using found database
- Add git to nativeBuildInputs in default.nix for tests
- Fix path comparison bug (symlink resolution caused prefix mismatch)
2025-11-02 00:09:56 -07:00
Steve Yegge
2b086951c4 fix: Address all errcheck and misspell linter errors 2025-11-01 23:56:03 -07:00
Steve Yegge
a2361f85e7 fix: Update golangci-lint config to v2 format
- Migrate to golangci-lint v2.x config schema
- Move settings under linters.settings
- Move exclusions under linters.exclusions
- Add version: "2" to config
- Fix validation errors
2025-11-01 23:51:36 -07:00
Steve Yegge
b61bf32339 chore: Bump version to 0.21.3
Updated all component versions:
- bd CLI: 0.21.2 → 0.21.3
- Plugin: 0.21.2 → 0.21.3
- MCP server: 0.21.2 → 0.21.3
- Documentation: 0.21.2 → 0.21.3
2025-11-01 23:49:55 -07:00
Steve Yegge
3a5889fc12 bd sync: apply rename detection from import 2025-11-01 23:47:33 -07:00
Steve Yegge
b8c5559359 bd sync: 2025-11-01 23:47:31 2025-11-01 23:47:32 -07:00
Steve Yegge
7032d7d8ec Refactor: separate process/lock/PID concerns into process.go (bd-d33c) 2025-11-01 23:46:01 -07:00
Steve Yegge
8fccf0df27 Merge remote changes 2025-11-01 23:45:55 -07:00
Steve Yegge
7834957105 bd sync: 2025-11-01 23:45:49 2025-11-01 23:45:49 -07:00
Steve Yegge
9d23805a26 bd sync: apply rename detection from import 2025-11-01 23:37:08 -07:00
Steve Yegge
edf1fba17a bd sync: 2025-11-01 23:37:07 2025-11-01 23:37:08 -07:00
Steve Yegge
784f7bc3bf bd sync: 2025-11-01 23:34:17 2025-11-01 23:34:17 -07:00
Steve Yegge
010525607f bd sync: 2025-11-01 23:33:09 2025-11-01 23:33:09 -07:00
Steve Yegge
ac64f9b18b bd sync: 2025-11-01 23:32:03 2025-11-01 23:32:03 -07:00
Steve Yegge
1578afff24 bd sync: apply rename detection from import 2025-11-01 23:25:56 -07:00
Steve Yegge
9e7a2dfd4e Merge branch 'main' of github.com:steveyegge/beads 2025-11-01 23:25:55 -07:00
Steve Yegge
6ec5fc1273 bd sync: 2025-11-01 23:25:54 2025-11-01 23:25:54 -07:00
Steve Yegge
c399d177a7 Add comprehensive tests for migrations.go and batch_ops.go (bd-3b7f)
- migrations_test.go: Tests all 10 migration functions
- batch_ops_test.go: Tests batch operations and bulk helpers
- All tests passing
- Completes bd-3b7f and sqlite refactoring epic bd-fc2d

Amp-Thread-ID: https://ampcode.com/threads/T-80ad18be-cff5-46c5-9540-47b55b92b4eb
Co-authored-by: Amp <amp@ampcode.com>
2025-11-01 23:25:44 -07:00
Steve Yegge
83f04c9662 bd sync: 2025-11-01 23:25:13 2025-11-01 23:25:13 -07:00
Steve Yegge
88fd7b2bc2 Improve git operations: use --ff-only for pull, make commit idempotent 2025-11-01 23:00:25 -07:00
Steve Yegge
2615c72fc9 Merge remote changes 2025-11-01 22:56:21 -07:00
Steve Yegge
988521d668 bd sync: 2025-11-01 22:56:11 2025-11-01 22:56:11 -07:00
Steve Yegge
cfce2b1e70 Add GitClient interface to daemonrunner/git.go for testability
Amp-Thread-ID: https://ampcode.com/threads/T-3e38fcda-411e-41db-bfe4-eba7a7771b67
Co-authored-by: Amp <amp@ampcode.com>
2025-11-01 22:56:08 -07:00
Steve Yegge
9c62d548b6 bd sync: 2025-11-01 22:53:45 2025-11-01 22:53:45 -07:00
Steve Yegge
1849ffe17a test: add comprehensive Comments API tests (bd-d68f)
- Test AddIssueComment basic functionality
- Test GetIssueComments retrieval and ordering
- Test edge cases (empty, nonexistent issues)
- Test dirty flag marking
- Test comment isolation across issues

Improves sqlite package coverage: 69.1% → 70.6%
2025-11-01 22:53:38 -07:00
Steve Yegge
d86f359e63 fix: DetectCycles SQL bug and add comprehensive tests
- Fix SQL query bug preventing cycle detection (bd-9f20)
  - Allow revisiting start node to complete cycle
  - Remove duplicate start_id concatenation in final SELECT
- Add cycle_detection_test.go with comprehensive test coverage (bd-cdf7)
  - Simple 2-node cycles
  - Complex multi-node cycles (4-node, 10-node)
  - Self-loops
  - Multiple independent cycles
  - Acyclic graphs (diamond, chain)
  - Empty graph and single node edge cases
  - Mixed dependency types

Improves sqlite package coverage: 68.2% → 69.1%
2025-11-01 22:51:58 -07:00
Steve Yegge
e9bb1ac121 test: add sqlite collision and delete test coverage
- Add collision_test.go: comprehensive ID collision handling tests
- Add delete_test.go: test soft delete, cascade, and edge cases
- Improves sqlite package coverage from 57.8% to 68.2%

Amp-Thread-ID: https://ampcode.com/threads/T-f4a96cad-a2a4-4f6f-af47-cd56700429f7
Co-authored-by: Amp <amp@ampcode.com>
2025-11-01 22:47:07 -07:00
Steve Yegge
39b49ca4b6 bd sync: 2025-11-01 22:41:02 2025-11-01 22:41:02 -07:00
Steve Yegge
27940878cf bd sync: apply rename detection from import 2025-11-01 22:39:39 -07:00
Steve Yegge
7a47e4d108 Merge branch 'main' of github.com:steveyegge/beads 2025-11-01 22:39:38 -07:00
Steve Yegge
440d9bf913 bd sync: 2025-11-01 22:39:37 2025-11-01 22:39:37 -07:00
Steve Yegge
123a0faa8b bd sync: 2025-11-01 22:34:01 2025-11-01 22:34:01 -07:00
Steve Yegge
98ecaec2ec AGENTS.md: Strongly recommend git hooks installation 2025-11-01 22:23:59 -07:00
Steve Yegge
9c38082cbf Add pre-push hook to prevent stale JSONL exports 2025-11-01 22:22:55 -07:00
Steve Yegge
6ef3ba1d49 bd sync: 2025-11-01 22:21:05 2025-11-01 22:21:05 -07:00
Steve Yegge
14f28020c6 Sync databases after daemon race condition fix 2025-11-01 22:20:32 -07:00
Steve Yegge
43ed423575 bd sync: 2025-11-01 22:20:19 2025-11-01 22:20:19 -07:00
Steve Yegge
50edb7349e bd sync: 2025-11-01 22:18:58 2025-11-01 22:18:58 -07:00
Steve Yegge
05b2d2bdbb bd sync: 2025-11-01 22:01:47 2025-11-01 22:01:47 -07:00
Steve Yegge
7421f525fb Fix daemon race condition: prevent stale exports
- Add JSONL timestamp check in validatePreExport
- Refuse export if JSONL is newer than database
- Force daemon to import before exporting when JSONL updated
- Add test case for JSONL-newer-than-DB scenario
- Fixes bd-89e2
2025-11-01 22:01:41 -07:00
Steve Yegge
7c1ff833f4 bd sync: 2025-11-01 22:01:28 2025-11-01 22:01:41 -07:00
Steve Yegge
8cc1bb4e24 bd sync: 2025-11-01 21:49:42 2025-11-01 21:49:42 -07:00
Steve Yegge
839a4877e8 Close bd-5f26: daemon.go refactoring complete 2025-11-01 21:46:50 -07:00
Steve Yegge
ce4d7564f9 bd sync: 2025-11-01 21:45:12 2025-11-01 21:45:12 -07:00