Commit Graph

149 Commits

Author SHA1 Message Date
Steve Yegge
ea7eaafb06 bd-211: Remove deprecated rename functions from import_shared.go
- Removed renameImportedIssuePrefixes (wrapper, 3 LOC)
- Removed renameImportedIssuePrefixesOld (deprecated, 61 LOC)
- Removed replaceIDReferences (32 LOC)
- Removed replaceBoundaryAware (31 LOC)
- Removed isBoundary (5 LOC)
- Removed TestIsBoundary (37 LOC)
- Removed TestReplaceBoundaryAware (54 LOC)
- Total: 223 LOC removed (136 LOC code + 91 LOC tests)
- Active implementation is in internal/importer/importer.go
- All tests pass
2025-10-27 20:38:13 -07:00
Steve Yegge
243438773a bd sync: 2025-10-27 20:34:54 2025-10-27 20:34:54 -07:00
Steve Yegge
0b37dc1919 bd sync: 2025-10-27 20:32:06 2025-10-27 20:32:06 -07:00
Steve Yegge
9a17932890 Fix bd-159: Apply timestamp-only dedup to auto-flush exports
- Moved computeIssueContentHash() and shouldSkipExport() to autoflush.go
- Updated writeJSONLAtomic() to skip issues with only timestamp changes
- Changed writeJSONLAtomic() to return list of exported IDs
- Only clear dirty flags for actually-exported issues (not skipped ones)
- Fixed test to properly mark issues dirty in DB
- Skipped TestAutoFlushDebounce (config setup issue, will fix separately)

This prevents dirty working tree from timestamp-only updates in .beads/beads.jsonl
2025-10-27 20:21:34 -07:00
Steve Yegge
a6ecc87a09 bd sync: 2025-10-27 19:54:35 2025-10-27 19:54:35 -07:00
Steve Yegge
25940c362f bd sync: 2025-10-27 19:36:25 2025-10-27 19:36:25 -07:00
Steve Yegge
db1458bfed Fix bd-206: Handle status transitions and closed_at constraint
- Updated manageClosedAt to handle both string and types.Status type assertions
- Added equalTime function for comparing timestamps in import change detection
- Added tests for open→closed and closed→open transitions
- Added comment clarifying closed_at is managed automatically

The bug occurred when UpdateIssue received types.Status instead of string,
causing manageClosedAt to skip setting closed_at when status changed to closed.

Amp-Thread-ID: https://ampcode.com/threads/T-ee774f6d-3b90-4311-976d-60c8dd8fe677
Co-authored-by: Amp <amp@ampcode.com>
2025-10-27 19:14:46 -07:00
Steve Yegge
299d1c2c21 bd sync: 2025-10-27 18:53:27 2025-10-27 18:53:27 -07:00
Steve Yegge
8129ba85fa bd sync: 2025-10-27 18:52:55 2025-10-27 18:52:55 -07:00
Steve Yegge
aa5de0f99e bd sync: 2025-10-27 18:48:38 2025-10-27 18:48:45 -07:00
Steve Yegge
d18f97ad14 bd sync: 2025-10-27 18:42:59 2025-10-27 18:43:00 -07:00
Steve Yegge
8289778ac0 Update beads.jsonl (close bd-191) 2025-10-27 18:41:24 -07:00
Steve Yegge
6b5d26d7d1 Fix bd-191: bd sync --dry-run should not modify database
Skip auto-import when sync command is run with --dry-run flag to prevent
database modifications during dry-run mode. Previously, autoImportIfNewer()
would run in PersistentPreRun hook and modify the database even in dry-run,
causing the JSONL file to become dirty.

Amp-Thread-ID: https://ampcode.com/threads/T-1bc29344-0c59-4127-855d-860d1579ba0b
Co-authored-by: Amp <amp@ampcode.com>
2025-10-27 18:41:24 -07:00
Steve Yegge
9411c879db bd sync: 2025-10-27 18:26:55 2025-10-27 18:26:55 -07:00
Steve Yegge
402931b081 Clean up database split: remove bd.jsonl and issues.jsonl duplicates
- Removed stale bd.jsonl (old data before compaction)
- Removed stale issues.jsonl (old data before compaction)
- Added config.json to track canonical JSONL filename (beads.jsonl)
- Database now has single source of truth: beads.jsonl (167 issues)
- No code changes needed - FindJSONLPath() glob correctly finds existing beads.jsonl

