project-logbook 0.4.0 → 1.0.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.
- package/README.md +36 -1
- package/dist/commands/build.js +34 -76
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/init.js +1 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/lint.js +7 -2
- package/dist/commands/lint.js.map +1 -0
- package/dist/commands/list.js +4 -16
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/log.d.ts +1 -3
- package/dist/commands/log.js +4 -3
- package/dist/commands/log.js.map +1 -0
- package/dist/commands/new.js +1 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/preview.js +1 -0
- package/dist/commands/preview.js.map +1 -0
- package/dist/commands/release.js +1 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/commands/start.d.ts +1 -1
- package/dist/commands/start.js +53 -12
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.js +7 -18
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/steer.js +1 -0
- package/dist/commands/steer.js.map +1 -0
- package/dist/commands/upgrade.js +1 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -0
- package/dist/lib/about-content.js +1 -0
- package/dist/lib/about-content.js.map +1 -0
- package/dist/lib/adr-renderer.d.ts +12 -0
- package/dist/lib/adr-renderer.js +53 -0
- package/dist/lib/adr-renderer.js.map +1 -0
- package/dist/lib/build-helpers.js +8 -3
- package/dist/lib/build-helpers.js.map +1 -0
- package/dist/lib/build-steps.d.ts +20 -2
- package/dist/lib/build-steps.js +107 -13
- package/dist/lib/build-steps.js.map +1 -0
- package/dist/lib/config.d.ts +8 -0
- package/dist/lib/config.js +19 -1
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/entry-id.js +1 -0
- package/dist/lib/entry-id.js.map +1 -0
- package/dist/lib/entry-paths.js +1 -0
- package/dist/lib/entry-paths.js.map +1 -0
- package/dist/lib/git-helpers.d.ts +5 -16
- package/dist/lib/git-helpers.js +52 -78
- package/dist/lib/git-helpers.js.map +1 -0
- package/dist/lib/git-url-helpers.d.ts +16 -0
- package/dist/lib/git-url-helpers.js +76 -0
- package/dist/lib/git-url-helpers.js.map +1 -0
- package/dist/lib/hast-helpers.js +1 -0
- package/dist/lib/hast-helpers.js.map +1 -0
- package/dist/lib/html-attributes.js +1 -0
- package/dist/lib/html-attributes.js.map +1 -0
- package/dist/lib/html-escape.js +1 -0
- package/dist/lib/html-escape.js.map +1 -0
- package/dist/lib/image-helpers.js +20 -30
- package/dist/lib/image-helpers.js.map +1 -0
- package/dist/lib/jira-helpers.js +1 -0
- package/dist/lib/jira-helpers.js.map +1 -0
- package/dist/lib/lint-runner.js +1 -0
- package/dist/lib/lint-runner.js.map +1 -0
- package/dist/lib/lint-types.js +1 -0
- package/dist/lib/lint-types.js.map +1 -0
- package/dist/lib/lockfile.js +1 -0
- package/dist/lib/lockfile.js.map +1 -0
- package/dist/lib/logbook-client.js +1 -0
- package/dist/lib/logbook-client.js.map +1 -0
- package/dist/lib/markdown-processors.js +1 -0
- package/dist/lib/markdown-processors.js.map +1 -0
- package/dist/lib/migrations.js +1 -0
- package/dist/lib/migrations.js.map +1 -0
- package/dist/lib/package-version.js +1 -0
- package/dist/lib/package-version.js.map +1 -0
- package/dist/lib/rss.js +1 -0
- package/dist/lib/rss.js.map +1 -0
- package/dist/lib/session.js +47 -35
- package/dist/lib/session.js.map +1 -0
- package/dist/lib/styles.js +1 -0
- package/dist/lib/styles.js.map +1 -0
- package/dist/lib/template-helpers.d.ts +6 -1
- package/dist/lib/template-helpers.js +64 -0
- package/dist/lib/template-helpers.js.map +1 -0
- package/dist/lib/template-types.d.ts +22 -2
- package/dist/lib/template-types.js +1 -0
- package/dist/lib/template-types.js.map +1 -0
- package/dist/lib/templates.d.ts +7 -2
- package/dist/lib/templates.js +54 -34
- package/dist/lib/templates.js.map +1 -0
- package/dist/lib/theme.js +1 -0
- package/dist/lib/theme.js.map +1 -0
- package/dist/lib/url-helpers.js +1 -0
- package/dist/lib/url-helpers.js.map +1 -0
- package/dist/linters/diff-to-narrative.d.ts +2 -1
- package/dist/linters/diff-to-narrative.js +3 -10
- package/dist/linters/diff-to-narrative.js.map +1 -0
- package/dist/linters/frontmatter.js +1 -0
- package/dist/linters/frontmatter.js.map +1 -0
- package/dist/linters/index.js +1 -0
- package/dist/linters/index.js.map +1 -0
- package/dist/linters/jira-prefix.js +1 -0
- package/dist/linters/jira-prefix.js.map +1 -0
- package/dist/linters/links.js +26 -4
- package/dist/linters/links.js.map +1 -0
- package/dist/linters/lockfile.js +1 -0
- package/dist/linters/lockfile.js.map +1 -0
- package/dist/linters/placeholders.js +6 -4
- package/dist/linters/placeholders.js.map +1 -0
- package/dist/linters/project-integrity.js +1 -0
- package/dist/linters/project-integrity.js.map +1 -0
- package/dist/linters/readability.js +2 -3
- package/dist/linters/readability.js.map +1 -0
- package/dist/linters/technical-log.js +1 -0
- package/dist/linters/technical-log.js.map +1 -0
- package/dist/linters/workspaces.js +1 -0
- package/dist/linters/workspaces.js.map +1 -0
- package/dist/templates/WELCOME.md +12 -0
- package/dist/templates/index.md +2 -1
- package/dist/templates/logbook-client.js +29 -0
- package/dist/templates/styles.css +205 -32
- package/dist/utils/date.js +1 -0
- package/dist/utils/date.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +9 -0
- package/dist/utils/frontmatter.js +16 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/fs.d.ts +10 -0
- package/dist/utils/fs.js +112 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/id.js +1 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/log-timeline.d.ts +2 -1
- package/dist/utils/log-timeline.js +1 -0
- package/dist/utils/log-timeline.js.map +1 -0
- package/dist/utils/slug.js +1 -0
- package/dist/utils/slug.js.map +1 -0
- package/dist/utils/string.js +1 -0
- package/dist/utils/string.js.map +1 -0
- package/dist/utils/timeline-helpers.d.ts +2 -2
- package/dist/utils/timeline-helpers.js +5 -2
- package/dist/utils/timeline-helpers.js.map +1 -0
- package/dist/utils/validation.d.ts +5 -0
- package/dist/utils/validation.js +21 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +10 -4
- package/src/templates/WELCOME.md +12 -0
- package/src/templates/index.md +2 -1
- package/src/templates/logbook-client.js +29 -0
- package/src/templates/styles.css +205 -32
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|

