3 Commits

Author SHA1 Message Date
viljarb
ac19f82585 add dependency is now part of the task 2026-03-26 18:40:15 +01:00
viljarb
eb8dfc40c9 updating dependency management task to use dependency management system 2026-03-25 19:41:15 +01:00
Robin Olsen
8d18afc46c update setup script to set chromium as default browser 2026-03-25 12:47:38 +01:00
4 changed files with 67 additions and 41 deletions

View File

@@ -101,4 +101,23 @@ chown -R abc:abc /config/Desktop /config/.config
git config --global user.name "LazyPM" git config --global user.name "LazyPM"
git config --global user.email "lazy@pm.com" git config --global user.email "lazy@pm.com"
mkdir -p /config/.config/xfce4
mkdir -p /usr/share/xfce4/helpers
cat > /usr/share/xfce4/helpers/chromium.desktop <<'EOF'
[Desktop Entry]
Version=1.0
Type=X-XFCE-Helper
Name=Chromium
X-XFCE-Category=WebBrowser
X-XFCE-Commands=chromium;
X-XFCE-CommandsWithParameter=chromium "%s";
Icon=chromium
EOF
cat > /config/.config/xfce4/helpers.rc <<'EOF'
WebBrowser=chromium
EOF
chown abc:abc /config/.config/xfce4/helpers.rc
echo "**** Desktop setup complete ****" echo "**** Desktop setup complete ****"

View File

