From 6c4dc3c62249b5d946318f175a16db9e819392ed Mon Sep 17 00:00:00 2001 From: dangreen Date: Sun, 28 Jun 2026 01:26:45 +0400 Subject: [PATCH 1/2] fix(core): show fallback notes for forced version bumps --- packages/core/package.json | 3 +- packages/core/src/change-log.ts | 17 ++ packages/core/src/project/packageJson.spec.ts | 32 +++ packages/core/src/project/project.ts | 6 +- packages/test/src/project.mock.ts | 26 +- pnpm-lock.yaml | 232 +++++++++--------- pnpm-workspace.yaml | 8 +- 7 files changed, 193 insertions(+), 131 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 32d6f11..95ee4c3 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -60,11 +60,12 @@ }, "dependencies": { "@conventional-changelog/git-client": "^3.0.1", + "@conventional-changelog/template": "^1.2.0", "@simple-libs/child-process-utils": "^2.0.0", "@simple-libs/hosted-git-info": "^2.0.0", "@simple-libs/stream-utils": "^2.0.0", "conventional-changelog": "^8.0.0", - "conventional-changelog-conventionalcommits": "^10.0.0", + "conventional-changelog-conventionalcommits": "^10.2.0", "conventional-changelog-preset-loader": "^6.0.0", "conventional-recommended-bump": "^12.0.0", "semver": "^7.5.2" diff --git a/packages/core/src/change-log.ts b/packages/core/src/change-log.ts index 56fd1e3..da0af90 100644 --- a/packages/core/src/change-log.ts +++ b/packages/core/src/change-log.ts @@ -4,6 +4,10 @@ import { createWriteStream } from 'fs' import fs from 'fs/promises' +import { + type FinalTemplateContext, + segments +} from '@conventional-changelog/template' import { tmpfile, isFileExists @@ -19,6 +23,19 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ` +export function preamblePartial( + { + preamble, + commitGroups, + noteGroups + }: FinalTemplateContext +) { + return segments( + !commitGroups?.length && !noteGroups?.length && 'Version bump without any changes.', + preamble + ) +} + /** * Add release notes to a changelog file. * @param changelogPath - The path to the changelog file. diff --git a/packages/core/src/project/packageJson.spec.ts b/packages/core/src/project/packageJson.spec.ts index fc885b9..6a3a9c9 100644 --- a/packages/core/src/project/packageJson.spec.ts +++ b/packages/core/src/project/packageJson.spec.ts @@ -180,6 +180,38 @@ describe('core', () => { expect(await fs.readFile(join(cwd, 'CHANGELOG.md'), 'utf8')).toMatch(/## \[2\.(0\.1|1\.0)\]/) }) + it('should add placeholder when generated release notes are empty', async () => { + const { cwd } = await forkProject( + 'bump-empty-notes', + packageJsonProject({}, { + postReleaseCommits: false + }) + ) + const project = new PackageJsonProject({ + path: join(cwd, 'package.json') + }) + const result = await project.bump({ + as: 'patch' + }) + + expect(result).toBe(true) + expect(project.versionUpdates[0].notes).toContain('Version bump without any changes.') + expect(await fs.readFile(join(cwd, 'CHANGELOG.md'), 'utf8')).toContain('Version bump without any changes.') + }) + + it('should not add placeholder when generated release notes are not empty', async () => { + const { cwd } = await packageJsonProject() + const project = new PackageJsonProject({ + path: join(cwd, 'package.json') + }) + const result = await project.bump({ + dryRun: true + }) + + expect(result).toBe(true) + expect(project.versionUpdates[0].notes).not.toContain('Version bump without any changes.') + }) + it('should get commit message after bump', async () => { const { cwd } = await packageJsonProject() const project = new PackageJsonProject({ diff --git a/packages/core/src/project/project.ts b/packages/core/src/project/project.ts index 7c1464e..013da59 100644 --- a/packages/core/src/project/project.ts +++ b/packages/core/src/project/project.ts @@ -10,7 +10,8 @@ import type { ReleaseData } from '../hosting/index.js' import { addReleaseNotes, extractLastRelease, - extractLastReleaseFromFile + extractLastReleaseFromFile, + preamblePartial } from '../change-log.js' import { getReleaseType } from '../utils.js' import type { @@ -298,6 +299,9 @@ export abstract class Project { .context({ version: nextVersion }) + .writer({ + preamblePartial + }) .write() versionUpdate.notes = dryRun diff --git a/packages/test/src/project.mock.ts b/packages/test/src/project.mock.ts index a39dc28..77b3edd 100644 --- a/packages/test/src/project.mock.ts +++ b/packages/test/src/project.mock.ts @@ -79,7 +79,15 @@ export async function forkProject(id: string, srcCtxPromise: ProjectContext | Pr return ctx } -export async function packageJsonProject(pkg: Record = {}) { +export interface PackageJsonProjectOptions { + postReleaseCommits?: boolean +} + +export async function packageJsonProject( + pkg: Record = {}, + options: PackageJsonProjectOptions = {} +) { + const { postReleaseCommits = true } = options const json = JSON.stringify({ name: 'package-json-project', version: '2.0.0', @@ -89,7 +97,10 @@ export async function packageJsonProject(pkg: Record = {}) { return createCachedProject( 'package-json-project', - json, + JSON.stringify({ + json, + postReleaseCommits + }), async ({ cwd, run @@ -109,10 +120,15 @@ export async function packageJsonProject(pkg: Record = {}) { ctx => dummyCommit(ctx, 'feat'), ({ git }) => git.tag({ name: 'v2.0.0' - }), - ctx => dummyCommit(ctx, 'feat'), - ctx => dummyCommit(ctx, 'fix') + }) ]) + + if (postReleaseCommits) { + await run([ + ctx => dummyCommit(ctx, 'feat'), + ctx => dummyCommit(ctx, 'fix') + ]) + } } ) } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8f6f137..700085f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,7 +19,7 @@ importers: version: 21.0.2 '@commitlint/cz-commitlint': specifier: ^21.0.0 - version: 21.1.0(@types/node@22.16.2)(commitizen@4.3.1(@types/node@22.16.2)(typescript@6.0.3))(inquirer@8.2.5)(typescript@6.0.3) + version: 21.1.0(@types/node@22.16.2)(commitizen@4.3.2(@types/node@22.16.2)(typescript@6.0.3))(inquirer@8.2.7(@types/node@22.16.2))(typescript@6.0.3) '@trigen/oxlint': specifier: ^9.1.0 version: 9.1.0 @@ -34,7 +34,7 @@ importers: version: 22.16.2 '@typescript/native-preview': specifier: latest - version: 7.0.0-dev.20260624.1 + version: 7.0.0-dev.20260626.1 '@vitest/coverage-v8': specifier: ^4.1.9 version: 4.1.9(vitest@4.1.9) @@ -43,7 +43,7 @@ importers: version: 5.2.2 commitizen: specifier: ^4.2.4 - version: 4.3.1(@types/node@22.16.2)(typescript@6.0.3) + version: 4.3.2(@types/node@22.16.2)(typescript@6.0.3) del-cli: specifier: ^7.0.0 version: 7.0.0 @@ -58,7 +58,7 @@ importers: version: 0.23.0 simple-git-hooks: specifier: ^2.7.0 - version: 2.13.0 + version: 2.13.1 tsm: specifier: ^2.3.0 version: 2.3.0 @@ -99,6 +99,9 @@ importers: '@conventional-changelog/git-client': specifier: ^3.0.1 version: 3.0.1(conventional-commits-filter@6.0.0)(conventional-commits-parser@7.0.0) + '@conventional-changelog/template': + specifier: ^1.2.0 + version: 1.2.0 '@simple-libs/child-process-utils': specifier: ^2.0.0 version: 2.0.0 @@ -112,8 +115,8 @@ importers: specifier: ^8.0.0 version: 8.0.0(conventional-commits-filter@6.0.0) conventional-changelog-conventionalcommits: - specifier: ^10.0.0 - version: 10.0.0 + specifier: ^10.2.0 + version: 10.2.0 conventional-changelog-preset-loader: specifier: ^6.0.0 version: 6.0.0 @@ -380,8 +383,8 @@ packages: conventional-commits-parser: optional: true - '@conventional-changelog/template@1.0.0': - resolution: {integrity: sha512-gJCWgneQIGfxZ22B4nGh7LF3cHbIdhwTHZi9octL7kagH4UHfnsLvp/yPl6tzWvdnIIRUutJtVNEih6Ln2YzFw==} + '@conventional-changelog/template@1.2.0': + resolution: {integrity: sha512-12qHxvlKjHmP0PQ+17EREgC7lWyLwbph1RKcZQZ7k7ZWGmrxfxC9gadHGfvzr0g0u8BhiBGg3tks93txodlyRQ==} engines: {node: '>=22'} '@emnapi/core@1.11.1': @@ -415,6 +418,15 @@ packages: resolution: {integrity: sha512-7bQW+gkKa2kKZPeJf6+c6gFK9ARxQfn+FKy9ScTBppyKRWH2KzsmweXUoklqeEiHiNVWaeP5csIdsNq6w7QhzA==} engines: {node: '>=12.20'} + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -872,50 +884,50 @@ packages: resolution: {integrity: sha512-KvAclkktORPvM54TgLgA4z9HIV1M8zOgw9ZVNXl9f/8dLYfXYX1wkMXP7qmabpijQRV5bHJLOmoyGQbLMaUYeg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260624.1': - resolution: {integrity: sha512-g8CqDkYCHTCYdhBHXs5cMraBurOS+KrcMFxE0SsaKZoI6Tnp+le1aWvxUBbzNKJYyThHJqb/1mLopzEJxJCuKA==} + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260626.1': + resolution: {integrity: sha512-VDPHf8RZRzsBH6cgArK1u9sH8MODMNkvkNczEt1EXpOLfZeplIhcpKld5Zc9Da8/S9YB4768rjfBkdFokxBu+Q==} engines: {node: '>=16.20.0'} cpu: [arm64] os: [darwin] - '@typescript/native-preview-darwin-x64@7.0.0-dev.20260624.1': - resolution: {integrity: sha512-P00JVvSV90eioYDuINAKmOSA8yhFTWLq6RvS5lrCfUuDlcgr2kSOgZAfFHIksHBVz6ZXpAXpa0dHPmc5SJ3Ymw==} + '@typescript/native-preview-darwin-x64@7.0.0-dev.20260626.1': + resolution: {integrity: sha512-bi7iQZe2A90cFJ3EQnigezEI7F0e5vX6E/QUGluQ1mKZmcbbQCdAwDMDQFV8Z6w3xNrk9AYyNQbvq0DtzJX46w==} engines: {node: '>=16.20.0'} cpu: [x64] os: [darwin] - '@typescript/native-preview-linux-arm64@7.0.0-dev.20260624.1': - resolution: {integrity: sha512-cppM2yTZ/Gd1hOXy8NEJcUBxJ0O0zl9CU3OU1ZWZ/OHWWX/ukEzCCr94SUwJhjIWOylBCpIYkrvYoTwxNa94XQ==} + '@typescript/native-preview-linux-arm64@7.0.0-dev.20260626.1': + resolution: {integrity: sha512-/iptuCYiucdY0HK0nE5ydRjIx0KOf3AY7fieRaQHA4X9/s4ey37rc/58aBX3dtx0x2EhlzpXT5f0ikYY65Zynw==} engines: {node: '>=16.20.0'} cpu: [arm64] os: [linux] - '@typescript/native-preview-linux-arm@7.0.0-dev.20260624.1': - resolution: {integrity: sha512-eWHELvfQMkVRjafMd+3ATgM9p9yAergJaM4AOY8AekCNWnHFwUrp/ohh+ryyMUIqque5jjb/kuTiOiGj728I2Q==} + '@typescript/native-preview-linux-arm@7.0.0-dev.20260626.1': + resolution: {integrity: sha512-ilB0Ew5GWLrqMklNVrMdCEyNePypoEMnd4l5aUopnDRebgtXmtu0RE2GDl9LOTZ1BwlbXsuYAkEHt18Ta25hxg==} engines: {node: '>=16.20.0'} cpu: [arm] os: [linux] - '@typescript/native-preview-linux-x64@7.0.0-dev.20260624.1': - resolution: {integrity: sha512-FaB8rS+rKYz4nDrEsHsF3b4cn7eCKCYroMJReA375OuQ6PHcmCNQ6QlVetA0dfFBxTTgejmoKyfw9xgAA5P4Yw==} + '@typescript/native-preview-linux-x64@7.0.0-dev.20260626.1': + resolution: {integrity: sha512-4o80l1+RoJLkR1G4KOZjTYN1yOAGbq0K2CAP0zF35MPnD8O559Tw8OMuYA+XPpEFE0fkb7mmcxL8J9cxM/kAbw==} engines: {node: '>=16.20.0'} cpu: [x64] os: [linux] - '@typescript/native-preview-win32-arm64@7.0.0-dev.20260624.1': - resolution: {integrity: sha512-BgkqbCmSHDb5UxqWaFlFFJ/DHNT3lEUO4W8627ap6+QthJZuXk2imiHAX3PgYXC6en9fLLyR6jjcseAa4CCshg==} + '@typescript/native-preview-win32-arm64@7.0.0-dev.20260626.1': + resolution: {integrity: sha512-xHxewRWY74zJnwt4bj+Kdf6Owfs6L0Fbggb37psSa6CvofqcvSI3AyuwiBNjC0T8Eb/d/BMMXttbPJ4XXqMpXQ==} engines: {node: '>=16.20.0'} cpu: [arm64] os: [win32] - '@typescript/native-preview-win32-x64@7.0.0-dev.20260624.1': - resolution: {integrity: sha512-WaZ+ue63NgB2j/lqjirfevh/TqcsCxSqnKhGGiRnlxHyYIBcoq+x7KngyEnyGIaywJE1PcFeXA+2EMSIPlSEiQ==} + '@typescript/native-preview-win32-x64@7.0.0-dev.20260626.1': + resolution: {integrity: sha512-Iuf5nqTY4m5kxEvraDpieEf0XS6gDdjBBkw3g74pseznhpMeDFzgRvVCbSaf2pdjBNGugZbiBDVTEOclmD9cjA==} engines: {node: '>=16.20.0'} cpu: [x64] os: [win32] - '@typescript/native-preview@7.0.0-dev.20260624.1': - resolution: {integrity: sha512-ogwfNo1xuAutOF8RbTCo3Ut0q/65u2ucOeHizi6O14q+3vnelNS+u8qVC2QWXubMcwtuN5E9cbfPslvGC4kdwA==} + '@typescript/native-preview@7.0.0-dev.20260626.1': + resolution: {integrity: sha512-2RC5omeJPqWKebi5zM3nkMSrTpKpq2zLB3SfceqmFZY3vMCXtIJSE6IpA/AszlKQmNcbT/kWscmgE/PXEvnguQ==} engines: {node: '>=16.20.0'} hasBin: true @@ -1037,8 +1049,8 @@ packages: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} - cachedir@2.3.0: - resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} + cachedir@2.4.0: + resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} engines: {node: '>=6'} callsites@3.1.0: @@ -1057,8 +1069,8 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chardet@2.2.0: + resolution: {integrity: sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==} clean-publish@5.2.2: resolution: {integrity: sha512-sqM9uAXG+K7QzEn0Ur00otEHfbQTsyle4enj/388ZZQhG6daXMJ15dfD/ALsFCQCJvMZPxYwDx/QrdcdzWVPyg==} @@ -1098,9 +1110,9 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - commitizen@4.3.1: - resolution: {integrity: sha512-gwAPAVTy/j5YcOOebcCRIijn+mSjWJC+IYKivTu6aG8Ei/scoXgfsMRnuAk6b0GRste2J4NGxVdMN3ZpfNaVaw==} - engines: {node: '>= 12'} + commitizen@4.3.2: + resolution: {integrity: sha512-1Zs37z9JPvAcuTSSricZZwBhOPVNNxJouuY4yDEt+eD70EoxT2TU9kViG8CuB/PmVg2G4XsAGQiK4YCst97aDQ==} + engines: {node: '>= 18'} hasBin: true compare-func@2.0.0: @@ -1117,8 +1129,8 @@ packages: resolution: {integrity: sha512-6gfI3otXK5Ph5DfCOI1dblr+kN3FAm5a97hYoQkqNZxOaYa5WKfXH+AnpsmS+iUH2mgVC2Cg2Qw9m5OKcmNrIg==} engines: {node: '>=18'} - conventional-changelog-conventionalcommits@10.0.0: - resolution: {integrity: sha512-MI9NHlb+21eTLJyd6c8mgH2XHGz+ZaQanCFyH1A6AGtqqbTw+w9Ren4Oi5yWFi/pDehlmbnFU1pJzRqQXTOp+w==} + conventional-changelog-conventionalcommits@10.2.0: + resolution: {integrity: sha512-UtlM9GqolY7OmlQh5L/UEVoKsTUpTgUVy1PU8JN5gl5Ydaejb7WRklGliG1SKPxxj7hzA173eG3Kt5fYWE2pmg==} engines: {node: '>=22'} conventional-changelog-conventionalcommits@9.3.1: @@ -1129,8 +1141,8 @@ packages: resolution: {integrity: sha512-3riLntQf3x7tBqFJZIW5zvfRBuABhBvbU+6SdbFVhslgzkC5NEdEDSnxpCysTsHQrfrkJV/5a6E3B1sDffdbzg==} engines: {node: '>=22'} - conventional-changelog-writer@9.0.0: - resolution: {integrity: sha512-ObZEmX0tLZ+70o12bymqcn7hTFKVEGjhAfsAPXCP6nN0knB+3tljbUT+sXBaqjxa8AZrjstzV9ftuEUFUei7pA==} + conventional-changelog-writer@9.1.0: + resolution: {integrity: sha512-m3eMC0wT6gecDZCS1txbDCNurmAlLQdGyi7Os+n/sKiC1T4U/K/VJH530DCNyWwq60bUaeiPPxwtA1hMR+Pqbg==} engines: {node: '>=22'} hasBin: true @@ -1411,10 +1423,6 @@ packages: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1530,8 +1538,8 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} ieee754@1.2.1: @@ -1563,8 +1571,8 @@ packages: resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} engines: {node: ^20.17.0 || >=22.9.0} - inquirer@8.2.5: - resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + inquirer@8.2.7: + resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} engines: {node: '>=12.0.0'} is-arrayish@0.2.1: @@ -1772,9 +1780,6 @@ packages: lodash.map@4.6.0: resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - lodash@4.18.1: resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} @@ -1822,8 +1827,8 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimist@1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} @@ -1860,10 +1865,6 @@ packages: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - oxlint-tsgolint@0.23.0: resolution: {integrity: sha512-3mBv3CoPbh8dFbzfDGIWa2ytZjn2v+3EX4aKRXjIhsoGFzG8GCjfRirz3rwZf1wYbZzsNLTSgpw8VjQuWdp/jA==} hasBin: true @@ -2026,8 +2027,8 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - simple-git-hooks@2.13.0: - resolution: {integrity: sha512-N+goiLxlkHJlyaYEglFypzVNMaNplPAk5syu0+OPp/Bk6dwVoXF6FfOw2vO0Dp+JHsBaI+w6cm8TnFl2Hw6tDA==} + simple-git-hooks@2.13.1: + resolution: {integrity: sha512-WszCLXwT4h2k1ufIXAgsbiTOazqqevFCIncOuUBZJ91DdvWcC5+OFkluWRQPrcuSYd8fjq+o2y1QfWqYMoAToQ==} hasBin: true slash@5.1.0: @@ -2096,8 +2097,8 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@1.0.4: - resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} engines: {node: '>=18'} tinyglobby@0.2.17: @@ -2108,10 +2109,6 @@ packages: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -2271,9 +2268,9 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} wrap-ansi@9.0.2: resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} @@ -2356,7 +2353,7 @@ snapshots: '@commitlint/load': 21.1.0(@types/node@22.16.2)(typescript@6.0.3) '@commitlint/read': 21.1.0(conventional-commits-parser@6.4.0) '@commitlint/types': 21.1.0 - tinyexec: 1.0.4 + tinyexec: 1.2.4 yargs: 18.0.0 transitivePeerDependencies: - '@types/node' @@ -2379,13 +2376,13 @@ snapshots: '@commitlint/types': 21.1.0 ajv: 8.17.1 - '@commitlint/cz-commitlint@21.1.0(@types/node@22.16.2)(commitizen@4.3.1(@types/node@22.16.2)(typescript@6.0.3))(inquirer@8.2.5)(typescript@6.0.3)': + '@commitlint/cz-commitlint@21.1.0(@types/node@22.16.2)(commitizen@4.3.2(@types/node@22.16.2)(typescript@6.0.3))(inquirer@8.2.7(@types/node@22.16.2))(typescript@6.0.3)': dependencies: '@commitlint/ensure': 21.1.0 '@commitlint/load': 21.1.0(@types/node@22.16.2)(typescript@6.0.3) '@commitlint/types': 21.1.0 - commitizen: 4.3.1(@types/node@22.16.2)(typescript@6.0.3) - inquirer: 8.2.5 + commitizen: 4.3.2(@types/node@22.16.2)(typescript@6.0.3) + inquirer: 8.2.7(@types/node@22.16.2) is-plain-obj: 4.1.0 picocolors: 1.1.1 word-wrap: 1.2.5 @@ -2445,7 +2442,7 @@ snapshots: '@commitlint/top-level': 21.0.2 '@commitlint/types': 21.1.0 git-raw-commits: 5.0.1(conventional-commits-parser@6.4.0) - tinyexec: 1.0.4 + tinyexec: 1.2.4 transitivePeerDependencies: - conventional-commits-filter - conventional-commits-parser @@ -2493,7 +2490,7 @@ snapshots: conventional-commits-filter: 6.0.0 conventional-commits-parser: 7.0.0 - '@conventional-changelog/template@1.0.0': {} + '@conventional-changelog/template@1.2.0': {} '@emnapi/core@1.11.1': dependencies: @@ -2523,6 +2520,13 @@ snapshots: '@gwhitney/detect-indent@7.0.1': {} + '@inquirer/external-editor@1.0.3(@types/node@22.16.2)': + dependencies: + chardet: 2.2.0 + iconv-lite: 0.7.2 + optionalDependencies: + '@types/node': 22.16.2 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.5': {} @@ -2870,36 +2874,36 @@ snapshots: '@typescript-eslint/types@8.62.0': {} - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260624.1': + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260626.1': optional: true - '@typescript/native-preview-darwin-x64@7.0.0-dev.20260624.1': + '@typescript/native-preview-darwin-x64@7.0.0-dev.20260626.1': optional: true - '@typescript/native-preview-linux-arm64@7.0.0-dev.20260624.1': + '@typescript/native-preview-linux-arm64@7.0.0-dev.20260626.1': optional: true - '@typescript/native-preview-linux-arm@7.0.0-dev.20260624.1': + '@typescript/native-preview-linux-arm@7.0.0-dev.20260626.1': optional: true - '@typescript/native-preview-linux-x64@7.0.0-dev.20260624.1': + '@typescript/native-preview-linux-x64@7.0.0-dev.20260626.1': optional: true - '@typescript/native-preview-win32-arm64@7.0.0-dev.20260624.1': + '@typescript/native-preview-win32-arm64@7.0.0-dev.20260626.1': optional: true - '@typescript/native-preview-win32-x64@7.0.0-dev.20260624.1': + '@typescript/native-preview-win32-x64@7.0.0-dev.20260626.1': optional: true - '@typescript/native-preview@7.0.0-dev.20260624.1': + '@typescript/native-preview@7.0.0-dev.20260626.1': optionalDependencies: - '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260624.1 - '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260624.1 - '@typescript/native-preview-linux-arm': 7.0.0-dev.20260624.1 - '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260624.1 - '@typescript/native-preview-linux-x64': 7.0.0-dev.20260624.1 - '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260624.1 - '@typescript/native-preview-win32-x64': 7.0.0-dev.20260624.1 + '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260626.1 + '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260626.1 + '@typescript/native-preview-linux-arm': 7.0.0-dev.20260626.1 + '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260626.1 + '@typescript/native-preview-linux-x64': 7.0.0-dev.20260626.1 + '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260626.1 + '@typescript/native-preview-win32-x64': 7.0.0-dev.20260626.1 '@vitest/coverage-v8@4.1.9(vitest@4.1.9)': dependencies: @@ -3031,7 +3035,7 @@ snapshots: dependencies: run-applescript: 7.0.0 - cachedir@2.3.0: {} + cachedir@2.4.0: {} callsites@3.1.0: {} @@ -3048,7 +3052,7 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chardet@0.7.0: {} + chardet@2.2.0: {} clean-publish@5.2.2: dependencies: @@ -3085,9 +3089,9 @@ snapshots: color-name@1.1.4: {} - commitizen@4.3.1(@types/node@22.16.2)(typescript@6.0.3): + commitizen@4.3.2(@types/node@22.16.2)(typescript@6.0.3): dependencies: - cachedir: 2.3.0 + cachedir: 2.4.0 cz-conventional-changelog: 3.3.0(@types/node@22.16.2)(typescript@6.0.3) dedent: 0.7.0 detect-indent: 6.1.0 @@ -3095,10 +3099,10 @@ snapshots: find-root: 1.1.0 fs-extra: 9.1.0 glob: 7.2.3 - inquirer: 8.2.5 + inquirer: 8.2.7(@types/node@22.16.2) is-utf8: 0.2.1 - lodash: 4.17.21 - minimist: 1.2.7 + lodash: 4.18.1 + minimist: 1.2.8 strip-bom: 4.0.0 strip-json-comments: 3.1.1 transitivePeerDependencies: @@ -3118,9 +3122,9 @@ snapshots: dependencies: compare-func: 2.0.0 - conventional-changelog-conventionalcommits@10.0.0: + conventional-changelog-conventionalcommits@10.2.0: dependencies: - '@conventional-changelog/template': 1.0.0 + '@conventional-changelog/template': 1.2.0 conventional-changelog-conventionalcommits@9.3.1: dependencies: @@ -3128,9 +3132,9 @@ snapshots: conventional-changelog-preset-loader@6.0.0: {} - conventional-changelog-writer@9.0.0: + conventional-changelog-writer@9.1.0: dependencies: - '@conventional-changelog/template': 1.0.0 + '@conventional-changelog/template': 1.2.0 '@simple-libs/stream-utils': 2.0.0 conventional-commits-filter: 6.0.0 meow: 14.1.0 @@ -3142,7 +3146,7 @@ snapshots: '@simple-libs/hosted-git-info': 2.0.0 '@simple-libs/normalize-package-data': 1.0.0 conventional-changelog-preset-loader: 6.0.0 - conventional-changelog-writer: 9.0.0 + conventional-changelog-writer: 9.1.0 conventional-commits-parser: 7.0.0 fd-package-json: 2.0.0 meow: 14.1.0 @@ -3198,7 +3202,7 @@ snapshots: cz-conventional-changelog@3.3.0(@types/node@22.16.2)(typescript@6.0.3): dependencies: chalk: 2.4.2 - commitizen: 4.3.1(@types/node@22.16.2)(typescript@6.0.3) + commitizen: 4.3.2(@types/node@22.16.2)(typescript@6.0.3) conventional-commit-types: 3.0.0 lodash.map: 4.6.0 longest: 2.0.1 @@ -3375,12 +3379,6 @@ snapshots: expect-type@1.3.0: {} - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - fast-deep-equal@3.1.3: {} fast-glob@3.3.3: @@ -3505,7 +3503,7 @@ snapshots: html-escaper@2.0.2: {} - iconv-lite@0.4.24: + iconv-lite@0.7.2: dependencies: safer-buffer: 2.1.2 @@ -3531,13 +3529,13 @@ snapshots: ini@6.0.0: {} - inquirer@8.2.5: + inquirer@8.2.7(@types/node@22.16.2): dependencies: + '@inquirer/external-editor': 1.0.3(@types/node@22.16.2) ansi-escapes: 4.3.2 chalk: 4.1.2 cli-cursor: 3.1.0 cli-width: 3.0.0 - external-editor: 3.1.0 figures: 3.2.0 lodash: 4.18.1 mute-stream: 0.0.8 @@ -3547,7 +3545,9 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 - wrap-ansi: 7.0.0 + wrap-ansi: 6.2.0 + transitivePeerDependencies: + - '@types/node' is-arrayish@0.2.1: {} @@ -3687,8 +3687,6 @@ snapshots: lodash.map@4.6.0: {} - lodash@4.17.21: {} - lodash@4.18.1: {} log-symbols@4.1.0: @@ -3731,7 +3729,7 @@ snapshots: dependencies: brace-expansion: 1.1.11 - minimist@1.2.7: {} + minimist@1.2.8: {} mute-stream@0.0.8: {} @@ -3774,8 +3772,6 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 - os-tmpdir@1.0.2: {} - oxlint-tsgolint@0.23.0: optionalDependencies: '@oxlint-tsgolint/darwin-arm64': 0.23.0 @@ -3938,7 +3934,7 @@ snapshots: signal-exit@4.1.0: {} - simple-git-hooks@2.13.0: {} + simple-git-hooks@2.13.1: {} slash@5.1.0: {} @@ -3996,7 +3992,7 @@ snapshots: tinybench@2.9.0: {} - tinyexec@1.0.4: {} + tinyexec@1.2.4: {} tinyglobby@0.2.17: dependencies: @@ -4005,10 +4001,6 @@ snapshots: tinyrainbow@3.1.0: {} - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -4068,7 +4060,7 @@ snapshots: picomatch: 4.0.4 std-env: 4.0.0 tinybench: 2.9.0 - tinyexec: 1.0.4 + tinyexec: 1.2.4 tinyglobby: 0.2.17 tinyrainbow: 3.1.0 vite: 8.1.0(@types/node@22.16.2)(jiti@2.4.2) @@ -4100,7 +4092,7 @@ snapshots: word-wrap@1.2.5: {} - wrap-ansi@7.0.0: + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 81d47bd..e5aed6d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -5,11 +5,11 @@ allowBuilds: esbuild: true simple-git-hooks: true minimumReleaseAgeExclude: - - '@conventional-changelog/git-client@3.0.0 || 3.0.1' - - '@conventional-changelog/template@1.0.0' - - conventional-changelog-conventionalcommits@10.0.0 + - '@conventional-changelog/git-client@3.0.1' + - '@conventional-changelog/template@1.2.0' + - conventional-changelog-conventionalcommits@10.2.0 - conventional-changelog-preset-loader@6.0.0 - - conventional-changelog-writer@9.0.0 + - conventional-changelog-writer@9.1.0 - conventional-changelog@8.0.0 - conventional-commits-filter@6.0.0 - conventional-commits-parser@7.0.0 From a802f48528e0d3dfb06bdfcdd6db58ec753dfa5a Mon Sep 17 00:00:00 2001 From: Dan Onoshko Date: Sun, 28 Jun 2026 01:39:54 +0400 Subject: [PATCH 2/2] fix: keep preamble first Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- packages/core/src/change-log.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/src/change-log.ts b/packages/core/src/change-log.ts index da0af90..13ae2da 100644 --- a/packages/core/src/change-log.ts +++ b/packages/core/src/change-log.ts @@ -31,8 +31,8 @@ export function preamblePartial( }: FinalTemplateContext ) { return segments( - !commitGroups?.length && !noteGroups?.length && 'Version bump without any changes.', - preamble + preamble, + !commitGroups?.length && !noteGroups?.length && 'Version bump without any changes.' ) }