diff --git a/commitlint.config.cjs b/commitlint.config.cjs index 9d6340f3..f135c032 100644 --- a/commitlint.config.cjs +++ b/commitlint.config.cjs @@ -17,8 +17,8 @@ module.exports = { 'build', // Build system → no release 'revert' // Revert commit → PATCH ]], - // Subject must be lowercase - 'subject-case': [2, 'always', 'lower-case'], + // Subject case - disabled to allow capital letters + 'subject-case': [0], // Max header length (type + scope + subject) 'header-max-length': [2, 'always', 100] } diff --git a/package.json b/package.json index aa9d5550..523e471e 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "build:watch": "tsc --watch", "build:server": "tsc && node scripts/add-shebang.js", "build:all": "bun run ui:build && bun run build:server", - "prebuild": "rm -rf dist tsconfig.tsbuildinfo", + "prebuild": "node scripts/clean-dist.js", "prebuild:all": "rm -rf dist tsconfig.tsbuildinfo", "postbuild:all": "node scripts/verify-bundle.js", "typecheck": "tsc --noEmit", diff --git a/scripts/clean-dist.js b/scripts/clean-dist.js new file mode 100644 index 00000000..f3a8580c --- /dev/null +++ b/scripts/clean-dist.js @@ -0,0 +1,46 @@ +#!/usr/bin/env node + +/** + * Clean dist directory while preserving UI bundle + * The UI bundle is built separately and should not be deleted during regular builds + */ + +const fs = require('fs'); +const path = require('path'); + +const DIST_DIR = path.join(__dirname, '../dist'); +const TSCONFIG_BUILDINFO = path.join(__dirname, '../tsconfig.tsbuildinfo'); + +// Directories to preserve (from UI build) +const PRESERVE = new Set(['ui']); + +function cleanDist() { + // Remove tsconfig.tsbuildinfo + if (fs.existsSync(TSCONFIG_BUILDINFO)) { + fs.unlinkSync(TSCONFIG_BUILDINFO); + } + + // If dist doesn't exist, nothing to clean + if (!fs.existsSync(DIST_DIR)) { + return; + } + + const entries = fs.readdirSync(DIST_DIR, { withFileTypes: true }); + + for (const entry of entries) { + // Skip preserved directories + if (PRESERVE.has(entry.name)) { + continue; + } + + const fullPath = path.join(DIST_DIR, entry.name); + + if (entry.isDirectory()) { + fs.rmSync(fullPath, { recursive: true, force: true }); + } else { + fs.unlinkSync(fullPath); + } + } +} + +cleanDist();