Commit Graph

5370 Commits

Author SHA1 Message Date
beads/crew/emma
c08dddce0e bd daemon sync: 2026-01-07 01:18:15 2026-01-07 01:18:15 -08:00
beads/crew/emma
d733e88c8f bd daemon sync: 2026-01-07 01:18:14 2026-01-07 01:18:14 -08:00
beads/crew/emma
d8fb73f8f9 bd daemon sync: 2026-01-07 01:18:12 2026-01-07 01:18:12 -08:00
beads/crew/emma
463bfa57f2 bd daemon sync: 2026-01-07 01:18:08 2026-01-07 01:18:08 -08:00
gastown/crew/george
de7ed3c08a bd daemon sync: 2026-01-07 01:08:45 2026-01-07 01:08:45 -08:00
beads/crew/emma
744d2a7d22 feat(create): add --dry-run flag to preview issue creation (bd-0hi7)
Adds --dry-run flag that shows what would be created without actually
creating the issue. Useful for scripting and validation.

- Shows preview in human-readable format by default
- Outputs full issue JSON with --json flag (empty ID, not placeholder string)
- Skips all side effects (hooks, labels, dependencies)
- Works with --rig/--prefix flags (shows target rig)
- Errors gracefully with --file flag (not supported)
- Includes event fields when --type=event
2026-01-07 01:08:28 -08:00
beads/crew/emma
181fd58651 bd daemon sync: 2026-01-07 01:06:02 2026-01-07 01:06:02 -08:00
beads/crew/emma
c58ca6c261 bd daemon sync: 2026-01-07 01:05:25 2026-01-07 01:05:25 -08:00
beads/crew/emma
ecb5a28191 bd daemon sync: 2026-01-07 01:05:06 2026-01-07 01:05:06 -08:00
beads/crew/emma
74fba8cab8 bd daemon sync: 2026-01-07 01:03:23 2026-01-07 01:03:23 -08:00
deacon
352ea6707e bd daemon sync: 2026-01-07 01:01:26 2026-01-07 01:01:26 -08:00
beads/crew/emma
f45a06da91 bd sync: 2026-01-07 00:49:43 2026-01-07 00:49:43 -08:00
beads/crew/emma
81a2af9598 Revert "fix(formula): add dev path to local-install and clarify bump-version.sh (bd-z8xz)"
This reverts commit fd3e78461231301193c08f960b73e8d0ec1d531a.
2026-01-07 00:46:48 -08:00
beads/crew/emma
b391a96465 fix(formula): add dev path to local-install and clarify bump-version.sh (bd-z8xz)
- Add Option 3 to local-install step: build from source with macOS codesigning
- Clarify run-bump-script step: bump-version.sh is the authority for release mechanics
- Document --all flag includes --install --mcp-local --restart-daemons
- Add reference to ./scripts/bump-version.sh --help
2026-01-07 00:46:48 -08:00
beads/crew/emma
9da807863b bd sync: 2026-01-07 00:46:20 2026-01-07 00:46:20 -08:00
beads/crew/emma
a7a1d499d7 bd sync: 2026-01-07 00:39:50 2026-01-07 00:39:50 -08:00
beads/crew/emma
c0891cff3f bd sync: 2026-01-07 00:37:14 2026-01-07 00:37:14 -08:00
beads/crew/emma
ee5bc5931a feat(gate): auto-discover workflow run ID in gate check (bd-fbkd)
When bd gate check encounters a gh:run gate with a non-numeric await_id
(workflow name hint like release.yml), it now auto-discovers the run ID:

- Queries GitHub directly with gh run list --workflow=X
- Takes the most recent run (deterministic: newest-first from API)
- Updates the gates await_id and proceeds with status check

