@7n/rules 1.87.0 → 1.88.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.88.0] - 2026-08-05
4
+
5
+ ### Changed
6
+
7
+ - Rust-CLI `rules-cli` розбирає argv через `clap` — одна граматика замість трьох ручних парсерів (Р11). Значення прапорців тепер приймаються в обох формах (`--root <шлях>` і `--root=<шлях>`; раніше `rename-yaml-extensions` розумів лише другу, решта команд — лише першу); прапорець без значення став помилкою розбору замість мовчазного `null`; за дубльованого прапорця береться останнє входження, а не перше. `rename-yaml-extensions` більше не ковтає невідомий аргумент мовчки — раніше друкарська помилка в прапорці тихо запускала перейменування файлів, тепер це usage-помилка (код `2`) і зʼявилась довідка `--help`; той самий код `2` тепер і в `changed-files` (був `1`). На поверхнях, які бінар ще ділить із JS-CLI (`lint`, `hook`, `ci plan`, `skill`), невідомий аргумент, як і раніше, не помилка — argv делегується в JS. Довідка `lint --help` лишилась байт-у-байт незмінною.
8
+
9
+ ## [1.87.1] - 2026-08-05
10
+
11
+ ### Changed
12
+
13
+ - docs(plans): реєстр — перенесення зі зрізу 6 і відновлення втраченого (#404)
14
+
3
15
  ## [1.87.0] - 2026-08-05
4
16
 
5
17
  ### Changed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@7n/rules",
3
- "version": "1.87.0",
3
+ "version": "1.88.0",
4
4
  "description": "CLI еталонних правил і skills (префікс n-): синк у репозиторій, дельта-lint, конформність",
5
5
  "keywords": [
6
6
  "cli",
@@ -66,7 +66,7 @@
66
66
  "rename-yaml-extensions": "bun ./bin/n-rules.js rename-yaml-extensions"
67
67
  },
68
68
  "dependencies": {
69
- "@7n/llm-lib": "3.0.0",
69
+ "@7n/llm-lib": "3.0.1",
70
70
  "ajv": "^8.20.0",
71
71
  "cli-progress": "^3.12.0",
72
72
  "github-actionlint": "^1.7.12",
@@ -83,9 +83,9 @@
83
83
  "zod": "^4.4.3"
84
84
  },
85
85
  "optionalDependencies": {
86
- "@7n/rules-darwin-arm64": "1.87.0",
87
- "@7n/rules-linux-x64": "1.87.0",
88
- "@7n/rules-win32-x64": "1.87.0",
86
+ "@7n/rules-darwin-arm64": "1.88.0",
87
+ "@7n/rules-linux-x64": "1.88.0",
88
+ "@7n/rules-win32-x64": "1.88.0",
89
89
  "@earendil-works/pi-ai": "0.80.10",
90
90
  "@earendil-works/pi-coding-agent": "0.80.10"
91
91
  },
@@ -108,7 +108,11 @@ export async function lint(ctx) {
108
108
  // послідовний cat-file на запис дешевший за розбір бінарного `cat-file --batch`.
109
109
  const blob = await spawnAsync(git, ['cat-file', 'blob', entry.sha], { cwd, signal: ctx.signal })
110
110
  if (blob.exitCode !== 0) continue
111
- const target = blob.stdout.replace(/\n+$/u, '')
111
+ // Хвостові переводи рядка зрізаємо циклом, а не регексом: `/\n+$/`
112
+ // позначений як super-linear (backtracking), а `trimEnd()` зʼїв би ще й
113
+ // пробіли — а вони в цілі симлінка значущі.
114
+ let target = blob.stdout
115
+ while (target.endsWith('\n')) target = target.slice(0, -1)
112
116
  if (target.length === 0) continue
113
117
 
114
118
  const absolute = isAbsoluteTarget(target)