Add multiselect board filters and letter-jump on picker menus.

Persist comma-separated list filters per project, toggle with space, and jump by first letter in board and project pickers.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Skruecken
2026-10-19 10:42:59 +02:00
co-authored by Cursor
parent aa8f89b43a
commit 41feba11de
9 changed files with 305 additions and 39 deletions
+7 -6
View File
@@ -14,7 +14,8 @@ type Config struct {
ActiveProject string `json:"activeProject"`
DataDir string `json:"dataDir"`
Theme string `json:"theme"`
// ProjectLists maps project ID → board list id (all|backlog|in_progress|done).
// ProjectLists maps project ID → comma-separated board list ids
// (e.g. "all" or "backlog,in_progress").
ProjectLists map[string]string `json:"projectLists,omitempty"`
}
@@ -55,8 +56,8 @@ func (c *Config) ApplyDefaults(home string) {
}
}
// ActiveBoardList returns the persisted board list for a project (default: all).
func (c *Config) ActiveBoardList(projectID string) string {
// ActiveBoardLists returns the persisted board filter string for a project (default: "all").
func (c *Config) ActiveBoardLists(projectID string) string {
if c.ProjectLists == nil {
return "all"
}
@@ -66,10 +67,10 @@ func (c *Config) ActiveBoardList(projectID string) string {
return "all"
}
// SetActiveBoardList stores the board list for a project.
func (c *Config) SetActiveBoardList(projectID, listID string) {
// SetActiveBoardLists stores the board filter string for a project.
func (c *Config) SetActiveBoardLists(projectID, listIDs string) {
if c.ProjectLists == nil {
c.ProjectLists = map[string]string{}
}
c.ProjectLists[projectID] = listID
c.ProjectLists[projectID] = listIDs
}