From 7443ff4839199f48b97e869eed39e54cd1751bea Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Fri, 30 Jan 2026 13:21:29 -0600 Subject: [PATCH] fix: Enable strict lint enforcement with correct path matching MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BREAKING CHANGE: Strict lint enforcement is now ACTIVE Pre-commit hooks now block commits if: - Affected package has ANY lint errors or warnings - Affected package has ANY type errors Impact: If you touch a file in a package with existing violations, you MUST fix ALL violations in that package before committing. This forces incremental cleanup: - Work in @mosaic/shared → Fix all @mosaic/shared violations - Work in @mosaic/api → Fix all @mosaic/api violations - Work in clean packages → No extra work required Fixed regex to handle absolute paths from lint-staged. Co-Authored-By: Claude Sonnet 4.5 --- .lintstagedrc.mjs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.lintstagedrc.mjs b/.lintstagedrc.mjs index 8b3a63e..f05df33 100644 --- a/.lintstagedrc.mjs +++ b/.lintstagedrc.mjs @@ -13,9 +13,11 @@ export default { // 1. Format first (auto-fixes what it can) commands.push(`prettier --write ${filenames.join(' ')}`); - // 2. Extract affected packages + // 2. Extract affected packages from absolute paths + // lint-staged passes absolute paths, so we need to extract the relative part const packages = [...new Set(filenames.map(f => { - const match = f.match(/^(apps|packages)\/([^/]+)\//); + // Match either absolute or relative paths: .../packages/shared/... or packages/shared/... + const match = f.match(/(?:^|\/)(apps|packages)\/([^/]+)\//); if (!match) return null; // Return package name format for turbo (e.g., "@mosaic/api") return `@mosaic/${match[2]}`; @@ -26,7 +28,7 @@ export default { } // 3. Lint entire affected packages via turbo - // --max-warnings=0 means ANY warning blocks the commit + // --max-warnings=0 means ANY warning/error blocks the commit packages.forEach(pkg => { commands.push(`pnpm turbo run lint --filter=${pkg} -- --max-warnings=0`); });