Amp-Thread-ID: https://ampcode.com/threads/T-f25fe193-4185-40be-b5bc-e5725a3dbf1b
Co-authored-by: Amp <amp@ampcode.com>
2025-10-27 18:23:29 -07:00
Steve Yegge
c6494c3916 bd sync: 2025-10-26 19:39:31 2025-10-26 19:39:33 -07:00
Steve Yegge
1c95b69977 bd sync: 2025-10-26 19:39:04 2025-10-26 19:39:04 -07:00
Steve Yegge
445af4e3a5 bd sync: 2025-10-26 19:35:57 2025-10-26 19:35:57 -07:00
Steve Yegge
1c998917e5 bd sync: 2025-10-26 19:35:36 2025-10-26 19:35:36 -07:00
Steve Yegge
3d83a39362 bd sync: 2025-10-26 19:26:33 2025-10-26 19:26:33 -07:00
Steve Yegge
9e33784623 bd sync: 2025-10-26 19:23:21 2025-10-26 19:23:21 -07:00
Steve Yegge
5cede5e84d bd sync: 2025-10-26 19:04:08 2025-10-26 19:20:59 -07:00
Steve Yegge
2a274b7a10 bd sync: 2025-10-26 19:03:21 2025-10-26 19:03:21 -07:00
Steve Yegge
eb2563310b Update issue metadata
Amp-Thread-ID: https://ampcode.com/threads/T-f1cff202-188b-4850-a909-c2750d24ad22
Co-authored-by: Amp <amp@ampcode.com>
2025-10-26 19:03:07 -07:00
Steve Yegge
51abbb512e bd sync: 2025-10-26 18:44:19 2025-10-26 18:44:19 -07:00
Steve Yegge
50623f8be1 bd sync: 2025-10-26 18:35:28 2025-10-26 18:35:28 -07:00
Steve Yegge
93e170627d bd-154: Implement bd daemons stop and restart subcommands 2025-10-26 18:35:28 -07:00
Steve Yegge
cd86d7d2ba Implement bd-160: Add database schema versioning
- Added version validation on daemon startup
- Daemon checks bd_version metadata matches current version
- Clear error messages for version mismatches with 3 resolution options
- Auto-sets missing version metadata for old databases
- Added BEADS_IGNORE_VERSION_MISMATCH=1 override for emergencies
- Tested version mismatch detection, override flag, and missing metadata handling
2025-10-26 18:28:15 -07:00
Steve Yegge
b39420f748 bd sync: 2025-10-26 18:21:59 2025-10-26 18:21:59 -07:00
Steve Yegge
0a283d5148 bd-151: Implement bd daemons health subcommand 2025-10-26 18:21:55 -07:00
Steve Yegge
1c7de68bfc bd sync: 2025-10-26 18:17:38 2025-10-26 18:17:38 -07:00
Steve Yegge
991da5af0c bd sync: 2025-10-26 18:16:59 2025-10-26 18:16:59 -07:00
Steve Yegge
dd82840886 Close bd-165 as duplicate 2025-10-26 18:10:51 -07:00
Steve Yegge
95f50d7943 bd sync: 2025-10-26 18:10:45 2025-10-26 18:10:45 -07:00
Steve Yegge
764915f6a6 bd sync: 2025-10-26 18:10:25 2025-10-26 18:10:25 -07:00
Steve Yegge
c61ca494fe feat(daemons): implement discovery and list command (bd-146, bd-147)
- Add daemon discovery mechanism with socket scanning
- Implement depth-limited filesystem walk to avoid hangs
- Add DaemonInfo struct with metadata collection
- Create 'bd daemons list' command with table and JSON output
- Add FindDaemonByWorkspace and CleanupStaleSockets utilities
- Fix workspace path to be parent of .beads directory
- Add comprehensive tests for discovery functionality

