chore: replace CHANGELOG.md with git-based release notes

Remove the 15k-line auto-generated CHANGELOG.md and its conventional-changelog
tooling. The bump-android-version script now derives Play Store fastlane
changelogs from git log between tags instead of parsing CHANGELOG.md.

- Use execFileSync with argv to avoid shell injection
- Filter merge commits with --no-merges
- Handle breaking-change prefix (feat!:) in regex
- Truncate at line boundaries for 500-char Play Store limit
- Remove conventional-changelog-cli and @conventional-changelog/git-client deps
- Remove release.changelog script from package.json
This commit is contained in:
Johannes Millan 2026-03-04 15:35:30 +01:00
parent 7164a5e44b
commit 1272d6e7bf
4 changed files with 43 additions and 16646 deletions

15546
CHANGELOG.md

File diff suppressed because one or more lines are too long

1094
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -94,8 +94,7 @@
"ng": "ng",
"pack": "electron-builder --dir",
"preCheck": "npm run lint && npm run test & npm run int:test && npm run e2e",
"release": "npm run release.changelog && npm run dist",
"release.changelog": "conventional-changelog -i CHANGELOG.md -s -p angular",
"release": "npm run dist",
"removeWOFF1": "node ./tools/remove-woff.js",
"serveProd": "ng serve --configuration production",
"start": "npm run electron:build && cross-env NODE_ENV=DEV electron .",
@ -119,7 +118,7 @@
"test:tz:all": "npm run test && npm run test:tz:la && npm run test:tz:tokyo && npm run test:tz:sydney && npm run test:tz:utc",
"test:date-utils": "cross-env TZ='Europe/Berlin' ng test --watch=false --include='src/app/util/**/format-*.spec.ts' --include='src/app/util/**/date-*.spec.ts'",
"test:date-utils:tz": "npm run test:date-utils && cross-env TZ='America/Los_Angeles' npm run test:date-utils && cross-env TZ='Asia/Tokyo' npm run test:date-utils",
"version": "npm run prebuild && npm run release.changelog && node ./tools/bump-android-version.js && git add -A",
"version": "npm run prebuild && node ./tools/bump-android-version.js && git add -A",
"prettier": "pretty-quick",
"prettier:file": "prettier --write",
"lint:file": "ng lint --lint-file-patterns",
@ -224,7 +223,6 @@
"chart.js": "^4.5.1",
"chrono-node": "^2.9.0",
"clipboard": "^2.0.11",
"conventional-changelog-cli": "^5.0.0",
"core-js": "^3.47.0",
"cross-env": "^7.0.3",
"detect-it": "^4.0.1",
@ -281,7 +279,6 @@
"typia": "^11.0.3"
},
"overrides": {
"@conventional-changelog/git-client": "^2.5.1",
"app-builder-lib": {
"minimatch": "10.1.1"
}

View file

@ -67,8 +67,7 @@ if (isPreRelease) {
}
// CREATE fastlane changelog file
// Define the paths
const changelogPath = path.join(__dirname, '..', 'CHANGELOG.md');
const { execFileSync } = require('child_process');
const outputDir = path.join(
__dirname,
'..',
@ -81,25 +80,30 @@ const outputDir = path.join(
);
const outputFilePath = path.join(outputDir, `${versionCodeDroid}.txt`);
// Read the changelog.md file
const changelogContent = fs.readFileSync(changelogPath, 'utf8');
// Extract the latest changes
const lines = changelogContent.split('\n').slice(2); // Remove the first two lines;
let latestChanges = '';
let headerCount = 0;
// Get commit messages between previous tag and HEAD
const currentTag = execFileSync('git', ['describe', '--tags', '--abbrev=0', 'HEAD'], {
encoding: 'utf8',
}).trim();
const prevTag = execFileSync(
'git',
['describe', '--tags', '--abbrev=0', `${currentTag}~1`],
{ encoding: 'utf8' },
).trim();
const gitLog = execFileSync(
'git',
['log', `${prevTag}...HEAD`, '--no-merges', '--pretty=format:- %s'],
{ encoding: 'utf8' },
);
// Strip conventional-commit prefixes (e.g. "feat(tasks): " → "")
let latestChanges = gitLog.replace(/^- \w+(\([^)]*\))?!?:\s*/gm, '- ');
// Truncate to 500 chars at line boundaries for Play Store limit
const lines = latestChanges.split('\n');
let truncated = '';
for (const line of lines) {
if (line.startsWith('# [') || line.startsWith('## [')) {
headerCount++;
if (headerCount === 1) break;
}
latestChanges += line + '\n';
if ((truncated + line + '\n').length > 500) break;
truncated += line + '\n';
}
// Remove all links from the extracted text
latestChanges = latestChanges
.replace(/\[([^\]]+)\]\([^\)]+\)/g, '$1')
.replace(/\s*\([a-f0-9]{7}\)\s*$/gm, '');
latestChanges = truncated.trimEnd();
// Ensure the output directory exists
if (!fs.existsSync(outputDir)) {