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,38 +0,0 @@
1
- ---
2
- id: task-40
3
- title: 'CLI: Board command defaults to view'
4
- status: Done
5
- assignee:
6
- - '@codex'
7
- created_date: '2025-06-10'
8
- updated_date: '2025-06-10'
9
- labels:
10
- - cli
11
- dependencies: []
12
- ---
13
-
14
- ## Description
15
-
16
- Make 'backlog board' show the kanban board the same as 'backlog board view'.
17
-
18
- ## Acceptance Criteria
19
- - [x] Running `backlog board` shows the kanban board
20
- - [x] `backlog board view` remains functional
21
- - [x] Task committed to repository
22
-
23
- ## Implementation Notes
24
-
25
- The implementation was completed by modifying the CLI command structure in `src/cli.ts`:
26
-
27
- 1. **Added direct action handler to board command** (line 497): The main `boardCmd` now has an action handler that calls `handleBoardView`, making `backlog board` display the kanban board directly.
28
-
29
- 2. **Preserved existing view subcommand** (line 499): The `board view` subcommand remains functional and uses the same `handleBoardView` function.
30
-
31
- 3. **Shared implementation**: Both commands use the identical `handleBoardView` function with the same options, ensuring consistent behavior.
32
-
33
- 4. **Testing**: Added test coverage in `src/test/cli.test.ts` that verifies `backlog board` produces the same output as `backlog board view`.
34
-
35
- **Key architectural decisions:**
36
- - Used the same `handleBoardView` function for both commands to avoid code duplication
37
- - Preserved the existing `board view` command for backward compatibility
38
- - Both commands support the same options (`--layout`, `--vertical`) for consistent UX
@@ -1,93 +0,0 @@
1
- ---
2
- id: task-41
3
- title: 'CLI: Migrate terminal UI to bblessed'
4
- status: Done
5
- assignee:
6
- - Claude
7
- created_date: '2025-06-11'
8
- labels:
9
- - cli
10
- dependencies: []
11
- ---
12
-
13
- ## Description
14
-
15
- Migrate all CLI interfaces to bblessed for a consistent terminal experience.
16
-
17
- ## Acceptance Criteria
18
- - [x] Init wizard uses bblessed forms and lists
19
- - [x] Task view uses bblessed components
20
- - [x] Doc view uses bblessed components
21
- - [x] Board view rendered with bblessed
22
- - [x] Remove prompts-based UI code
23
- - [x] Works on Node and Bun
24
-
25
- ## Implementation Notes
26
-
27
- Successfully migrated all terminal UI elements to use the `blessed` library (originally referenced as `bblessed` which was a typo). The implementation follows a graceful degradation approach that ensures the CLI remains functional in all environments.
28
-
29
- ### Key Design Decisions:
30
-
31
- 1. **Dynamic Loading with Runtime Detection**:
32
- - Blessed is loaded via dynamic imports in `loadBlessed()` function
33
- - Checks `output.isTTY` before attempting to load to avoid issues in non-interactive environments
34
- - Returns `null` on load failure, enabling seamless fallback behavior
35
-
36
- 2. **Graceful Fallback Strategy**:
37
- - `promptText()`: Falls back to readline's `createInterface` for basic text input
38
- - `multiSelect()`: Returns empty array when blessed unavailable (non-interactive default)
39
- - `scrollableViewer()`: Falls back to simple `console.log` output
40
- - Ensures CI/CD pipelines and non-TTY environments continue to work
41
-
42
- 3. **Type Safety Without Hard Dependencies**:
43
- - Created `src/types/blessed.d.ts` with intentional `any` type to allow optional runtime loading
44
- - Used `@ts-ignore` comment for dynamic import to prevent TypeScript compilation errors
45
- - This approach keeps blessed as a truly optional dependency
46
-
47
- 4. **Modular TUI Architecture**:
48
- - Centralized all TUI logic in `src/ui/tui.ts` for consistency and maintainability
49
- - Each function is self-contained with its own fallback logic
50
- - Created separate `src/ui/board.ts` for board-specific rendering logic
51
-
52
- ### Implementation Details:
53
-
54
- **File Structure Changes:**
55
- - Created `src/ui/tui.ts` - Core TUI wrapper functions
56
- - Created `src/ui/board.ts` - Board-specific TUI rendering
57
- - Created `src/types/blessed.d.ts` - TypeScript declarations
58
- - Modified `src/cli.ts` - Integrated TUI functions and added --tui flags
59
-
60
- **Command Modifications:**
61
- - **Init Command**:
62
- - Replaced readline prompts with `promptText()` for project/reporter name
63
- - Replaced basic prompt with `multiSelect()` for agent file selection
64
- - Removed dependency on `prompts` package entirely
65
-
66
- - **View Commands** (task/doc/board):
67
- - Added `--tui` option to all view commands
68
- - When flag is present, content is displayed in scrollable blessed box
69
- - Maintains original output format when flag is absent
70
-
71
- **Package Updates:**
72
- - Removed: `prompts` package (no longer needed)
73
- - Added: `blessed@0.1.81` (corrected from typo `bblessed@0.1.1`)
74
- - Updated: `bun.lock` and `package.json` accordingly
75
-
76
- ### Technical Implementation:
77
-
78
- **Blessed Widget Configuration:**
79
- - Text input: Centered form with bordered textbox, handles Enter/Escape keys
80
- - Multi-select: List widget with checkbox-style indicators, Space toggles, Enter confirms
81
- - Scrollable viewer: Full-screen box with vi-style navigation (j/k, arrows), q/Escape to exit
82
- - All widgets support mouse interaction where available
83
-
84
- **Error Handling:**
85
- - Try-catch blocks around dynamic imports prevent crashes
86
- - Fallback mechanisms activate automatically on any failure
87
- - No error messages shown to users - seamless degradation
88
-
89
- ### Testing and Compatibility:
90
- - All 140 tests pass without modification
91
- - Tests run successfully without blessed installed (using fallbacks)
92
- - Verified compatibility with both Node.js and Bun runtimes
93
- - No breaking changes to existing CLI behavior
@@ -1,42 +0,0 @@
1
- ---
2
- id: task-41.1
3
- title: 'CLI: bblessed init wizard'
4
- status: Done
5
- assignee: Claude
6
- created_date: '2025-06-11'
7
- updated_date: '2025-06-11'
8
- labels:
9
- - cli
10
- dependencies: []
11
- parent_task_id: task-41
12
- ---
13
-
14
- ## Description
15
-
16
- Implement interactive project initialization wizard using bblessed components for text input and checkbox selections.
17
-
18
- ## Acceptance Criteria
19
- - [x] Project name and reporter prompts use bblessed forms
20
- - [x] Checkbox agent selection replaced with bblessed checkboxes
21
- - [x] Works on Node and Bun
22
-
23
- ## Implementation Notes
24
-
25
- Successfully implemented the init wizard using blessed forms and multi-select components:
26
-
27
- ### Key Changes:
28
- 1. **Project Name Input**: Replaced readline prompt with `promptText()` function that displays a blessed textbox form
29
- 2. **Reporter Name Input**: Also uses `promptText()` with proper default value handling
30
- 3. **Agent File Selection**: Replaced basic prompt with `multiSelect()` function that renders checkboxes using blessed list widget
31
-
32
- ### Technical Details:
33
- - The `promptText()` function creates a centered form with a text input field
34
- - Supports default values and handles Enter/Escape key bindings
35
- - The `multiSelect()` function displays a scrollable list with checkbox-style selection
36
- - Spacebar toggles selection, Enter confirms, Escape cancels
37
- - Both functions gracefully fall back to simpler interfaces when blessed is unavailable
38
-
39
- ### Integration:
40
- - Modified the init command in `src/cli.ts` to use these new TUI functions
41
- - Removed the dependency on the `prompts` package entirely
42
- - The implementation maintains full backward compatibility through fallback mechanisms
@@ -1,44 +0,0 @@
1
- ---
2
- id: task-41.2
3
- title: 'CLI: bblessed task view'
4
- status: Done
5
- assignee: Claude
6
- created_date: '2025-06-11'
7
- updated_date: '2025-06-11'
8
- labels:
9
- - cli
10
- dependencies: []
11
- parent_task_id: task-41
12
- ---
13
-
14
- ## Description
15
-
16
- Implement task viewing with bblessed for scrolling and highlighting sections.
17
-
18
- ## Acceptance Criteria
19
- - [x] Display task details in scrollable window
20
- - [x] Support navigation between sections
21
- - [x] Works on Node and Bun
22
-
23
- ## Implementation Notes
24
-
25
- Implemented task viewing functionality with blessed's scrollable box widget:
26
-
27
- ### Key Changes:
28
- 1. **Added --tui flag**: Extended the existing `task view` command with an optional `--tui` flag
29
- 2. **Scrollable Display**: Task details are rendered in a full-screen scrollable box with vi-style navigation
30
- 3. **Formatted Content**: Task information is formatted as markdown-style text with proper sections
31
-
32
- ### Technical Details:
33
- - Modified the task view command handler to check for the `--tui` option
34
- - When enabled, formats task data into a structured text representation including:
35
- - Title, ID, Status, Assignee, Reporter, Created Date
36
- - Labels and Parent Task ID (if applicable)
37
- - Full task description
38
- - Uses the `scrollableViewer()` function to display content in a blessed box widget
39
- - Supports keyboard navigation: arrow keys, j/k for scrolling, q/Escape to exit
40
-
41
- ### Integration:
42
- - Maintains backward compatibility - without `--tui` flag, uses the original output format
43
- - Falls back to console.log when blessed is unavailable or not in TTY
44
- - The implementation reuses existing task loading logic from the Core module
@@ -1,45 +0,0 @@
1
- ---
2
- id: task-41.3
3
- title: 'CLI: bblessed doc view'
4
- status: Done
5
- assignee: Claude
6
- created_date: '2025-06-11'
7
- updated_date: '2025-06-11'
8
- labels:
9
- - cli
10
- dependencies: []
11
- parent_task_id: task-41
12
- ---
13
-
14
- ## Description
15
-
16
- Use bblessed to display documentation files with scroll and search.
17
-
18
- ## Acceptance Criteria
19
- - [x] Display docs in scrollable window
20
- - [x] Provide search or navigation keys
21
- - [x] Works on Node and Bun
22
-
23
- ## Implementation Notes
24
-
25
- Implemented document viewing with blessed's scrollable interface:
26
-
27
- ### Key Changes:
28
- 1. **Added --tui flag**: Extended the `doc view` command with an optional `--tui` flag for enhanced viewing
29
- 2. **Scrollable Document Display**: Documents are displayed in a full-screen scrollable window
30
- 3. **Navigation Support**: Implemented vi-style keyboard navigation for comfortable reading
31
-
32
- ### Technical Details:
33
- - Modified the doc view command handler to support the `--tui` option
34
- - When enabled, loads the document content and displays it using `scrollableViewer()`
35
- - The blessed box widget provides:
36
- - Arrow keys and j/k for vertical scrolling
37
- - Mouse wheel support for scrolling
38
- - q/Escape to exit the viewer
39
- - Search functionality is inherently supported through the terminal's native search (e.g., Ctrl+F in most terminals)
40
-
41
- ### Integration:
42
- - Maintains full backward compatibility - without `--tui`, outputs directly to console
43
- - Gracefully degrades to console.log when blessed is unavailable
44
- - Reuses the existing document loading logic from the filesystem module
45
- - The implementation is consistent with the task view TUI approach
@@ -1,49 +0,0 @@
1
- ---
2
- id: task-41.4
3
- title: 'CLI: bblessed board view'
4
- status: Done
5
- assignee: Claude
6
- created_date: '2025-06-11'
7
- updated_date: '2025-06-11'
8
- labels:
9
- - cli
10
- dependencies: []
11
- parent_task_id: task-41
12
- ---
13
-
14
- ## Description
15
-
16
- Render the Kanban board using bblessed widgets with optional vertical layout.
17
-
18
- ## Acceptance Criteria
19
- - [x] Columns and tasks rendered with bblessed layouts
20
- - [x] Support horizontal and vertical modes
21
- - [x] Works on Node and Bun
22
-
23
- ## Implementation Notes
24
-
25
- Implemented Kanban board rendering using blessed's scrollable viewer:
26
-
27
- ### Key Changes:
28
- 1. **Added --tui flag**: Extended the `board view` command with an optional `--tui` flag for interactive viewing
29
- 2. **Created board UI module**: New file `src/ui/board.ts` with `renderBoardTui()` function
30
- 3. **Layout Support**: Maintains support for both horizontal and vertical board layouts
31
-
32
- ### Technical Details:
33
- - Created a dedicated board UI module that wraps the existing ASCII board generation
34
- - The `renderBoardTui()` function:
35
- - Takes tasks, statuses, layout mode, and column width as parameters
36
- - Generates the ASCII board using the existing `generateKanbanBoard()` function
37
- - Displays the result in a blessed scrollable viewer
38
- - This approach maximizes code reuse while adding TUI capabilities
39
- - The scrollable viewer allows users to navigate large boards that exceed terminal dimensions
40
-
41
- ### Design Decision:
42
- - Rather than reimplementing the board layout logic with blessed widgets, we opted to reuse the existing ASCII board generation
43
- - This keeps the implementation simple and consistent while still providing the benefits of scrollable navigation
44
- - The ASCII art approach is actually more portable and renders consistently across different terminals
45
-
46
- ### Integration:
47
- - Modified the board view command handler to check for the `--tui` option
48
- - Supports all existing board options (--vertical, --layout)
49
- - Falls back to direct console output when blessed is unavailable or `--tui` is not specified
@@ -1,55 +0,0 @@
1
- ---
2
- id: task-41.5
3
- title: 'CLI: audit remaining UI for bblessed'
4
- status: Done
5
- assignee: Claude
6
- created_date: '2025-06-11'
7
- updated_date: '2025-06-11'
8
- labels:
9
- - cli
10
- dependencies: []
11
- parent_task_id: task-41
12
- ---
13
-
14
- ## Description
15
-
16
- Review the CLI for other prompts or text UIs and migrate them to bblessed.
17
-
18
- ## Acceptance Criteria
19
- - [x] Identify remaining prompt-based interactions
20
- - [x] Replace them with bblessed equivalents
21
- - [x] Ensure consistent styling across commands
22
-
23
- ## Implementation Notes
24
-
25
- Completed comprehensive audit and migration of all terminal UI elements:
26
-
27
- ### Audit Results:
28
- 1. **Init Command**: Successfully migrated all prompts (project name, reporter, agent files)
29
- 2. **View Commands**: Added `--tui` flags to task, doc, and board view commands
30
- 3. **Other Commands**: No other interactive prompts found in the codebase
31
-
32
- ### Key Findings:
33
- - The CLI was primarily using readline for the init command prompts
34
- - The `prompts` package was only used in the init command
35
- - All other commands use simple console output or command-line arguments
36
- - No additional interactive elements required migration
37
-
38
- ### Consistency Achieved:
39
- 1. **Unified TUI Module**: All blessed interactions go through `src/ui/tui.ts`
40
- 2. **Consistent Fallback**: All functions gracefully degrade when blessed is unavailable
41
- 3. **Standardized Key Bindings**:
42
- - Enter to confirm
43
- - Escape/Ctrl+C to cancel
44
- - Arrow keys/j/k for navigation in scrollable views
45
- - Space for selection in multi-select
46
-
47
- ### Package Changes:
48
- - Removed `prompts` package dependency entirely
49
- - Added `blessed` package as the single TUI dependency
50
- - Created type definitions to handle optional availability
51
-
52
- ### Testing Coverage:
53
- - All existing tests continue to pass
54
- - The fallback mechanisms ensure tests run without blessed installed
55
- - Both Node.js and Bun environments are fully supported
@@ -1,54 +0,0 @@
1
- ---
2
- id: task-42
3
- title: Visual hierarchy
4
- status: Done
5
- assignee: []
6
- created_date: '2025-06-11'
7
- updated_date: '2025-06-11'
8
- labels:
9
- - ui
10
- - enhancement
11
- dependencies: []
12
- ---
13
-
14
- ## Description
15
-
16
- Goal: Distinct, consistent heading styles and spacing.
17
-
18
- Detailed work:
19
- - Create a Heading helper/component that accepts level ∈ {1, 2, 3}
20
- - Level 1 → bold bright-white
21
- - Level 2 → cyan
22
- - Level 3 → dim white
23
- - In the render pipeline, insert one blank line before every heading
24
- - Refactor existing hard-coded headings to use the helper
25
-
26
- ## Acceptance Criteria
27
-
28
- - [x] Unit test confirms correct color/weight per level
29
- - [x] Snapshot shows a blank line before every heading
30
- - [x] No direct screen.program.write calls remain for headings
31
-
32
- ## Implementation Notes
33
-
34
- Successfully implemented a comprehensive heading system for consistent visual hierarchy across the terminal UI:
35
-
36
- ### Key Components Created:
37
- - **Heading Helper** (`src/ui/heading.ts`): Core component with 3 distinct heading levels
38
- - Level 1: Bold bright-white for main titles
39
- - Level 2: Cyan for section headings
40
- - Level 3: Dim white for subsection labels
41
- - **Comprehensive Test Suite** (`src/test/heading.test.ts`): 11 test cases covering all functionality
42
-
43
- ### Refactoring Completed:
44
- - **Task Viewer UI** (`src/ui/task-viewer.ts`): Replaced all hard-coded bold headings with proper heading levels
45
- - **TUI Components** (`src/ui/tui.ts`): Updated group headings to use Level 2 styling
46
- - **Automatic Spacing**: All headings now include blank lines before them for better visual separation
47
-
48
- ### Technical Details:
49
- - Blessed tag formatting with proper color codes and bold styling
50
- - Graceful fallback handling when blessed is unavailable
51
- - Consistent spacing implementation across all UI components
52
- - No direct screen.program.write calls found or used
53
-
54
- All acceptance criteria have been met with comprehensive test coverage and consistent implementation across the codebase.
@@ -1,56 +0,0 @@
1
- ---
2
- id: task-43
3
- title: Remove duplicate Acceptance Criteria and style metadata
4
- status: Done
5
- assignee: []
6
- created_date: '2025-06-11'
7
- updated_date: '2025-06-11'
8
- labels:
9
- - ui
10
- - enhancement
11
- dependencies: []
12
- ---
13
-
14
- ## Description
15
-
16
- Goal: Eliminate redundant section and improve tag row.
17
-
18
- Detailed work:
19
- - Wrap the [cli] [agents] tag line in a one-line box (fg:magenta, border.fg:grey)
20
- - Fix that box at the top so it does not scroll with the body
21
-
22
- ## Acceptance Criteria
23
-
24
- - [x] Redundant heading gone; new heading name present
25
- - [x] Tag box exists, height = 1, fixed position
26
- - [x] Visual snapshot shows magenta tags inside a grey border
27
-
28
- ## Implementation Notes
29
-
30
- Successfully eliminated duplicate "Acceptance Criteria" headings and improved tag styling:
31
-
32
- ### Key Changes Made:
33
- - **Standalone Task Viewer** (`src/ui/task-viewer.ts`):
34
- - Added fixed tag box at top with height=1, magenta text, grey border
35
- - Removed redundant "Acceptance Criteria" heading from content (kept only box label)
36
- - Adjusted layout positions to accommodate new tag box
37
- - Updated all top positions by +1 to make room for tag box
38
-
39
- - **Popup Task Viewer**:
40
- - Updated tag display to use consistent styling with border box
41
- - Magenta text with grey border for labels
42
- - Adjusted content area positioning
43
-
44
- ### Visual Improvements:
45
- - **Tag Box Styling**: `fg: magenta`, `border.fg: gray` as specified
46
- - **Fixed Position**: Tag box doesn't scroll with content, stays at top
47
- - **Clean Layout**: No more duplicate headings, better visual hierarchy
48
- - **Consistent Styling**: Both standalone and popup views use same tag styling
49
-
50
- ### Technical Details:
51
- - Tag box positioned at `top: 3` (after header)
52
- - All content areas adjusted down by 1 line
53
- - Height calculations updated for proper spacing
54
- - Border styling applied correctly with blessed tags
55
-
56
- All acceptance criteria have been met with improved visual organization and consistent styling across both view modes.
@@ -1,24 +0,0 @@
1
- ---
2
- id: task-44
3
- title: Checklist alignment
4
- status: Done
5
- assignee: []
6
- created_date: '2025-06-11'
7
- updated_date: '2025-06-13'
8
- labels:
9
- - ui
10
- - enhancement
11
- dependencies: []
12
- ---
13
-
14
- ## Description
15
-
16
- Goal: Make checkbox lists flush-left and tidy.
17
-
18
- Detailed work:
19
- - During markdown-to-UI transform, replace "- [x] " / "- [ ] " with " [x] " / " [ ] " (or another padding scheme you prefer)
20
-
21
- ## Acceptance Criteria
22
-
23
- - [x] All checklist lines start at the same column (snapshot diff)
24
- - [x] Regex unit test passes for both checked and unchecked cases
@@ -1,23 +0,0 @@
1
- ---
2
- id: task-45
3
- title: Safe line-wrapping
4
- status: Done
5
- assignee: []
6
- created_date: '2025-06-11'
7
- updated_date: '2025-06-13'
8
- labels:
9
- - enhancement
10
- dependencies: []
11
- ---
12
-
13
- ## Description
14
-
15
- Goal: Prevent mid-word breaks and over-wide lines.
16
-
17
- Detailed work:
18
- - Set wrap:true and width:\100%\ on every prose box.
19
- - Introduce a global config wrapLimit = 72.
20
-
21
- ## Acceptance Criteria
22
- - [x] Automated test shows no rendered line exceeds 72 chars.
23
- - [x] Manual resize to 60 cols shows clean wrapping, no split words.
@@ -1,24 +0,0 @@
1
- ---
2
- id: task-46
3
- title: Split-pane layout
4
- status: Done
5
- assignee: []
6
- created_date: '2025-06-11'
7
- updated_date: '2025-06-13'
8
- labels:
9
- - enhancement
10
- dependencies: []
11
- ---
12
-
13
- ## Description
14
-
15
- Goal: List on the left, detail on the right.
16
-
17
- Detailed work:
18
- - Add a parent grid layout, 30% width left / 70% right.
19
- - Left pane lists tasks; right pane shows currently selected task detail.
20
- - Arrow keys change list selection and refresh detail pane.
21
-
22
- ## Acceptance Criteria
23
- - [x] Down-arrow changes highlight and updates detail.
24
- - [x] Resizing keeps the 30/70 ratio within ±2 columns.
@@ -1,43 +0,0 @@
1
- ---
2
- id: task-47
3
- title: Sticky header in detail view
4
- status: Done
5
- assignee: []
6
- created_date: '2025-06-11'
7
- updated_date: '2025-06-13'
8
- labels:
9
- - enhancement
10
- dependencies: []
11
- ---
12
-
13
- ## Description
14
-
15
- Goal: Keep task header visible while scrolling body.
16
-
17
- Detailed work:
18
- - Extract header (id, status, date, tags) into its own box, top:0, height:3, scrollable:false; let body scroll beneath.
19
-
20
- ## Acceptance Criteria
21
- - [x] Scrolling the body never moves the header (pixel diff or DOM test).
22
-
23
- ## Implementation Notes
24
-
25
- Successfully implemented a sticky header in the task detail view by restructuring the UI layout:
26
-
27
- ### Key Changes Made:
28
- - **Fixed Header**: Created a non-scrollable header box at top:0, height:3 containing task ID, title, status, creation date, assignee, and labels
29
- - **Scrollable Body**: Replaced separate metadata, description, and acceptance criteria boxes with a single scrollable container positioned below the header (top:3)
30
- - **Unified Content**: Combined all task details into a single scrollable body that flows seamlessly while keeping the most important metadata always visible
31
-
32
- ### Technical Implementation:
33
- - Modified `refreshDetailPane()` function in `/Users/agavr/projects/Backlog.md/src/ui/task-viewer.ts`
34
- - Header box has `scrollable: false` ensuring it never moves
35
- - Body container starts at `top: 3` and fills remaining space with `height: "100%-4"`
36
- - Updated focus management to handle the new two-pane structure (task list + body)
37
- - Maintained all existing functionality while improving the user experience
38
-
39
- ### Benefits:
40
- - Users can always see task identity (ID, title, status) while reading long descriptions
41
- - Important metadata (assignee, labels, dates) remains visible during scrolling
42
- - Improved navigation and reference capability when working with detailed task content
43
- - Cleaner, more focused UI that reduces cognitive load
@@ -1,21 +0,0 @@
1
- ---
2
- id: task-48
3
- title: Footer hint line
4
- status: Done
5
- assignee: []
6
- created_date: '2025-06-11'
7
- updated_date: '2025-06-13'
8
- labels:
9
- - enhancement
10
- dependencies: []
11
- ---
12
-
13
- ## Description
14
-
15
- Goal: Permanent key-help line.
16
-
17
- Detailed work:
18
- - Add single-line box, bottom:0, fg:grey, text: ↑/↓ scroll · q quit · space toggle checkbox (adjust to actual bindings).
19
-
20
- ## Acceptance Criteria
21
- - [x] Footer always visible; listed shortcuts all work.
@@ -1,53 +0,0 @@
1
- ---
2
- id: task-49
3
- title: Status styling
4
- status: Done
5
- assignee:
6
- - Claude
7
- created_date: '2025-06-11'
8
- updated_date: '2025-06-13'
9
- labels:
10
- - enhancement
11
- dependencies: []
12
- ---
13
-
14
- ## Description
15
-
16
- Goal: Clear, colored status icons.
17
-
18
- Detailed work:
19
- Build a (icon,color) lookup:
20
- - Done → ✔, green
21
- - In Progress → ◒, yellow
22
- - Blocked → ●, red
23
- - Replace the current green dot logic with this component.
24
-
25
- ## Acceptance Criteria
26
- - [x] Unit test verifies mapping table.
27
- - [x] Snapshot shows correct icon + color for each mocked state.
28
-
29
- ## Implementation Notes
30
-
31
- Created a new status icon component (`src/ui/status-icon.ts`) that provides:
32
- - `getStatusStyle()` - Returns both icon and color for a given status
33
- - `getStatusColor()` - Returns just the color (for backward compatibility)
34
- - `getStatusIcon()` - Returns just the icon
35
- - `formatStatusWithIcon()` - Returns formatted string with icon and status text
36
-
37
- The component implements the following mappings:
38
- - Done → ✔ (green)
39
- - In Progress → ◒ (yellow)
40
- - Blocked → ● (red)
41
- - To Do → ○ (white) - Added for completeness
42
- - Review → ◆ (blue)
43
- - Testing → ▣ (cyan)
44
- - Unknown statuses → ○ (white) as default
45
-
46
- Key changes made:
47
- 1. Created `src/ui/status-icon.ts` with the status icon/color lookup component
48
- 2. Updated `src/ui/task-viewer.ts` to use the new component for status display
49
- 3. Updated `src/ui/board.ts` to show status icons in column headers
50
- 4. Removed the old `getStatusColor` function from task-viewer.ts
51
- 5. Created comprehensive unit tests in `src/test/status-icon.test.ts`
52
-
53
- The status icons are now consistently used across all UI components, providing clear visual indicators for task status.