From c129e1993df6432f81496fe719ed7740c8c63a9d Mon Sep 17 00:00:00 2001 From: Shinrai Date: Sat, 3 Oct 2026 22:44:10 -0700 Subject: [PATCH 1/2] fix(fix-headers): never rewrite an existing @Author Drop forceAuthorUpdate from the shared config. With it on (together with useGpgSignerAuthor), anyone who ran fix-headers in an extending repository replaced every file's @Author with their own name. @Author records who created the file, so fix-headers' default of keeping it is the right house setting; a repository can still turn the option on for a one-off migration. Refs #15 --- README.md | 4 ++-- fix-headers.json | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 732b90c..cdaa165 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,6 @@ Each file is exposed through `package.json` `exports`, so it resolves by its spe "company": "CLDMV", "companyName": "Catalyzed Motivation Inc.", "copyrightStartYear": 2013, - "forceAuthorUpdate": true, "forceLastModifiedAuthorUpdate": true, "fixCreatedDate": true, "normalizeDateFormat": true, @@ -122,13 +121,14 @@ Each file is exposed through `package.json` `exports`, so it resolves by its spe | `company` | `"CLDMV"` | Write `@Author` as `Name ` | | `companyName` | `"Catalyzed Motivation Inc."` | The copyright holder in `@Copyright`. fix-headers v2 has no built-in holder and otherwise reads it from the manifest author (`CLDMV`) | | `copyrightStartYear` | `2013` | The first year of the `@Copyright` range, for every file | -| `forceAuthorUpdate` | `true` | Always rewrite `@Author` / `@Email` to the detected values | | `forceLastModifiedAuthorUpdate` | `true` | Always rewrite `@Last modified by` to the detected values | | `fixCreatedDate` | `true` | Move an existing `@Date` back to the oldest of itself, the file's first git commit and its filesystem creation time | | `normalizeDateFormat` | `true` | Write every header date in the git `%aI` form (`2026-03-01T17:59:32-08:00`) | | `strictCreatedDate` | `true` | With `--check`, fail on an `@Date` later than the file's first commit or creation time instead of only warning | | `margin` | `1` | One blank line between the header and the file's next content. The fix-headers default is two, which prettier collapses to one | +An existing `@Author` is never rewritten: it records who created the file, and fix-headers keeps it unless `forceAuthorUpdate` is set, which this config deliberately leaves off. A repository can turn it on in its own config for a one-off migration of old author names. + The full description of every option is in the [fix-headers README](https://github.com/CLDMV/fix-headers#readme). ### Using it by URL diff --git a/fix-headers.json b/fix-headers.json index ddc1582..32be474 100644 --- a/fix-headers.json +++ b/fix-headers.json @@ -4,7 +4,6 @@ "company": "CLDMV", "companyName": "Catalyzed Motivation Inc.", "copyrightStartYear": 2013, - "forceAuthorUpdate": true, "forceLastModifiedAuthorUpdate": true, "fixCreatedDate": true, "normalizeDateFormat": true, From 60ff28587510cf6061508fe188d1ea22e660db55 Mon Sep 17 00:00:00 2001 From: Shinrai Date: Sat, 3 Oct 2026 22:56:51 -0700 Subject: [PATCH 2/2] fix(fix-headers): set forceAuthorUpdate to false explicitly Keep the option in the shared config as false instead of omitting it, so the decision is visible and overrides anything earlier in an extends chain. --- README.md | 4 +++- fix-headers.json | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cdaa165..d838455 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,7 @@ Each file is exposed through `package.json` `exports`, so it resolves by its spe "company": "CLDMV", "companyName": "Catalyzed Motivation Inc.", "copyrightStartYear": 2013, + "forceAuthorUpdate": false, "forceLastModifiedAuthorUpdate": true, "fixCreatedDate": true, "normalizeDateFormat": true, @@ -121,13 +122,14 @@ Each file is exposed through `package.json` `exports`, so it resolves by its spe | `company` | `"CLDMV"` | Write `@Author` as `Name ` | | `companyName` | `"Catalyzed Motivation Inc."` | The copyright holder in `@Copyright`. fix-headers v2 has no built-in holder and otherwise reads it from the manifest author (`CLDMV`) | | `copyrightStartYear` | `2013` | The first year of the `@Copyright` range, for every file | +| `forceAuthorUpdate` | `false` | Never rewrite an existing `@Author` / `@Email`; they record who created the file. A missing value is still filled in | | `forceLastModifiedAuthorUpdate` | `true` | Always rewrite `@Last modified by` to the detected values | | `fixCreatedDate` | `true` | Move an existing `@Date` back to the oldest of itself, the file's first git commit and its filesystem creation time | | `normalizeDateFormat` | `true` | Write every header date in the git `%aI` form (`2026-03-01T17:59:32-08:00`) | | `strictCreatedDate` | `true` | With `--check`, fail on an `@Date` later than the file's first commit or creation time instead of only warning | | `margin` | `1` | One blank line between the header and the file's next content. The fix-headers default is two, which prettier collapses to one | -An existing `@Author` is never rewritten: it records who created the file, and fix-headers keeps it unless `forceAuthorUpdate` is set, which this config deliberately leaves off. A repository can turn it on in its own config for a one-off migration of old author names. +An existing `@Author` is never rewritten: it records who created the file, and this config sets `forceAuthorUpdate` to `false` explicitly so the decision is visible and wins over anything earlier in an `extends` chain. A repository can turn it on in its own config for a one-off migration of old author names. The full description of every option is in the [fix-headers README](https://github.com/CLDMV/fix-headers#readme). diff --git a/fix-headers.json b/fix-headers.json index 32be474..d8be6a4 100644 --- a/fix-headers.json +++ b/fix-headers.json @@ -4,6 +4,7 @@ "company": "CLDMV", "companyName": "Catalyzed Motivation Inc.", "copyrightStartYear": 2013, + "forceAuthorUpdate": false, "forceLastModifiedAuthorUpdate": true, "fixCreatedDate": true, "normalizeDateFormat": true,