This is ZFC-compliant: most recent run of workflow X is purely mechanical,
no heuristic scoring. Agents no longer need to run bd gate discover manually.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-07 00:36:51 -08:00
emma
e049b30fe0 bd sync: 2026-01-07 00:23:22 2026-01-07 00:23:22 -08:00
emma
f9b7af767b bd sync: 2026-01-07 00:23:18 2026-01-07 00:23:18 -08:00
emma
21657dc35e bd daemon sync: 2026-01-07 00:21:40 2026-01-07 00:21:40 -08:00
emma
cdac71a17b bd daemon sync: 2026-01-07 00:21:36 2026-01-07 00:21:36 -08:00
beads/crew/emma
812f4e5297 chore: Bump version to 0.46.0
Updated all component versions:
- bd CLI: 0.45.0 → 0.46.0
- Plugin: 0.45.0 → 0.46.0
- MCP server: 0.45.0 → 0.46.0
- npm package: 0.45.0 → 0.46.0
- Documentation: 0.45.0 → 0.46.0

Changes in 0.46.0:
- Custom type support in beads config.yaml (bd-649s)
- Gas Town types extraction into beads core (bd-i54l)
- Gate workflow discovery improvements (bd-m8ew)
2026-01-06 23:51:29 -08:00
dave
4440f9e8cb refactor(gate): consolidate numeric ID check and improve workflow matching
Code review improvements:
- Make isNumericRunID delegate to isNumericID (DRY)
- Extract workflowNameMatches() for clearer, more robust matching
- Handle hint→filename matching (e.g., "release" matches "release.yml")
- Add TestWorkflowNameMatches with comprehensive test cases

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Executed-By: beads/crew/dave
Rig: beads
Role: crew
2026-01-06 23:40:37 -08:00
dave
8528fcaa4e fix(gate): handle workflow name hints in gh:run gate discovery (bd-m8ew)
When a formula specifies a gate with id="release.yml", the AwaitID
now properly functions as a workflow name hint:

- gate discover: finds gates where AwaitID is empty OR non-numeric
- gate discover: filters matching runs by workflow name when hint present
- gate check: gracefully handles non-numeric AwaitID with clear message

Added isNumericRunID/isNumericID helpers and tests for the new behavior.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Executed-By: beads/crew/dave
Rig: beads
Role: crew
2026-01-06 23:34:30 -08:00
fang
90c5be3a13 test: update version threshold in TestCheckMetadataVersionTracking
The test for "slightly outdated version" was using 0.35.0, which is now
10 minor versions behind the current 0.45.0. This exceeds the threshold
for "very old" (>=10 minor versions), causing the test to fail.

Updated the test version from 0.35.0 to 0.43.0 to stay within the
"slightly outdated" range (2 minor versions behind).

(bd-iw11)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 23:31:09 -08:00
dave
a70c3a8cbe feat: extract Gas Town types from beads core (bd-i54l)
Remove Gas Town-specific issue types (agent, role, rig, convoy, slot)
from beads core. These types are now identified by labels instead:
- gt:agent, gt:role, gt:rig, gt:convoy, gt:slot

Changes:
- internal/types/types.go: Remove TypeAgent, TypeRole, TypeRig, TypeConvoy, TypeSlot constants
- cmd/bd/agent.go: Create agents with TypeTask + gt:agent label
- cmd/bd/merge_slot.go: Create slots with TypeTask + gt:slot label
- internal/storage/sqlite/queries.go, transaction.go: Query convoys by gt:convoy label
- internal/rpc/server_issues_epics.go: Check gt:agent label for role_type/rig label auto-add
- cmd/bd/create.go: Check gt:agent label for role_type/rig label auto-add
- internal/ui/styles.go: Remove agent/role/rig type colors
- cmd/bd/export_obsidian.go: Remove agent/role/rig/convoy type tag mappings
- Update all affected tests

This enables beads to be a generic issue tracker while Gas Town
uses labels for its specific type semantics.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Executed-By: beads/crew/dave
Rig: beads
Role: crew
2026-01-06 22:18:37 -08:00
beads/crew/dave
b7358f17bf feat(types): add custom type support to beads config (bd-649s)
Add types.custom config key mirroring the status.custom pattern:
- Add CustomTypeConfigKey constant and GetCustomTypes() to storage interface
- Add IssueType.IsValidWithCustom() method for validation
- Add ValidateWithCustom() to Issue for combined status/type validation
- Update all validation call sites to use GetCustomTypes()
- Rename parseCustomStatuses to parseCommaSeparated for reuse

