leerness 1.9.20 → 1.9.21

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.
package/bin/harness.js CHANGED
@@ -6,7 +6,7 @@ const path = require('path');
6
6
  const cp = require('child_process');
7
7
  const readline = require('readline');
8
8
 
9
- const VERSION = '1.9.20';
9
+ const VERSION = '1.9.21';
10
10
  const MARK = '<!-- leerness:managed -->';
11
11
  const README_START = '<!-- leerness:project-readme:start -->';
12
12
  const README_END = '<!-- leerness:project-readme:end -->';
@@ -1496,7 +1496,8 @@ function verifyClaimCmd(root, taskId) {
1496
1496
  // (1.9.19까지: src|bin|tests|public|lib 하드코딩 → Godot scenes/scripts 미검출)
1497
1497
  // 변경: 확장자 화이트리스트 기반. 디렉토리는 선택적 (project.godot 같은 루트 파일도 잡음).
1498
1498
  // 확장자는 길이 내림차순(긴 것 먼저 매치) + \b 종결로 .ts vs .tscn 구분.
1499
- const FILE_EXTS = 'webmanifest|dockerfile|tscn|tres|godot|json5|jsx|tsx|yaml|html|scss|sass|less|gltf|json|toml|mdx|xml|css|svg|yml|md|js|ts|gd|cs|py|rb|go|rs|kt|sh|h';
1499
+ // 1.9.21: 설정/메타 파일 확장자 추가 — Godot export_presets.cfg 등 false negative 보완
1500
+ const FILE_EXTS = 'webmanifest|dockerfile|properties|tscn|tres|godot|json5|jsx|tsx|yaml|html|scss|sass|less|gltf|conf|json|toml|lock|mdx|xml|css|svg|yml|cfg|ini|env|md|js|ts|gd|cs|py|rb|go|rs|kt|sh|h';
1500
1501
  const FILE_RE = new RegExp(`(?:[A-Za-z][A-Za-z0-9_-]*\\/)?[A-Za-z][\\w./-]*\\.(?:${FILE_EXTS})\\b`, 'g');
1501
1502
  const filePatterns = evidence.match(FILE_RE) || [];
1502
1503
  // 중복 제거 + "tests/test.js" 같은 결과를 유지 (이미 `..` 없으니 그대로)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "leerness",
3
- "version": "1.9.20",
3
+ "version": "1.9.21",
4
4
  "description": "Leerness: 비파괴 마이그레이션, 자동 버전 감지·업데이트, 계획/진행/핸드오프 자동화, 게으름·시크릿·인코딩 자동 가드, Claude Code 슬래시 통합을 갖춘 한국어 우선 AI 개발 하네스.",
5
5
  "keywords": [
6
6
  "leerness",
package/scripts/e2e.js CHANGED
@@ -566,6 +566,25 @@ total++;
566
566
  if (!ok) { failed++; console.log(r.stdout.slice(0, 500)); }
567
567
  }
568
568
 
569
+ // 1.9.21 회귀: 설정 파일 확장자 (.cfg/.ini/.env/.toml/.lock) 추가
570
+ total++;
571
+ {
572
+ const tmpC = fs.mkdtempSync(path.join(os.tmpdir(), 'leerness-cfg-'));
573
+ cp.spawnSync(process.execPath, [CLI, 'init', tmpC, '--yes', '--language', 'ko', '--skills', 'recommended'], { stdio: 'ignore', timeout: 30000 });
574
+ fs.writeFileSync(path.join(tmpC, 'export_presets.cfg'), '[preset.0]\n');
575
+ fs.writeFileSync(path.join(tmpC, 'config.ini'), '[main]\n');
576
+ fs.writeFileSync(path.join(tmpC, 'Cargo.lock'), '# lock\n');
577
+ fs.appendFileSync(path.join(tmpC, '.harness/progress-tracker.md'),
578
+ '| T-0030 | done | 설정 | export_presets.cfg + config.ini + Cargo.lock | next | 2026-05-14 |\n');
579
+ const r = cp.spawnSync(process.execPath, [CLI, 'verify-claim', 'T-0030', '--path', tmpC], { encoding: 'utf8', timeout: 15000 });
580
+ const ok = r.status === 0
581
+ && /✓ export_presets\.cfg/.test(r.stdout)
582
+ && /✓ config\.ini/.test(r.stdout)
583
+ && /✓ Cargo\.lock/.test(r.stdout);
584
+ console.log(ok ? '✓ B(1.9.21) verify-claim regex: .cfg/.ini/.lock 등 설정 메타 파일' : '✗ .cfg/.ini 확장 실패');
585
+ if (!ok) { failed++; console.log(r.stdout.slice(0, 500)); }
586
+ }
587
+
569
588
  total++;
570
589
  {
571
590
  // jest 출력 파싱