Merge bd-zbyb-gusher: GH#509 worktrees

This commit is contained in:
Steve Yegge
2025-12-16 01:16:46 -08:00
3 changed files with 19264 additions and 7 deletions

19250
.beads/deletions.jsonl Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -514,6 +514,15 @@ var updateCmd = &cobra.Command{
} }
updates["estimated_minutes"] = estimate updates["estimated_minutes"] = estimate
} }
if cmd.Flags().Changed("type") {
issueType, _ := cmd.Flags().GetString("type")
// Validate issue type
if !types.IssueType(issueType).IsValid() {
fmt.Fprintf(os.Stderr, "Error: invalid issue type %q. Valid types: bug, feature, task, epic, chore\n", issueType)
os.Exit(1)
}
updates["issue_type"] = issueType
}
if cmd.Flags().Changed("add-label") { if cmd.Flags().Changed("add-label") {
addLabels, _ := cmd.Flags().GetStringSlice("add-label") addLabels, _ := cmd.Flags().GetStringSlice("add-label")
updates["add_labels"] = addLabels updates["add_labels"] = addLabels
@@ -606,6 +615,9 @@ var updateCmd = &cobra.Command{
if estimate, ok := updates["estimated_minutes"].(int); ok { if estimate, ok := updates["estimated_minutes"].(int); ok {
updateArgs.EstimatedMinutes = &estimate updateArgs.EstimatedMinutes = &estimate
} }
if issueType, ok := updates["issue_type"].(string); ok {
updateArgs.IssueType = &issueType
}
if addLabels, ok := updates["add_labels"].([]string); ok { if addLabels, ok := updates["add_labels"].([]string); ok {
updateArgs.AddLabels = addLabels updateArgs.AddLabels = addLabels
} }
@@ -1037,6 +1049,7 @@ func init() {
updateCmd.Flags().String("acceptance-criteria", "", "DEPRECATED: use --acceptance") updateCmd.Flags().String("acceptance-criteria", "", "DEPRECATED: use --acceptance")
_ = updateCmd.Flags().MarkHidden("acceptance-criteria") _ = updateCmd.Flags().MarkHidden("acceptance-criteria")
updateCmd.Flags().IntP("estimate", "e", 0, "Time estimate in minutes (e.g., 60 for 1 hour)") updateCmd.Flags().IntP("estimate", "e", 0, "Time estimate in minutes (e.g., 60 for 1 hour)")
updateCmd.Flags().StringP("type", "t", "", "Issue type (bug|feature|task|epic|chore)")
updateCmd.Flags().StringSlice("add-label", nil, "Add labels (repeatable)") updateCmd.Flags().StringSlice("add-label", nil, "Add labels (repeatable)")
updateCmd.Flags().StringSlice("remove-label", nil, "Remove labels (repeatable)") updateCmd.Flags().StringSlice("remove-label", nil, "Remove labels (repeatable)")
updateCmd.Flags().StringSlice("set-labels", nil, "Set labels, replacing all existing (repeatable)") updateCmd.Flags().StringSlice("set-labels", nil, "Set labels, replacing all existing (repeatable)")

View File

@@ -87,7 +87,7 @@ type UpdateArgs struct {
Assignee *string `json:"assignee,omitempty"` Assignee *string `json:"assignee,omitempty"`
ExternalRef *string `json:"external_ref,omitempty"` // Link to external issue trackers ExternalRef *string `json:"external_ref,omitempty"` // Link to external issue trackers
EstimatedMinutes *int `json:"estimated_minutes,omitempty"` // Time estimate in minutes EstimatedMinutes *int `json:"estimated_minutes,omitempty"` // Time estimate in minutes
IssueType *string `json:"issue_type,omitempty"` // Issue type (bug, feature, task, epic, chore) IssueType *string `json:"issue_type,omitempty"` // Issue type (bug|feature|task|epic|chore)
AddLabels []string `json:"add_labels,omitempty"` AddLabels []string `json:"add_labels,omitempty"`
RemoveLabels []string `json:"remove_labels,omitempty"` RemoveLabels []string `json:"remove_labels,omitempty"`
SetLabels []string `json:"set_labels,omitempty"` SetLabels []string `json:"set_labels,omitempty"`
@@ -276,12 +276,6 @@ type StatusResponse struct {
LastActivityTime string `json:"last_activity_time"` // ISO 8601 timestamp of last request LastActivityTime string `json:"last_activity_time"` // ISO 8601 timestamp of last request
ExclusiveLockActive bool `json:"exclusive_lock_active"` // Whether an exclusive lock is held ExclusiveLockActive bool `json:"exclusive_lock_active"` // Whether an exclusive lock is held
ExclusiveLockHolder string `json:"exclusive_lock_holder,omitempty"` // Lock holder name if active ExclusiveLockHolder string `json:"exclusive_lock_holder,omitempty"` // Lock holder name if active
// Daemon configuration
AutoCommit bool `json:"auto_commit"` // Whether auto-commit is enabled
AutoPush bool `json:"auto_push"` // Whether auto-push is enabled
LocalMode bool `json:"local_mode"` // Whether running in local-only mode (no git)
SyncInterval string `json:"sync_interval"` // Sync interval (e.g., "5s")
DaemonMode string `json:"daemon_mode"` // Sync mode: "poll" or "events"
} }
// HealthResponse is the response for a health check operation // HealthResponse is the response for a health check operation