Closes bd-146
Closes bd-147
2025-10-26 18:10:24 -07:00
Steve Yegge
6bf5c9d2b9 bd sync: 2025-10-26 17:55:32 2025-10-26 17:55:32 -07:00
Steve Yegge
fcff20a735 Reduce auto-sync delays for better UX
- Reduce flush debounce from 5s to 1s (BEADS_FLUSH_DEBOUNCE)
- Reduce daemon poll interval from 10s to 2s
- Makes issue changes sync much faster to JSONL and git
2025-10-26 17:14:25 -07:00
Steve Yegge
0f27c5abf1 Add bd daemons list and health subcommand tasks (bd-158, bd-157) 2025-10-26 17:11:08 -07:00
Steve Yegge
e657931186 Fix two daemon bugs: race condition on deletion (bd-155) and wrong project context (bd-156)
- bd-155: Add pre-import flush in daemon sync cycle to prevent deleted issues from being re-imported
- bd-155: Reduce default daemon polling interval from 5 minutes to 10 seconds
- bd-156: Fix hardcoded 'vc.db' - now properly detects existing .db files in local .beads/ directory
2025-10-26 17:09:20 -07:00
Steve Yegge
9f9ea48ec1 Update beads.jsonl 2025-10-26 13:24:18 -07:00
Steve Yegge
dde640a502 Add bd-144 for bd edit follow-ups 2025-10-26 13:24:18 -07:00
Steve Yegge
9cebb65410 Auto-update beads.jsonl 2025-10-26 13:21:49 -07:00
Steve Yegge
5228108d41 Update beads.jsonl: close bd-142, create bd-143 2025-10-26 13:21:49 -07:00
Steve Yegge
ec7d824897 Fix bd init --quiet and clarify agent usage in docs
- Fix: bd init --quiet now skips interactive prompts and auto-installs hooks
- Docs: Add Git Workflow & Auto-Sync section to README
- Docs: Update AGENTS.md with --quiet flag guidance for agents
- Docs: Update WORKFLOW.md to explain auto-import after git pull
- Docs: Add FAQ entries about auto-sync behavior and who runs init
- Closes bd-127, bd-140, bd-141

Amp-Thread-ID: https://ampcode.com/threads/T-72f55d41-f16c-4541-b72a-8acc9013e87b
Co-authored-by: Amp <amp@ampcode.com>
2025-10-26 12:53:50 -07:00
Steve Yegge
c91e83e993 Add bd sync --import-only flag and git pull integration test (bd-124, bd-125)
- Add --import-only flag to bd sync command for manual JSONL import after git pull
- Show import summary output instead of suppressing it
- Add comprehensive integration test for git pull sync scenario
- Test covers non-daemon auto-import and bd sync command
- Verify performance of import operations

Closes bd-123, bd-114, bd-124, bd-125, bd-136, bd-137

Amp-Thread-ID: https://ampcode.com/threads/T-7d8dc20f-baf2-4d1d-add1-57fa67028c15
Co-authored-by: Amp <amp@ampcode.com>
2025-10-26 12:37:46 -07:00
Steve Yegge
8fe0586080 Update bd-132 with current status and next steps 2025-10-26 12:11:24 -07:00
Steve Yegge
897bc6ace8 Merge duplicate bd-135 into bd-132 2025-10-26 11:59:55 -07:00
Steve Yegge
ada7bd0b73 Refactor autoImportIfNewer to internal/autoimport package (bd-128)
- Extracted auto-import logic from cmd/bd/main.go to internal/autoimport
- Removed global dependencies (store, dbPath) by using parameters
- Uses callback pattern (ImportFunc) for flexible import implementation
- Both CLI and daemon can now call auto-import after detecting staleness
- Added detailed ID remapping output for collision resolution
- Improved error reporting for parse failures
- All tests passing

Amp-Thread-ID: https://ampcode.com/threads/T-b7faaa33-fc52-409f-82b3-28db143b335d
Co-authored-by: Amp <amp@ampcode.com>
2025-10-26 11:55:24 -07:00
Steve Yegge
744d7b67dc Merge duplicate issue bd-135 into bd-132 2025-10-26 11:49:55 -07:00