Compare commits

..

6 Commits

6 changed files with 70 additions and 51 deletions

View File

@ -1,32 +1,47 @@
# Changelog # Changelog
```markdown ## 2024-06-23 - 1.3.3 - fix(aidocs_classes)
## [1.2.4] Fix minor bugs and update dependencies in aidocs_classes
### Fixed - Fixed typo in INextCommitObject interface within the aidocs_classes.
- Refactor logger initialization to use commitinfo data - Updated date format in changelog generation from European format to hyphened sortable format.
- Updated @push.rocks/smartgit dependency from version 3.0.4 to 3.1.0.
- Updated typedoc dependency from version 0.26.0 to 0.26.1.
- Improved commit message generation by adding handling for empty diffs and updating changelog instructions.
## 1.3.0
feat(core): Added smarttime dependency and improved changelog generation
```
## [1.2.4] - 1.2.4 ## 23.06.2024 - 1.3.2 - fix(aidocs_classes)
fix(logging): Refactor logger initialization to use commitinfo data Fix typo in INextCommitObject interface and update date format in changelog generation.
- Corrected typo in INextCommitObject interface within the aidocs_classes directory.
- Updated date format in changelog generation from European format to hyphened sortable format.
## [1.2.3] ## 2023-xx-xx - 1.3.1 - aidocs_classes
fix(aidocs): Fix bug in AiDoc class causing undefined token handling Fix typo in INextCommitObject interface
- Corrected a minor typo in the INextCommitObject interface for consistency.
## [1.2.2] - 2023-11-20 ## 2023-xx-xx - 1.3.0 - core
### Fixed Added smarttime dependency and improved changelog generation
- Fix bug in AiDoc class causing undefined token handling - Introduced smarttime dependency to the core module.
- Enhanced changelog generation to be more efficient.
## [1.2.1] - 2023-11-10 ## 2023-xx-xx - 1.2.4 - logging
### Fixed Refactor logger initialization to use commitinfo data
- Fixed usage of plugins in project context and readme generation - Logger initialization now utilizes commitinfo data for better context and accuracy.
## [1.2.0] - 2023-11-01 ## 2023-xx-xx - 1.2.3 - aidocs
### Added Fix bug in AiDoc class causing undefined token handling
- Enhance changelog generation by supporting complete generation in the absence of previous changelog files - Resolved an issue in the AiDoc class where undefined tokens were not being handled correctly.
## 2023-xx-xx - 1.2.1 - core
Fixed usage of plugins in project context and readme generation
- Improved the usage of plugins within the project context.
- Fixed issues related to README.md generation.
## 2023-xx-xx - 1.2.0 - aidocs_classes
Enhance changelog generation by supporting complete generation in the absence of previous changelog files
- Updated changelog generation to support complete generation even when previous changelog files are absent.
## 2023-xx-xx - 1.1.42 - aidoc_classes
Improve commit message generation by handling empty diffs and updating changelog instructions
- Enhanced commit message generation to handle empty diffs.
- Updated instructions for changelog generation for better clarity.
## [1.1.42] - 2023-10-30
### Fixed
- Improve commit message generation by handling empty diffs and updating changelog instructions

View File

