Commit Graph

129 Commits

Author SHA1 Message Date
Steve Yegge
6b88d60d6e fix: Add collision detection to auto-import (bd-228)
CRITICAL FIX: Auto-import was silently overwriting local changes without any
collision detection or warning. This caused data loss in multi-developer workflows.

Changes:
- Auto-import now uses sqlite.DetectCollisions() before importing
- Colliding issues are skipped (preserves local changes)
- Warning printed with list of skipped issues and resolution instructions
- Added autoImportWithoutCollisionDetection() fallback for non-SQLite backends
- All tests pass

Impact:
- Local changes are now preserved during git pull
- Users are informed when collisions occur
- Can manually resolve with 'bd import --resolve-collisions'
- No more silent data corruption

Also:
- Removed critical warning banner from README
- Created bd-229 for data recovery investigation
- Closed bd-228 as fixed

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 02:11:42 -07:00
Steve Yegge
38ae26d9e9 docs: Add critical bug warning banner to README (bd-228)
CRITICAL: Auto-import silently overwrites local changes without collision detection.

Changes:
- Added prominent warning banner at top of README
- Documents data corruption risk for multi-developer workflows
- Provides --no-auto-import workaround
- References bd-228 for tracking and updates

This affects anyone using bd with multiple developers or agent swarms.
Local updates/closes can be silently reverted by auto-import after git pull.

Also includes:
- ULTRATHINK_BD224.md analysis document (bd-224, bd-225)
- Updated issues.jsonl with bd-224, bd-225, bd-226, bd-227, bd-228

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 02:07:33 -07:00
Steve Yegge
174ff3270d fix: remove legacy beads.db and file import timeout bug (bd-199)
- Deleted stale beads.db (last modified Oct 14, 20KB)
- bd.db is the active database (2MB, 208 issues)
- Filed bd-199 to investigate import timeout with 208 issues
- Import should handle 100k+ issues, currently times out at 208

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 01:56:51 -07:00
Steve Yegge
68f1b9d2c9 feat: add label CLI feature request (bd-198)
Created bd-198: Add label management commands to CLI
- Add bd label add/remove/list subcommands
- Extend bd list with --label filter
- Enable organizing issues into streams/categories
- Support parallel workflow coordination

Closes mistakenly created GitHub issue #39 (should use beads itself).

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 01:51:07 -07:00
Steve Yegge
587e1d9d0f test: Add comprehensive test coverage for storage layer
Added test files for core SQLite storage functionality:
- beads_test.go: Database path detection tests
- dirty_test.go: Dirty tracking for auto-flush
- events_test.go: Event logging tests
- labels_test.go: Label management tests
- sqlite_test.go: Added metadata tests (SetMetadata, GetMetadata)

Merged with upstream TestParallelIssueCreation (bd-89 regression test).

All tests passing. Ready to push.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 01:30:28 -07:00
Steve Yegge
42d2f71925 fix: Fix race condition in parallel issue creation (bd-89)
Use IMMEDIATE transactions with dedicated connections to fix race condition
where multiple processes creating issues concurrently caused "UNIQUE constraint
failed: issues.id" errors.

Key changes:
- Use BEGIN IMMEDIATE to acquire RESERVED lock early
- Use dedicated connection (sql.Conn) for transaction to ensure all operations
  happen on same connection
- Increase busy_timeout from 10s to 30s for better parallel write handling
- Use context.Background() for ROLLBACK to ensure cleanup even if ctx cancelled

Added regression test TestParallelIssueCreation that creates 20 issues in
parallel and verifies no ID collisions occur.

Fixes #6

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 01:26:27 -07:00
Steve Yegge
474d9e098f fix: Update minimum Go version requirement to 1.23
Fixes #34

Problem: Users with Go 1.18 were unable to install beads because go.mod
specifies 'go 1.23.0', which older Go toolchains cannot parse. The error
"invalid go version '1.23.0': must match format 1.23" occurs because
Go versions before 1.21 don't support the three-part version format.

