project-logbook 1.2.0 → 1.4.0

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 (226) hide show
  1. package/README.md +2 -0
  2. package/dist/commands/answer.d.ts +1 -0
  3. package/dist/commands/answer.js +41 -0
  4. package/dist/commands/answer.js.map +1 -0
  5. package/dist/commands/answers.d.ts +6 -0
  6. package/dist/commands/answers.js +37 -0
  7. package/dist/commands/answers.js.map +1 -0
  8. package/dist/commands/ask.d.ts +1 -0
  9. package/dist/commands/ask.js +30 -0
  10. package/dist/commands/ask.js.map +1 -0
  11. package/dist/commands/build.js +25 -6
  12. package/dist/commands/build.js.map +1 -1
  13. package/dist/commands/deprecate-qna.d.ts +1 -0
  14. package/dist/commands/deprecate-qna.js +33 -0
  15. package/dist/commands/deprecate-qna.js.map +1 -0
  16. package/dist/commands/log.js +2 -0
  17. package/dist/commands/log.js.map +1 -1
  18. package/dist/commands/new-helpers.d.ts +0 -1
  19. package/dist/commands/new-helpers.js +6 -3
  20. package/dist/commands/new-helpers.js.map +1 -1
  21. package/dist/commands/release.js +2 -0
  22. package/dist/commands/release.js.map +1 -1
  23. package/dist/commands/start.js +90 -21
  24. package/dist/commands/start.js.map +1 -1
  25. package/dist/commands/status.js +6 -0
  26. package/dist/commands/status.js.map +1 -1
  27. package/dist/commands/unanswered.d.ts +1 -0
  28. package/dist/commands/unanswered.js +25 -0
  29. package/dist/commands/unanswered.js.map +1 -0
  30. package/dist/commands/watch.d.ts +15 -0
  31. package/dist/commands/watch.js +153 -0
  32. package/dist/commands/watch.js.map +1 -0
  33. package/dist/index.js +44 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/lib/autolink.d.ts +5 -0
  36. package/dist/lib/autolink.js +36 -2
  37. package/dist/lib/autolink.js.map +1 -1
  38. package/dist/lib/build-helpers.d.ts +10 -1
  39. package/dist/lib/build-helpers.js +27 -4
  40. package/dist/lib/build-helpers.js.map +1 -1
  41. package/dist/lib/build-steps.js +2 -1
  42. package/dist/lib/build-steps.js.map +1 -1
  43. package/dist/lib/config.d.ts +16 -0
  44. package/dist/lib/config.js +17 -0
  45. package/dist/lib/config.js.map +1 -1
  46. package/dist/lib/custom-card-renderer.js +2 -1
  47. package/dist/lib/custom-card-renderer.js.map +1 -1
  48. package/dist/lib/entry-href.d.ts +7 -0
  49. package/dist/lib/entry-href.js +8 -0
  50. package/dist/lib/entry-href.js.map +1 -0
  51. package/dist/lib/markdown-processors.d.ts +2 -1
  52. package/dist/lib/post-template.js +3 -3
  53. package/dist/lib/post-template.js.map +1 -1
  54. package/dist/lib/template-helpers.d.ts +2 -1
  55. package/dist/lib/template-helpers.js +32 -2
  56. package/dist/lib/template-helpers.js.map +1 -1
  57. package/dist/lib/template-types.d.ts +14 -0
  58. package/dist/lib/templates.js +14 -4
  59. package/dist/lib/templates.js.map +1 -1
  60. package/dist/linters/index.js +2 -0
  61. package/dist/linters/index.js.map +1 -1
  62. package/dist/linters/jira-prefix.js +32 -16
  63. package/dist/linters/jira-prefix.js.map +1 -1
  64. package/dist/linters/qna.d.ts +3 -0
  65. package/dist/linters/qna.js +120 -0
  66. package/dist/linters/qna.js.map +1 -0
  67. package/dist/templates/about-watch.md +29 -0
  68. package/dist/templates/hub.css +677 -0
  69. package/dist/templates/hub.js +743 -0
  70. package/dist/templates/qna.md +11 -0
  71. package/dist/templates/steer.txt +2 -0
  72. package/dist/templates/styles.css +53 -0
  73. package/dist/utils/id.d.ts +1 -1
  74. package/dist/utils/id.js +4 -1
  75. package/dist/utils/id.js.map +1 -1
  76. package/dist/utils/qna.d.ts +46 -0
  77. package/dist/utils/qna.js +157 -0
  78. package/dist/utils/qna.js.map +1 -0
  79. package/dist/watch/__tests__/git-utils.test.d.ts +1 -0
  80. package/dist/watch/__tests__/git-utils.test.js +17 -0
  81. package/dist/watch/__tests__/git-utils.test.js.map +1 -0
  82. package/dist/watch/collector.d.ts +14 -0
  83. package/dist/watch/collector.js +33 -0
  84. package/dist/watch/collector.js.map +1 -0
  85. package/dist/watch/collectors/acli.d.ts +15 -0
  86. package/dist/watch/collectors/acli.js +197 -0
  87. package/dist/watch/collectors/acli.js.map +1 -0
  88. package/dist/watch/collectors/entries.d.ts +9 -0
  89. package/dist/watch/collectors/entries.js +90 -0
  90. package/dist/watch/collectors/entries.js.map +1 -0
  91. package/dist/watch/collectors/git.d.ts +12 -0
  92. package/dist/watch/collectors/git.js +58 -0
  93. package/dist/watch/collectors/git.js.map +1 -0
  94. package/dist/watch/collectors/glab.d.ts +10 -0
  95. package/dist/watch/collectors/glab.js +273 -0
  96. package/dist/watch/collectors/glab.js.map +1 -0
  97. package/dist/watch/collectors/index.d.ts +10 -0
  98. package/dist/watch/collectors/index.js +21 -0
  99. package/dist/watch/collectors/index.js.map +1 -0
  100. package/dist/watch/collectors/jira.d.ts +3 -0
  101. package/dist/watch/collectors/jira.js +111 -0
  102. package/dist/watch/collectors/jira.js.map +1 -0
  103. package/dist/watch/collectors/type-guards.d.ts +17 -0
  104. package/dist/watch/collectors/type-guards.js +35 -0
  105. package/dist/watch/collectors/type-guards.js.map +1 -0
  106. package/dist/watch/collectors/types.d.ts +37 -0
  107. package/dist/watch/collectors/types.js +9 -0
  108. package/dist/watch/collectors/types.js.map +1 -0
  109. package/dist/watch/dashboard-html.d.ts +11 -0
  110. package/dist/watch/dashboard-html.js +81 -0
  111. package/dist/watch/dashboard-html.js.map +1 -0
  112. package/dist/watch/dashboard-script.d.ts +12 -0
  113. package/dist/watch/dashboard-script.js +20 -0
  114. package/dist/watch/dashboard-script.js.map +1 -0
  115. package/dist/watch/dashboard-styles.d.ts +12 -0
  116. package/dist/watch/dashboard-styles.js +20 -0
  117. package/dist/watch/dashboard-styles.js.map +1 -0
  118. package/dist/watch/dashboard.d.ts +12 -0
  119. package/dist/watch/dashboard.js +50 -0
  120. package/dist/watch/dashboard.js.map +1 -0
  121. package/dist/watch/git-utils.d.ts +36 -0
  122. package/dist/watch/git-utils.js +117 -0
  123. package/dist/watch/git-utils.js.map +1 -0
  124. package/dist/watch/hub-state.d.ts +39 -0
  125. package/dist/watch/hub-state.js +57 -0
  126. package/dist/watch/hub-state.js.map +1 -0
  127. package/dist/watch/hub.d.ts +2 -0
  128. package/dist/watch/hub.js +252 -0
  129. package/dist/watch/hub.js.map +1 -0
  130. package/dist/watch/log-utils.d.ts +13 -0
  131. package/dist/watch/log-utils.js +24 -0
  132. package/dist/watch/log-utils.js.map +1 -0
  133. package/dist/watch/notify.d.ts +18 -0
  134. package/dist/watch/notify.js +45 -0
  135. package/dist/watch/notify.js.map +1 -0
  136. package/dist/watch/state.d.ts +38 -0
  137. package/dist/watch/state.js +36 -0
  138. package/dist/watch/state.js.map +1 -0
  139. package/dist/watch/strategies/behind-default.d.ts +5 -0
  140. package/dist/watch/strategies/behind-default.js +21 -0
  141. package/dist/watch/strategies/behind-default.js.map +1 -0
  142. package/dist/watch/strategies/idle.d.ts +5 -0
  143. package/dist/watch/strategies/idle.js +21 -0
  144. package/dist/watch/strategies/idle.js.map +1 -0
  145. package/dist/watch/strategies/in-progress.d.ts +5 -0
  146. package/dist/watch/strategies/in-progress.js +21 -0
  147. package/dist/watch/strategies/in-progress.js.map +1 -0
  148. package/dist/watch/strategies/index.d.ts +34 -0
  149. package/dist/watch/strategies/index.js +148 -0
  150. package/dist/watch/strategies/index.js.map +1 -0
  151. package/dist/watch/strategies/jira-not-in-review.d.ts +2 -0
  152. package/dist/watch/strategies/jira-not-in-review.js +29 -0
  153. package/dist/watch/strategies/jira-not-in-review.js.map +1 -0
  154. package/dist/watch/strategies/jira-still-open.d.ts +2 -0
  155. package/dist/watch/strategies/jira-still-open.js +31 -0
  156. package/dist/watch/strategies/jira-still-open.js.map +1 -0
  157. package/dist/watch/strategies/mr-approval-optional.d.ts +5 -0
  158. package/dist/watch/strategies/mr-approval-optional.js +21 -0
  159. package/dist/watch/strategies/mr-approval-optional.js.map +1 -0
  160. package/dist/watch/strategies/mr-approved.d.ts +5 -0
  161. package/dist/watch/strategies/mr-approved.js +21 -0
  162. package/dist/watch/strategies/mr-approved.js.map +1 -0
  163. package/dist/watch/strategies/mr-conflicts.d.ts +5 -0
  164. package/dist/watch/strategies/mr-conflicts.js +21 -0
  165. package/dist/watch/strategies/mr-conflicts.js.map +1 -0
  166. package/dist/watch/strategies/mr-draft.d.ts +5 -0
  167. package/dist/watch/strategies/mr-draft.js +21 -0
  168. package/dist/watch/strategies/mr-draft.js.map +1 -0
  169. package/dist/watch/strategies/mr-open-comments.d.ts +5 -0
  170. package/dist/watch/strategies/mr-open-comments.js +21 -0
  171. package/dist/watch/strategies/mr-open-comments.js.map +1 -0
  172. package/dist/watch/strategies/narrative-missing.d.ts +5 -0
  173. package/dist/watch/strategies/narrative-missing.js +21 -0
  174. package/dist/watch/strategies/narrative-missing.js.map +1 -0
  175. package/dist/watch/strategies/no-mr.d.ts +5 -0
  176. package/dist/watch/strategies/no-mr.js +21 -0
  177. package/dist/watch/strategies/no-mr.js.map +1 -0
  178. package/dist/watch/strategies/pipeline-failed.d.ts +5 -0
  179. package/dist/watch/strategies/pipeline-failed.js +21 -0
  180. package/dist/watch/strategies/pipeline-failed.js.map +1 -0
  181. package/dist/watch/strategies/pipeline-running.d.ts +5 -0
  182. package/dist/watch/strategies/pipeline-running.js +21 -0
  183. package/dist/watch/strategies/pipeline-running.js.map +1 -0
  184. package/dist/watch/strategies/ready-for-release.d.ts +7 -0
  185. package/dist/watch/strategies/ready-for-release.js +35 -0
  186. package/dist/watch/strategies/ready-for-release.js.map +1 -0
  187. package/dist/watch/strategies/ready-to-commit.d.ts +5 -0
  188. package/dist/watch/strategies/ready-to-commit.js +21 -0
  189. package/dist/watch/strategies/ready-to-commit.js.map +1 -0
  190. package/dist/watch/strategies/ready-to-push.d.ts +5 -0
  191. package/dist/watch/strategies/ready-to-push.js +21 -0
  192. package/dist/watch/strategies/ready-to-push.js.map +1 -0
  193. package/dist/watch/strategies/released.d.ts +6 -0
  194. package/dist/watch/strategies/released.js +21 -0
  195. package/dist/watch/strategies/released.js.map +1 -0
  196. package/dist/watch/strategies/squash-merged.d.ts +6 -0
  197. package/dist/watch/strategies/squash-merged.js +21 -0
  198. package/dist/watch/strategies/squash-merged.js.map +1 -0
  199. package/dist/watch/strategies/types.d.ts +31 -0
  200. package/dist/watch/strategies/types.js +12 -0
  201. package/dist/watch/strategies/types.js.map +1 -0
  202. package/dist/watch/strategies/unstaged-changes.d.ts +5 -0
  203. package/dist/watch/strategies/unstaged-changes.js +21 -0
  204. package/dist/watch/strategies/unstaged-changes.js.map +1 -0
  205. package/dist/watch/strategies/wrong-branch.d.ts +6 -0
  206. package/dist/watch/strategies/wrong-branch.js +26 -0
  207. package/dist/watch/strategies/wrong-branch.js.map +1 -0
  208. package/dist/watch/types.d.ts +211 -0
  209. package/dist/watch/types.js +25 -0
  210. package/dist/watch/types.js.map +1 -0
  211. package/dist/watch/watcher-fs.d.ts +39 -0
  212. package/dist/watch/watcher-fs.js +105 -0
  213. package/dist/watch/watcher-fs.js.map +1 -0
  214. package/dist/watch/watcher-http.d.ts +19 -0
  215. package/dist/watch/watcher-http.js +47 -0
  216. package/dist/watch/watcher-http.js.map +1 -0
  217. package/dist/watch/watcher.d.ts +4 -0
  218. package/dist/watch/watcher.js +185 -0
  219. package/dist/watch/watcher.js.map +1 -0
  220. package/package.json +8 -2
  221. package/src/templates/about-watch.md +29 -0
  222. package/src/templates/hub.css +677 -0
  223. package/src/templates/hub.js +743 -0
  224. package/src/templates/qna.md +11 -0
  225. package/src/templates/steer.txt +2 -0
  226. package/src/templates/styles.css +53 -0
