Merge pull request #75 from LazyBachelor/LPM-140

LPM-140 The Sprinting Update
Adds sprint support across the web UI (board + issue detail), TUI kanban, CLI/REPL, and the Beads-backed storage layer.

Changes:

Introduces sprint entities in storage and exposes sprint operations via IssueService.
Updates web board to support backlog vs. sprint columns, sprint selection, and sprint creation routes.
Updates TUI kanban to show backlog + sprint columns and adds sprint selection/creation actions.
This commit is contained in:
Robin Olsen
2026-03-23 11:26:04 -07:00
committed by GitHub
parent 06404708ba
commit d900a5fcd3
33 changed files with 2378 additions and 771 deletions

View File

@@ -53,6 +53,15 @@ type IssueService interface {
AddIssueComment(ctx context.Context, issueID, author, text string) (*Comment, error)
GetIssueComments(ctx context.Context, issueID string) ([]*Comment, error)
GetCommentCounts(ctx context.Context, issueIDs []string) (map[string]int, error)
AddSprint(ctx context.Context) (int, error)
RemoveSprint(ctx context.Context, sprintNum int) error
GetSprints(ctx context.Context) ([]int, error)
GetBacklogSprint(ctx context.Context) (int, error)
GetIssuesBySprint(ctx context.Context, sprintNum int) ([]*Issue, error)
GetIssuesNotInAnySprint(ctx context.Context) ([]*Issue, error)
AddIssueToSprint(ctx context.Context, issueID string, sprintNum int) error
RemoveIssueFromSprint(ctx context.Context, issueID string, sprintNum int) error
}
type StatsService interface {

View File

@@ -35,12 +35,11 @@ type (
// Status constants
const (
StatusOpen = beads.StatusOpen
StatusInProgress = beads.StatusInProgress
StatusBlocked = beads.StatusBlocked
StatusDeferred = beads.StatusDeferred
StatusClosed = beads.StatusClosed
StatusReadyToSprint Status = "ready_to_sprint"
StatusOpen = beads.StatusOpen
StatusInProgress = beads.StatusInProgress
StatusBlocked = beads.StatusBlocked
StatusDeferred = beads.StatusDeferred
StatusClosed = beads.StatusClosed
)
// IssueType constants