Root cause: Our dependencies (especially modernc.org/sqlite) require Go 1.23,
which forces go.mod to use the 1.23.0 format. This is correct for our actual
requirements, but was incorrectly documented as requiring only Go 1.21.

Solution:
1. Updated install.sh to check for Go 1.23+ and show clear error messages
   if an older version is detected
2. Updated README.md to correctly state "requires Go 1.23+" instead of 1.21+
3. go.mod already correctly specifies go 1.23.0 (no changes needed there)

The version check in install.sh now:
- Parses the Go version from 'go version' output
- Compares major.minor version numbers
- Fails fast with helpful upgrade instructions if Go < 1.23

This prevents confusing build errors and guides users to upgrade Go before
attempting installation.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 00:55:47 -07:00
Steve Yegge
588f554034 chore: Update issues (bd-182 closed, bd-197 completed)
- bd-182: Closed - auto-export works correctly in v0.9.5 (old binary issue)
- bd-197: Closed - version mismatch detection implemented
- bd-196: Closed - test issue

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 00:43:59 -07:00
Steve Yegge
a26dc8a849 feat: Add version mismatch detection for outdated binaries
Prevent user confusion when running outdated bd binaries by detecting
version mismatches between the binary and database.

Features:
- Store bd version in metadata table on init
- Check version on every command (PersistentPreRun)
- Warn if binary is outdated with rebuild instructions
- Auto-upgrade database if binary is newer
- Silent operation when versions match

Fixes confusion from bd-182 (auto-export not working with old binary)
Implements bd-197

Files changed:
- cmd/bd/init.go: Store version on init
- cmd/bd/main.go: checkVersionMismatch() + integration

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 00:43:59 -07:00
Steve Yegge
e1aeccfce6 docs: Clarify Claude Code plugin installation requires bd CLI
The plugin documentation now explicitly states that:
1. The bd CLI must be installed first (prerequisite)
2. Plugin installation is a multi-step process (marketplace add + install + restart)
3. Removed misleading 'one-command' and 'auto-configured' language

This completes the documentation fixes started in PR #35.
2025-10-15 00:40:53 -07:00
Joshua Shanks
3dd3c8f09c Revert overselling of Claude Code plugin installation
The README was claiming one-command, zero-config installation, but actually requires: 1) marketplace add, 2) plugin install, 3) separate bd CLI installation. This revert tones down the promotional language to match reality.

