Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.9.0] - 2026-03-02
Added
- ESLint 10 Support: Added
eslint ^10topeerDependencies, making this config compatible with ESLint 10 projects.- Supports all three major versions:
eslint ^8,^9, and^10 - No breaking changes — all existing rules and selectors are unchanged
- Supports all three major versions:
Changed
- ALLOW_LIST: Added
repoto ALLOW_LIST to accommodate common usage in monorepos and multi-package repositories:- The identifier
repois now allowed and can be used for variables representing repositories, such asrepoUrl,repoName,repoPath, etc. - This change recognizes the widespread use of "repo" as a clear and concise term in development contexts
- The identifier
- Internal tooling: Import-alias ESLint config now conditionally exports an empty array when no path aliases are configured, preventing errors in projects without
tsconfigpath aliases. - Removed
eslint-plugin-project-structurefrom internal devDependencies (no impact on published package).
[1.8.0] - 2026-01-17
Added
- Single-Letter Variable Restrictions: Enhanced abbreviation restrictions to ban all single-letter variables except
x,y,z:- Added all single-letter variables (a-w) to DENY_LIST with context-appropriate replacement suggestions
- Only
x,y,zare allowed for coordinate systems and geometry contexts - Variables like
i,j,k,e,s,t,nnow require descriptive names (index,error,string,count, etc.) - Applied to variables, function parameters, and function names
Fixed
- Class Member Abbreviation Restrictions: Fixed abbreviation restrictions not being applied to class members:
- Class members (public, private, protected, static, readonly) now correctly validate against the abbreviation DENY_LIST
- Member names like
msg,cfg,err,info, etc. are now properly flagged as violations - Created dedicated abbreviation restriction rules for all member-like modifiers
- Updated documentation to clarify that abbreviation restrictions apply to class members
- Global Const Abbreviation Restrictions: Fixed abbreviation restrictions not being applied to global const variables:
- Global const variables (module-level
constdeclarations) now correctly validate against the abbreviation DENY_LIST - Variables like
msg,cfgat module level are now properly flagged as violations - Created dedicated
variableConstGlobalAbbreviationRestrictionrule that extendsvariableNamingConstGlobalwith abbreviation checks - Updated documentation to clarify that abbreviation restrictions apply to all variable types including global consts
- Global const variables (module-level
Changed
- ALLOW_LIST: Removed
datafrom ALLOW_LIST to enforce more descriptive naming:- The identifier
datais now banned and must be replaced with specific terms likepayload,result,records,responseBody,input, oroutput - This change encourages developers to use domain-specific names that convey actual meaning
- Updated to include only
x,y,zas allowed single-letter variables (removedx,yfrom coordinate-only context)
- The identifier
- DENY_LIST: Expanded with comprehensive single-letter entries including:
a→ array, attribute, value, accumulatorb→ boolean, buffer, byte, valuec→ character, count, class, componentd→ data, day, distance, deltae→ event, error, exception, elementi,j,k→ index, itemIndex, rowIndex, columnIndex- And more for all letters a-w
Documentation
- Updated Abbreviation Restrictions documentation:
- Emphasized single-letter variable policy at the top of "Why This Rule" section
- Added examples showing
x,y,zas allowed coordinate variables - Enhanced "Loop Indices" section to emphasize that
i,j,kare banned - Updated code examples to use VitePress snippet imports from test files
- Updated
README.mdto mention single-letter variable restrictions - Updated
docs/policies/update-policy.mdto require using code snippets from tests instead of duplicating in docs
Tests
- Added 13 single-letter variable test cases to negative examples
- Added
x,y,zcoordinate variable examples to positive tests - Updated test expectations to validate 35 total errors (32 variables + 3 parameters)
- Enhanced test snippets with ✅ and ❌ markers for clarity
[1.7.0] - 2026-01-05
Added
- Type Parameter (Generics) Naming: Added comprehensive naming conventions for generic type parameters:
- Single uppercase letters:
T,U,V,K(the four standard generic type parameters) - Prefixed descriptive names:
TData,TItem,TElement,TError(T prefix),KKey(K prefix),VValue(V prefix) - Numeric subscripts:
T0,T1,K1,K2,V1for sequences of related types - Disallows lowercase (
t,tItem), descriptive names without prefix (Type,Data), redundant suffixes (TItemType), and snake_case (T_Item)
- Single uppercase letters:
Changed
- Type-like Selector: Changed
typeLikeselector totypeAliasfor more precise targeting and to avoid conflicts with the newtypeParameterrule
Documentation
- Added comprehensive Type Parameters (Generics) documentation with rationale, examples, and references
- Updated rule matrix and types overview to include type parameters
- Updated
READMErule overview section with type parameter conventions - Clarified "Type-like" label to "Type Aliases" throughout documentation
- Updated
README"At a Glance" section with professional table format and side-by-side code examples - Restructured
READMEdocumentation section for better organization and clarity
[1.6.0] - 2025-12-26
Added
- Abbreviation Restrictions: Added comprehensive banning of common abbreviations and anti-patterns in variables, functions, and parameters:
- Bans single-letter names (e.g.,
i,j,k,e) in favor of descriptive names likeindex,itemIndex,error - Bans vague abbreviations (e.g.,
str,num,arr,obj,data,info) in favor of full words - Bans ambiguous abbreviations (e.g.,
res,req,dir,cfg) that can have multiple meanings - Includes comprehensive DENY_LIST with ~140+ abbreviations and their recommended replacements
- Includes ALLOW_LIST for well-known technical terms (
id,url,api,json,html,uuid, etc.) - Exports
DENY_LISTandALLOW_LISTfor user customization - Applied with lowest precedence to act as a safety net without interfering with specific rules
- Bans single-letter names (e.g.,
Documentation
- Added comprehensive Abbreviation Restrictions documentation with examples and customization guide
- Updated rule matrix and sidebar navigation
- Added
READMEsection explaining the new feature
[1.5.0] - 2025-12-25
Added
- Readonly Members: Added support for
UPPER_CASE, 'camelCase', andsnake_caseformat in readonly members to accommodate environment variables and constants (e.g.,VITE_API_BASE_URLinImportMetaEnvinterfaces).
Fixed
- Enum Names: Fixed issue where enums with string values (e.g.,
enum RoomFacilityAccess) were incorrectly flagged as errors. Enums with names ending inssor similar patterns (likeAccess) are now correctly recognized as singular, non-plural names.
[1.4.2] - 2025-12-24
Fixed
- ESLint 8 Compatibility: Fixed "Unexpected top-level property 'default'" error when using the legacy config (
naming/legacy) with ESLint 8. The CommonJS export now properly unwraps the configuration object, making it compatible with.eslintrc.*files.
[1.4.0] - 2025-12-22
Added
- Object Literal Properties: Added support for
UPPER_CASEformat in object literal properties to accommodate common patterns like constant objects (e.g.,HTTP_STATUS.OK,ERROR_CODES.NOT_FOUND).
Changed
- Object literal properties now allow
camelCase,snake_case,PascalCase, andUPPER_CASEformats (previously only the first three).
[1.3.5] and earlier
See GitHub Releases for earlier versions.