@@ -14,12 +14,9 @@ const dependencyManagementDescription = `You are tasked with managing issue depe
Several issues in your project have dependencies on other issues. Several issues in your project have dependencies on other issues.
You need to: You need to:
1. Find 2 issues that mention dependencies in their description. 1. Find the 2 issues that depend on 'Setup database connection'.
- Set their status to "Blocked". 2. Add the 'Setup database connection' issue as a dependency to the 2 issues.
2. Find the issue that is mentioned by the other issues: 3. Set the 2 issues' status to "Blocked".`
- Set priority to 3.
- Set status to in-progress.
- Assign to yourself as "Me".`
type DependencyManagementTask struct { type DependencyManagementTask struct {
done bool done bool
@@ -73,27 +70,33 @@ func (t *DependencyManagementTask) Setup(ctx context.Context) error {
NewIssueBuilder(). NewIssueBuilder().
WithTitle("Setup database connection"). WithTitle("Setup database connection").
WithDescription("Configure database connection pool."). WithDescription("Configure database connection pool.").
WithPriority(2). WithPriority(3).
WithStatus(models.StatusOpen). WithStatus(models.StatusInProgress).
WithIssueType(models.TypeTask). WithIssueType(models.TypeTask).
Build(), Build(),
NewIssueBuilder(). NewIssueBuilder().
WithTitle("Implement Authentication System"). WithTitle("Implement Authentication System").
WithDescription("Add login/logout functionality. Depends on 'Setup database connection' issue."). WithDescription("Add login/logout functionality.").
WithPriority(2). WithPriority(2).
WithStatus(models.StatusOpen). WithStatus(models.StatusOpen).
WithIssueType(models.TypeTask). WithIssueType(models.TypeTask).
Build(), Build(),
NewIssueBuilder(). NewIssueBuilder().
WithTitle("Add user management operations"). WithTitle("Add user management operations").
WithDescription("Add operations for user management. Depends on 'Setup database connection' issue."). WithDescription("Add operations for user management.").
WithPriority(3). WithPriority(2).
WithStatus(models.StatusOpen). WithStatus(models.StatusOpen).
WithIssueType(models.TypeTask). WithIssueType(models.TypeTask).
Build(), Build(),
} }
return t.app.Issues.CreateIssues(ctx, t.depIssues, "") if err := t.app.Issues.CreateIssues(ctx, t.depIssues, ""); err != nil {
return err
}
return nil
} }
func (t *DependencyManagementTask) Validate(ctx context.Context) ValidationFeedback { func (t *DependencyManagementTask) Validate(ctx context.Context) ValidationFeedback {
@@ -108,25 +111,29 @@ func (t *DependencyManagementTask) Validate(ctx context.Context) ValidationFeedb
for _, depIssue := range t.depIssues[1:] { for _, depIssue := range t.depIssues[1:] {
if issue.Title == depIssue.Title { if issue.Title == depIssue.Title {
expect.Equal(issue.Status, models.StatusBlocked, expect.Equal(issue.Status, models.StatusBlocked,
fmt.Sprintf("%s status", issue.Title)) fmt.Sprintf("%s status", issue.Title,))
}
}
}
if !expect.Valid() {
return expect.ValidationFeedback
}
for _, issue := range issues {
for _, foundationalIssue := range t.depIssues[:1] {
if issue.Title == foundationalIssue.Title {
expect.Equal(issue.Priority, 3,
fmt.Sprintf("%s priority", issue.Title))
expect.NotEmptyAndEqual(issue.Assignee, "Me",
fmt.Sprintf("%s assignee", issue.Title))
expect.Equal(issue.Status, models.StatusInProgress,
fmt.Sprintf("%s status", issue.Title))
} }
} }
} }
for _, depIssue := range t.depIssues[1:] {
deps, _ := t.app.Issues.GetDependencies(ctx, depIssue.ID)
expect.Equal(len(deps), 1,
fmt.Sprintf("%s - %d dependencies", depIssue.Title, len(deps)))
if len(deps) == 1 {
expect.Equal(deps[0].ID, t.depIssues[0].ID,
fmt.Sprintf("%s dependency", depIssue.Title))
}
}
if !expect.Valid() {
return expect.ValidationFeedback
}
return expect.Complete() return expect.Complete()
} }

View File

@@ -215,8 +215,8 @@ func helpBarConfig(view ViewKind) HelpBarConfig {
{Key: "n", Desc: "new sprint"}, {Key: "n", Desc: "new sprint"},
{Key: "S", Desc: "select sprint"}, {Key: "S", Desc: "select sprint"},
{Key: "pgup/pgdn", Desc: "page"}, {Key: "pgup/pgdn", Desc: "page"},
{Key: "←/→", Desc: "column"}, {Key: "h/l", Desc: "column"},
{Key: "h/l", Desc: "move"}, {Key: "←/→", Desc: "move"},
{Key: "a", Desc: "add"}, {Key: "a", Desc: "add"},
{Key: "e/d/s/p/t/A/D", Desc: "edit"}, {Key: "e/d/s/p/t/A/D", Desc: "edit"},
{Key: "x", Desc: "delete"}, {Key: "x", Desc: "delete"},
@@ -225,8 +225,8 @@ func helpBarConfig(view ViewKind) HelpBarConfig {
}, },
FullItems: []HelpItem{ FullItems: []HelpItem{
{Key: "v", Desc: "list view"}, {Key: "v", Desc: "list view"},
{Key: "←/→", Desc: "switch column"}, {Key: "h/l", Desc: "switch column"},
{Key: "h/l", Desc: "move issue"}, {Key: "←/→", Desc: "move issue"},
{Key: "↑/k", Desc: "up"}, {Key: "↑/k", Desc: "up"},
{Key: "↓/j", Desc: "down"}, {Key: "↓/j", Desc: "down"},
{Key: "/", Desc: "search"}, {Key: "/", Desc: "search"},
@@ -240,7 +240,7 @@ func helpBarConfig(view ViewKind) HelpBarConfig {
{Key: "p", Desc: "change priority"}, {Key: "p", Desc: "change priority"},
{Key: "t", Desc: "change type"}, {Key: "t", Desc: "change type"},
{Key: "A", Desc: "change assignee"}, {Key: "A", Desc: "change assignee"},
{Key: "D", Desc: "manage dependency"}, // dependencies -> dependency cuz dependencies added a newline {Key: "D", Desc: "manage dependencies"},
{Key: "S", Desc: "select sprint"}, {Key: "S", Desc: "select sprint"},
{Key: "n", Desc: "new sprint"}, {Key: "n", Desc: "new sprint"},
{Key: "q", Desc: "quit"}, {Key: "q", Desc: "quit"},

View File

@@ -27,20 +27,20 @@ var defaultKanbanKeyMap = KeyMap{
key.WithHelp("v", "dashboard"), key.WithHelp("v", "dashboard"),
), ),
MoveColumnLeft: key.NewBinding( MoveColumnLeft: key.NewBinding(
key.WithKeys("left"), key.WithKeys("h"),
key.WithHelp("", "prev column"), key.WithHelp("h", "prev column"),
), ),
MoveColumnRight: key.NewBinding( MoveColumnRight: key.NewBinding(
key.WithKeys("right"), key.WithKeys("l"),
key.WithHelp("", "next column"), key.WithHelp("l", "next column"),
), ),
MoveIssueLeft: key.NewBinding( MoveIssueLeft: key.NewBinding(
key.WithKeys("h", "["), key.WithKeys("left", "["),
key.WithHelp("h/[", "move issue left"), key.WithHelp("/[", "move issue left"),
), ),
MoveIssueRight: key.NewBinding( MoveIssueRight: key.NewBinding(
key.WithKeys("l", "]"), key.WithKeys("right", "]"),
key.WithHelp("l/]", "move issue right"), key.WithHelp("/]", "move issue right"),
), ),
AddComment: key.NewBinding( AddComment: key.NewBinding(
key.WithKeys("c"), key.WithKeys("c"),