Thanks to @jjshanks for catching this!
2025-10-15 00:39:53 -07:00
Joshua Shanks
3f42cab0d1 fix: Handle NULL values in GetStatistics for empty databases (#37)
When GetStatistics is called on an empty database, SQL SUM() returns NULL
which causes a scan error when converting to int. Wrap SUM expressions with
COALESCE to return 0 instead of NULL.

Add TestGetStatistics to verify both empty and populated database cases.

Fixes issue where `bd stats` and MCP stats tool crash on fresh databases.

Signed-off-by: Joshua Shanks <jjshanks@gmail.com>
2025-10-15 00:30:36 -07:00
Steve Yegge
b8f0b5e71f feat: Add composite index for dependency queries
- Add idx_dependencies_depends_on_type index on (depends_on_id, type)
- Optimize queries filtering by both target issue and dependency type
- Improve performance for dep tree and relationship queries
- Update plugin version to 0.9.5
- Sync issue database

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-15 00:20:31 -07:00
Steve Yegge
2cc17a9acf chore: Bump version to 0.9.5
Updated all component versions:
- bd CLI: 0.9.4 → 0.9.5
- Plugin: 0.9.4 → 0.9.5
- MCP server: 0.9.4 → 0.9.5
- Documentation: 0.9.4 → 0.9.5

Generated by scripts/bump-version.sh
2025-10-14 19:22:53 -07:00
Steve Yegge
3a1f99790a feat(mcp): Add debug_env tool to diagnose working directory issues
Added a debug tool that reports:
- os.getcwd() value
- PWD environment variable
- BEADS_WORKING_DIR environment variable
- Other relevant environment variables

This will help diagnose where bd commands are running from and whether
Claude Code sets PWD or other variables correctly.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 19:22:53 -07:00
Steve Yegge
00c324e797 chore: Remove work-tracking markdown files, dogfood beads
- Remove TESTING_NEXT.md (content tracked in bd-64)
- Remove .beads/bd-9-design.md (designs belong in issue design field)
- Update DESIGN.md: replace Implementation Roadmap with pointer to bd list
- All work tracking now in beads database, not markdown files

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 19:21:57 -07:00
Steve Yegge
01b606fe7b fix(mcp): Run bd commands in user's working directory
The MCP server was running bd commands from the plugin installation directory,
causing the database to be created in the wrong place.

Added BEADS_WORKING_DIR config option and modified BdClient to use working
directory for subprocess calls. Falls back to PWD environment variable.

This ensures bd commands run from the user's actual project directory.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 18:57:32 -07:00
Steve Yegge
6095ef0fd5 docs: Add MCP server installation section to README
Added clear installation instructions for users of Sourcegraph Amp, Claude Desktop,
and other MCP clients right after the Claude Code plugin section.

Users can now easily find instructions to install via:
- uv tool install beads-mcp
- pip install beads-mcp

Includes Claude Desktop configuration example and link to detailed MCP server docs.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 18:36:13 -07:00
Steve Yegge
23bbdc7afa feat(mcp): Setup beads-mcp for PyPI distribution
Prepared the beads-mcp package for publishing to PyPI, simplifying installation
for users who want to use the MCP server with Claude Desktop or other MCP clients.

Changes:
- Added LICENSE file (MIT) to integrations/beads-mcp/
- Updated pyproject.toml with PyPI metadata (license, URLs, classifiers)
- Updated README with simplified installation (uv tool install beads-mcp)
- Created PYPI.md with detailed publishing guide
- Updated examples/claude-desktop-mcp/README to reference the production MCP server

Installation is now simplified from:
  git clone && cd && uv sync
to:
  uv tool install beads-mcp

Configuration is simplified from multi-line with --directory args to:
  "command": "beads-mcp"

Tested build successfully. Package ready for:
- Test PyPI: python -m twine upload --repository testpypi dist/*
- Production PyPI: python -m twine upload dist/*

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 18:07:22 -07:00
Steve Yegge
d5f1c5f36e docs: add Homebrew installation as primary method 2025-10-14 17:58:53 -07:00
Steve Yegge
061e8c4a27 feat(mcp): improve error messages for missing bd CLI
Add helpful installation instructions when bd CLI is not found,
making it clear that the CLI must be installed separately.

Changes:
- Add BdNotFoundError.installation_message() with clear install steps
- Update all BdNotFoundError raises to use new formatted message
- Improve config error message with installation instructions first
- Update tests to match new error message format

Error message now shows:
- Clear explanation that bd CLI is required
- Installation command with curl one-liner
- Link to GitHub installation docs
- Reminder to restart Claude Code after installation

Test results: 90/91 tests passing (1 unrelated path assertion)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 17:33:54 -07:00
Steve Yegge
1aad54be55 feat: Add post-push hook to auto-install bd CLI after git push
Hook automatically rebuilds and installs bd CLI when Go files change.

Usage in new clones:
  ./scripts/install-hooks.sh

Files:
- scripts/hooks/post-push: Hook that runs go install after successful push
- scripts/install-hooks.sh: Installer to set up hooks in new clones

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 17:23:43 -07:00
Steve Yegge
b4e37f9fb5 chore: Bump version to 0.9.4
Updated all component versions:
- bd CLI: 0.9.3 → 0.9.4
- Plugin: 0.9.3 → 0.9.4
- MCP server: 0.9.3 → 0.9.4
- Documentation: 0.9.3 → 0.9.4

Generated by scripts/bump-version.sh
2025-10-14 17:12:30 -07:00
Steve Yegge
c049bf4351 fix(mcp): run bd commands in user's working directory instead of MCP server directory
The MCP server was running all bd commands in its own installation directory
(~/.claude/plugins/marketplaces/beads-marketplace/integrations/beads-mcp/)
instead of the user's project directory. This caused databases to be created
in the wrong location.

For example, when working in ~/ai/flutter/wyvern and running `bd init --prefix wy-`,
the database was created at:
  ~/.claude/plugins/marketplaces/beads-marketplace/integrations/beads-mcp/.beads/wy-.db

Instead of the expected location:
  ~/ai/flutter/wyvern/.beads/wy-.db

Solution:
- Add `cwd=os.getcwd()` to all asyncio.create_subprocess_exec() calls
- This makes bd commands execute in the current working directory from PWD env var
- Claude Code updates PWD for the MCP server process environment

Impact:
- bd init now creates .beads/ in the correct project directory
- All bd commands (create, list, update, etc.) operate on the correct database
- Multi-project workflows work correctly without manual DB path configuration

Test results: 90/91 tests passing (1 unrelated path assertion failure)
2025-10-14 17:11:45 -07:00
Steve Yegge
f16ba3f30f chore: Bump version to 0.9.3
Release highlights:
- Removed CGO dependency for better portability
- Fixed critical MCP server bugs (path resolution, init tool)
- Improved Claude Code plugin documentation
- Enhanced MCP server configuration robustness
- All 91 tests passing

Major changes since 0.9.2:
1. CGO removal - Pure Go SQLite driver for easier installation
2. MCP init fix - Tool now correctly creates .beads in current directory
3. MCP path resolution - Auto-detects bd executable via PATH
4. Plugin docs - Better quickstart for Claude Code users
5. Config validation - Command names resolved via shutil.which()

Breaking changes: None
Migration: No action needed

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 16:52:45 -07:00
Steve Yegge
ba8fdf1a8c fix: MCP init tool creates .beads in current directory
Critical bug: MCP init tool reported success but didn't create .beads
directory. It was using --db flag which tells bd to use an existing
database elsewhere instead of creating a new one.

Root cause:
- bd_client.init() was calling _global_flags() which adds --db flag
- bd init --db <path> uses existing db instead of creating new one
- Result: init appeared to succeed but created nothing

Fix:
- Remove _global_flags() from init command
- Only pass --actor flag (safe for init)
- Do NOT pass --db flag to init (defeats the purpose)
- Add explicit comment explaining why

Testing:
- Added test_init_creates_beads_directory() integration test
- Verifies .beads directory is created in current working directory
- Verifies database file has correct prefix
- All 91 tests pass

This was causing silent failures where agents thought they initialized
bd but the .beads directory was never created.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 16:47:29 -07:00
Steve Yegge
e6697939f0 docs: Improve Claude Code plugin quickstart documentation
Make it clearer that the Claude Code plugin is the recommended
installation method for Claude Code users.

Changes:
- Add Claude Code plugin option to "Instant start" section at top
- Expand plugin benefits (zero setup, MCP tools, agent-ready)
- List example MCP tool names for agents
- Clarify that agents can use MCP directly vs Bash commands

This addresses the issue where agents didn't know they could use
the MCP tools and were falling back to Bash commands instead.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 16:39:37 -07:00
Steve Yegge
800ed300a6 fix: MCP server bd executable path resolution
Fixes issue where MCP tools failed with "bd executable not found"
when BEADS_PATH was set to command name instead of absolute path.

Changes:
- Remove BEADS_PATH=bd from plugin.json (use auto-detection)
- Enhance config validator to resolve command names via PATH
- Add comprehensive config validation tests (11 new tests)

The validator now accepts both:
  - Absolute paths: /usr/local/bin/bd
  - Command names: bd (resolved via shutil.which)

This makes the MCP server more robust and user-friendly while
maintaining backward compatibility.

All 90 tests pass.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 16:37:59 -07:00
Steve Yegge
50c85635c8 feat: Normalize prefix by stripping trailing hyphens in bd init
Ensures exactly one hyphen between prefix and issue number regardless of
whether user provides trailing hyphen.

Before:
  bd init --prefix wy-  → Issues: wy--1, wy--2 (double hyphen)
  bd init --prefix wy   → Issues: wy-1, wy-2 (single hyphen)

After:
  bd init --prefix wy-  → Issues: wy-1, wy-2 (single hyphen)
  bd init --prefix wy   → Issues: wy-1, wy-2 (single hyphen)

The hyphen is added automatically during ID generation in CreateIssue(),
so the stored prefix should never include trailing hyphens.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 16:15:14 -07:00
Steve Yegge
3b5b4842ff fix: Replace sys.exit() with exception in config validation
Fixes MCP server hanging when bd executable is not found at default path.

Problem:
- Config validation used sys.exit(1) on failure
- sys.exit() hangs in async MCP server context (doesn't properly terminate)
- Default bd path was hardcoded to ~/.local/bin/bd

Solution:
1. Use shutil.which() to find bd in PATH before falling back to default
2. Raise ConfigError instead of calling sys.exit()
3. MCP server now properly fails with error message instead of hanging

This fixes the multi-minute hang when trying to use MCP tools if bd is
installed in a non-default location (e.g., /usr/local/bin/bd).

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 16:10:52 -07:00
Steve Yegge
747697c6c0 feat: Add optional prefix parameter to /bd-init command
Allow users to specify a custom issue prefix when initializing beads:
  /bd-init myproject

If no prefix is provided, defaults to current directory name (existing behavior).

Changes:
- Add argument-hint: [prefix] to command frontmatter
- Update command description to document $1 parameter usage
- Pass prefix to MCP init tool when provided

The MCP init tool already supported the prefix parameter, this just
exposes it through the slash command interface.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 16:03:25 -07:00
Steve Yegge
a4d816d1f4 fix: Remove unsupported engines field and add runtime version checking
Fixes Claude Code marketplace plugin installation failure (bd-183).

Problem: The plugin.json manifest included an engines field (borrowed from npm)
to specify minimum bd CLI version requirements. However, Claude Code's plugin
manifest schema doesn't recognize this field, causing validation errors when
installing via /plugin marketplace add.

Solution:
1. Remove the engines field from plugin.json
2. Add runtime version checking in the MCP server startup
3. Update documentation to reflect automatic version checking

Changes:
- .claude-plugin/plugin.json: Remove unsupported engines field
- integrations/beads-mcp/src/beads_mcp/bd_client.py:
  - Add BdVersionError exception class
  - Add _check_version() method to validate bd CLI >= 0.9.0
  - Use bd version command (not bd --version)
- integrations/beads-mcp/src/beads_mcp/tools.py:
  - Make _get_client() async to support version checking
  - Update all tool functions to await _get_client()
  - Add version check on first MCP server use
- .claude-plugin/commands/bd-version.md: Update to mention automatic checking
- PLUGIN.md: Document automatic version validation at startup

Benefits:
- Plugin installs successfully via Claude Code marketplace
- Clear error messages if bd CLI version is too old
- Version check happens once per MCP server lifetime (not per command)
- Users get actionable update instructions in error messages

Closes bd-183
2025-10-14 15:54:50 -07:00
Steve Yegge
29938f67c2 Fix plugin manifest schema for Claude Code marketplace
Claud code `/plugin marketplace add steveyegge/beads` fix
2025-10-14 15:36:49 -07:00
Steve Yegge
dd613f451e chore: Recover lost issues bd-180, bd-181, bd-182 after rebase
During git pull --rebase, we resolved a JSONL conflict by accepting the remote's
cleaned version with --theirs. This accidentally deleted 3 legitimate issues that
were created locally:

- bd-180: Investigate vector/semantic search for issue discovery
- bd-181: Implement storage driver interface for pluggable backends
- bd-182: Investigate auto-export debounce not triggering

Recovered these from git history (HEAD~3) and re-imported them.

Stats: 72 → 75 issues (3 recovered)
2025-10-14 14:36:12 -07:00
Steve Yegge
653d7fd574 chore: Update uv.lock after testing MCP server 2025-10-14 14:34:04 -07:00
Steve Yegge
2bb6f026c2 fix: Update version bump script to include MCP server __init__.py
Issue found: bump-version.sh was missing the MCP server's __init__.py file, causing version mismatches (pyproject.toml: 0.9.2, __init__.py: 1.0.0).

Changes:
- Add integrations/beads-mcp/src/beads_mcp/__init__.py to update list
- Add it to git staging in auto-commit
- Add it to verification check
- Fix current version mismatch: 1.0.0 to 0.9.2

Now the script updates 7 files instead of 6
2025-10-14 14:34:04 -07:00
Steve Yegge
a7693aee97 fix: Update CI workflow and close stale issues
**CI Improvements:**
- Fix Go version: 1.25 → 1.23 (matches go.mod)
- Add coverage threshold check (fail <50%, warn <55%)
- Coverage check runs after tests, before codecov upload

**Issue Cleanup:**
- Close bd-1: Stale test issue from early development
- Close bd-2: Auto-export verified working
- Close bd-9: Collision resolution complete (all subtasks done)
- Close bd-69: Coverage threshold implemented

**New Issues:**
- bd-69: CI coverage threshold (completed this session)
- bd-70: Test coverage improvements for auto-flush/import

Addresses review findings. System is now clean and ready for plugin testing (bd-64).

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 14:34:04 -07:00
Steve Yegge
5057cf96ce chore: Remove duplicate bd.jsonl file
The codebase had two identical JSONL files (bd.jsonl and issues.jsonl).
The code defaults to issues.jsonl but FindJSONLPath() would pick bd.jsonl
alphabetically. Removed the duplicate to use only the standard filename.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 14:32:08 -07:00
Steve Yegge
bbfe73e1bb docs: Add comprehensive testing handoff document
Creates TESTING_NEXT.md with complete context for next agent to test
the Claude Code plugin from GitHub.

Includes:
- What was completed this session
- Detailed testing instructions
- Potential issues to watch for
- Important files and commit references
- Success criteria
- How to continue based on test results

This ensures no context is lost between sessions and the next agent
knows exactly what to do (test plugin from GitHub).

Related: bd-64 (plugin testing task)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 13:56:53 -07:00
Steve Yegge
a612b92c03 docs: Add version management instructions to CLAUDE.md
Adds prominent section explaining how to bump versions using the new
script. Future AI agents will know to use ./scripts/bump-version.sh
when the user requests a version bump.

Includes:
- Common user phrases for version bumps
- Step-by-step instructions
- What files get updated automatically
- Why this matters (references bd-66 issue)

Also updates Release Process section to use the script.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 13:51:24 -07:00
Steve Yegge
33ae8f8797 chore: Update issue tracker and documentation
- Close completed test issues (bd-5, bd-51)
- Add versioning strategy task (bd-65)
- Add version sync bug (bd-66)
- Update CLAUDE.md to reflect MCP server implementation status

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 13:49:58 -07:00
Steve Yegge
a5c71f03ea feat: Add version bump script for consistent versioning
Adds scripts/bump-version.sh to automate version syncing across all
beads components, preventing version mismatches like bd-66.

Features:
- Updates all version files in one command
- Validates semantic versioning format
- Verifies all versions match after update
- Shows git diff preview
- Optional auto-commit with standardized message
- Cross-platform compatible (macOS/Linux)

Files updated by script:
- cmd/bd/version.go
- .claude-plugin/plugin.json
- .claude-plugin/marketplace.json
- integrations/beads-mcp/pyproject.toml
- README.md
- PLUGIN.md

Usage:
  ./scripts/bump-version.sh 0.9.3           # Dry run with diff
  ./scripts/bump-version.sh 0.9.3 --commit  # Auto-commit

Closes bd-67

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 13:49:21 -07:00
Steve Yegge
c0f1044d42 fix: Sync all component versions to 0.9.2
Fixes version inconsistencies across the project. All components now at 0.9.2:

Updated:
- .claude-plugin/plugin.json: 0.9.0 → 0.9.2
- .claude-plugin/marketplace.json: 0.9.0 → 0.9.2
- integrations/beads-mcp/pyproject.toml: 1.0.0 → 0.9.2
- README.md: v0.9.0 → v0.9.2
- PLUGIN.md: Updated version requirements

Root cause: Previous version bumps (0.9.0 → 0.9.1 → 0.9.2) only updated
cmd/bd/version.go, leaving other components out of sync.

The MCP server was initially versioned at 1.0.0 when added today, but
syncing to 0.9.2 for consistency since the project is still in alpha.

Closes bd-66

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 13:42:37 -07:00
Augustinas Malinauskas
0b9fba9f76 Merge branch 'steveyegge:main' into main 2025-10-14 13:38:14 -07:00
Augustinas Malinauskas
3c1957bd03 Mismatching manifest
`repository` is a string

https://docs.claude.com/en/docs/claude-code/plugins-reference
2025-10-14 13:37:54 -07:00
Steve Yegge
d25fc53e9b feat: Add version compatibility checking to plugin
Adds version management to help users keep bd CLI and plugin in sync.

Changes:
- Add engines field to plugin.json requiring bd >=0.9.0
- Add /bd-version command to check component versions
- Add comprehensive "Updating" section to PLUGIN.md
- Document recommended update workflow

Users can now run /bd-version to check:
- bd CLI version
- Plugin version
- MCP server status
- Compatibility warnings

Addresses version sync concerns raised in plugin development.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 13:30:28 -07:00
Steve Yegge
2c4c7dddcd docs: Update LINTING.md baseline to reflect test coverage growth
Update documented baseline from ~100 to ~200 linting issues. The increase
is due to significant test coverage additions between Oct 12-14:
- Collision resolution tests (1100+ lines)
- Auto-flush feature tests (300+ lines)

All new warnings follow the same idiomatic patterns (deferred cleanup
without error checks). Updated breakdown:
- errcheck: 73 → 159 (test cleanup operations)
- gosec: 7 → 19 (test file paths, validated SQL)
- revive: 17 → 21 (Cobra interface requirements)
- gocyclo: 0 → 1 (comprehensive integration test)
- goconst: 1 → 2 (test string constants)

All warnings remain legitimate false positives. No change in code quality
or security posture.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 13:28:57 -07:00
Steve Yegge
e4fba408f3 feat: Add markdown-to-jsonl converter example [addresses #9]
Add lightweight example script for converting markdown planning docs
to bd JSONL format. This addresses #9 without adding complexity to
bd core.

Features:
- YAML frontmatter parsing (priority, type, assignee)
- Headings converted to issues
- Task lists extracted as sub-issues
- Dependency parsing (blocks: bd-10, etc.)
- Fully customizable by users

This demonstrates the "lightweight extension pattern" - keeping bd
core minimal while providing examples users can adapt for their needs.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 13:24:20 -07:00
Augustinas Malinauskas
550e42830a Merge branch 'steveyegge:main' into main 2025-10-14 13:21:57 -07:00
Steve Yegge
92885bb7a3 feat: Add markdown file support to bd create command
Implement `bd create -f file.md` to parse markdown files and create
multiple issues in one command. This enables drafting features in
markdown and converting them to tracked issues.

Features:
- Parse markdown H2 headers (##) as issue titles
- Support all issue fields via H3 sections (### Priority, ### Type, etc.)
- Handle multiple issues per file
- Comprehensive validation and error handling
- Full test coverage with 5 test cases

Closes bd-91 (GH-9)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-14 13:21:08 -07:00