Commit Graph

1675 Commits

Author SHA1 Message Date
Markus Flür
e7f532db93 Implementing an RPC monitoring solution with a web-ui as implementation example. (#244)
* bd sync: 2025-10-30 12:12:27

* Working on frontend

* bd sync: 2025-11-06 16:55:55

* feat: finish bd monitor human viewer

* Merge conflicts resolved and added tests

* bd sync: 2025-11-06 17:23:41

* bd sync: 2025-11-06 17:34:52

* feat: Add reload button and multiselect status filter to monitor

- Changed status filter from single select to multiselect with 'Open' selected by default
- Added reload button with visual feedback (hover/active states)
- Updated filterIssues() to handle multiple selected statuses
- Added reloadData() function that reloads both stats and issues
- Improved responsive design for mobile devices
- Filter controls now use flexbox layout with better spacing

* fix: Update monitor statistics to show Total, In Progress, Open, Closed

- Replaced 'Ready to Work' stat with 'In Progress' stat
- Reordered stats to show logical progression: Total -> In Progress -> Open -> Closed
- Updated loadStats() to fetch in-progress count from stats API
- Removed unnecessary separate API call for ready count

* fix: Correct API field names in monitor stats JavaScript

The JavaScript was using incorrect field names (stats.total, stats.by_status)
that don't match the actual types.Statistics struct which uses flat fields
with underscores (total_issues, in_progress_issues, etc).

Fixed by updating loadStats() to use correct field names:
- stats.total -> stats.total_issues
- stats.by_status?.['in-progress'] -> stats.in_progress_issues
- stats.by_status?.open -> stats.open_issues
- stats.by_status?.closed -> stats.closed_issues

Fixes beads-9

* bd sync: 2025-11-06 17:51:24

* bd sync: 2025-11-06 17:56:09

* fix: Make monitor require daemon to prevent SQLite locking

Implemented Option 1 from beads-eel: monitor now requires daemon and never
opens direct SQLite connection.

Changes:
- Added 'monitor' to noDbCommands list in main.go to skip normal DB initialization
- Added validateDaemonForMonitor() PreRun function that:
  - Finds database path using beads.FindDatabasePath()
  - Validates daemon is running and healthy
  - Fails gracefully with clear error message if no daemon
  - Only uses RPC connection, never opens SQLite directly

Benefits:
- Eliminates SQLite locking conflicts between monitor and daemon
- Users can now close/update issues via CLI while monitor runs
- Clear error messages guide users to start daemon first

Fixes beads-eel

* bd sync: 2025-11-06 18:03:50

* docs: Add bd daemons restart subcommand documentation

Added documentation for the 'bd daemons restart' subcommand across all documentation files:

- commands/daemons.md: Added full restart subcommand section with synopsis, description, arguments, flags, and examples
- README.md: Added restart examples to daemon management section
- AGENTS.md: Added restart examples with --json flag for agents

The restart command gracefully stops and starts a specific daemon by workspace path or PID,
useful after upgrading bd or when a daemon needs refreshing.

Fixes beads-11

* bd sync: 2025-11-06 18:13:16

* Separated the web ui from the general monitoring functionality

---------

Co-authored-by: Steve Yegge <stevey@sourcegraph.com>
2025-11-07 09:49:12 -08:00
Steve Yegge
19da81caea bd sync: 2025-11-07 00:28:01 2025-11-07 00:28:01 -08:00
Andrew Fong
770e09004d Add docs/ directory to links (#242)
* Add docs/ prefix to links

Some old links that broke when moving docs probably

* Fix a few more spots

Add `docs/` directory to some more broken links
2025-11-07 00:24:00 -08:00
Steve Yegge
0106371e12 Prevent nested .beads directories (bd-eqjc)
Add validation in bd init to detect if current directory is inside
a .beads directory and exit with clear error message. This prevents
the common issue of accidentally creating .beads/.beads/ nested
directories.
2025-11-06 22:23:54 -08:00
Steve Yegge
769cd7b1d3 bd sync: 2025-11-06 22:23:46 2025-11-06 22:23:46 -08:00
Steve Yegge
ef8585bd2e feat: Add automatic Homebrew formula update to release workflow 2025-11-06 20:35:25 -08:00
Steve Yegge
626cd44a28 chore: Bump version to 0.22.1
Updated all component versions:
- bd CLI: 0.22.0 → 0.22.1
- Plugin: 0.22.0 → 0.22.1
- MCP server: 0.22.0 → 0.22.1
- npm package: 0.22.0 → 0.22.1
- Documentation: 0.22.0 → 0.22.1

Generated by scripts/bump-version.sh
2025-11-06 20:25:36 -08:00
Steve Yegge
e47d258f54 fix: Handle missing PLUGIN.md in git add during version bump 2025-11-06 20:25:31 -08:00
Steve Yegge
5fc55489af fix: Make PLUGIN.md update optional in bump-version.sh 2025-11-06 20:24:34 -08:00
Steve Yegge
559d1ecf65 docs: Add CHANGELOG entry for v0.22.1 2025-11-06 20:24:09 -08:00
Steve Yegge
6b25ad1122 bd sync: 2025-11-06 20:15:41 2025-11-06 20:15:41 -08:00
Steve Yegge
ca5e32e5f2 Remove commented-out code
Cleaned up old bd-160 export hash tracking code that was disabled.
Removed unnecessary test comments.

Amp-Thread-ID: https://ampcode.com/threads/T-de38a626-a425-414f-92d8-102bc1519c8b
Co-authored-by: Amp <amp@ampcode.com>
2025-11-06 20:15:34 -08:00
Steve Yegge
95cbcf4fbc Centralize BD_DEBUG logging into internal/debug package
- Created internal/debug package with Enabled(), Logf(), Printf()
- Added comprehensive unit tests for debug package
- Replaced 50+ scattered os.Getenv("BD_DEBUG") checks across 9 files
- Centralized debug logic for easier maintenance and testing
- All tests passing, behavior unchanged

Closes bd-fb95094c.5
2025-11-06 20:14:34 -08:00
Steve Yegge
04621fe731 bd sync: close bd-fb95094c.7 2025-11-06 20:07:12 -08:00
Steve Yegge
b655b29ad9 Extract SQLite migrations into separate files (bd-fb95094c.7)
- Created migrations/ subdirectory with 14 individual migration files
- Reduced migrations.go from 680 to 98 lines (orchestration only)
- Updated test imports to use migrations package
- Updated MULTI_REPO_HYDRATION.md documentation
- All tests passing
2025-11-06 20:06:45 -08:00
Steve Yegge
0095464e83 bd sync: 2025-11-06 20:00:09 2025-11-06 20:00:09 -08:00
Steve Yegge
9520e7a2e2 Extract normalizeLabels to internal/util/strings.go
- Created internal/util/strings.go with NormalizeLabels function
- Added comprehensive tests in internal/util/strings_test.go
- Updated internal/rpc/server_issues_epics.go to use util.NormalizeLabels
- Updated cmd/bd/list.go and cmd/bd/ready.go to use util.NormalizeLabels
- Updated cmd/bd/list_test.go to use util.NormalizeLabels
- Removed duplicate implementations
- All tests pass

Fixes bd-fb95094c.6

Amp-Thread-ID: https://ampcode.com/threads/T-edb3c286-cd60-4231-94cd-edaf75d84a3d
Co-authored-by: Amp <amp@ampcode.com>
2025-11-06 20:00:08 -08:00
Steve Yegge
5044ec3fdf Merge remote changes
Amp-Thread-ID: https://ampcode.com/threads/T-edb3c286-cd60-4231-94cd-edaf75d84a3d
Co-authored-by: Amp <amp@ampcode.com>
2025-11-06 20:00:01 -08:00
Steve Yegge
9d421e77e6 bd sync: 2025-11-06 19:59:52 2025-11-06 19:59:52 -08:00
Steve Yegge
78c9d744cb Add edge case tests for getMultiRepoJSONLPaths()
- Test empty path handling (returns nil for single-repo mode)
- Test duplicate paths (documents non-deduping behavior)
- Test paths with spaces (handles correctly)
- Test relative paths (not normalized, used as-is)
- Test tilde expansion (not expanded, used literally)

Closes bd-kdoh

Amp-Thread-ID: https://ampcode.com/threads/T-ac07d8fd-51a3-4511-a477-d7041b950ea8
Co-authored-by: Amp <amp@ampcode.com>
2025-11-06 19:54:59 -08:00
Steve Yegge
b9607e1814 Update JSONL after closing bd-4b6u
Amp-Thread-ID: https://ampcode.com/threads/T-645ccbf4-a5b6-44a1-bbd9-913447e17b49
Co-authored-by: Amp <amp@ampcode.com>
2025-11-06 19:54:00 -08:00
Steve Yegge
e73f89edbe Add multi-repo patterns documentation for AI agents (bd-4b6u)
- Create docs/MULTI_REPO_AGENTS.md with comprehensive multi-repo patterns
- Document config options, routing behavior, troubleshooting, best practices
- Update AGENTS.md to reference new doc
- Update README.md documentation index

Amp-Thread-ID: https://ampcode.com/threads/T-645ccbf4-a5b6-44a1-bbd9-913447e17b49
Co-authored-by: Amp <amp@ampcode.com>
2025-11-06 19:53:29 -08:00
Steve Yegge
6960feb93d Update beads.jsonl (bd-bc2c6191 closed) 2025-11-06 19:51:31 -08:00
Steve Yegge
ac1752d87d Complete cache audit (bd-bc2c6191)
- Created CACHE_AUDIT.md with comprehensive findings
- Confirmed cache was already removed in commit 322ab63
- Fixed stale comment in internal/rpc/server.go
- All tests passing, MCP multi-repo working correctly
- Closed bd-bc2c6191

Amp-Thread-ID: https://ampcode.com/threads/T-c1286278-b1ff-4b8a-b090-2b3a1c38c9dd
Co-authored-by: Amp <amp@ampcode.com>
2025-11-06 19:51:16 -08:00
Steve Yegge
59e0238c48 Ignore snapshot metadata files 2025-11-06 19:43:37 -08:00
Steve Yegge
b15d4c7340 Update bd JSONL 2025-11-06 19:42:48 -08:00
Steve Yegge
eb30e94220 Configure beads merge driver for intelligent JSONL merging 2025-11-06 19:42:32 -08:00
Steve Yegge
99acd03e32 Update beads.jsonl (close bd-iov0, bd-aec5439f, bd-fd8753d9)
Amp-Thread-ID: https://ampcode.com/threads/T-71887707-4d93-4070-869e-b46b32ab8b6a
Co-authored-by: Amp <amp@ampcode.com>
2025-11-06 19:42:27 -08:00
Steve Yegge
2c0102048a Merge branch 'main' of github.com:steveyegge/beads 2025-11-06 19:42:06 -08:00
Steve Yegge
9c3ab7fba9 Document -short flag, update linting baseline, clarify bd edit MCP exclusion
- Enhanced CONTRIBUTING.md with -short flag usage guidance
- Updated LINTING.md: 22 issues baseline (down from 34)
- Added MCP exclusion note for bd edit command in AGENTS.md

Closes bd-iov0, bd-aec5439f, bd-fd8753d9
2025-11-06 19:42:01 -08:00
Steve Yegge
20eafa103a Merge branch 'main' of github.com:steveyegge/beads
# Conflicts:
#	.beads/beads.jsonl
2025-11-06 19:41:52 -08:00
Steve Yegge
7afb1439f2 Cache getMultiRepoJSONLPaths() to avoid redundant calls (bd-we4p)
- Call getMultiRepoJSONLPaths() once at sync start instead of 3 times
- Eliminates redundant config lookups and path constructions
- Performance optimization for multi-repo workflows
2025-11-06 19:41:38 -08:00
Steve Yegge
5c1f441c2a Fix bd-ng56: add raw string equality short-circuit before jsonEquals
Optimization to avoid JSON unmarshalling when strings match exactly (common case).
Simple 1-line change instead of complex streaming rewrite for P3 issue.
2025-11-06 19:41:27 -08:00
Steve Yegge
581294f98b bd sync: 2025-11-06 19:40:52 2025-11-06 19:40:52 -08:00
Steve Yegge
244367c351 Update bd JSONL 2025-11-06 19:37:54 -08:00
Steve Yegge
729ab60ef5 Update beads.jsonl - close bd-2997 2025-11-06 19:36:32 -08:00
Steve Yegge
a891ebe79e Add snapshot versioning and timestamp validation (bd-2997)
- Add snapshotMetadata struct with version, timestamp, commit SHA
- Validate snapshots are <1 hour old, from compatible version
- Auto-cleanup stale snapshots from interrupted syncs
- All snapshot functions now write/validate metadata files
- Fixes issue where crash/kill -9 left stale snapshots
2025-11-06 19:36:13 -08:00
Steve Yegge
621ffdb594 Update beads.jsonl (close bd-irq6)
Amp-Thread-ID: https://ampcode.com/threads/T-71887707-4d93-4070-869e-b46b32ab8b6a
Co-authored-by: Amp <amp@ampcode.com>
2025-11-06 19:36:06 -08:00
Steve Yegge
a7ec8a2eaa Remove unused internal/daemonrunner/ package (~1,500 LOC)
Removed old global daemon infrastructure that was replaced by per-workspace
daemon architecture. Package had no imports and all functions were unreachable.

Closes bd-irq6
2025-11-06 19:35:43 -08:00
Steve Yegge
7672473bbd Update bd JSONL 2025-11-06 19:25:03 -08:00
Steve Yegge
fb17b4286d Update issue metadata for bd-rb75 and bd-6ku3 closures 2025-11-06 19:23:45 -08:00
Steve Yegge
807e48966a Merge remote changes and fix isHashID for Base36 2025-11-06 19:23:06 -08:00
Steve Yegge
c9247312df Fix bd-6ku3: Update isHashID to recognize Base36 hash IDs
- Changed pattern from [a-f] (hex) to [a-z] (Base36)
- Added length check: 5+ chars = hash ID (sequential IDs rarely exceed 4 digits)
- Fixes test failure where all-digit Base36 IDs were incorrectly identified as sequential
2025-11-06 19:22:12 -08:00
Steve Yegge
6e182fa32f Update bd JSONL 2025-11-06 19:21:17 -08:00
Steve Yegge
47185830bb Fix bd-4oob: Add multi-repo deletion tracking support
- Added getMultiRepoJSONLPaths() helper to enumerate all JSONL files
- Updated daemon_sync.go to capture/update snapshots for each repo
- Added TestMultiRepoDeletionTracking to verify fix
- Added TestMultiRepoSnapshotIsolation for isolation guarantees

Previously, deletion tracking only worked for single-repo mode because
snapshot operations were hardcoded to the primary JSONL path. This fix
ensures snapshots are managed per-repository in multi-repo mode.
2025-11-06 19:21:11 -08:00
Steve Yegge
7726d6207e Update beads database after closing bd-1fkr
Amp-Thread-ID: https://ampcode.com/threads/T-11b30d1f-1dbf-4bf1-b3ef-866ff6f75662
Co-authored-by: Amp <amp@ampcode.com>
2025-11-06 19:17:21 -08:00
Steve Yegge
e291ee078e Fix storage backend extensibility by adding DeleteIssue to Storage interface
- Added DeleteIssue to Storage interface
- Implemented DeleteIssue in MemoryStorage backend
- Removed brittle type assertion from deletion_tracking.go
- Closes bd-1fkr
2025-11-06 19:17:06 -08:00
Steve Yegge
f61f8dd2ba bd sync: apply DB changes after import 2025-11-06 19:16:50 -08:00
Steve Yegge
7c124835bf Merge branch 'main' of github.com:steveyegge/beads 2025-11-06 19:16:48 -08:00
Steve Yegge
d6cc42d7b1 bd sync: 2025-11-06 19:16:47 2025-11-06 19:16:47 -08:00