@ -1,6 +1,6 @@
{ {
"name": "@git.zone/tsdoc", "name": "@git.zone/tsdoc",
"version": "1.3.0", "version": "1.3.3",
"private": false, "private": false,
"description": "An advanced TypeScript documentation tool using AI to generate and enhance documentation for TypeScript projects.", "description": "An advanced TypeScript documentation tool using AI to generate and enhance documentation for TypeScript projects.",
"type": "module", "type": "module",
@ -33,14 +33,14 @@
"@push.rocks/smartcli": "^4.0.11", "@push.rocks/smartcli": "^4.0.11",
"@push.rocks/smartdelay": "^3.0.5", "@push.rocks/smartdelay": "^3.0.5",
"@push.rocks/smartfile": "^11.0.20", "@push.rocks/smartfile": "^11.0.20",
"@push.rocks/smartgit": "^3.0.4", "@push.rocks/smartgit": "^3.1.0",
"@push.rocks/smartinteract": "^2.0.15", "@push.rocks/smartinteract": "^2.0.15",
"@push.rocks/smartlog": "^3.0.7", "@push.rocks/smartlog": "^3.0.7",
"@push.rocks/smartlog-destination-local": "^9.0.2", "@push.rocks/smartlog-destination-local": "^9.0.2",
"@push.rocks/smartpath": "^5.0.18", "@push.rocks/smartpath": "^5.0.18",
"@push.rocks/smartshell": "^3.0.5", "@push.rocks/smartshell": "^3.0.5",
"@push.rocks/smarttime": "^4.0.6", "@push.rocks/smarttime": "^4.0.6",
"typedoc": "^0.26.0", "typedoc": "^0.26.1",
"typescript": "^5.5.2" "typescript": "^5.5.2"
}, },
"files": [ "files": [

29
pnpm-lock.yaml generated
View File

@ -30,8 +30,8 @@ importers:
specifier: ^11.0.20 specifier: ^11.0.20
version: 11.0.20 version: 11.0.20
'@push.rocks/smartgit': '@push.rocks/smartgit':
specifier: ^3.0.4 specifier: ^3.1.0
version: 3.0.4 version: 3.1.0
'@push.rocks/smartinteract': '@push.rocks/smartinteract':
specifier: ^2.0.15 specifier: ^2.0.15
version: 2.0.15 version: 2.0.15
@ -51,8 +51,8 @@ importers:
specifier: ^4.0.6 specifier: ^4.0.6
version: 4.0.6 version: 4.0.6
typedoc: typedoc:
specifier: ^0.26.0 specifier: ^0.26.1
version: 0.26.0(typescript@5.5.2) version: 0.26.1(typescript@5.5.2)
typescript: typescript:
specifier: ^5.5.2 specifier: ^5.5.2
version: 5.5.2 version: 5.5.2
@ -432,8 +432,8 @@ packages:
'@push.rocks/smartfile@11.0.20': '@push.rocks/smartfile@11.0.20':
resolution: {integrity: sha512-gJERlNE2fNah9HLq6W3srcl1GZwlz2vFVZRmb50TQLabmWF4qyTlaMYAwY8ffgf8np4TsHAa4s+kL5F0zUfUUg==} resolution: {integrity: sha512-gJERlNE2fNah9HLq6W3srcl1GZwlz2vFVZRmb50TQLabmWF4qyTlaMYAwY8ffgf8np4TsHAa4s+kL5F0zUfUUg==}
'@push.rocks/smartgit@3.0.4': '@push.rocks/smartgit@3.1.0':
resolution: {integrity: sha512-6uYifD4rGjTp6KO8kdaVenXeef0uZOfQSTuLuG3+ubpMXwZNSp0iQWx+XgS5pQipzG0+3p4ddnQ7/R8gm7LWOg==} resolution: {integrity: sha512-a3LbECFQSURkJc9t8CGJrzv7ZzfG1c83x424nb6jfj3jVJXCqjMvs1AkmpkUiro77J7yg4CavTu8vslAfrPIOw==}
'@push.rocks/smarthash@3.0.4': '@push.rocks/smarthash@3.0.4':
resolution: {integrity: sha512-HJ/fSx41jm0CvSaqMLa6b2nuNK5rHAqAeAq3dAB7Sq9BCPm2M0J5ZVDTzEAH8pS91XYniUiwuE0jwPERNn9hmw==} resolution: {integrity: sha512-HJ/fSx41jm0CvSaqMLa6b2nuNK5rHAqAeAq3dAB7Sq9BCPm2M0J5ZVDTzEAH8pS91XYniUiwuE0jwPERNn9hmw==}
@ -1927,8 +1927,8 @@ packages:
resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==}
engines: {node: '>=16'} engines: {node: '>=16'}
isomorphic-git@1.25.10: isomorphic-git@1.26.2:
resolution: {integrity: sha512-IxGiaKBwAdcgBXwIcxJU6rHLk+NrzYaaPKXXQffcA0GW3IUrQXdUPDXDo+hkGVcYruuz/7JlGBiuaeTCgIgivQ==} resolution: {integrity: sha512-swKxfDm/GyaU5ojGwKtfs3EiHwlUf3iP1iIHPduaJHA5y1cIzMDFo3ogwdW6i00UmAjYQNKyF2BZgj/jz58/2A==}
engines: {node: '>=12'} engines: {node: '>=12'}
hasBin: true hasBin: true
@ -3018,8 +3018,8 @@ packages:
resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
typedoc@0.26.0: typedoc@0.26.1:
resolution: {integrity: sha512-OcYevjHsMN8DfpaL0dSBGAEBhOxuBB5Au8QVs9oz9iB0kRStPZwXLFWqh9gwbMUxNjW3yQuIM5GrVVauMJ2Akw==} resolution: {integrity: sha512-APsVXqh93jTlpkLuw6+/IORx7n5LN8hzJV8nvMIrYYaIva0VCq0CoDN7Z3hsRThEYVExI/qoFHnAAxrhG+Wd7Q==}
engines: {node: '>= 18'} engines: {node: '>= 18'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -3867,7 +3867,7 @@ snapshots:
glob: 10.4.1 glob: 10.4.1
js-yaml: 4.1.0 js-yaml: 4.1.0
'@push.rocks/smartgit@3.0.4': '@push.rocks/smartgit@3.1.0':
dependencies: dependencies:
'@push.rocks/smartenv': 5.0.12 '@push.rocks/smartenv': 5.0.12
'@push.rocks/smartfile': 11.0.20 '@push.rocks/smartfile': 11.0.20
@ -3875,10 +3875,11 @@ snapshots:
'@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartpromise': 4.0.3
'@push.rocks/smartshell': 3.0.5 '@push.rocks/smartshell': 3.0.5
'@push.rocks/smartstring': 4.0.15 '@push.rocks/smartstring': 4.0.15
'@push.rocks/smarttime': 4.0.6
'@types/diff': 5.2.1 '@types/diff': 5.2.1
'@types/minimatch': 5.1.2 '@types/minimatch': 5.1.2
diff: 5.2.0 diff: 5.2.0
isomorphic-git: 1.25.10 isomorphic-git: 1.26.2
'@push.rocks/smarthash@3.0.4': '@push.rocks/smarthash@3.0.4':
dependencies: dependencies:
@ -5801,7 +5802,7 @@ snapshots:
isexe@3.1.1: {} isexe@3.1.1: {}
isomorphic-git@1.25.10: isomorphic-git@1.26.2:
dependencies: dependencies:
async-lock: 1.4.1 async-lock: 1.4.1
clean-git-ref: 2.0.1 clean-git-ref: 2.0.1
@ -7158,7 +7159,7 @@ snapshots:
media-typer: 0.3.0 media-typer: 0.3.0
mime-types: 2.1.35 mime-types: 2.1.35
typedoc@0.26.0(typescript@5.5.2): typedoc@0.26.1(typescript@5.5.2):
dependencies: dependencies:
lunr: 2.3.9 lunr: 2.3.9
markdown-it: 14.1.0 markdown-it: 14.1.0

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@git.zone/tsdoc', name: '@git.zone/tsdoc',
version: '1.3.0', version: '1.3.3',
description: 'An advanced TypeScript documentation tool using AI to generate and enhance documentation for TypeScript projects.' description: 'An advanced TypeScript documentation tool using AI to generate and enhance documentation for TypeScript projects.'
} }

