Initial commit: Beads issue tracker with security fixes

Core features:
- Dependency-aware issue tracking with SQLite backend
- Ready work detection (issues with no open blockers)
- Dependency tree visualization
- Cycle detection and prevention
- Full audit trail
- CLI with colored output

Security and correctness fixes applied:
- Fixed SQL injection vulnerability in UpdateIssue (whitelisted fields)
- Fixed race condition in ID generation (added mutex)
- Fixed cycle detection to return full paths (not just issue IDs)
- Added cycle prevention in AddDependency (validates before commit)
- Added comprehensive input validation (priority, status, types, etc.)
- Fixed N+1 query in GetBlockedIssues (using GROUP_CONCAT)
- Improved query building in GetReadyWork (proper string joining)
- Fixed P0 priority filter bug (using Changed() instead of value check)

All critical and major issues from code review have been addressed.

🤖 Generated with Claude Code
This commit is contained in:
Steve Yegge
2025-10-11 20:07:36 -07:00
commit 704515125d
19 changed files with 3976 additions and 0 deletions

104
QUICKSTART.md Normal file
View File

@@ -0,0 +1,104 @@
# Beads Quickstart
Get up and running with Beads in 2 minutes.
## Installation
```bash
cd ~/src/beads
go build -o beads ./cmd/beads
./beads --help
```
## Your First Issues
```bash
# Create a few issues
./beads create "Set up database" -p 1 -t task
./beads create "Create API" -p 2 -t feature
./beads create "Add authentication" -p 2 -t feature
# List them
./beads list
```
## Add Dependencies
```bash
# API depends on database
./beads dep add bd-2 bd-1
# Auth depends on API
./beads dep add bd-3 bd-2
# View the tree
./beads dep tree bd-3
```
Output:
```
🌲 Dependency tree for bd-3:
→ bd-3: Add authentication [P2] (open)
→ bd-2: Create API [P2] (open)
→ bd-1: Set up database [P1] (open)
```
## Find Ready Work
```bash
./beads ready
```
Output:
```
📋 Ready work (1 issues with no blockers):
1. [P1] bd-1: Set up database
```
Only bd-1 is ready because bd-2 and bd-3 are blocked!
## Work the Queue
```bash
# Start working on bd-1
./beads update bd-1 --status in_progress
# Complete it
./beads close bd-1 --reason "Database setup complete"
# Check ready work again
./beads ready
```
Now bd-2 is ready! 🎉
## Track Progress
```bash
# See blocked issues
./beads blocked
# View statistics
./beads stats
```
## Database Location
By default: `~/.beads/beads.db`
You can use project-specific databases:
```bash
./beads --db ./my-project.db create "Task"
```
## Next Steps
- Add labels: `./beads create "Task" -l "backend,urgent"`
- Filter ready work: `./beads ready --priority 1`
- Search issues: `./beads list --status open`
- Detect cycles: `./beads dep cycles`
See [README.md](README.md) for full documentation.