This enables Gas Town to register custom types like agent/role/rig/convoy
without hardcoding them in beads core, supporting the type extraction epic.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Executed-By: beads/crew/dave
Rig: beads
Role: crew
2026-01-06 21:30:58 -08:00
beads/crew/dave
3261091bba bd daemon sync: 2026-01-06 20:26:52 2026-01-06 20:26:52 -08:00
beads/crew/dave
3feba51c59 bd sync: 2026-01-06 20:18:43 2026-01-06 20:18:43 -08:00
beads/crew/dave
8925ee76d0 bd daemon sync: 2026-01-06 20:18:37 2026-01-06 20:18:37 -08:00
beads/crew/dave
3287340678 chore: Bump version to 0.45.0
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Executed-By: beads/crew/dave
Rig: beads
Role: crew
2026-01-06 20:11:48 -08:00
beads/crew/giles
d02bde04ad fix(lint): handle Close error in completions.go 2026-01-06 19:37:20 -08:00
beads/crew/giles
8c2810e905 fix(ci): restore Windows smoke tests instead of full test suite
PR #904 incorrectly changed Windows from smoke tests to full `go test ./...`
which times out (see bd-bmev). Windows full tests take 20+ minutes vs ~1min
for smoke tests.

Restore the original approach:
- Linux/macOS: full test suite with `go test ./...`
- Windows: smoke tests only (build + basic CRUD commands)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 19:34:34 -08:00
beads/crew/wolf
6ce36ab1f3 fix(lint): address G304 and unparam warnings
- Add #nosec G304 comment to parseJSONLFile in rename_prefix.go
- Mark unused noGitHistory param in importFromJSONLInline (mirrors import.go pattern)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 19:32:20 -08:00
Peter Chanthamynavong
520518c68b refactor(test): replace testify with stdlib in daemon tests (#936)
The daemon socket tests relied on an external assertion library, which
increased the module's dependency footprint and deviated from Go's
idiomatic testing patterns.

This commit introduces a leaner testing approach using the standard
library:
- Replace testify/assert calls with standard if checks and t.Errorf
- Remove testify and associated indirects from go.mod

These changes preserve existing test behavior while simplifying the
build process and reducing external maintenance overhead.
2026-01-06 19:29:57 -08:00
Steve Yegge
6c287074dc Merge pull request #926 from JeremyKalmus/patch-1
Add Parade app to community tools list
2026-01-06 19:27:53 -08:00
Peter Chanthamynavong
12858f5146 fix(doctor): recognize lowercase 's' skip-worktree flag (#931)
* fix(doctor): handle 's' status in combined git flags

Problem:
- Git status detection failed when 's' was combined with other flags
- Branch synchronization checks produced incorrect results due to missing flag parsing

Solution:
- Update detection logic to correctly identify the 's' status within combined flag strings

Impact:
- Ensures branch synchronization state is accurately reported during doctor checks

* test(doctor): add unit tests for git flag parsing

- Extract git flag parsing logic into parseGitLsFilesFlag helper
- Add unit tests for git flag parsing logic

Coverage: Git flag parsing in sync_branch.go
2026-01-06 19:22:51 -08:00
Steve Yegge
65f484d809 Merge pull request #934 from peterkc/fix/init-branch-persistence
fix(init): persist --branch flag to config.yaml
2026-01-06 19:22:22 -08:00
beads/crew/giles
8bf9410d39 fix(lint): add rename_prefix.go to G304 exclusions
The parseJSONLFile function reads user-specified JSONL files
which is safe for this context.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 19:15:27 -08:00
Yaroslav Lapin
4eb2856143 Add bun installation method to INSTALLING.md (#930) 2026-01-06 19:14:38 -08:00
Peter Chanthamynavong
e9e0d7f1e5 feat(daemon): add BD_SOCKET env var for test isolation (#914)
Add BD_SOCKET environment variable support to override daemon socket path,
enabling parallel test isolation via t.TempDir() + t.Setenv().

Changes:
- getSocketPath() checks BD_SOCKET first, falls back to dbPath-derived path
- getSocketPathForPID() checks BD_SOCKET first (for consistency)
- Add daemon_socket_test.go with isolation pattern examples

This is a minimal tracer bullet to validate the approach before
expanding to full test isolation infrastructure.

Backward compatible: default behavior unchanged without env var set.
2026-01-06 19:13:49 -08:00
beads/crew/dave
60c1b4dcb4 bd sync: 2026-01-06 19:05:44 2026-01-06 19:05:44 -08:00
beads/crew/dave
5dfb838d60 feat(completion): optimize ID prefix filtering and add completions to more commands
Improvements to shell completions from PR #935:

1. Add IDPrefix field to IssueFilter for efficient database-level filtering
   - Queries are now filtered at SQL level instead of fetching all issues
   - Updated sqlite, transaction, and memory stores to support IDPrefix

2. Add ValidArgsFunction to additional commands:
   - dep (add, remove, list, tree)
   - comments, comment (add)
   - delete
   - graph
   - label (add, remove, list)
   - duplicate, supersede
   - audit
   - move
   - relate, unrelate
   - refile
   - gate (show, resolve, add-waiter)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Executed-By: beads/crew/dave
Rig: beads
Role: crew
2026-01-06 19:05:34 -08:00
Bob Cotton
025cdac962 feat(completion): add dynamic shell completions for issue IDs (#935)
Add intelligent shell completions that query the database to provide
issue ID suggestions with titles for commands that take IDs as arguments.

Changes:
- Add issueIDCompletion function that queries storage for all issues
- Register completion for show, update, close, edit, defer, undefer, reopen
- Add comprehensive test suite with 3 test cases
- Completions display ID with title as description (ID\tTitle format)

The completion function opens the database (read-only) and filters issues
based on the partially typed prefix, providing a better UX for commands
that require issue IDs.

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

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-06 18:59:25 -08:00
furiosa
bf378650f4 feat(types): add rig identity bead type (gt-zmznh)
- Add TypeRig constant to IssueType enum
- Update IsValid() method to include TypeRig
- Add UI color (orange) and style for rig type
- Update CLI flag descriptions in create and update commands
- Add Obsidian export tag for rig type
- Add comprehensive test cases for rig and other newer types

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 18:55:45 -08:00
beads/crew/wolf
94997bd619 fix(sync): use inline import for --import-only with redirect (bd-ysal)
When running `bd sync --import-only` from a directory with `.beads/redirect`,
the subprocess-based import could fail to update staleness metadata correctly
because the subprocess might resolve paths differently than the parent process.

The fix uses inline import (calling importIssuesCore directly) instead of
spawning a subprocess. This ensures:
1. The same store and dbPath are used throughout
2. Path resolution is consistent with the parent process
3. Staleness metadata is updated correctly in the redirected database

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 18:51:38 -08:00
aaron-sangster
cca2016376 fix(worktree): resolve worktrees by name from git registry (#921) 2026-01-06 18:45:27 -08:00
Peter Chanthamynavong
362b07d74f fix(init): ensure sync branch persistence on init
Problem:
- Sync branch setup occurred before the config file was initialized
- Persistence only targeted the database, leading to loss on re-init

Solution:
- Reorder initialization to create the config file before sync setup
- Synchronize sync branch state to both config file and database

Impact:
- Settings are preserved across re-initialization and DB clears
- Better consistency between file and database state

Fixes: #927 (Bug 3)
2026-01-06 15:22:15 -08:00
Peter Chanthamynavong
c1d3644b9a test(init): verify --branch flag persistence
- Add test case for --branch flag persistence in config.yaml

Coverage: init command configuration logic
2026-01-06 14:59:51 -08:00