backlog.md 0.1.0 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/bin/backlog-darwin-arm64/backlog +0 -0
  2. package/bin/backlog-darwin-x64/backlog +0 -0
  3. package/bin/backlog-linux-arm64/backlog +0 -0
  4. package/{cli → bin/backlog-linux-x64}/backlog +0 -0
  5. package/bin/backlog-win32-x64/backlog.exe +0 -0
  6. package/cli.js +62 -0
  7. package/package.json +57 -46
  8. package/.backlog/archive/drafts/readme.md +0 -3
  9. package/.backlog/archive/drafts/task-41 - temporary-test-task.md +0 -13
  10. package/.backlog/archive/readme.md +0 -6
  11. package/.backlog/archive/tasks/readme.md +0 -3
  12. package/.backlog/archive/tasks/task-41 - cli-migrate-terminal-ui-to-bblessed.md +0 -14
  13. package/.backlog/config.yml +0 -7
  14. package/.backlog/decisions/readme.md +0 -7
  15. package/.backlog/docs/readme.md +0 -20
  16. package/.backlog/drafts/readme.md +0 -3
  17. package/.backlog/drafts/task-26 - docs-add-board-export-step-to-agent-dod.md +0 -21
  18. package/.backlog/drafts/task-28 - add-code-of-conduct.md +0 -20
  19. package/.backlog/drafts/task-30 - create-changelog.md +0 -19
  20. package/.backlog/milestones/m-0 - project-setup.md +0 -8
  21. package/.backlog/milestones/m-1 - cli.md +0 -8
  22. package/.backlog/milestones/m-2 - cli-kanban.md +0 -8
  23. package/.backlog/milestones/m-3 - gui.md +0 -8
  24. package/.backlog/milestones/m-4 - gui-kanban.md +0 -8
  25. package/.backlog/milestones/m-5 - gui-advanced.md +0 -12
  26. package/.backlog/milestones/readme.md +0 -3
  27. package/.backlog/readme.md +0 -5
  28. package/.backlog/tasks/readme.md +0 -37
  29. package/.backlog/tasks/task-1 - cli-setup-core-project.md +0 -23
  30. package/.backlog/tasks/task-10 - gui-init-packaging.md +0 -23
  31. package/.backlog/tasks/task-11 - gui-kanban-board.md +0 -26
  32. package/.backlog/tasks/task-12 - gui-advanced.md +0 -25
  33. package/.backlog/tasks/task-13 - cli-add-agent-instruction-prompt.md +0 -53
  34. package/.backlog/tasks/task-13.1 - cli-agent-instruction-file-selection.md +0 -40
  35. package/.backlog/tasks/task-14 - gui-introduction-screens.md +0 -21
  36. package/.backlog/tasks/task-15 - improve-tasks-readme-with-generic-example-and-cli-reference.md +0 -20
  37. package/.backlog/tasks/task-16 - improve-docs-readme-with-generic-example-and-cli-reference.md +0 -20
  38. package/.backlog/tasks/task-17 - improve-drafts-readme-with-generic-example-and-cli-reference.md +0 -20
  39. package/.backlog/tasks/task-18 - improve-decisions-readme-with-generic-example-and-cli-reference.md +0 -20
  40. package/.backlog/tasks/task-19 - cli-fix-default-task-status-and-remove-draft-from-statuses.md +0 -55
  41. package/.backlog/tasks/task-2 - cli-core-logic-library.md +0 -28
  42. package/.backlog/tasks/task-20 - add-agent-guideline-to-mark-tasks-in-progress-on-start.md +0 -32
  43. package/.backlog/tasks/task-21 - kanban-board-vertical-layout.md +0 -31
  44. package/.backlog/tasks/task-22 - cli-prevent-double-dash-in-task-filenames.md +0 -24
  45. package/.backlog/tasks/task-23 - cli-kanban-board-order-tasks-by-id-asc.md +0 -30
  46. package/.backlog/tasks/task-24 - handle-subtasks-in-the-kanban-view.md +0 -38
  47. package/.backlog/tasks/task-24.1 - cli-kanban-board-milestone-view.md +0 -19
  48. package/.backlog/tasks/task-25 - cli-export-kanban-board-to-readme.md +0 -28
  49. package/.backlog/tasks/task-27 - add-contributing-guidelines.md +0 -27
  50. package/.backlog/tasks/task-29 - add-github-templates.md +0 -28
  51. package/.backlog/tasks/task-3 - cli-implement-backlog-init.md +0 -63
  52. package/.backlog/tasks/task-31 - update-readme-for-open-source.md +0 -26
  53. package/.backlog/tasks/task-32 - cli-hide-empty-'no-status'-column.md +0 -31
  54. package/.backlog/tasks/task-33 - cli-export-milestones-board-as-roadmap.md +0 -20
  55. package/.backlog/tasks/task-34 - split-readme.md-for-users-and-contributors.md +0 -26
  56. package/.backlog/tasks/task-35 - finalize-package.json-metadata-for-publishing.md +0 -24
  57. package/.backlog/tasks/task-36 - cli-prompt-for-project-name-in-init.md +0 -24
  58. package/.backlog/tasks/task-37 - cli-board-view-open-tasks-in-ide.md +0 -19
  59. package/.backlog/tasks/task-38 - cli-improved-agent-selection-for-init.md +0 -25
  60. package/.backlog/tasks/task-39 - cli-fix-empty-agent-instruction-files-on-init.md +0 -31
  61. package/.backlog/tasks/task-4 - cli-task-management-commands.md +0 -28
  62. package/.backlog/tasks/task-4.1 - cli-task-create.md +0 -27
  63. package/.backlog/tasks/task-4.10 - use-cli-to-mark-tasks-done.md +0 -51
  64. package/.backlog/tasks/task-4.11 - docs-add-definition-of-done-to-agent-guidelines.md +0 -23
  65. package/.backlog/tasks/task-4.12 - cli-handle-task-id-conflicts-across-branches.md +0 -53
  66. package/.backlog/tasks/task-4.13 - cli-fix-config-command-local-global-logic.md +0 -58
  67. package/.backlog/tasks/task-4.2 - cli-task-list-view.md +0 -25
  68. package/.backlog/tasks/task-4.3 - cli-task-edit.md +0 -24
  69. package/.backlog/tasks/task-4.4 - cli-task-archive-transition.md +0 -27
  70. package/.backlog/tasks/task-4.5 - cli-init-prompts-for-reporter-name-and-global-local-config.md +0 -28
  71. package/.backlog/tasks/task-4.6 - cli-add-empty-assignee-array-field-for-new-tasks.md +0 -35
  72. package/.backlog/tasks/task-4.7 - cli-parse-unquoted-created_date.md +0 -40
  73. package/.backlog/tasks/task-4.8 - cli-enforce-description-header.md +0 -48
  74. package/.backlog/tasks/task-4.9 - cli-normalize-task-id-inputs.md +0 -66
  75. package/.backlog/tasks/task-40 - cli-board-command-defaults-to-view.md +0 -38
  76. package/.backlog/tasks/task-41 - cli-migrate-terminal-ui-to-bblessed.md +0 -93
  77. package/.backlog/tasks/task-41.1 - cli-bblessed-init-wizard.md +0 -42
  78. package/.backlog/tasks/task-41.2 - cli-bblessed-task-view.md +0 -44
  79. package/.backlog/tasks/task-41.3 - cli-bblessed-doc-view.md +0 -45
  80. package/.backlog/tasks/task-41.4 - cli-bblessed-board-view.md +0 -49
  81. package/.backlog/tasks/task-41.5 - cli-audit-remaining-ui-for-bblessed.md +0 -55
  82. package/.backlog/tasks/task-42 - visual-hierarchy.md +0 -54
  83. package/.backlog/tasks/task-43 - remove-duplicate-acceptance-criteria-and-style-metadata.md +0 -56
  84. package/.backlog/tasks/task-44 - checklist-alignment.md +0 -24
  85. package/.backlog/tasks/task-45 - safe-line-wrapping.md +0 -23
  86. package/.backlog/tasks/task-46 - split-pane-layout.md +0 -24
  87. package/.backlog/tasks/task-47 - sticky-header-in-detail-view.md +0 -43
  88. package/.backlog/tasks/task-48 - footer-hint-line.md +0 -21
  89. package/.backlog/tasks/task-49 - status-styling.md +0 -53
  90. package/.backlog/tasks/task-5 - cli-docs-decisions.md +0 -57
  91. package/.backlog/tasks/task-50 - borders-&-padding.md +0 -22
  92. package/.backlog/tasks/task-51 - code-path-styling.md +0 -23
  93. package/.backlog/tasks/task-52 - cli-filter-tasks-list-by-status-or-assignee.md +0 -29
  94. package/.backlog/tasks/task-6 - cli-packaging.md +0 -65
  95. package/.backlog/tasks/task-6.1 - cli-local-installation-support-for-bunx-npx.md +0 -49
  96. package/.backlog/tasks/task-6.2 - cli-github-actions-for-build-&-publish.md +0 -64
  97. package/.backlog/tasks/task-7 - cli-kanban-view.md +0 -60
  98. package/.backlog/tasks/task-7.1 - cli-kanban-board-detect-remote-task-status.md +0 -62
  99. package/.backlog/tasks/task-8 - gui-project-setup.md +0 -21
  100. package/.backlog/tasks/task-9 - gui-task-crud.md +0 -24
  101. package/.cursorrules +0 -223
  102. package/.gitattributes +0 -2
  103. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -25
  104. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -15
  105. package/.github/PULL_REQUEST_TEMPLATE.md +0 -8
  106. package/.github/workflows/ci.yml +0 -36
  107. package/.husky/pre-commit +0 -1
  108. package/AGENTS.md +0 -65
  109. package/CLAUDE.md +0 -87
  110. package/CONTRIBUTING.md +0 -19
  111. package/DEVELOPMENT.md +0 -37
  112. package/biome.json +0 -31
  113. package/bun.lock +0 -152
  114. package/cli/.cursorrules-xh86jabm.md +0 -82
  115. package/cli/AGENTS-xh86jabm.md +0 -82
  116. package/cli/CLAUDE-xh86jabm.md +0 -82
  117. package/cli/cli.js +0 -19622
  118. package/cli/index.js +0 -2
  119. package/docs/npm-publishing.md +0 -69
  120. package/scripts/build.js +0 -73
  121. package/src/agent-instructions.ts +0 -54
  122. package/src/board.ts +0 -263
  123. package/src/cli.ts +0 -806
  124. package/src/constants/index.ts +0 -48
  125. package/src/core/backlog.ts +0 -183
  126. package/src/core/remote-tasks.ts +0 -168
  127. package/src/file-system/operations.ts +0 -515
  128. package/src/git/operations.ts +0 -189
  129. package/src/guidelines/.cursorrules.md +0 -82
  130. package/src/guidelines/AGENTS.md +0 -82
  131. package/src/guidelines/CLAUDE.md +0 -82
  132. package/src/guidelines/index.ts +0 -7
  133. package/src/index.ts +0 -30
  134. package/src/markdown/parser.ts +0 -145
  135. package/src/markdown/serializer.ts +0 -71
  136. package/src/test/agent-instructions.test.ts +0 -62
  137. package/src/test/board.test.ts +0 -291
  138. package/src/test/build.test.ts +0 -28
  139. package/src/test/checklist.test.ts +0 -273
  140. package/src/test/cli.test.ts +0 -1300
  141. package/src/test/code-path.test.ts +0 -204
  142. package/src/test/core.test.ts +0 -330
  143. package/src/test/filesystem.test.ts +0 -435
  144. package/src/test/git.test.ts +0 -26
  145. package/src/test/heading.test.ts +0 -102
  146. package/src/test/line-wrapping.test.ts +0 -252
  147. package/src/test/local-install.test.ts +0 -34
  148. package/src/test/markdown.test.ts +0 -526
  149. package/src/test/parallel-loading.test.ts +0 -160
  150. package/src/test/parent-id-normalization.test.ts +0 -48
  151. package/src/test/remote-id-conflict.test.ts +0 -60
  152. package/src/test/status-icon.test.ts +0 -93
  153. package/src/types/blessed.d.ts +0 -14
  154. package/src/types/index.ts +0 -55
  155. package/src/types/raw.d.ts +0 -4
  156. package/src/ui/board.ts +0 -322
  157. package/src/ui/checklist.ts +0 -103
  158. package/src/ui/code-path.ts +0 -113
  159. package/src/ui/heading.ts +0 -121
  160. package/src/ui/loading.ts +0 -216
  161. package/src/ui/status-icon.ts +0 -53
  162. package/src/ui/task-list.ts +0 -168
  163. package/src/ui/task-viewer.ts +0 -640
  164. package/src/ui/tui.ts +0 -301
  165. package/tsconfig.json +0 -26