package/README.md CHANGED
@@ -54,6 +54,8 @@ Running `logbook init` creates a `.project-logbook` configuration file in your p
54
54
  | `primaryColor` | `string` | `"#2563eb"` | The theme's accent color (CSS variable `--primary`). Must be a hex code. |
55
55
  | `jiraBaseUrl` | `string` | `undefined` | Optional base URL of your Jira workspace (e.g. `https://myorg.atlassian.net/browse/`). Enables clickable Jira link buttons. |
56
56
  | `jiraPrefix` | `string` | `undefined` | Optional Jira project prefix (e.g. `PROJ`) used to validate IDs and auto-link issues. |
57
+ | `maxCommits` | `number` | `100` | Maximum number of recent git commits fetched and displayed on the timeline. |
58
+ | `maxTags` | `number` | `10` | Maximum number of git tags fetched and displayed on the timeline. |
57
59
  | `repositoryUrl` | `string` | *Auto-detected* | Optional base web URL of your Git repository (e.g. `https://github.com/org/repo`). Automatically falls back to parsing your git remote URL if not specified. |
58
60
  | `tags` | `object` | See below | Optional configuration for categorization tags. |
59
61
 
@@ -0,0 +1 @@
1
+ export declare function answer(idInput: string, answerInput: string | string[]): Promise<void>;
@@ -0,0 +1,41 @@
1
+ import fs from 'fs-extra';
2
+ import { join, relative } from 'node:path';
3
+ import { getConfig } from '../lib/config.js';
4
+ import { errorMessage, successMessage } from '../lib/theme.js';
5
+ import { formatQnaMarkdown, resolveQnaEntry } from '../utils/qna.js';
6
+ export async function answer(idInput, answerInput) {
7
+ const answerText = (Array.isArray(answerInput) ? answerInput.join(' ') : answerInput).trim();
8
+ if (!answerText) {
9
+ console.error(errorMessage('Error', 'Answer cannot be empty.'));
10
+ process.exit(1);
11
+ }
12
+ const config = getConfig();
13
+ const relQnaDir = config.qnaDir || 'docs/qna';
14
+ const qnaDir = join(process.cwd(), relQnaDir);
15
+ const res = await resolveQnaEntry(qnaDir, idInput);
16
+ if ('error' in res) {
17
+ console.error(errorMessage('Error', res.error));
18
+ process.exit(1);
19
+ }
20
+ const { id: numId, item, filepath } = res;
21
+ if (item.status === 'answered') {
22
+ console.error(errorMessage('Error', `Question #${numId} is already answered.`));
23
+ process.exit(1);
24
+ }
25
+ if (item.status === 'deprecated') {
26
+ console.error(errorMessage('Error', `Question #${numId} is deprecated and cannot be answered.`));
27
+ process.exit(1);
28
+ }
29
+ const dateAnswered = new Date().toISOString().split('T')[0];
30
+ const markdown = formatQnaMarkdown({
31
+ id: item.id,
32
+ status: 'answered',
33
+ dateAsked: item.dateAsked,
34
+ dateAnswered,
35
+ question: item.question,
36
+ answer: answerText,
37
+ });
38
+ await fs.writeFile(filepath, markdown, 'utf8');
39
+ console.log(successMessage('Answered', `Question #${numId} in ${relative(process.cwd(), filepath)}`));
40
+ }
41
+ //# sourceMappingURL=answer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer.js","sourceRoot":"","sources":["../../src/commands/answer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAErE,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAe,EAAE,WAA8B;IAC1E,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7F,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IAE9C,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,KAAK,uBAAuB,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,KAAK,wCAAwC,CAAC,CAAC,CAAC;QACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,iBAAiB,CAAC;QACjC,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,YAAY;QACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,UAAU;KACnB,CAAC,CAAC;IAEH,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,EAAE,aAAa,KAAK,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AACxG,CAAC"}
@@ -0,0 +1,6 @@
1
+ interface AnswersOptions {
2
+ limit?: string | number;
3
+ offset?: string | number;
4
+ }
5
+ export declare function answers(options?: AnswersOptions): Promise<void>;
6
+ export {};
@@ -0,0 +1,37 @@
1
+ import { join, relative } from 'node:path';
2
+ import { getConfig } from '../lib/config.js';
3
+ import { bold, highlight, neutral } from '../lib/theme.js';
4
+ import { getAllQna, sortQnaItems } from '../utils/qna.js';
5
+ export async function answers(options = {}) {
6
+ const config = getConfig();
7
+ const relQnaDir = config.qnaDir || 'docs/qna';
8
+ const qnaDir = join(process.cwd(), relQnaDir);
9
+ const allItems = await getAllQna(qnaDir);
10
+ const answeredItems = sortQnaItems(allItems.filter((q) => q.status === 'answered'));
11
+ const total = answeredItems.length;
12
+ const limit = Math.max(1, parseInt(String(options.limit ?? 20), 10) || 20);
13
+ const offset = Math.max(0, parseInt(String(options.offset ?? 0), 10) || 0);
14
+ console.log(bold(`Total answered questions: ${total} (limit: ${limit}, offset: ${offset})`));
15
+ if (total === 0) {
16
+ console.log(neutral('No answered questions found.'));
17
+ return;
18
+ }
19
+ const page = answeredItems.slice(offset, offset + limit);
20
+ if (page.length === 0) {
21
+ console.log(neutral('No records in the requested page offset.'));
22
+ return;
23
+ }
24
+ console.log('');
25
+ for (const item of page) {
26
+ const relFile = relative(process.cwd(), item.filepath);
27
+ const answerSnippet = item.answer.length > 500 ? `${item.answer.substring(0, 500)}... [truncated]` : item.answer;
28
+ console.log(`${highlight(`[#${item.id}]`)} ${relFile}`);
29
+ console.log(neutral(`Asked: ${item.dateAsked} | Answered: ${item.dateAnswered || 'N/A'}`));
30
+ console.log(bold('Question:'));
31
+ console.log(item.question);
32
+ console.log(bold('Answer:'));
33
+ console.log(answerSnippet);
34
+ console.log(neutral('─'.repeat(60)));
35
+ }
36
+ }
37
+ //# sourceMappingURL=answers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answers.js","sourceRoot":"","sources":["../../src/commands/answers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function ask(questionInput: string | string[]): Promise<void>;
@@ -0,0 +1,30 @@
1
+ import fs from 'fs-extra';
2
+ import { join } from 'node:path';
3
+ import { getConfig } from '../lib/config.js';
4
+ import { errorMessage, successMessage } from '../lib/theme.js';
5
+ import { formatQnaMarkdown, getNextQnaId, slugifyQuestion } from '../utils/qna.js';
6
+ export async function ask(questionInput) {
7
+ const question = (Array.isArray(questionInput) ? questionInput.join(' ') : questionInput).trim();
8
+ if (!question) {
9
+ console.error(errorMessage('Error', 'Question cannot be empty.'));
10
+ process.exit(1);
11
+ }
12
+ const config = getConfig();
13
+ const relQnaDir = config.qnaDir || 'docs/qna';
14
+ const qnaDir = join(process.cwd(), relQnaDir);
15
+ await fs.mkdirp(qnaDir);
16
+ const nextId = await getNextQnaId(qnaDir);
17
+ const slug = slugifyQuestion(question, 40);
18
+ const filename = `${String(nextId).padStart(5, '0')}-${slug}.md`;
19
+ const filePath = join(qnaDir, filename);
20
+ const dateAsked = new Date().toISOString().split('T')[0];
21
+ const markdown = formatQnaMarkdown({
22
+ id: nextId,
23
+ status: 'asked',
24
+ dateAsked,
25
+ question,
26
+ });
27
+ await fs.writeFile(filePath, markdown, 'utf8');
28
+ console.log(successMessage('Created', `QnA question #${nextId} at ${relQnaDir}/${filename}`));
29
+ }
30
+ //# sourceMappingURL=ask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/commands/ask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEnF,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,aAAgC;IACxD,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IACjG,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAExB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAExC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,iBAAiB,CAAC;QACjC,EAAE,EAAE,MAAM;QACV,MAAM,EAAE,OAAO;QACf,SAAS;QACT,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE,iBAAiB,MAAM,OAAO,SAAS,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;AAChG,CAAC"}
@@ -1,10 +1,10 @@
1
1
  import fs from 'fs-extra';
2
2
  import { join } from 'node:path';
3
3
  import { error, neutral, success } from '../lib/theme.js';
4
- import { getConfig, getWorkspaces, getLogbookDirPath, getOutputDirPath, getAdrDirPath, getResearchDirPath, } from '../lib/config.js';
4
+ import { getConfig, getWorkspaces, getLogbookDirPath, getOutputDirPath, getAdrDirPath, getResearchDirPath, getQnaDirPath, } from '../lib/config.js';
5
5
  import { getActiveEntry } from '../lib/session.js';
6
6
  import { layout, timelineTemplate } from '../lib/templates.js';
7
- import { registerResearchEntries } from '../lib/autolink.js';
7
+ import { registerResearchEntries, registerGitlabConfig } from '../lib/autolink.js';
8
8
  import { loadCustomTypesData } from '../lib/custom-types-builder.js';
9
9
  import { buildProjectMdFiles, renderPost, generateBuildMeta, mdToHtml } from '../lib/build-helpers.js';
10
10
  import { getGitCommits, getGitTags } from '../lib/git-helpers.js';
@@ -12,12 +12,14 @@ import { setupOutputDirectory, processReadme, copyReadmeImages, processAboutCont
12
12
  import { renderAdr } from '../lib/adr-renderer.js';
13
13
  import { formatAbsoluteDate, getMonthYear, getSortTime, formatDateTimeForDisplay } from '../utils/date.js';
14
14
  import { getLogbookEntries, getAdrEntries } from '../utils/fs.js';
15
+ import { getAllQna, sortQnaItems } from '../utils/qna.js';
15
16
  import { getAboutContent } from '../lib/about-content.js';
16
17
  import { getPackageVersion } from '../lib/package-version.js';
17
18
  import { groupTimelineItems } from '../utils/timeline-helpers.js';
18
19
  const version = getPackageVersion();
19
20
  export async function build() {
20
21
  const config = getConfig();
22
+ registerGitlabConfig({ baseUrl: config.gitlabBaseUrl });
21
23
  const logbookDir = getLogbookDirPath(config);
22
24
  const outputDir = getOutputDirPath(config);
23
25
  const buildTime = formatDateTimeForDisplay(new Date());
@@ -36,15 +38,31 @@ export async function build() {
36
38
  const availableWorkspaces = getWorkspaces();
37
39
  const timelineEntries = await processTimelineEntries(logbookEntries, activeEntry, availableWorkspaces);
38
40
  // Fetch global git commits, tags, and ADRs concurrently.
41
+ const maxCommits = config.maxCommits ?? 100;
42
+ const maxTags = config.maxTags ?? 10;
39
43
  const adrDir = getAdrDirPath(config);
40
44
  const relativeAdrDir = config.adrDir || 'docs/adr';
41
45
  const researchDir = getResearchDirPath(config);
42
- const [globalCommits, rawTags, adrItems, researchEntriesRaw] = await Promise.all([
43
- getGitCommits(process.cwd()),
46
+ const qnaDir = getQnaDirPath(config);
47
+ const [globalCommits, rawTags, adrItems, researchEntriesRaw, rawQnaItems] = await Promise.all([
48
+ getGitCommits(process.cwd(), maxCommits),
44
49
  getGitTags(),
45
50
  adrDir ? getAdrEntries(adrDir, relativeAdrDir) : Promise.resolve([]),
46
51
  researchDir && (await fs.pathExists(researchDir)) ? getLogbookEntries(researchDir) : Promise.resolve([]),
52
+ qnaDir && (await fs.pathExists(qnaDir)) ? getAllQna(qnaDir) : Promise.resolve([]),
47
53
  ]);
54
+ const activeQnaItems = sortQnaItems(rawQnaItems.filter((q) => q.status !== 'deprecated'));
55
+ const qnaItems = await Promise.all(activeQnaItems.map(async (item) => ({
56
+ id: item.id,
57
+ status: item.status,
58
+ dateAsked: item.dateAsked,
59
+ dateAnswered: item.dateAnswered,
60
+ dateDeprecated: item.dateDeprecated,
61
+ question: item.question,
62
+ answer: item.answer,
63
+ questionHtml: await mdToHtml(item.question),
64
+ answerHtml: item.answer ? await mdToHtml(item.answer) : undefined,
65
+ })));
48
66
  const researchEntries = (await processTimelineEntries(researchEntriesRaw, activeEntry, availableWorkspaces)).map((entry) => {
49
67
  const raw = researchEntriesRaw.find((r) => r.slug === entry.slug);
50
68
  const status = String(raw?.data?.status || 'active');
@@ -73,7 +91,7 @@ export async function build() {
73
91
  monthGroup: getMonthYear(c.timestamp),
74
92
  sortTime: getSortTime(c.timestamp),
75
93
  }));
76
- const tagItems = rawTags.map((t) => ({
94
+ const tagItems = rawTags.slice(0, maxTags).map((t) => ({
77
95
  kind: 'tag',
78
96
  name: t.name,
79
97
  timestamp: t.timestamp,
@@ -81,7 +99,7 @@ export async function build() {
81
99
  monthGroup: getMonthYear(t.timestamp),
82
100
  sortTime: getSortTime(t.timestamp),
83
101
  }));
84
- console.log(neutral(`Found ${timelineEntries.length} entr${timelineEntries.length === 1 ? 'y' : 'ies'}, ${commitItems.length} commit${commitItems.length === 1 ? '' : 's'} (max 100), ${tagItems.length} tag${tagItems.length === 1 ? '' : 's'}, ${adrItems.length} ADR${adrItems.length === 1 ? '' : 's'}, and ${researchEntries.length} Research task${researchEntries.length === 1 ? '' : 's'}.`));
102
+ console.log(neutral(`Found ${timelineEntries.length} entr${timelineEntries.length === 1 ? 'y' : 'ies'}, ${commitItems.length} commit${commitItems.length === 1 ? '' : 's'}, ${tagItems.length} tag${tagItems.length === 1 ? '' : 's'}, ${adrItems.length} ADR${adrItems.length === 1 ? '' : 's'}, and ${researchEntries.length} Research task${researchEntries.length === 1 ? '' : 's'}.`));
85
103
  timelineEntries.sort((a, b) => new Date(b.dateEnd || b.dateStart).getTime() - new Date(a.dateEnd || a.dateStart).getTime());
86
104
  const customRenderPromises = [];
87
105
  if (config.customTypes) {
@@ -137,6 +155,7 @@ export async function build() {
137
155
  researchEntries,
138
156
  adrItems,
139
157
  customTabs,
158
+ qnaItems,
140
159
  });
141
160
  const buildMeta = generateBuildMeta(version, buildTime);
142
161
  const prevPageUrl = currentPage > 1 ? (currentPage === 2 ? './index.html' : `./index-${currentPage - 1}.html`) : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function deprecateQna(idInput: string): Promise<void>;
@@ -0,0 +1,33 @@
1
+ import fs from 'fs-extra';
2
+ import { join, relative } from 'node:path';
3
+ import { getConfig } from '../lib/config.js';
4
+ import { errorMessage, successMessage, warningMessage } from '../lib/theme.js';
5
+ import { formatQnaMarkdown, resolveQnaEntry } from '../utils/qna.js';
6
+ export async function deprecateQna(idInput) {
7
+ const config = getConfig();
8
+ const relQnaDir = config.qnaDir || 'docs/qna';
9
+ const qnaDir = join(process.cwd(), relQnaDir);
10
+ const res = await resolveQnaEntry(qnaDir, idInput);
11
+ if ('error' in res) {
12
+ console.error(errorMessage('Error', res.error));
13
+ process.exit(1);
14
+ }
15
+ const { id: numId, item, filepath } = res;
16
+ if (item.status === 'deprecated') {
17
+ console.log(warningMessage('Warning', `Question #${numId} is already deprecated.`));
18
+ return;
19
+ }
20
+ const dateDeprecated = new Date().toISOString().split('T')[0];
21
+ const markdown = formatQnaMarkdown({
22
+ id: item.id,
23
+ status: 'deprecated',
24
+ dateAsked: item.dateAsked,
25
+ dateAnswered: item.dateAnswered,
26
+ dateDeprecated,
27
+ question: item.question,
28
+ answer: item.answer,
29
+ });
30
+ await fs.writeFile(filepath, markdown, 'utf8');
31
+ console.log(successMessage('Deprecated', `Question #${numId} in ${relative(process.cwd(), filepath)}`));
32
+ }
33
+ //# sourceMappingURL=deprecate-qna.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprecate-qna.js","sourceRoot":"","sources":["../../src/commands/deprecate-qna.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAErE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe;IAChD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IAE9C,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE,aAAa,KAAK,yBAAyB,CAAC,CAAC,CAAC;QACpF,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,iBAAiB,CAAC;QACjC,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,MAAM,EAAE,YAAY;QACpB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,cAAc;QACd,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;IAEH,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,aAAa,KAAK,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1G,CAAC"}
@@ -4,6 +4,7 @@ import { error as errorStyle, successMessage } from '../lib/theme.js';
4
4
  import { getConfig } from '../lib/config.js';
5
5
  import { getActiveEntry } from '../lib/session.js';
6
6
  import matter from 'gray-matter';
7
+ import { notifyHub } from '../watch/notify.js';
7
8
  export async function log(messages) {
8
9
  const cwd = process.cwd();
9
10
  // 1. Require an active entry
@@ -50,6 +51,7 @@ export async function log(messages) {
50
51
  }
51
52
  for (const msg of messages) {
52
53
  console.log(successMessage('Logged', `${active.slug} (via ${active.source}): ${timestamp}: ${msg}`));
54
+ notifyHub(cwd, msg, 'logbook log');
53
55
  }
54
56
  }
55
57
  //# sourceMappingURL=log.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- export declare function getGitUsername(): string;
2
1
  export declare function detectIdFromBranch(prefix: string): string | undefined;
3
2
  export declare function resolveInteractiveId({ input, prefix, nextId, isResearch, hasCustomType, jiraPrefix, }: {
4
3
  input: string;
@@ -4,9 +4,10 @@ import { execSync } from 'node:child_process';
4
4
  import { getTemplatesDir } from '../lib/migrations.js';
5
5
  import { getPackageVersion } from '../lib/package-version.js';
6
6
  import { getCurrentBranch } from '../lib/git-helpers.js';
7
+ import { GITLAB_PREFIX } from '../lib/config.js';
7
8
  import { highlight, warning as warningStyle } from '../lib/theme.js';
8
9
  import { parseTicketId } from '../utils/id.js';
9
- export function getGitUsername() {
10
+ function getGitUsername() {
10
11
  try {
11
12
  return (execSync('git config user.name', { stdio: ['ignore', 'pipe', 'ignore'] })
12
13
  .toString()
@@ -35,7 +36,8 @@ export function resolveInteractiveId({ input, prefix, nextId, isResearch, hasCus
35
36
  !isResearch &&
36
37
  !hasCustomType &&
37
38
  jiraPrefix &&
38
- parsed.prefix.toUpperCase() !== jiraPrefix.toUpperCase()) {
39
+ parsed.prefix.toUpperCase() !== jiraPrefix.toUpperCase() &&
40
+ parsed.prefix !== GITLAB_PREFIX) {
39
41
  console.warn(warningStyle(`Warning: Prefix '${parsed.prefix}' doesn't match configured '${jiraPrefix}'. Using configured prefix.`));
40
42
  return `${jiraPrefix}-${parsed.number}`;
41
43
  }
@@ -73,7 +75,8 @@ export async function writeStandardEntryFiles({ entryDir, entryId, entrySlug, or
73
75
  const version = getPackageVersion();
74
76
  const now = new Date();
75
77
  const replacements = {
76
- id: entryId,
78
+ // A "#" prefixes a YAML comment, so quote the ticket when it starts with "#" (GitLab work items).
79
+ id: entryId.startsWith('#') ? JSON.stringify(entryId) : entryId,
77
80
  slug: entrySlug,
78
81
  title: originalTitle,
79
82
  yamlTitle: JSON.stringify(originalTitle),
@@ -1 +1 @@
1
- {"version":3,"file":"new-helpers.js","sourceRoot":"","sources":["../../src/commands/new-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"new-helpers.js","sourceRoot":"","sources":["../../src/commands/new-helpers.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import matter from 'gray-matter';
5
5
  import { getConfig } from '../lib/config.js';
6
6
  import { getActiveEntry } from '../lib/session.js';
7
7
  import { LOCKFILE_NAME } from '../lib/lockfile.js';
8
+ import { notifyHub } from '../watch/notify.js';
8
9
  export async function release(options = {}) {
9
10
  const cwd = process.cwd();
10
11
  const lockfilePath = join(cwd, LOCKFILE_NAME);
@@ -52,6 +53,7 @@ export async function release(options = {}) {
52
53
  else {
53
54
  console.log(neutral(`Released at ${releasedAt}. You may now commit and build.`));
54
55
  }
56
+ notifyHub(cwd, `Released: ${active.slug}`, 'logbook release');
55
57
  }
56
58
  function formatElapsed(from, to) {
57
59
  const totalSeconds = Math.floor((to.getTime() - from.getTime()) / 1000);
@@ -1 +1 @@
1
- {"version":3,"file":"release.js","sourceRoot":"","sources":["../../src/commands/release.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"release.js","sourceRoot":"","sources":["../../src/commands/release.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ /* eslint-disable max-lines */
1
2
  import fs from 'fs-extra';
2
3
  import { join } from 'node:path';
3
4
  import { execSync } from 'node:child_process';
@@ -5,10 +6,12 @@ import { error as errorStyle, warning as warningStyle, neutral, header, successM
5
6
  import matter from 'gray-matter';
6
7
  import { getConfig, getLogbookDirPath } from '../lib/config.js';
7
8
  import { getActiveEntry } from '../lib/session.js';
9
+ import { getCurrentBranch } from '../lib/git-helpers.js';
8
10
  import { getLogbookEntries } from '../utils/fs.js';
9
11
  import { selectPrompt } from '../utils/prompt.js';
10
12
  import { parseTicketId } from '../utils/id.js';
11
13
  import { LOCKFILE_NAME } from '../lib/lockfile.js';
14
+ import { notifyHub } from '../watch/notify.js';
12
15
  function getGitUsername() {
13
16
  try {
14
17
  return (execSync('git config user.name', { stdio: ['ignore', 'pipe', 'ignore'] })
@@ -58,30 +61,95 @@ export async function start(id, cwd = process.cwd()) {
58
61
  console.error(errorStyle(`Run 'logbook new' to create one first.`));
59
62
  process.exit(1);
60
63
  }
61
- // Sort entries descending
62
- logbookEntries.sort((a, b) => {
63
- const idA = parseTicketId(a.slug);
64
- const idB = parseTicketId(b.slug);
65
- if (idA && idB) {
66
- if (idA.prefix !== idB.prefix) {
67
- return idB.prefix.localeCompare(idA.prefix);
64
+ const branchName = getCurrentBranch(cwd);
65
+ let branchMatches = [];
66
+ if (branchName) {
67
+ const candidates = logbookEntries.map((e) => {
68
+ const ticketId = typeof e.data?.ticket === 'string' && e.data.ticket.trim()
69
+ ? e.data.ticket.trim()
70
+ : e.slug.split('-').slice(0, 2).join('-');
71
+ return { entry: e, ticketId };
72
+ });
73
+ branchMatches = candidates
74
+ .filter(({ entry, ticketId }) => {
75
+ const escapedId = ticketId.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
76
+ const boundaryRegex = new RegExp(`(?:^|[/\\-_])${escapedId}(?:$|[/\\-_])`, 'i');
77
+ if (boundaryRegex.test(branchName)) {
78
+ return true;
68
79
  }
69
- return idB.number - idA.number;
80
+ const escapedSlug = entry.slug.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
81
+ const slugBoundaryRegex = new RegExp(`(?:^|[/\\-_])${escapedSlug}(?:$|[/\\-_])`, 'i');
82
+ return slugBoundaryRegex.test(branchName);
83
+ })
84
+ .map(({ entry }) => entry);
85
+ }
86
+ if (branchMatches.length === 1) {
87
+ slug = branchMatches[0].slug;
88
+ entryDir = branchMatches[0].path;
89
+ console.log(neutral(`Automatically selected entry '${slug}' matching current branch '${branchName}'.`));
90
+ }
91
+ else if (branchMatches.length > 1) {
92
+ branchMatches.sort((a, b) => {
93
+ const idA = parseTicketId(a.slug);
94
+ const idB = parseTicketId(b.slug);
95
+ if (idA && idB) {
96
+ if (idA.prefix !== idB.prefix) {
97
+ return idB.prefix.localeCompare(idA.prefix);
98
+ }
99
+ if (idB.number !== idA.number) {
100
+ return idB.number - idA.number;
101
+ }
102
+ }
103
+ return b.slug.localeCompare(a.slug);
104
+ });
105
+ const choices = branchMatches.map((e) => {
106
+ const title = e.data?.title ? `: ${e.data.title}` : '';
107
+ const ticketId = e.data?.ticket || e.slug;
108
+ return `${ticketId}${title}`;
109
+ });
110
+ const selectedIndex = await selectPrompt(`Multiple entries match current branch '${branchName}'. Select one:`, choices);
111
+ if (selectedIndex === -1) {
112
+ process.exit(1);
70
113
  }
71
- return b.slug.localeCompare(a.slug);
72
- });
73
- const choices = logbookEntries.map((e) => {
74
- const title = e.data?.title ? `: ${e.data.title}` : '';
75
- const ticketId = e.data?.ticket || e.slug;
76
- return `${ticketId}${title}`;
77
- });
78
- const selectedIndex = await selectPrompt('Select an entry to start:', choices);
79
- if (selectedIndex === -1) {
80
- process.exit(1);
114
+ const selectedEntry = branchMatches[selectedIndex];
115
+ slug = selectedEntry.slug;
116
+ entryDir = selectedEntry.path;
117
+ }
118
+ else {
119
+ // Filter to only main tickets (those under process-configured logbookDir)
120
+ const mainEntries = logbookEntries.filter((e) => e.path.startsWith(logbookDir));
121
+ mainEntries.sort((a, b) => {
122
+ const idA = parseTicketId(a.slug);
123
+ const idB = parseTicketId(b.slug);
124
+ if (idA && idB) {
125
+ if (idA.prefix !== idB.prefix) {
126
+ return idB.prefix.localeCompare(idA.prefix);
127
+ }
128
+ if (idB.number !== idA.number) {
129
+ return idB.number - idA.number;
130
+ }
131
+ }
132
+ return b.slug.localeCompare(a.slug);
133
+ });
134
+ // Limit to max 10 entries for the select list
135
+ const limitedEntries = mainEntries.slice(0, 10);
136
+ if (limitedEntries.length === 0) {
137
+ console.error(errorStyle(`Error: No main entries found in logbook directory.`));
138
+ process.exit(1);
139
+ }
140
+ const choices = limitedEntries.map((e) => {
141
+ const title = e.data?.title ? `: ${e.data.title}` : '';
142
+ const ticketId = e.data?.ticket || e.slug;
143
+ return `${ticketId}${title}`;
144
+ });
145
+ const selectedIndex = await selectPrompt('Select an entry to start:', choices);
146
+ if (selectedIndex === -1) {
147
+ process.exit(1);
148
+ }
149
+ const selectedEntry = limitedEntries[selectedIndex];
150
+ slug = selectedEntry.slug;
151
+ entryDir = selectedEntry.path;
81
152
  }
82
- const selectedEntry = logbookEntries[selectedIndex];
83
- slug = selectedEntry.slug;
84
- entryDir = selectedEntry.path;
85
153
  }
86
154
  else {
87
155
  // If a bare or suffixed number is given (e.g. "20-fix"), auto-prepend the configured jiraPrefix
@@ -191,5 +259,6 @@ export async function start(id, cwd = process.cwd()) {
191
259
  console.log(header(`Prompter set to: ${prompter}`));
192
260
  }
193
261
  console.log(neutral(`Lockfile written to ${LOCKFILE_NAME}. Run 'logbook release' when done.`));
262
+ notifyHub(cwd, `Started: ${slug}`, 'logbook start');
194
263
  }
195
264
  //# sourceMappingURL=start.js.map