@m3hti/commit-genie 1.2.8 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"wordlist.d.ts","sourceRoot":"","sources":["../../src/data/wordlist.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,YAAY,aAmGvB,CAAC;AAEH,eAAO,MAAM,iBAAiB,aAoE5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,QAAQ,aAAmD,CAAC"}
1
+ {"version":3,"file":"wordlist.d.ts","sourceRoot":"","sources":["../../src/data/wordlist.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,YAAY,aAqGvB,CAAC;AAEH,eAAO,MAAM,iBAAiB,aAoE5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,QAAQ,aAAmD,CAAC"}
@@ -73,6 +73,8 @@ exports.COMMON_WORDS = new Set([
73
73
  'valid', 'invalid', 'active', 'inactive', 'enabled', 'disabled', 'visible', 'hidden',
74
74
  'empty', 'full', 'null', 'undefined', 'missing', 'unknown', 'invalid',
75
75
  'small', 'large', 'min', 'max', 'short', 'long', 'single', 'multiple',
76
+ 'double', 'triple', 'negative', 'positive', 'longest', 'shortest', 'largest', 'smallest',
77
+ 'upper', 'lower', 'inner', 'outer', 'deep', 'flat', 'average', 'total', 'sum',
76
78
  'simple', 'complex', 'basic', 'advanced', 'common', 'rare', 'special',
77
79
  'safe', 'unsafe', 'secure', 'insecure', 'trusted', 'untrusted',
78
80
  'correct', 'incorrect', 'right', 'wrong', 'true', 'false', 'yes', 'no',
@@ -1 +1 @@
1
- {"version":3,"file":"wordlist.js","sourceRoot":"","sources":["../../src/data/wordlist.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wordlist.js","sourceRoot":"","sources":["../../src/data/wordlist.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,11 @@ export declare class AnalyzerService {
32
32
  * Returns true if JS files have changes but NO actual styling changes
33
33
  */
34
34
  private static hasOnlyNonStyleJsChanges;
35
+ /**
36
+ * Extract non-comment changed lines from a diff for keyword analysis.
37
+ * Filters out comment lines to prevent false positives from descriptive text.
38
+ */
39
+ private static extractNonCommentChanges;
35
40
  /**
36
41
  * Check if the diff contains only comment changes (documentation)
37
42
  * Returns true if ALL changes are comments (no code changes)
@@ -67,6 +72,15 @@ export declare class AnalyzerService {
67
72
  * Extract affected element names (components, functions, etc.) from the diff
68
73
  */
69
74
  private static extractAffectedElements;
75
+ /**
76
+ * Extract function/class/method names from git diff @@ hunk headers.
77
+ * Git includes the enclosing scope after the second @@, e.g.:
78
+ * @@ -42,7 +42,9 @@ function processPayment(order) {
79
+ * @@ -10,5 +10,7 @@ class PaymentService {
80
+ * @@ -80,3 +82,5 @@ export const validateInput = (
81
+ * This is the most reliable way to know which function/class a change is inside.
82
+ */
83
+ private static extractHunkContext;
70
84
  /**
71
85
  * Detect function/class/type renames by comparing removed and added names
72
86
  * Returns an array of { oldName, newName } objects
@@ -1 +1 @@
1
- {"version":3,"file":"analyzerService.d.ts","sourceRoot":"","sources":["../../src/services/analyzerService.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,EAEd,aAAa,EAGb,iBAAiB,EAKlB,MAAM,UAAU,CAAC;AA+NlB,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,cAAc,IAAI,cAAc;IAiHvC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAuEpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA4RlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IA4B9B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA8DrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAyF5C;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAkEvC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA+ClC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAgCrC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA8ChC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAkBjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAkD/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA6BnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAsD9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAkDtC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IA0C5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA8CrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IA2BxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAkClC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAwFlC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAwD1C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAiD7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAK1B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAmD3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IA8B5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAkE/B;;OAEG;IACH,MAAM,CAAC,qBAAqB,IAAI,aAAa;IAkC7C;;OAEG;IACH,MAAM,CAAC,2BAA2B,IAAI,iBAAiB,EAAE;IAqLzD;;OAEG;WACU,yBAAyB,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA0E5F;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,8BAA8B;CAqC9C"}
1
+ {"version":3,"file":"analyzerService.d.ts","sourceRoot":"","sources":["../../src/services/analyzerService.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,EAEd,aAAa,EAGb,iBAAiB,EAKlB,MAAM,UAAU,CAAC;AA+NlB,qBAAa,eAAe;IAC1B;;OAEG;IACH,MAAM,CAAC,cAAc,IAAI,cAAc;IAiHvC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA0FpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA4RlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IA4B9B;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA8DrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAyF5C;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAkEvC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IA6BvC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IA+ClC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IAkCrC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,iBAAiB;IA8ChC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAkBjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAkD/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA6BnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAsD9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAuEtC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAiDjC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IA0C5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA8CrC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IA2BxC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAgDlC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAwFlC;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAyE1C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAiD7B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAK1B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAmD3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IA8B5B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAkE/B;;OAEG;IACH,MAAM,CAAC,qBAAqB,IAAI,aAAa;IAkC7C;;OAEG;IACH,MAAM,CAAC,2BAA2B,IAAI,iBAAiB,EAAE;IAqLzD;;OAEG;WACU,yBAAyB,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA0E5F;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,8BAA8B;CAoE9C"}
@@ -17,12 +17,12 @@ const COMMIT_EMOJIS = {
17
17
  perf: '⚡',
18
18
  };
19
19
  // Default keywords that indicate breaking changes
20
+ // Note: generic words like "removed" are excluded to avoid false positives
21
+ // from descriptive comments (e.g. "// Return array with zeros removed")
20
22
  const DEFAULT_BREAKING_KEYWORDS = [
21
23
  'breaking',
22
24
  'breaking change',
23
25
  'breaking-change',
24
- 'removed',
25
- 'deprecated',
26
26
  'incompatible',
27
27
  ];
28
28
  // Patterns that indicate breaking changes in code
@@ -31,12 +31,12 @@ const BREAKING_PATTERNS = [
31
31
  /^-\s*export\s+(function|class|const|let|var|interface|type|enum)\s+(\w+)/gm,
32
32
  // Removed function parameters
33
33
  /^-\s*(public|private|protected)?\s*(async\s+)?function\s+\w+\s*\([^)]+\)/gm,
34
- // Changed function signatures (removed parameters)
35
- /^-\s*\w+\s*\([^)]+\)\s*[:{]/gm,
34
+ // Changed function signatures (removed parameters) - require function-like declaration context
35
+ /^-\s*(?:export\s+)?(?:async\s+)?(?:function\s+)?\w+\s*\([^)]+\)\s*[:{]/gm,
36
36
  // Removed class methods
37
37
  /^-\s*(public|private|protected)\s+(static\s+)?(async\s+)?\w+\s*\(/gm,
38
- // Removed interface/type properties
39
- /^-\s+\w+\s*[?:]?\s*:/gm,
38
+ // Removed interface/type properties - require preceding interface/type declaration context
39
+ /^-\s+\w+\s*[?]?\s*:\s*\w/gm,
40
40
  // Major version bump in package.json
41
41
  /^-\s*"version":\s*"\d+/gm,
42
42
  ];
@@ -51,10 +51,10 @@ const ROLE_PATTERNS = {
51
51
  /^\+.*style\s*=\s*\{/m, // inline styles
52
52
  /^\+.*return\s*\(/m, // render return
53
53
  /^\+.*render\s*\(\s*\)/m, // render method
54
- /^\+.*<>|<\/>/m, // React fragments
54
+ /^\+.*(?:<>|<\/>)/m, // React fragments
55
55
  /^\+.*aria-\w+=/m, // accessibility attributes
56
56
  /^\+.*role\s*=/m, // role attribute
57
- /^\+.*onClick|onSubmit|onChange|onFocus|onBlur|onKeyDown|onKeyUp|onMouseEnter|onMouseLeave/m,
57
+ /^\+.*\b(?:onClick|onSubmit|onChange|onFocus|onBlur|onKeyDown|onKeyUp|onMouseEnter|onMouseLeave)\b/m,
58
58
  ],
59
59
  logic: [
60
60
  // Business logic patterns
@@ -324,11 +324,13 @@ class AnalyzerService {
324
324
  return { isBreaking: false, reasons: [] };
325
325
  }
326
326
  const reasons = [];
327
- const diffLower = diff.toLowerCase();
328
327
  // Check for keyword-based breaking changes
328
+ // Only check against non-comment code changes to avoid false positives
329
+ // from descriptive comments (e.g. "// Return array with zeros removed")
329
330
  const keywords = breakingConfig?.keywords || DEFAULT_BREAKING_KEYWORDS;
331
+ const codeChangesLower = this.extractNonCommentChanges(diff).toLowerCase();
330
332
  for (const keyword of keywords) {
331
- if (diffLower.includes(keyword.toLowerCase())) {
333
+ if (codeChangesLower.includes(keyword.toLowerCase())) {
332
334
  reasons.push(`Contains "${keyword}" keyword`);
333
335
  }
334
336
  }
@@ -339,10 +341,23 @@ class AnalyzerService {
339
341
  reasons.push(`Deleted source files: ${fileNames}`);
340
342
  }
341
343
  // Check for pattern-based breaking changes in diff
344
+ // Build a set of added lines to filter out reformatted lines
345
+ // (lines that appear as both - and + are just reformatted, not actually removed)
346
+ const addedLines = new Set(diff.split('\n')
347
+ .filter(line => line.startsWith('+') && !line.startsWith('+++'))
348
+ .map(line => line.substring(1).trim()));
342
349
  for (const pattern of BREAKING_PATTERNS) {
343
350
  pattern.lastIndex = 0; // Reset regex state
344
351
  const matches = diff.match(pattern);
345
352
  if (matches && matches.length > 0) {
353
+ // Filter out matches whose content also appears as an added line
354
+ // (these are reformatted lines, not actual removals)
355
+ const realRemovals = matches.filter(m => {
356
+ const content = m.replace(/^-/, '').trim();
357
+ return !addedLines.has(content);
358
+ });
359
+ if (realRemovals.length === 0)
360
+ continue;
346
361
  // Identify what type of breaking change
347
362
  if (pattern.source.includes('export')) {
348
363
  reasons.push('Removed exported members');
@@ -834,6 +849,35 @@ class AnalyzerService {
834
849
  // Return true only if we have non-style changes AND no style patterns
835
850
  return hasNonStyleChanges && !hasStylePatterns;
836
851
  }
852
+ /**
853
+ * Extract non-comment changed lines from a diff for keyword analysis.
854
+ * Filters out comment lines to prevent false positives from descriptive text.
855
+ */
856
+ static extractNonCommentChanges(diff) {
857
+ return diff.split('\n')
858
+ .filter(line => (line.startsWith('+') || line.startsWith('-')) &&
859
+ !line.startsWith('+++') &&
860
+ !line.startsWith('---'))
861
+ .map(line => line.substring(1))
862
+ .filter(line => {
863
+ const trimmed = line.trim();
864
+ if (trimmed.length === 0)
865
+ return false;
866
+ // Filter out comment lines
867
+ return !(trimmed.startsWith('//') ||
868
+ trimmed.startsWith('/*') ||
869
+ trimmed.startsWith('*') ||
870
+ trimmed.startsWith('*/') ||
871
+ trimmed.startsWith('#') ||
872
+ trimmed.startsWith('<!--') ||
873
+ trimmed.startsWith('-->') ||
874
+ trimmed.startsWith('"""') ||
875
+ trimmed.startsWith("'''") ||
876
+ /^\/\*\*/.test(trimmed) ||
877
+ /^\*\s*@\w+/.test(trimmed));
878
+ })
879
+ .join('\n');
880
+ }
837
881
  /**
838
882
  * Check if the diff contains only comment changes (documentation)
839
883
  * Returns true if ALL changes are comments (no code changes)
@@ -884,6 +928,7 @@ class AnalyzerService {
884
928
  const primaryRole = this.determinePrimaryRole(roleChanges);
885
929
  let primaryIntent = this.determineIntent(diff, stagedFiles, roleChanges);
886
930
  const affectedElements = this.extractAffectedElements(diff);
931
+ const hunkContext = this.extractHunkContext(diff);
887
932
  // Detect renames - this takes priority for determining intent
888
933
  const renames = this.detectRenames(diff);
889
934
  if (renames.length > 0) {
@@ -893,7 +938,7 @@ class AnalyzerService {
893
938
  const intentDescription = this.generateIntentDescription(primaryIntent, primaryRole, roleChanges);
894
939
  const whatChanged = renames.length > 0
895
940
  ? `${renames[0].oldName} to ${renames[0].newName}`
896
- : this.generateWhatChanged(roleChanges, affectedElements, stagedFiles);
941
+ : this.generateWhatChanged(roleChanges, affectedElements, stagedFiles, hunkContext);
897
942
  return {
898
943
  primaryRole,
899
944
  primaryIntent,
@@ -902,6 +947,7 @@ class AnalyzerService {
902
947
  whatChanged,
903
948
  hasMultipleRoles: roleChanges.filter(r => r.significance > 20).length > 1,
904
949
  renames: renames.length > 0 ? renames : undefined,
950
+ hunkContext: hunkContext.length > 0 ? hunkContext : undefined,
905
951
  };
906
952
  }
907
953
  /**
@@ -1087,48 +1133,131 @@ class AnalyzerService {
1087
1133
  */
1088
1134
  static extractAffectedElements(diff) {
1089
1135
  const elements = [];
1090
- // Extract component names (React/JSX)
1091
- const componentMatches = diff.match(/^\+.*(?:function|const)\s+([A-Z][a-zA-Z0-9]*)/gm);
1092
- if (componentMatches) {
1093
- for (const match of componentMatches) {
1094
- const nameMatch = match.match(/(?:function|const)\s+([A-Z][a-zA-Z0-9]*)/);
1095
- if (nameMatch) {
1096
- elements.push(nameMatch[1]);
1097
- }
1136
+ // Helper to add unique element names
1137
+ const addUnique = (name) => {
1138
+ if (!elements.includes(name)) {
1139
+ elements.push(name);
1098
1140
  }
1099
- }
1100
- // Extract function names
1101
- const functionMatches = diff.match(/^\+.*(?:function|const)\s+([a-z][a-zA-Z0-9]*)\s*[=(]/gm);
1102
- if (functionMatches) {
1103
- for (const match of functionMatches) {
1104
- const nameMatch = match.match(/(?:function|const)\s+([a-z][a-zA-Z0-9]*)/);
1105
- if (nameMatch && !elements.includes(nameMatch[1])) {
1106
- elements.push(nameMatch[1]);
1107
- }
1141
+ };
1142
+ // Match both added (+) and modified (-) top-level declarations.
1143
+ // For fix/refactor commits, the declaration line often appears as a removed line
1144
+ // (the old version) or only in the - side of the diff. Using [+-] ensures we
1145
+ // capture the affected function/class/component name regardless of whether
1146
+ // the declaration itself was added, removed, or modified.
1147
+ // (?!\s) after [+-] rejects indented lines (local variables inside function bodies)
1148
+ // Extract component names (PascalCase function/const declarations)
1149
+ const componentFuncMatches = diff.match(/^[+-](?!\s)(?:export\s+(?:default\s+)?)?(?:async\s+)?function\s+([A-Z][a-zA-Z0-9]*)/gm);
1150
+ if (componentFuncMatches) {
1151
+ for (const match of componentFuncMatches) {
1152
+ const nameMatch = match.match(/function\s+([A-Z][a-zA-Z0-9]*)/);
1153
+ if (nameMatch)
1154
+ addUnique(nameMatch[1]);
1155
+ }
1156
+ }
1157
+ const componentConstMatches = diff.match(/^[+-](?!\s)(?:export\s+(?:default\s+)?)?const\s+([A-Z][a-zA-Z0-9]*)\s*=\s*(?:async\s+)?(?:function|\()/gm);
1158
+ if (componentConstMatches) {
1159
+ for (const match of componentConstMatches) {
1160
+ const nameMatch = match.match(/const\s+([A-Z][a-zA-Z0-9]*)/);
1161
+ if (nameMatch)
1162
+ addUnique(nameMatch[1]);
1163
+ }
1164
+ }
1165
+ // Extract function names (camelCase declarations)
1166
+ const funcKeywordMatches = diff.match(/^[+-](?!\s)(?:export\s+(?:default\s+)?)?(?:async\s+)?function\s+([a-z][a-zA-Z0-9]*)\s*\(/gm);
1167
+ if (funcKeywordMatches) {
1168
+ for (const match of funcKeywordMatches) {
1169
+ const nameMatch = match.match(/function\s+([a-z][a-zA-Z0-9]*)/);
1170
+ if (nameMatch)
1171
+ addUnique(nameMatch[1]);
1172
+ }
1173
+ }
1174
+ // const/let arrow or function expression: const foo = (, export const foo = async (
1175
+ const funcConstMatches = diff.match(/^[+-](?!\s)(?:export\s+(?:default\s+)?)?const\s+([a-z][a-zA-Z0-9]*)\s*=\s*(?:async\s+)?(?:function|\()/gm);
1176
+ if (funcConstMatches) {
1177
+ for (const match of funcConstMatches) {
1178
+ const nameMatch = match.match(/const\s+([a-z][a-zA-Z0-9]*)/);
1179
+ if (nameMatch)
1180
+ addUnique(nameMatch[1]);
1108
1181
  }
1109
1182
  }
1110
1183
  // Extract interface/type names
1111
- const typeMatches = diff.match(/^\+.*(?:interface|type)\s+([A-Z][a-zA-Z0-9]*)/gm);
1184
+ const typeMatches = diff.match(/^[+-](?!\s)(?:export\s+)?(?:interface|type)\s+([A-Z][a-zA-Z0-9]*)/gm);
1112
1185
  if (typeMatches) {
1113
1186
  for (const match of typeMatches) {
1114
1187
  const nameMatch = match.match(/(?:interface|type)\s+([A-Z][a-zA-Z0-9]*)/);
1115
- if (nameMatch && !elements.includes(nameMatch[1])) {
1116
- elements.push(nameMatch[1]);
1117
- }
1188
+ if (nameMatch)
1189
+ addUnique(nameMatch[1]);
1118
1190
  }
1119
1191
  }
1120
1192
  // Extract class names
1121
- const classMatches = diff.match(/^\+.*class\s+([A-Z][a-zA-Z0-9]*)/gm);
1193
+ const classMatches = diff.match(/^[+-](?!\s)(?:export\s+(?:default\s+)?)?(?:abstract\s+)?class\s+([A-Z][a-zA-Z0-9]*)/gm);
1122
1194
  if (classMatches) {
1123
1195
  for (const match of classMatches) {
1124
1196
  const nameMatch = match.match(/class\s+([A-Z][a-zA-Z0-9]*)/);
1125
- if (nameMatch && !elements.includes(nameMatch[1])) {
1126
- elements.push(nameMatch[1]);
1127
- }
1197
+ if (nameMatch)
1198
+ addUnique(nameMatch[1]);
1128
1199
  }
1129
1200
  }
1130
1201
  return elements.slice(0, 5); // Limit to top 5 elements
1131
1202
  }
1203
+ /**
1204
+ * Extract function/class/method names from git diff @@ hunk headers.
1205
+ * Git includes the enclosing scope after the second @@, e.g.:
1206
+ * @@ -42,7 +42,9 @@ function processPayment(order) {
1207
+ * @@ -10,5 +10,7 @@ class PaymentService {
1208
+ * @@ -80,3 +82,5 @@ export const validateInput = (
1209
+ * This is the most reliable way to know which function/class a change is inside.
1210
+ */
1211
+ static extractHunkContext(diff) {
1212
+ const names = [];
1213
+ // Match @@ ... @@ <context> lines
1214
+ const hunkHeaderRegex = /^@@\s+[^@]+@@\s+(.+)$/gm;
1215
+ let match;
1216
+ while ((match = hunkHeaderRegex.exec(diff)) !== null) {
1217
+ const context = match[1].trim();
1218
+ if (!context)
1219
+ continue;
1220
+ // Try to extract a meaningful name from the context line
1221
+ let name = null;
1222
+ // function declarations: function foo(, async function foo(, export function foo(
1223
+ const funcMatch = context.match(/(?:export\s+(?:default\s+)?)?(?:async\s+)?function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/);
1224
+ if (funcMatch) {
1225
+ name = funcMatch[1];
1226
+ }
1227
+ // const/let/var arrow or function expression: const foo = (, export const foo = async (
1228
+ if (!name) {
1229
+ const constMatch = context.match(/(?:export\s+(?:default\s+)?)?(?:const|let|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/);
1230
+ if (constMatch) {
1231
+ name = constMatch[1];
1232
+ }
1233
+ }
1234
+ // class declarations: class Foo {, export class Foo extends Bar {
1235
+ if (!name) {
1236
+ const classMatch = context.match(/(?:export\s+(?:default\s+)?)?(?:abstract\s+)?class\s+([A-Z][a-zA-Z0-9]*)/);
1237
+ if (classMatch) {
1238
+ name = classMatch[1];
1239
+ }
1240
+ }
1241
+ // class method: methodName(, async methodName(, private methodName(, static async methodName(
1242
+ if (!name) {
1243
+ const methodMatch = context.match(/(?:public|private|protected)?\s*(?:static\s+)?(?:async\s+)?([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);
1244
+ if (methodMatch) {
1245
+ name = methodMatch[1];
1246
+ }
1247
+ }
1248
+ // interface/type declarations
1249
+ if (!name) {
1250
+ const typeMatch = context.match(/(?:export\s+)?(?:interface|type)\s+([A-Z][a-zA-Z0-9]*)/);
1251
+ if (typeMatch) {
1252
+ name = typeMatch[1];
1253
+ }
1254
+ }
1255
+ if (name && !names.includes(name)) {
1256
+ names.push(name);
1257
+ }
1258
+ }
1259
+ return names.slice(0, 5);
1260
+ }
1132
1261
  /**
1133
1262
  * Detect function/class/type renames by comparing removed and added names
1134
1263
  * Returns an array of { oldName, newName } objects
@@ -1251,8 +1380,8 @@ class AnalyzerService {
1251
1380
  /**
1252
1381
  * Generate the WHAT changed description
1253
1382
  */
1254
- static generateWhatChanged(roleChanges, affectedElements, stagedFiles) {
1255
- // If we have specific elements, use them
1383
+ static generateWhatChanged(roleChanges, affectedElements, stagedFiles, hunkContext) {
1384
+ // If we have specific elements from declarations, use them
1256
1385
  if (affectedElements.length > 0) {
1257
1386
  if (affectedElements.length === 1) {
1258
1387
  return affectedElements[0];
@@ -1262,6 +1391,18 @@ class AnalyzerService {
1262
1391
  }
1263
1392
  return `${affectedElements.slice(0, 2).join(', ')} and ${affectedElements.length - 2} more`;
1264
1393
  }
1394
+ // Fall back to hunk context (function/class names from @@ headers)
1395
+ // This is especially useful for fix/refactor where changes are inside
1396
+ // function bodies and the declaration line itself isn't in the diff
1397
+ if (hunkContext && hunkContext.length > 0) {
1398
+ if (hunkContext.length === 1) {
1399
+ return hunkContext[0];
1400
+ }
1401
+ if (hunkContext.length <= 3) {
1402
+ return hunkContext.join(', ');
1403
+ }
1404
+ return `${hunkContext.slice(0, 2).join(', ')} and ${hunkContext.length - 2} more`;
1405
+ }
1265
1406
  // Fall back to role-based description
1266
1407
  if (roleChanges.length > 0) {
1267
1408
  const primaryRole = roleChanges[0];
@@ -1361,6 +1502,7 @@ class AnalyzerService {
1361
1502
  const role = semantic.primaryRole;
1362
1503
  const verb = INTENT_VERBS[intent].present;
1363
1504
  const roleDesc = ROLE_DESCRIPTIONS[role];
1505
+ const hunkContext = semantic.hunkContext;
1364
1506
  // Handle renames specially - use "rename X to Y" format
1365
1507
  if (intent === 'rename' && semantic.renames && semantic.renames.length > 0) {
1366
1508
  const rename = semantic.renames[0];
@@ -1382,6 +1524,20 @@ class AnalyzerService {
1382
1524
  // Multiple elements or descriptive text
1383
1525
  return `${verb} ${whatChanged}`;
1384
1526
  }
1527
+ // For multiple files with identified elements
1528
+ if (stagedFiles.length > 1 && whatChanged && whatChanged !== 'code') {
1529
+ // whatChanged contains specific element names (from extractAffectedElements or hunkContext)
1530
+ if (/^[a-zA-Z_$][a-zA-Z0-9_$,\s]*$/.test(whatChanged) && !Object.values(ROLE_DESCRIPTIONS).includes(whatChanged)) {
1531
+ return `${verb} ${whatChanged} ${roleDesc}`;
1532
+ }
1533
+ }
1534
+ // When whatChanged is generic but hunk context provides specific function/class names
1535
+ if (hunkContext && hunkContext.length > 0) {
1536
+ const contextNames = hunkContext.length <= 2
1537
+ ? hunkContext.join(' and ')
1538
+ : `${hunkContext[0]} and ${hunkContext.length - 1} more`;
1539
+ return `${verb} ${contextNames} ${roleDesc}`;
1540
+ }
1385
1541
  // For multiple files or when we only have role info
1386
1542
  if (semantic.hasMultipleRoles) {
1387
1543
  // Changes span multiple concerns
@@ -1647,7 +1803,7 @@ class AnalyzerService {
1647
1803
  });
1648
1804
  }
1649
1805
  // Suggestion 3: Alternative description style
1650
- const altDescription = this.generateAlternativeDescription(analysis);
1806
+ const altDescription = this.generateAlternativeDescription(analysis, gitService_1.GitService.getDiff());
1651
1807
  if (altDescription && altDescription !== analysis.description) {
1652
1808
  const altFull = this.buildFullMessage(analysis.commitType, scope, altDescription, body, includeEmoji, ticketInfo, isBreakingChange, breakingChangeReasons);
1653
1809
  suggestions.push({
@@ -1774,17 +1930,45 @@ class AnalyzerService {
1774
1930
  /**
1775
1931
  * Generate an alternative description style
1776
1932
  */
1777
- static generateAlternativeDescription(analysis) {
1933
+ static generateAlternativeDescription(analysis, diff) {
1778
1934
  const { fileChanges, filesAffected } = analysis;
1779
1935
  const totalFiles = fileChanges.added.length + fileChanges.modified.length +
1780
1936
  fileChanges.deleted.length + fileChanges.renamed.length;
1781
- // For single file, provide more detail
1937
+ // For single file, provide more detail using extracted elements when available
1782
1938
  if (totalFiles === 1) {
1939
+ const elements = this.extractAffectedElements(diff);
1940
+ const fileName = fileChanges.added[0] || fileChanges.modified[0] || fileChanges.deleted[0] || fileChanges.renamed[0];
1941
+ if (elements.length > 0) {
1942
+ const verb = analysis.commitType === 'feat' ? 'add' :
1943
+ analysis.commitType === 'fix' ? 'fix' :
1944
+ analysis.commitType === 'refactor' ? 'refactor' : 'update';
1945
+ if (elements.length === 1) {
1946
+ return `${verb} ${elements[0]} in ${fileName}`;
1947
+ }
1948
+ if (elements.length === 2) {
1949
+ return `${verb} ${elements[0]} and ${elements[1]} in ${fileName}`;
1950
+ }
1951
+ return `${verb} ${elements[0]}, ${elements[1]} and ${elements.length - 2} more in ${fileName}`;
1952
+ }
1953
+ // Fall back to hunk context for modified files where declarations aren't in the diff
1954
+ const hunkNames = this.extractHunkContext(diff);
1955
+ if (hunkNames.length > 0) {
1956
+ const verb = analysis.commitType === 'feat' ? 'add' :
1957
+ analysis.commitType === 'fix' ? 'fix' :
1958
+ analysis.commitType === 'refactor' ? 'refactor' : 'update';
1959
+ if (hunkNames.length === 1) {
1960
+ return `${verb} ${hunkNames[0]} in ${fileName}`;
1961
+ }
1962
+ if (hunkNames.length === 2) {
1963
+ return `${verb} ${hunkNames[0]} and ${hunkNames[1]} in ${fileName}`;
1964
+ }
1965
+ return `${verb} ${hunkNames[0]}, ${hunkNames[1]} and ${hunkNames.length - 2} more in ${fileName}`;
1966
+ }
1783
1967
  if (fileChanges.added.length === 1) {
1784
1968
  return `implement ${fileChanges.added[0]}`;
1785
1969
  }
1786
1970
  if (fileChanges.modified.length === 1) {
1787
- return `improve ${fileChanges.modified[0]}`;
1971
+ return `update ${fileChanges.modified[0]}`;
1788
1972
  }
1789
1973
  }
1790
1974
  // For multiple files, be more descriptive about categories