@@ -1,24 +0,0 @@
1
- ---
2
- id: task-36
3
- title: 'CLI: Prompt for project name in init'
4
- status: Done
5
- assignee:
6
- - '@codex'
7
- created_date: '2025-06-10'
8
- updated_date: '2025-06-10'
9
- labels: []
10
- dependencies: []
11
- ---
12
-
13
- ## Description
14
-
15
- Allow `backlog init` to run without specifying a project name. When omitted, the CLI should prompt for the name before proceeding.
16
-
17
- ## Acceptance Criteria
18
- - [x] `backlog init` works without project name parameter
19
- - [x] When project name is missing, CLI prompts for it before initialization
20
- - [x] Task committed to repository
21
-
22
- ## Implementation Notes
23
- - Updated `src/cli.ts` to accept optional project name and prompt when omitted.
24
- - Added integration test covering prompt behavior in `src/test/cli.test.ts`.
@@ -1,19 +0,0 @@
1
- ---
2
- id: task-37
3
- title: 'CLI: Board view open tasks in IDE'
4
- status: In Progress
5
- assignee:
6
- - '@AI'
7
- created_date: '2025-06-10'
8
- labels: []
9
- dependencies: []
10
- ---
11
-
12
-
13
- ## Description
14
-
15
- Add clickable links to each task id in the board view that open the task file in the user's default IDE.
16
-
17
- ## Acceptance Criteria
18
- - [ ] Every task id displayed in the board is a hyperlink that opens the task file in the configured IDE when clicked.
19
- - [ ] Provide a --no-links option to disable hyperlink generation.
@@ -1,25 +0,0 @@
1
- ---
2
- id: task-38
3
- title: 'CLI: Improved Agent Selection for Init'
4
- status: Done
5
- assignee:
6
- - '@AI'
7
- created_date: '2025-06-10'
8
- updated_date: '2025-06-10'
9
- labels: []
10
- dependencies: []
11
- ---
12
-
13
- ## Description
14
- Implement interactive checkbox-style selection for agents during 'backlog init'. Users should select one or multiple agents using space or enter, similar to modern CLI tools.
15
-
16
- ## Acceptance Criteria
17
- - [x] Interactive checkbox UI replaces current agent selection
18
- - [x] Users can select one or multiple agents using space and confirm with enter
19
- - [x] Works consistently across Node and Bun runtimes
20
- - [x] Task committed to repository
21
-
22
- ## Implementation Notes
23
- - Added `prompts` dependency for interactive CLI prompts.
24
- - Replaced numeric input with `multiselect` checkbox prompt in `src/cli.ts`.
25
- - Supports selecting multiple agent instruction files with space/enter.
@@ -1,31 +0,0 @@
1
- ---
2
- id: task-39
3
- title: 'CLI: fix empty agent instruction files on init'
4
- status: Done
5
- assignee:
6
- - '@codex'
7
- reporter: '@MrLesk'
8
- created_date: '2025-06-10'
9
- updated_date: '2025-06-10'
10
- labels:
11
- - cli
12
- - bug
13
- dependencies: []
14
- ---
15
-
16
- ## Description
17
-
18
- Backlog init should populate selected agent instruction files with default content instead of creating empty files.
19
-
20
- ## Acceptance Criteria
21
-
22
- - [x] Selected agent instruction files contain default guideline text after running `backlog init`
23
- - [x] Automated test verifies non-empty content is written to each created file
24
-
25
- ## Implementation Notes
26
-
27
- - Imported guideline constants may resolve to file paths when bundled. Added
28
- `_loadAgentGuideline` helper to read file contents when needed.
29
- - `addAgentInstructions` now loads guideline text before writing files, ensuring
30
- non-empty content in `AGENTS.md`, `CLAUDE.md`, and `.cursorrules`.
31
- - Updated CLI and tests to verify content length instead of specific words.
@@ -1,28 +0,0 @@
1
- ---
2
- id: task-4
3
- title: 'CLI: Task Management Commands'
4
- status: Done
5
- assignee: []
6
- reporter: '@MrLesk'
7
- created_date: '2025-06-04'
8
- updated_date: '2025-06-09'
9
- completed_date: '2025-06-09'
10
- labels:
11
- - cli
12
- - command
13
- milestone: M1 - CLI
14
- dependencies:
15
- - task-3
16
- ---
17
-
18
- ## Description
19
-
20
- Implement comprehensive task management functionality including creation, listing, viewing, editing, and archiving of tasks and drafts. This encompasses all user-facing CLI commands for task lifecycle management.
21
-
22
- ## Implementation Notes
23
-
24
- - Subtasks **task-4.1** through **task-4.13** introduced complete CLI support for task and draft management.
25
- - Commands include `task create`, `task list`, `task view`, `task edit`, `task archive`, `task demote`, and draft variants.
26
- - Tasks can be created as subtasks using the `--parent` option and moved between draft and active states.
27
- - Metadata updates such as status and labels persist correctly through the `edit` command.
28
- - Extensive tests and documentation were added in each subtask to ensure reliability.
@@ -1,27 +0,0 @@
1
- ---
2
- id: task-4.1
3
- title: "CLI: Task Creation Commands"
4
- status: Done
5
- assignee: @MrLesk
6
- reporter: @MrLesk
7
- created_date: 2025-06-04
8
- labels: ["cli", "command"]
9
- milestone: "M1 - CLI"
10
- dependencies: ["task-3"]
11
- parent_task_id: task-4
12
- ---
13
-
14
- ## Description
15
-
16
- Implement commands for creating tasks, drafts, and subtasks:
17
-
18
- - `backlog task create` to add active tasks.
19
- - `backlog draft create` to create tasks in draft mode.
20
- - `backlog task create --parent <task-id>` to create a subtask under an existing task.
21
-
22
- ## Acceptance Criteria
23
-
24
- - [x] Commands create Markdown files in the correct directories.
25
- - [x] Required metadata is captured from flags or prompts.
26
- - [x] Subtasks are saved using decimal IDs under `.backlog/tasks/`.
27
- - [x] Changes are committed with a descriptive message.
@@ -1,51 +0,0 @@
1
- ---
2
- id: task-4.10
3
- title: 'CLI: enforce Agents to use backlog CLI to mark tasks Done'
4
- status: Done
5
- assignee: []
6
- reporter: @MrLesk
7
- created_date: '2025-06-08'
8
- updated_date: '2025-06-09'
9
- labels:
10
- - cli
11
- - agents
12
- dependencies: []
13
- parent_task_id: task-4
14
- ---
15
-
16
- ## Description
17
-
18
- Update agent guidelines so that after implementing and testing a task, they use the backlog CLI to set the task status to **Done**.
19
-
20
- ## Acceptance Criteria
21
- - [x] Documentation instructs agents to run `backlog task edit <task-id> --status Done` after testing.
22
- - [x] Example usage included in AGENTS.md, CLAUDE.md and .cursorrules files
23
-
24
- ## Implementation Notes
25
-
26
- **Task 4.10 Implementation Summary:**
27
-
28
- 1. **Review Found Complete Implementation:**
29
- - All agent guidance files already included the CLI command instruction
30
- - Implementation was found to be complete during merge conflict resolution
31
-
32
- 2. **Documentation Updates Applied:**
33
- - **AGENTS.md**: Added CLI command instruction in guidelines section and Definition of Done
34
- - **CLAUDE.md**: Added CLI command instruction in AI Agent Integration section
35
- - **.cursorrules**: Added CLI command instruction in Task Management section
36
-
37
- 3. **Consistent Command Format:**
38
- - All files now include the same command: `backlog task edit <task-id> --status Done`
39
- - Command is presented in code blocks for clarity
40
- - Instructions emphasize using this after implementing and testing tasks
41
-
42
- 4. **Merge Conflict Resolution:**
43
- - Resolved conflict in AGENTS.md by combining task 4.10 implementation with Definition of Done from main
44
- - Ensured CLI command appears both in guidelines and Definition of Done for consistency
45
-
46
- 5. **Quality Assurance:**
47
- - All 105 tests pass
48
- - Code passes all Biome linting and formatting checks
49
- - All agent guidance files now consistently instruct using the Backlog CLI
50
-
51
- All AI agents working with this project are now properly guided to mark tasks as Done using the CLI command, ensuring consistent workflow and proper task status management.
@@ -1,23 +0,0 @@
1
- ---
2
- id: task-4.11
3
- title: 'Docs: add definition of done to agent guidelines'
4
- status: Done
5
- assignee: []
6
- reporter: @MrLesk
7
- created_date: 2025-06-08
8
- updated_date: 2025-06-08
9
- labels:
10
- - docs
11
- - agents
12
- dependencies: []
13
- parent_task_id: task-4
14
- ---
15
-
16
- ## Description
17
-
18
- Add 'Definition of Done' section to AGENTS.md, CLAUDE.md and .cursorrules.
19
-
20
- The Definition of done should be about verifying that all acceptance criteria are met, tests are implemented (when necessary) and checked, documentation is updated. Finally the task should be marked as done using the same Backlog CLI tool commands.
21
-
22
- ## Acceptance Criteria
23
- - [x] Each file includes a Definition of Done
@@ -1,53 +0,0 @@
1
- ---
2
- id: task-4.12
3
- title: 'CLI: Handle task ID conflicts across branches'
4
- status: Done
5
- assignee: []
6
- reporter: @MrLesk
7
- created_date: '2025-06-09'
8
- labels: []
9
- dependencies: []
10
- parent_task_id: task-4
11
- ---
12
- ## Description
13
- Implement detection of the latest task ID across all remote branches when creating a new task. The CLI should fetch branch references and inspect task files, similar to the kanban board remote status check, to determine the highest available ID before assigning the next one.
14
-
15
- ## Acceptance Criteria
16
- - [x] `backlog task create` checks all remote branches for task files and chooses the next sequential ID.
17
- - [x] New tasks always use an ID higher than any found across branches to avoid conflicts.
18
-
19
- ## Implementation Notes
20
-
21
- **Core Git Operations Added (src/git/operations.ts):**
22
- - `fetch(remote = "origin")`: Executes `git fetch` to update remote branch information
23
- - `listRemoteBranches(remote = "origin")`: Uses `git branch -r --list origin/*` to discover all remote branches
24
- - `listFilesInRemoteBranch(branch, path)`: Uses `git ls-tree -r origin/{branch} --name-only -- {path}` to list files in specific remote branch paths
25
-
26
- **Enhanced ID Generation (src/cli.ts:74-128):**
27
- - Modified `generateNextId()` to scan all remote branches for existing task IDs before assignment
28
- - Fetches latest remote branch information via `git fetch origin`
29
- - Iterates through all remote branches and scans `.backlog/tasks` directory for task files
30
- - Extracts task IDs using regex `/task-([\d.]+)/` pattern matching
31
- - Prevents ID collisions for both main tasks (`task-N`) and subtasks (`task-N.M`)
32
- - Gracefully handles git failures with try-catch, falling back to local-only ID generation
33
-
34
- **Comprehensive ID Conflict Prevention:**
35
- - Compares both local and remote task IDs to determine next available sequential ID
36
- - Handles subtask creation by checking parent task patterns across all branches
37
- - Ensures new task IDs are always higher than any found across local and remote sources
38
- - Maintains backward compatibility with existing local-only ID generation logic
39
-
40
- **Test Coverage (src/test/remote-id-conflict.test.ts):**
41
- - Creates comprehensive test scenario with bare git repository and remote branches
42
- - Sets up feature branch with task-1, then tests main branch task creation
43
- - Verifies that `backlog task create` correctly assigns task-2 (avoiding conflict with remote task-1)
44
- - Confirms CLI properly detects and respects remote task IDs during ID assignment
45
- - Test passes successfully, validating cross-branch ID conflict prevention
46
-
47
- **Quality Assurance:**
48
- - All 122 tests pass, including the new remote ID conflict test
49
- - Code passes all Biome linting and formatting checks
50
- - Implementation maintains existing functionality while adding robust remote branch support
51
- - Error handling ensures CLI remains functional even when git operations fail
52
-
53
- The implementation successfully prevents task ID conflicts across all repository branches, enabling safe collaborative development with distributed task creation across multiple feature branches.
@@ -1,58 +0,0 @@
1
- ---
2
- id: task-4.13
3
- title: 'CLI: Fix config command local/global logic'
4
- status: Done
5
- assignee: []
6
- created_date: '2025-06-09'
7
- updated_date: '2025-06-09'
8
- labels: []
9
- dependencies: []
10
- parent_task_id: task-4
11
- ---
12
-
13
- ## Description
14
-
15
- Fix config commands to correctly use local or global config files
16
-
17
- ## Acceptance Criteria
18
- - [x] `backlog config set <key> <value> --local` saves changes to `.backlog/config.yml`.
19
- - [x] `backlog config set <key> <value> --global` saves changes to the user config file.
20
- - [x] `backlog config get <key>` checks local config first, then global config, then defaults.
21
- - [x] Behavior prioritizes local configuration over global and built-in defaults.
22
- - [x] Documentation updated to describe local and global configuration behavior.
23
-
24
- ## Implementation Notes
25
-
26
- **CLI Command Implementation (src/cli.ts:497-548):**
27
- - Added `config get <key>` command that implements proper priority order: local config → global config → built-in defaults
28
- - Added `config set <key> <value>` command with `--local` and `--global` flags
29
- - `--local` flag (default behavior) saves to `.backlog/config.yml` in current project
30
- - `--global` flag saves to `~/.backlog/.user` in user's home directory
31
- - Built-in defaults include `statuses: ["Draft", "To Do", "In Progress", "Done"]` and `defaultStatus: "To Do"`
32
-
33
- **FileSystem Implementation (src/file-system/operations.ts:349-392):**
34
- - Added `getUserSetting(key, global)` method to read from user config files
35
- - Added `setUserSetting(key, value, global)` method to write to user config files
36
- - Global config stored in `~/.backlog/.user` (home directory)
37
- - Local config stored in `./.user` (project directory)
38
- - Supports key-value format with colon separation and optional quotes
39
- - Fixed `serializeConfig()` and `saveUserSettings()` to always include trailing newlines for proper file formatting
40
-
41
- **Configuration Priority Logic:**
42
- 1. **Local config first**: Checks `.backlog/config.yml` for project-specific settings
43
- 2. **Global config fallback**: Checks `~/.backlog/.user` for user-wide settings
44
- 3. **Built-in defaults**: Falls back to hardcoded values for core settings like statuses
45
-
46
- **Documentation Updates (readme.md:176-179):**
47
- - Added explanation of `--local` (default) and `--global` flags
48
- - Documented priority order: local → global → defaults
49
- - Updated usage examples to show flag usage
50
- - Clarified behavior for both `config get` and `config set` commands
51
-
52
- **Quality Assurance:**
53
- - All filesystem tests pass, including new user config operations test
54
- - Manual testing confirms proper flag behavior and priority order
55
- - CLI help text includes proper flag documentation
56
- - Implementation maintains backward compatibility with existing config operations
57
-
58
- The config commands now correctly handle local/global configuration with proper precedence rules, enabling users to maintain both project-specific and user-wide settings.
@@ -1,25 +0,0 @@
1
- ---
2
- id: task-4.2
3
- title: "CLI: Task Listing and Viewing"
4
- status: Done
5
- assignee: @MrLesk
6
- reporter: @MrLesk
7
- created_date: 2025-06-04
8
- labels: ["cli", "command"]
9
- milestone: "M1 - CLI"
10
- dependencies: ["task-4.1"]
11
- parent_task_id: task-4
12
- ---
13
-
14
- ## Description
15
-
16
- Add commands to browse tasks:
17
-
18
- - `backlog task list` / `backlog tasks list` to show tasks.
19
- - `backlog task view <task-id>` or `backlog task <task-id>` to show a specific task.
20
-
21
- ## Acceptance Criteria
22
-
23
- - [x] Listing shows tasks grouped by status.
24
- - [x] Viewing displays task details with Markdown formatting.
25
- - [x] Commands do not modify task files.
@@ -1,24 +0,0 @@
1
- ---
2
- id: task-4.3
3
- title: "CLI: Task Editing"
4
- status: Done
5
- assignee: @MrLesk
6
- reporter: @MrLesk
7
- created_date: 2025-06-04
8
- updated_date: 2025-06-08
9
- labels: [cli, command]
10
- milestone: "M1 - CLI"
11
- dependencies: [task-4.2]
12
- parent_task_id: task-4
13
- ---
14
- ## Description
15
-
16
- Implement editing of existing tasks:
17
-
18
- - `backlog task edit <task-id>`
19
-
20
- ## Acceptance Criteria
21
-
22
- - [x] Updates to title, description, status, labels, and assignee are persisted.
23
- - [x] The command respects YAML frontmatter formatting.
24
- - [x] A commit records the changes to the task file.
@@ -1,27 +0,0 @@
1
- ---
2
- id: task-4.4
3
- title: "CLI: Task Archiving and State Transitions"
4
- status: Done
5
- assignee: @MrLesk
6
- reporter: @MrLesk
7
- created_date: 2025-06-04
8
- updated_date: 2025-06-08
9
- labels: ["cli", "command"]
10
- milestone: "M1 - CLI"
11
- dependencies: ["task-4.1"]
12
- parent_task_id: task-4
13
- ---
14
-
15
- ## Description
16
-
17
- Add commands for finalizing and moving tasks:
18
-
19
- - `backlog task archive <task-id>` and `backlog draft archive <task-id>`
20
- - `backlog draft promote` (move a draft to tasks)
21
- - `backlog task demote` (move a task back to drafts)
22
-
23
- ## Acceptance Criteria
24
-
25
- - [x] Archived tasks are moved to `.backlog/archive/` with history preserved.
26
- - [x] Promote/demote commands relocate files between drafts and tasks.
27
- - [x] Commits clearly state the action performed.
@@ -1,28 +0,0 @@
1
- ---
2
- id: task-4.5
3
- title: "CLI: Init prompts for reporter name and global/local config"
4
- status: "Done"
5
- assignee: @MrLesk
6
- reporter: @MrLesk
7
- created_date: 2025-06-08
8
- updated_date: 2025-06-08
9
- labels: ["cli", "config"]
10
- milestone: "M1 - CLI"
11
- dependencies: ["task-3"]
12
- parent_task_id: task-4
13
- ---
14
-
15
- ## Description
16
-
17
- Enhance `backlog init` with interactive prompts:
18
-
19
- - Ask for a default **reporter** name for new tasks.
20
- - Prompt whether to store this configuration globally or only for the current repository.
21
- - When storing locally, create a hidden `.user` settings file and make sure it is ignored by Git.
22
-
23
- ## Acceptance Criteria
24
-
25
- - [x] Running `backlog init` asks for a default reporter name.
26
- - [x] User can choose between storing the reporter setting globally or locally.
27
- - [x] Choosing the local option creates a `.user` settings file and appends it to `.gitignore`.
28
- - [x] Reporter name saved based on the chosen scope.
@@ -1,35 +0,0 @@
1
- ---
2
- id: task-4.6
3
- title: "CLI: Add empty assignee array field for new tasks"
4
- status: Done
5
- assignee: @MrLesk
6
- reporter: @MrLesk
7
- created_date: 2025-06-08
8
- updated_date: 2025-06-08
9
- labels: ["cli", "command"]
10
- milestone: "M1 - CLI"
11
- dependencies: ["task-4.1"]
12
- parent_task_id: task-4
13
- ---
14
-
15
- ## Description
16
-
17
- Ensure every task created via the CLI includes an empty `assignee` array in its frontmatter. Investigate the current parsing and serialization logic which uses a single string value. If assignees are not handled as an array, update the code to support `string[]`.
18
-
19
- ## Acceptance Criteria
20
-
21
- - [x] New tasks contain `assignee: []` by default.
22
- - [x] Parsing and serialization read and write the assignee field as an array.
23
- - [x] Documentation provides instructions to migrate existing logic if needed.
24
-
25
- ## Implementation Notes
26
-
27
- **YAML Flexibility Support**: Implemented proper YAML specification support where assignee field accepts both string and array formats. The parser (`src/markdown/parser.ts:19-23`) automatically normalizes single strings to arrays using `Array.isArray()` check.
28
-
29
- **Core Normalization**: Added assignee normalization in `createTask`, `createDraft`, and `updateTask` methods (`src/core/backlog.ts`) with biome-ignore comments for TypeScript `any` usage required for YAML flexibility.
30
-
31
- **CLI Integration**: Updated `buildTaskFromOptions` function (`src/cli.ts:108`) to create arrays by default, and edit command to handle array assignment properly.
32
-
33
- **Comprehensive Testing**: Fixed all 99 tests by adding missing `assignee: []` fields and updating expectations from `.toBe("string")` to `.toEqual(["string"])` to match array format.
34
-
35
- **Type Safety**: Maintained `Task` interface with `assignee: string[]` type while supporting both input formats through runtime normalization.
@@ -1,40 +0,0 @@
1
- ---
2
- id: task-4.7
3
- title: "CLI: Parse unquoted created_date"
4
- status: Done
5
- assignee: @MrLesk
6
- reporter: @MrLesk
7
- created_date: 2025-06-08
8
- updated_date: 2025-06-08
9
- labels: ["cli", "command"]
10
- milestone: "M1 - CLI"
11
- dependencies: ["task-4.4"]
12
- parent_task_id: task-4
13
- ---
14
-
15
- ## Description
16
-
17
- Support unquoted `created_date` values in task frontmatter. Accept multiple date formats:
18
-
19
- - `created_date: 2025-06-08`
20
- - `created_date: '2025-06-08'`
21
- - `created_date: 08-06-25`
22
- - `created_date: 08/06/25`
23
- - `created_date: 08.06.25`
24
-
25
- Allow configuration of the expected `date_format` in `.backlog/config.yml` with default `yyyy-mm-dd`.
26
-
27
- ## Acceptance Criteria
28
-
29
- - [x] Unquoted dates are parsed correctly when viewing tasks.
30
- - [x] `date_format` option is documented in `config.yml`.
31
-
32
- ## Implementation Notes
33
-
34
- **Date Normalization Function**: Implemented `normalizeDate` function in `src/markdown/parser.ts:4-33` that handles multiple date formats including unquoted values. The function supports `yyyy-mm-dd`, `dd-mm-yy`, `dd/mm/yy`, and `dd.mm.yy` formats with automatic normalization to ISO format.
35
-
36
- **Parser Integration**: The `parseTask` function uses `normalizeDate(frontmatter.created_date)` at line 56 to process date fields, ensuring consistent date handling across all task parsing operations.
37
-
38
- **Configuration Documentation**: Added `date_format` field documentation in `.backlog/docs/readme.md:15` and included `dateFormat: string` in the `BacklogConfig` interface for future extensibility.
39
-
40
- **Comprehensive Testing**: Added test cases in `src/test/markdown.test.ts:133-155` covering both unquoted dates (`created_date: 2025-06-08`) and short format dates (`created_date: 08-06-25`) with proper normalization verification.
@@ -1,48 +0,0 @@
1
- ---
2
- id: task-4.8
3
- title: 'CLI: enforce description header'
4
- status: Done
5
- assignee: []
6
- reporter: @MrLesk
7
- created_date: 2025-06-08
8
- labels: []
9
- dependencies: []
10
- parent_task_id: task-4
11
- ---
12
-
13
- ## Description
14
-
15
- Ensure new tasks have a Description header. Update docs to require acceptance criteria and tests.
16
-
17
- ## Acceptance Criteria
18
- - [x] CLI automatically adds "## Description" when creating a task if missing.
19
- - [x] Documentation updated in AGENTS.md, CLAUDE.md, and .cursorrules to mandate acceptance criteria and relevant tests when necessary.
20
-
21
- ## Implementation Notes
22
-
23
- **Task 4.8 Implementation Summary:**
24
-
25
- 1. **Core Functionality (`src/core/backlog.ts`):**
26
- - Implemented `ensureDescriptionHeader()` function that automatically adds "## Description" header to task descriptions if missing
27
- - Integrated this function into all task creation and update methods: `createTask()`, `createDraft()`, and `updateTask()`
28
- - Function intelligently handles empty descriptions and prevents duplicate headers
29
-
30
- 2. **Test Coverage:**
31
- - Existing tests for description header functionality were found in `src/test/core.test.ts`
32
- - Tests verify both adding headers when missing and not duplicating existing headers
33
- - Updated CLI integration tests to expect the new description header format in task descriptions
34
-
35
- 3. **Documentation Updates:**
36
- - Updated AGENTS.md, CLAUDE.md, and .cursorrules to explicitly mandate writing relevant tests when implementing new functionality or fixing bugs
37
- - All three files already contained requirements for Description sections and Acceptance Criteria checklists
38
-
39
- 4. **Merge Resolution:**
40
- - Successfully resolved merge conflicts between task 4.8 (description header) and task 4.6 (assignee normalization)
41
- - Both features now work together in all task creation/update methods
42
-
43
- 5. **Quality Assurance:**
44
- - All 104 tests pass, including the updated expectations for description headers
45
- - Code passes all Biome linting and formatting checks
46
- - Features work correctly across task creation, updating, and draft management
47
-
48
- The CLI now automatically ensures all tasks have proper "## Description" headers, improving consistency across the project's task management system.
@@ -1,66 +0,0 @@
1
- ---
2
- id: task-4.9
3
- title: 'CLI: Normalize task-id inputs'
4
- status: Done
5
- assignee: []
6
- reporter: @MrLesk
7
- created_date: 2025-06-08
8
- labels:
9
- - cli
10
- - bug
11
- dependencies: []
12
- parent_task_id: task-4
13
- ---
14
-
15
- ## Description
16
-
17
- Ensure parent task id uses task-<number> format and accept both forms across commands
18
- Using `--parent 4` results in `parent_task_id: '4'` but should result in `parent_task_id: 'task-4'`, while other tasks expect the `task-<number>` prefix.
19
-
20
- Update the CLI so that the parent ID is normalized to include the `task-` prefix when creating subtasks. All commands that accept a task ID should support both `task-<number>` and plain `<number>` inputs.
21
-
22
- ## Current Status
23
- ✅ `generateNextId()` already normalizes parent input: `task-4` or `4` → `task-4`
24
- ✅ `outputTask()` (view command) already normalizes: `task-4` or `4` → `task-4`
25
- ✅ `buildTaskFromOptions()` now normalizes parent input: `task-4` or `4` → `task-4`
26
-
27
- ## Acceptance Criteria
28
-
29
- - [x] Normalize `parentTaskId` in `buildTaskFromOptions()` to always use `task-` prefix
30
- - [x] Test that `--parent 4` results in `parent_task_id: 'task-4'` in saved files
31
- - [x] Ensure all future commands accepting task IDs support both input formats
32
-
33
- ## Implementation Notes
34
-
35
- **Task 4.9 Implementation Summary:**
36
-
37
- 1. **Review Found Complete Implementation:**
38
- - All task ID normalization was already implemented across the codebase
39
- - `buildTaskFromOptions()` in `src/cli.ts` (lines 104-109) properly normalizes parent task IDs
40
- - All CLI commands already support both `task-<number>` and plain `<number>` input formats
41
-
42
- 2. **Comprehensive ID Normalization Coverage:**
43
- - **`buildTaskFromOptions()`**: Normalizes `--parent 4` → `parentTaskId: 'task-4'`
44
- - **`generateNextId()`**: Normalizes parent input for subtask ID generation
45
- - **`outputTask()`**: Normalizes input for task view command
46
- - **`loadTask()`**: Normalizes input for task loading operations
47
- - **`archiveTask()`**: Normalizes input for task archiving
48
- - **`demoteTask()`**: Normalizes input for task demotion
49
- - **`promoteDraft()`**: Normalizes input for draft promotion
50
-
51
- 3. **Test Coverage:**
52
- - Found existing test in `src/test/parent-id-normalization.test.ts`
53
- - Fixed test to include required `assignee` field (task 4.6 compatibility)
54
- - Test verifies `--parent 4` results in `parent_task_id: 'task-4'` in saved files
55
- - All CLI integration tests in `src/test/cli.test.ts` demonstrate ID normalization working
56
-
57
- 4. **Configuration Cleanup:**
58
- - Resolved merge conflicts in `biome.json` and removed redundant `.biomeignore` file
59
- - Now using single approach for ignoring files via `biome.json` configuration
60
-
61
- 5. **Quality Assurance:**
62
- - All 105 tests pass including the parent ID normalization test
63
- - Code passes all Biome linting and formatting checks
64
- - All CLI commands uniformly accept both input formats
65
-
66
- The CLI now comprehensively normalizes all task ID inputs, ensuring consistent behavior across all commands while maintaining user-friendly input flexibility.