|
|
8
8
|
|
|
9
|
-
See [CONTRIBUTING.md](CONTRIBUTING.md) for the mandatory working protocol.
|
|
9
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the mandatory working protocol. (Or read this [unauthorized, cynical review](review-article-project-logbook.md) — also available in [German](review-article-project-logbook-de.md) — about how this project got dragged and saved.)
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
## The Three-File Standard
|
|
@@ -20,6 +20,8 @@ Each entry in `logbook/` consists of:
|
|
|
20
20
|
npm i project-logbook -g
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
You can run the CLI using either `logbook` or the shortcut alias `lb`. For example, `lb status` works as a drop-in replacement for `logbook status`.
|
|
24
|
+
|
|
23
25
|
## Commands
|
|
24
26
|
|
|
25
27
|
| Command | Description |
|
|
@@ -30,8 +32,41 @@ npm i project-logbook -g
|
|
|
30
32
|
| `logbook release` | Release the active logbook entry (removes `.logbook-active` lockfile). |
|
|
31
33
|
| `logbook log <message>` | Append a timestamped log entry to the active `log.md`. |
|
|
32
34
|
| `logbook list` | List all logbook entries with their status. |
|
|
35
|
+
| `logbook status` | Show current active logbook task, configuration settings, and statistics. |
|
|
33
36
|
| `logbook lint` | Validate structure, frontmatter, and internal links. |
|
|
34
37
|
| `logbook build` | Compile logbook entries into a static HTML site (default: `public/`). |
|
|
35
38
|
| `logbook preview` | Build and open the logbook in your default browser. |
|
|
36
39
|
| `logbook upgrade` | Synchronize core project files (like `CONTRIBUTING.md`) with latest templates. |
|
|
37
40
|
| `logbook steer` | Output agentic protocol for AI assistants. |
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
## Configuration
|
|
44
|
+
|
|
45
|
+
Running `logbook init` creates a `.project-logbook` configuration file in your project root. You can customize the following properties:
|
|
46
|
+
|
|
47
|
+
| Key | Type | Default | Description |
|
|
48
|
+
|---|---|---|---|
|
|
49
|
+
| `projectName` | `string` | `"My Project"` | Title shown on the generated static website. |
|
|
50
|
+
| `logbookDir` | `string` | `"logbook"` | The directory where logbook entries are located. |
|
|
51
|
+
| `outputDir` | `string` | `"dist/logbook"` | The output directory where the compiled website is built. |
|
|
52
|
+
| `adrDir` | `string` | `"docs/adr"` | The directory where Architecture Decision Records (ADRs) are located. Set to `null` or omit to disable ADR integration. |
|
|
53
|
+
| `primaryColor` | `string` | `"#2563eb"` | The theme's accent color (CSS variable `--primary`). Must be a hex code. |
|
|
54
|
+
| `jiraBaseUrl` | `string` | `undefined` | Optional base URL of your Jira workspace (e.g. `https://myorg.atlassian.net/browse/`). Enables clickable Jira link buttons. |
|
|
55
|
+
| `jiraPrefix` | `string` | `undefined` | Optional Jira project prefix (e.g. `PROJ`) used to validate IDs and auto-link issues. |
|
|
56
|
+
| `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. |
|
|
57
|
+
| `tags` | `object` | See below | Optional configuration for categorization tags. |
|
|
58
|
+
|
|
59
|
+
### Tags Configuration Example
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"projectName": "My API Gateway",
|
|
64
|
+
"primaryColor": "#0f766e",
|
|
65
|
+
"jiraBaseUrl": "https://mycompany.atlassian.net/browse/",
|
|
66
|
+
"jiraPrefix": "GW",
|
|
67
|
+
"tags": {
|
|
68
|
+
"allowed": ["#bugfix", "#feature", "#refactor", "#security", "#performance"]
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
package/dist/commands/build.js
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
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 } from '../lib/config.js';
|
|
4
|
+
import { getConfig, getWorkspaces, getLogbookDirPath, getOutputDirPath, getAdrDirPath } from '../lib/config.js';
|
|
5
|
+
import { getActiveEntry } from '../lib/session.js';
|
|
5
6
|
import { layout, timelineTemplate } from '../lib/templates.js';
|
|
6
|
-
import { buildProjectMdFiles, renderPost, generateBuildMeta } from '../lib/build-helpers.js';
|
|
7
|
+
import { buildProjectMdFiles, renderPost, generateBuildMeta, mdToHtml } from '../lib/build-helpers.js';
|
|
7
8
|
import { getGitCommits, getGitTags } from '../lib/git-helpers.js';
|
|
8
|
-
import { setupOutputDirectory, processReadme, copyReadmeImages, processAboutContent } from '../lib/build-steps.js';
|
|
9
|
+
import { setupOutputDirectory, processReadme, copyReadmeImages, processAboutContent, processWelcomeContent, buildRssFeed, processTimelineEntries, } from '../lib/build-steps.js';
|
|
10
|
+
import { renderAdr } from '../lib/adr-renderer.js';
|
|
9
11
|
import { formatAbsoluteDate, getMonthYear, getSortTime, formatDateTimeForDisplay } from '../utils/date.js';
|
|
10
|
-
import { getLogbookEntries } from '../utils/fs.js';
|
|
11
|
-
import { toDisplayString, asString, asStringArray } from '../utils/frontmatter.js';
|
|
12
|
+
import { getLogbookEntries, getAdrEntries } from '../utils/fs.js';
|
|
12
13
|
import { getAboutContent } from '../lib/about-content.js';
|
|
13
14
|
import { getPackageVersion } from '../lib/package-version.js';
|
|
14
15
|
import { groupTimelineItems } from '../utils/timeline-helpers.js';
|
|
15
|
-
import { getEntryDisplayId, getEntryDisplayTitle } from '../lib/entry-id.js';
|
|
16
|
-
import { generateRssFeed, validateRssXml } from '../lib/rss.js';
|
|
17
16
|
const version = getPackageVersion();
|
|
18
17
|
export async function build() {
|
|
19
18
|
const config = getConfig();
|
|
@@ -22,63 +21,26 @@ export async function build() {
|
|
|
22
21
|
const buildTime = formatDateTimeForDisplay(new Date());
|
|
23
22
|
if (!(await fs.pathExists(logbookDir))) {
|
|
24
23
|
console.error(error(`Error: Logbook directory '${config.logbookDir}' not found.`));
|
|
25
|
-
|
|
24
|
+
process.exit(1);
|
|
26
25
|
}
|
|
27
26
|
await setupOutputDirectory(outputDir, config);
|
|
28
27
|
const projectRoot = process.cwd();
|
|
29
28
|
const { html: readmeHtml, imagePaths: readmeImages } = await processReadme(projectRoot);
|
|
30
29
|
await copyReadmeImages(projectRoot, outputDir, readmeImages);
|
|
31
30
|
const aboutHtml = await processAboutContent(getAboutContent());
|
|
31
|
+
const welcomeHtml = await processWelcomeContent();
|
|
32
32
|
const logbookEntries = await getLogbookEntries(logbookDir);
|
|
33
|
-
const
|
|
33
|
+
const activeEntry = await getActiveEntry();
|
|
34
34
|
const availableWorkspaces = getWorkspaces();
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
: 'No summary available.';
|
|
45
|
-
}
|
|
46
|
-
const entryWorkspaces = asStringArray(data.workspaces).filter((ws) => availableWorkspaces.includes(ws));
|
|
47
|
-
const dateStartValue = data.dateStart;
|
|
48
|
-
const dateStart = typeof dateStartValue === 'string'
|
|
49
|
-
? dateStartValue
|
|
50
|
-
: dateStartValue instanceof Date
|
|
51
|
-
? dateStartValue.toISOString()
|
|
52
|
-
: '';
|
|
53
|
-
// Skip DRAFT entries (no valid dateStart) — they break the timeline
|
|
54
|
-
if (!dateStart || dateStart.includes('{{') || dateStart === '[DATE_START]')
|
|
55
|
-
continue;
|
|
56
|
-
const dateEndValue = data.dateEnd;
|
|
57
|
-
const dateEnd = typeof dateEndValue === 'string' && dateEndValue !== '[DATE_END]'
|
|
58
|
-
? dateEndValue
|
|
59
|
-
: dateEndValue instanceof Date
|
|
60
|
-
? dateEndValue.toISOString()
|
|
61
|
-
: undefined;
|
|
62
|
-
timelineEntries.push({
|
|
63
|
-
kind: 'entry',
|
|
64
|
-
slug,
|
|
65
|
-
dateStart,
|
|
66
|
-
dateEnd,
|
|
67
|
-
displayDate: formatAbsoluteDate(dateStart),
|
|
68
|
-
sortTime: getSortTime(dateStart, dateEnd),
|
|
69
|
-
summary: asString(summary, 'No summary available.') || '',
|
|
70
|
-
ticket: getEntryDisplayId(asString(data.ticket), slug),
|
|
71
|
-
monthGroup: getMonthYear(dateStart),
|
|
72
|
-
tags: asStringArray(data.tags),
|
|
73
|
-
workspaces: entryWorkspaces,
|
|
74
|
-
title: getEntryDisplayTitle(asString(data.title), slug),
|
|
75
|
-
harness: toDisplayString(data.harness),
|
|
76
|
-
llm: toDisplayString(data.llm),
|
|
77
|
-
prompter: toDisplayString(data.prompter),
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
// Fetch global git commits and tags concurrently.
|
|
81
|
-
const [globalCommits, rawTags] = await Promise.all([getGitCommits(process.cwd()), getGitTags()]);
|
|
35
|
+
const timelineEntries = processTimelineEntries(logbookEntries, activeEntry, availableWorkspaces);
|
|
36
|
+
// Fetch global git commits, tags, and ADRs concurrently.
|
|
37
|
+
const adrDir = getAdrDirPath(config);
|
|
38
|
+
const relativeAdrDir = config.adrDir || 'docs/adr';
|
|
39
|
+
const [globalCommits, rawTags, adrItems] = await Promise.all([
|
|
40
|
+
getGitCommits(process.cwd()),
|
|
41
|
+
getGitTags(),
|
|
42
|
+
adrDir ? getAdrEntries(adrDir, relativeAdrDir) : Promise.resolve([]),
|
|
43
|
+
]);
|
|
82
44
|
const commitItems = globalCommits.map((c) => ({
|
|
83
45
|
kind: 'commit',
|
|
84
46
|
sha: c.sha,
|
|
@@ -96,15 +58,20 @@ export async function build() {
|
|
|
96
58
|
monthGroup: getMonthYear(t.timestamp),
|
|
97
59
|
sortTime: getSortTime(t.timestamp),
|
|
98
60
|
}));
|
|
99
|
-
console.log(neutral(`Found ${timelineEntries.length} entr${timelineEntries.length === 1 ? 'y' : 'ies'}, ${commitItems.length} commit${commitItems.length === 1 ? '' : 's'} (max 100),
|
|
61
|
+
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'}, and ${adrItems.length} ADR${adrItems.length === 1 ? '' : 's'}.`));
|
|
100
62
|
timelineEntries.sort((a, b) => {
|
|
101
63
|
const aEnd = a.dateEnd ? new Date(a.dateEnd).getTime() : new Date(a.dateStart).getTime();
|
|
102
64
|
const bEnd = b.dateEnd ? new Date(b.dateEnd).getTime() : new Date(b.dateStart).getTime();
|
|
103
65
|
return bEnd - aEnd;
|
|
104
66
|
});
|
|
105
|
-
await Promise.all(
|
|
106
|
-
|
|
107
|
-
|
|
67
|
+
await Promise.all([
|
|
68
|
+
...timelineEntries.map((entry, i) => renderPost(entry, i, timelineEntries, { logbookDir, outputDir, config, version, buildTime })),
|
|
69
|
+
...adrItems.map(async (adr) => {
|
|
70
|
+
adr.decisionHtml = await mdToHtml(adr.decision);
|
|
71
|
+
await renderAdr(adr, { adrDir: adrDir, outputDir, config, version, buildTime });
|
|
72
|
+
}),
|
|
73
|
+
]);
|
|
74
|
+
const allGroups = groupTimelineItems(timelineEntries, commitItems, tagItems, adrItems);
|
|
108
75
|
const flatItems = allGroups.flatMap((g) => g.items);
|
|
109
76
|
const pageSize = 50;
|
|
110
77
|
const totalPages = Math.max(1, Math.ceil(flatItems.length / pageSize));
|
|
@@ -129,6 +96,7 @@ export async function build() {
|
|
|
129
96
|
groups: pageGroups,
|
|
130
97
|
readmeHtml,
|
|
131
98
|
aboutHtml,
|
|
99
|
+
welcomeHtml,
|
|
132
100
|
jiraBaseUrl: config.jiraBaseUrl,
|
|
133
101
|
jiraPrefix: config.jiraPrefix,
|
|
134
102
|
repositoryUrl: config.repositoryUrl,
|
|
@@ -137,6 +105,8 @@ export async function build() {
|
|
|
137
105
|
includeRssLink: currentPage === 1, // Only show RSS link on first page
|
|
138
106
|
}); // prettier-ignore
|
|
139
107
|
const buildMeta = generateBuildMeta(version, buildTime);
|
|
108
|
+
const prevPageUrl = currentPage > 1 ? (currentPage === 2 ? './index.html' : `./index-${currentPage - 1}.html`) : undefined;
|
|
109
|
+
const nextPageUrl = currentPage < totalPages ? `./index-${currentPage + 1}.html` : undefined;
|
|
140
110
|
const timelineHtml = layout({
|
|
141
111
|
title: 'Timeline',
|
|
142
112
|
projectName: config.projectName,
|
|
@@ -145,6 +115,8 @@ export async function build() {
|
|
|
145
115
|
header: timelineHeader,
|
|
146
116
|
content: timelineMainContent,
|
|
147
117
|
includeRssLink: currentPage === 1, // Only show RSS link on first page
|
|
118
|
+
prevUrl: prevPageUrl,
|
|
119
|
+
nextUrl: nextPageUrl,
|
|
148
120
|
});
|
|
149
121
|
const fileName = currentPage === 1 ? 'index.html' : `index-${currentPage}.html`;
|
|
150
122
|
await fs.writeFile(join(outputDir, fileName), timelineHtml);
|
|
@@ -155,21 +127,7 @@ export async function build() {
|
|
|
155
127
|
buildTime,
|
|
156
128
|
});
|
|
157
129
|
// Generate RSS feed
|
|
158
|
-
|
|
159
|
-
title: `${config.projectName} - Recent Updates`,
|
|
160
|
-
description: `Latest logbook entries from ${config.projectName}`,
|
|
161
|
-
language: 'en',
|
|
162
|
-
feed_url: `${config.projectName.toLowerCase().replace(/\s+/g, '-')}/rss.xml`,
|
|
163
|
-
site_url: config.projectName,
|
|
164
|
-
generator: `Project Logbook CLI v${version}`,
|
|
165
|
-
};
|
|
166
|
-
const rssXml = generateRssFeed(timelineEntries, rssConfig);
|
|
167
|
-
// Basic validation
|
|
168
|
-
if (!validateRssXml(rssXml)) {
|
|
169
|
-
console.error(error('Error: Generated RSS feed failed basic validation.'));
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
await fs.writeFile(join(outputDir, 'rss.xml'), rssXml);
|
|
173
|
-
console.log(neutral(` Generated RSS feed with ${Math.min(50, timelineEntries.length)} entries`));
|
|
130
|
+
await buildRssFeed(outputDir, timelineEntries, config, version);
|
|
174
131
|
console.log(success(`\nSuccessfully built logbook to ${config.outputDir}/`));
|
|
175
132
|
}
|
|
133
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -81,3 +81,4 @@ export async function init() {
|
|
|
81
81
|
console.log(info('\n💡 Tip: Edit .project-logbook to customize primaryColor, add more tags, or configure Jira settings.'));
|
|
82
82
|
console.log(info(' Run `logbook new` to create your first entry.\n'));
|
|
83
83
|
}
|
|
84
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/lint.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fs from 'fs-extra';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
-
import { error as errorStyle, header, success as successStyle, neutral as neutralStyle } from '../lib/theme.js';
|
|
3
|
+
import { error as errorStyle, header, success as successStyle, neutral as neutralStyle, warning as warningStyle, } from '../lib/theme.js';
|
|
4
4
|
import { getConfig, getLogbookDirPath } from '../lib/config.js';
|
|
5
5
|
import { runLinters } from '../lib/lint-runner.js';
|
|
6
6
|
import { getLogbookEntries } from '../utils/fs.js';
|
|
@@ -11,7 +11,7 @@ export async function lint() {
|
|
|
11
11
|
const logbookDir = getLogbookDirPath(config);
|
|
12
12
|
if (!(await fs.pathExists(logbookDir))) {
|
|
13
13
|
console.error(errorStyle(`Error: Logbook directory '${config.logbookDir}' not found.`));
|
|
14
|
-
|
|
14
|
+
process.exit(1);
|
|
15
15
|
}
|
|
16
16
|
let overallSuccess = true;
|
|
17
17
|
// Show last log entry nudge if an entry is active
|
|
@@ -46,6 +46,10 @@ export async function lint() {
|
|
|
46
46
|
}
|
|
47
47
|
if (isDraft(entry)) {
|
|
48
48
|
skippedCount++;
|
|
49
|
+
if (active && active.slug === entry.slug) {
|
|
50
|
+
console.log(warningStyle(`\n [SKIPPED] Active entry '${entry.slug}' is a draft (missing valid dateStart).`));
|
|
51
|
+
console.log(warningStyle(` → Run 'logbook start ${entry.slug.split('-')[0]}' to activate it, which sets dateStart and enables linting.\n`));
|
|
52
|
+
}
|
|
49
53
|
continue;
|
|
50
54
|
}
|
|
51
55
|
const entrySuccess = await runLinters({
|
|
@@ -85,3 +89,4 @@ function isDraft(entry) {
|
|
|
85
89
|
// 2. OR the string representation of 'dateStart' is '[DATE_START]'.
|
|
86
90
|
return !frontmatter?.dateStart || String(frontmatter.dateStart) === '[DATE_START]';
|
|
87
91
|
}
|
|
92
|
+
//# sourceMappingURL=lint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/commands/lint.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/list.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from 'fs-extra';
|
|
2
2
|
import { getConfig, getLogbookDirPath } from '../lib/config.js';
|
|
3
3
|
import { getLogbookEntries } from '../utils/fs.js';
|
|
4
|
+
import { hasUnfilledPlaceholders } from '../utils/validation.js';
|
|
4
5
|
import { stripAnsi } from '../utils/string.js';
|
|
5
6
|
import { parseTicketId } from '../utils/id.js';
|
|
6
7
|
import { getActiveEntry } from '../lib/session.js';
|
|
@@ -41,23 +42,9 @@ export async function list(options = {}) {
|
|
|
41
42
|
});
|
|
42
43
|
continue;
|
|
43
44
|
}
|
|
44
|
-
const { data
|
|
45
|
+
const { data } = entry;
|
|
45
46
|
const isActive = activeSlug === entry.slug;
|
|
46
|
-
|
|
47
|
-
const dataValues = Object.values(data)
|
|
48
|
-
.filter((v) => typeof v === 'string')
|
|
49
|
-
.join('\n');
|
|
50
|
-
const frontmatterHasPlaceholders = dataValues.includes('[DATE_END]') ||
|
|
51
|
-
dataValues.includes('[DATE_START]') ||
|
|
52
|
-
dataValues.includes('[WRITE_SUMMARY_HERE]') ||
|
|
53
|
-
dataValues.includes('[PROMPTER]') ||
|
|
54
|
-
dataValues.includes('[HARNESS]') ||
|
|
55
|
-
dataValues.includes('[LLM]');
|
|
56
|
-
// Check body content for unfilled template hints (strip inline code spans to avoid false positives)
|
|
57
|
-
const contentWithoutCode = content.replace(/`[^`]*`/g, '');
|
|
58
|
-
const bodyHasPlaceholders = contentWithoutCode.includes('TODO:') ||
|
|
59
|
-
content.includes('Write a polished, highly readable "short story" of the change here.');
|
|
60
|
-
const hasPlaceholders = frontmatterHasPlaceholders || bodyHasPlaceholders;
|
|
47
|
+
const hasPlaceholders = hasUnfilledPlaceholders(entry);
|
|
61
48
|
const status = isActive ? highlight('● ACTIVE') : hasPlaceholders ? warning('DRAFT') : success('DONE');
|
|
62
49
|
rows.push({
|
|
63
50
|
ticketId: asString(data.ticket) || neutral('-'),
|
|
@@ -125,3 +112,4 @@ export async function list(options = {}) {
|
|
|
125
112
|
: `Showing latest ${displayedRows.length} of ${totalEntries} entries (use --all to show all)`;
|
|
126
113
|
console.log(neutral(`${countText} in ${config.logbookDir}/`));
|
|
127
114
|
}
|
|
115
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/log.d.ts
CHANGED
package/dist/commands/log.js
CHANGED
|
@@ -3,13 +3,13 @@ import { join } from 'node:path';
|
|
|
3
3
|
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
|
-
export async function log(messages
|
|
6
|
+
export async function log(messages) {
|
|
7
7
|
const cwd = process.cwd();
|
|
8
8
|
// 1. Require an active entry
|
|
9
|
-
const active = await getActiveEntry(
|
|
9
|
+
const active = await getActiveEntry({}, cwd);
|
|
10
10
|
if (!active) {
|
|
11
11
|
console.error(errorStyle(`Error: No active logbook entry resolved.`));
|
|
12
|
-
console.error(errorStyle(`Activate an entry via 'logbook start <id>'
|
|
12
|
+
console.error(errorStyle(`Activate an entry via 'logbook start <id>' or checkout a feature branch.`));
|
|
13
13
|
process.exit(1);
|
|
14
14
|
}
|
|
15
15
|
const config = getConfig();
|
|
@@ -29,3 +29,4 @@ export async function log(messages, options = {}) {
|
|
|
29
29
|
console.log(successMessage('Logged', `${active.slug} (via ${active.source}): ${timestamp}: ${msg}`));
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/commands/log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,QAAkB;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,6BAA6B;IAC7B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,0EAA0E,CAAC,CAAC,CAAC;QACtG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEpE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,qDAAqD;IACrD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5E,sBAAsB;IACtB,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,CAAC;IAEpE,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,MAAM,SAAS,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;AACH,CAAC"}
|
package/dist/commands/new.js
CHANGED
|
@@ -132,3 +132,4 @@ export async function createNewEntry(id, slug) {
|
|
|
132
132
|
await fs.writeFile(join(entryDir, 'log.md'), fillTemplate(getTemplate('log.md')));
|
|
133
133
|
console.log(successMessage('Created', `logbook entry in ${config.logbookDir}/${entryId}-${entrySlug}/`));
|
|
134
134
|
}
|
|
135
|
+
//# sourceMappingURL=new.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,MAAM,EACN,OAAO,IAAI,YAAY,EACvB,SAAS,EACT,YAAY,EACZ,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,EAAE,GAAG,eAAe,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,MAAM,EAAE,OAAO,CAAC,MAAM;CACvB,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAmB,EAAE;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;YAC7B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAW,EAAE,IAAa;IAC7D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACvC,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,SAAS,GAAG,IAAI,CAAC;IAErB,6CAA6C;IAC7C,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,wDAAwD,CAAC,CAAC,CAAC;QAE9E,+CAA+C;QAC/C,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;QAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,aAAa,EAAE,CAAC;gBAClB,uCAAuC;gBACvC,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,UAAW,CAAC,CAAC;gBACzD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,wBAAwB,MAAM,qCAAqC,CAAC,CAAC,CAAC;gBAC7G,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACpE,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC;wBAC/E,OAAO,CAAC,IAAI,CACV,YAAY,CACV,oBAAoB,MAAM,CAAC,MAAM,+BAA+B,MAAM,CAAC,UAAU,6BAA6B,CAC/G,CACF,CAAC;wBACF,OAAO,GAAG,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBACpD,CAAC;yBAAM,IAAI,MAAM,EAAE,CAAC;wBAClB,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;oBAChC,CAAC;yBAAM,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;wBAC/B,OAAO,GAAG,GAAG,MAAM,CAAC,UAAU,IAAI,UAAU,EAAE,CAAC;oBACjD,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,6CAA6C,CAAC,CAAC,CAAC;wBAC1E,OAAO,GAAG,MAAM,CAAC;oBACnB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,GAAG,MAAM,CAAC;gBACnB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,wBAAwB,MAAM,qCAAqC,CAAC,CAAC,CAAC;gBAC7G,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;oBACpC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACpE,IAAI,MAAM,EAAE,CAAC;wBACX,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;oBAChC,CAAC;yBAAM,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;wBAC/B,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;oBAC/B,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,6CAA6C,CAAC,CAAC,CAAC;wBAC1E,OAAO,GAAG,MAAM,CAAC;oBACnB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,GAAG,MAAM,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,mDAAmD,CAAC,CAAC,CAAC;YAC7F,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC;gBAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;SAAM,CAAC;QACN,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;IAED,gBAAgB;IAChB,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,yBAAyB,SAAS,SAAS,SAAS,IAAI,CAAC,CAAC,CAAC;QACjG,SAAS,GAAG,SAAS,CAAC;IACxB,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,IAAI,SAAS,EAAE,CAAC,CAAC;IAEpF,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,OAAO,IAAI,SAAS,kBAAkB,CAAC,CAAC,CAAC;QACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAE1B,MAAM,OAAO,GAAW,iBAAiB,EAAE,CAAC;IAE5C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,YAAY,GAA2B;QAC3C,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;QACnC,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,EAAE,GAAG,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAChG,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE;QAC1B,OAAO,EAAE,IAAI,OAAO,EAAE;KACvB,CAAC;IAEF,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;QAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,aAAa,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,QAAgB,EAAE,EAAE;QACxC,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;IACvF,CAAC,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAElF,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,EAAE,oBAAoB,MAAM,CAAC,UAAU,IAAI,OAAO,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;AAC3G,CAAC"}
|
package/dist/commands/preview.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAEhD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAC1D,MAAM,KAAK,EAAE,CAAC;IAEd,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC,CAAC;IAErD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;IAE3G,qEAAqE;IACrE,QAAQ,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;QACnC,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,2BAA2B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/commands/release.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release.js","sourceRoot":"","sources":["../../src/commands/release.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,UAA2B,EAAE;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,+CAA+C,CAAC,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE5C,2CAA2C;IAC3C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAE7C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE/C,gEAAgE;QAChE,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,cAAc,CAAC;QACpC,IAAI,cAAc,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,UAAU,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,4DAA4D;QAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,kBAAkB,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;IACpD,CAAC;IAED,mFAAmF;IACnF,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9B,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;YACrC,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxF,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAChF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,OAAO,iCAAiC,CAAC,CAAC,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,UAAU,iCAAiC,CAAC,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAU,EAAE,EAAQ;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,YAAY,GAAG,EAAE,CAAC;IAC5B,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IAChC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;IAChC,OAAO,GAAG,CAAC,GAAG,CAAC;AACjB,CAAC"}
|
package/dist/commands/start.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function start(id: string): Promise<void>;
|
|
1
|
+
export declare function start(id: string, cwd?: string): Promise<void>;
|
package/dist/commands/start.js
CHANGED
|
@@ -6,6 +6,7 @@ import matter from 'gray-matter';
|
|
|
6
6
|
import { getConfig, getLogbookDirPath } from '../lib/config.js';
|
|
7
7
|
import { getActiveEntry } from '../lib/session.js';
|
|
8
8
|
import { getEntryPath } from '../lib/entry-paths.js';
|
|
9
|
+
import { getLogbookEntries } from '../utils/fs.js';
|
|
9
10
|
import { LOCKFILE_NAME } from '../lib/lockfile.js';
|
|
10
11
|
function getGitUsername() {
|
|
11
12
|
try {
|
|
@@ -17,8 +18,7 @@ function getGitUsername() {
|
|
|
17
18
|
return undefined;
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
|
-
export async function start(id) {
|
|
21
|
-
const cwd = process.cwd();
|
|
21
|
+
export async function start(id, cwd = process.cwd()) {
|
|
22
22
|
const lockfilePath = join(cwd, LOCKFILE_NAME);
|
|
23
23
|
// 1. Enforce single active entry
|
|
24
24
|
if (await fs.pathExists(lockfilePath)) {
|
|
@@ -27,22 +27,62 @@ export async function start(id) {
|
|
|
27
27
|
console.error(errorStyle(`Run 'logbook release' before starting a new entry.`));
|
|
28
28
|
process.exit(1);
|
|
29
29
|
}
|
|
30
|
-
// 2. Resolve folder by ID prefix
|
|
30
|
+
// 2. Resolve folder by ID prefix or exact match
|
|
31
31
|
const config = getConfig();
|
|
32
|
-
// If a bare number is given (e.g. "
|
|
33
|
-
const resolvedId = /^\d
|
|
32
|
+
// If a bare or suffixed number is given (e.g. "20-fix"), auto-prepend the configured jiraPrefix
|
|
33
|
+
const resolvedId = /^\d+(?:-.*)?$/.test(id) && config.jiraPrefix ? `${config.jiraPrefix}-${id}` : id;
|
|
34
34
|
const logbookDir = getLogbookDirPath(config, cwd);
|
|
35
35
|
const allDirs = await fs.readdir(logbookDir);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
let slug;
|
|
37
|
+
// 2a. Direct folder name match bypasses all other logic
|
|
38
|
+
const exactSlugMatch = allDirs.find((d) => d.toLowerCase() === id.toLowerCase());
|
|
39
|
+
if (exactSlugMatch) {
|
|
40
|
+
slug = exactSlugMatch;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
// 2b. Query all logbook entries for frontmatter and folder structure
|
|
44
|
+
const logbookEntries = await getLogbookEntries(logbookDir);
|
|
45
|
+
// First Pass: Exact Ticket ID Match in Frontmatter
|
|
46
|
+
const exactTicketMatches = logbookEntries.filter((e) => {
|
|
47
|
+
const ticket = typeof e.data?.ticket === 'string' ? e.data.ticket.trim().toLowerCase() : '';
|
|
48
|
+
return ticket === resolvedId.toLowerCase();
|
|
49
|
+
});
|
|
50
|
+
if (exactTicketMatches.length === 1) {
|
|
51
|
+
slug = exactTicketMatches[0].slug;
|
|
52
|
+
}
|
|
53
|
+
else if (exactTicketMatches.length > 1) {
|
|
54
|
+
console.error(errorStyle(`Error: Multiple entries found with the exact same ticket ID '${resolvedId}'.`));
|
|
55
|
+
console.error(errorStyle(`Please specify the unique folder name/slug directly instead:`));
|
|
56
|
+
for (const match of exactTicketMatches) {
|
|
57
|
+
console.error(errorStyle(` logbook start ${match.slug}`));
|
|
58
|
+
}
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// Second Pass: Fallback Prefix Match on Folder Names
|
|
63
|
+
const prefixMatches = logbookEntries.filter((e) => {
|
|
64
|
+
const prefix = e.slug.split('-').slice(0, resolvedId.split('-').length).join('-');
|
|
65
|
+
return prefix.toLowerCase() === resolvedId.toLowerCase();
|
|
66
|
+
});
|
|
67
|
+
if (prefixMatches.length === 1) {
|
|
68
|
+
slug = prefixMatches[0].slug;
|
|
69
|
+
}
|
|
70
|
+
else if (prefixMatches.length > 1) {
|
|
71
|
+
console.error(errorStyle(`Error: Multiple entries found matching prefix '${resolvedId}'.`));
|
|
72
|
+
console.error(errorStyle(`Please be more specific. Run one of:`));
|
|
73
|
+
for (const match of prefixMatches) {
|
|
74
|
+
const ticketId = typeof match.data?.ticket === 'string' ? match.data.ticket : match.slug;
|
|
75
|
+
console.error(errorStyle(` logbook start ${ticketId}`));
|
|
76
|
+
}
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (!slug) {
|
|
41
82
|
console.error(errorStyle(`Error: No entry found matching ID '${resolvedId}' in ${config.logbookDir}/.`));
|
|
42
83
|
console.error(errorStyle(`Run 'logbook new <id> <slug>' to create it first.`));
|
|
43
84
|
process.exit(1);
|
|
44
85
|
}
|
|
45
|
-
const slug = matchingDir;
|
|
46
86
|
const entryDir = getEntryPath(logbookDir, slug);
|
|
47
87
|
// Warn if branch-resolved entry is different
|
|
48
88
|
const activeFromBranch = await getActiveEntry({}, cwd);
|
|
@@ -75,7 +115,7 @@ export async function start(id) {
|
|
|
75
115
|
raw = raw.replace('prompter: "[PROMPTER]"', `prompter: '${prompter.replace(/'/g, "''")}'`);
|
|
76
116
|
}
|
|
77
117
|
else if (!parsed.data.prompter) {
|
|
78
|
-
raw = raw.replace(/^(---\n[\s\S]*?)(
|
|
118
|
+
raw = raw.replace(/^(---\r?\n[\s\S]*?)(^---\r?$)/m, (_, frontmatter, closing) => {
|
|
79
119
|
if (frontmatter.includes('prompter:'))
|
|
80
120
|
return _;
|
|
81
121
|
return `${frontmatter}prompter: '${prompter.replace(/'/g, "''")}'\n${closing}`;
|
|
@@ -90,3 +130,4 @@ export async function start(id) {
|
|
|
90
130
|
}
|
|
91
131
|
console.log(neutral(`Lockfile written to ${LOCKFILE_NAME}. Run 'logbook release' when done.`));
|
|
92
132
|
}
|
|
133
|
+
//# sourceMappingURL=start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|