View File

@ -6,7 +6,7 @@ export interface INextCommitObject {
recommendedNextVersionLevel: 'fix' | 'feat' | 'BREAKING CHANGE'; // the recommended next version level of the project recommendedNextVersionLevel: 'fix' | 'feat' | 'BREAKING CHANGE'; // the recommended next version level of the project
recommendedNextVersionScope: string; // the recommended scope name of the next version, like "core" or "cli", or specific class names. recommendedNextVersionScope: string; // the recommended scope name of the next version, like "core" or "cli", or specific class names.
recommendedNextVersionMessage: string; // the commit message. Don't put fix() feat() or BREAKING CHANGE in the message. Please just the message itself. recommendedNextVersionMessage: string; // the commit message. Don't put fix() feat() or BREAKING CHANGE in the message. Please just the message itself.
recommendedNextVersionDetauls: string[]; // detailed bullet points for the changelog recommendedNextVersionDetails: string[]; // detailed bullet points for the changelog
recommendedNextVersion: string; // the recommended next version of the project, x.x.x recommendedNextVersion: string; // the recommended next version of the project, x.x.x
changelog?: string; // the changelog for the next version changelog?: string; // the changelog for the next version
} }
@ -72,8 +72,6 @@ Also you are given a diff
result.message.replace('```json', '').replace('```', '') result.message.replace('```json', '').replace('```', '')
); );
// lets build the changelog based on that
const commitMessages = await gitRepo.getAllCommitMessages();
const previousChangelogPath = plugins.path.join(this.projectDir, 'changelog.md'); const previousChangelogPath = plugins.path.join(this.projectDir, 'changelog.md');
let previousChangelog: plugins.smartfile.SmartFile; let previousChangelog: plugins.smartfile.SmartFile;
if (await plugins.smartfile.fs.fileExists(previousChangelogPath)) { if (await plugins.smartfile.fs.fileExists(previousChangelogPath)) {
@ -81,6 +79,8 @@ Also you are given a diff
} }
if (!previousChangelog) { if (!previousChangelog) {
// lets build the changelog based on that
const commitMessages = await gitRepo.getAllCommitMessages();
let result2 = await this.aiDocsRef.openaiInstance.chat({ let result2 = await this.aiDocsRef.openaiInstance.chat({
messageHistory: [], messageHistory: [],
systemMessage: ` systemMessage: `
@ -100,17 +100,20 @@ Only return the changelog file, so it can be written directly to changelog.md`,
userMessage: ` userMessage: `
Here are the commit messages: Here are the commit messages:
${commitMessages.join('\n')} ${JSON.stringify(commitMessages, null, 2)}
`, `,
}); });
previousChangelog = await plugins.smartfile.SmartFile.fromString(previousChangelogPath, result2.message, 'utf8'); previousChangelog = await plugins.smartfile.SmartFile.fromString(
previousChangelogPath,
result2.message,
'utf8'
);
} }
let oldChangelog = previousChangelog.contents.toString().replace('# Changelog\n\n', ''); let oldChangelog = previousChangelog.contents.toString().replace('# Changelog\n\n', '');
let newDateString = new plugins.smarttime.ExtendedDate().exportToEuropeanDate(); let newDateString = new plugins.smarttime.ExtendedDate().exportToHyphedSortableDate();
let newChangelog = `# Changelog\n\n${ let newChangelog = `# Changelog\n\n${`## ${newDateString} - {{nextVersion}} - {{nextVersionScope}}
`## ${newDateString} - {{nextVersion}} - {{nextVersionScope}}
{{nextVersionMessage}} {{nextVersionMessage}}
{{nextVersionDetails}} {{nextVersionDetails}}
`}\n\n${oldChangelog}\n`; `}\n\n${oldChangelog}\n`;

View File

@ -49,7 +49,7 @@ export class ProjectContext {
public async convertFilesToContext(filesArg: plugins.smartfile.SmartFile[]) { public async convertFilesToContext(filesArg: plugins.smartfile.SmartFile[]) {
console.log(`Using the following files for the documentation:`); console.log(`Using the following files for the documentation:`);
filesArg.map((fileArg) => { filesArg.map((fileArg) => {
console.log(` -> ${fileArg.relative}`); // console.log(` -> ${fileArg.relative}`);
}); });
return filesArg return filesArg
.map((smartfile) => { .map((smartfile) => {