This release fixes issues for SREs watching stability and regressions.
✓ No known CVEs patched in this version
Topics
+12 more
Affected surfaces
Summary
AI summaryFixed ESLint config parsing bug that silently corrupted globs and patterns.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Bugfix | Medium |
Fixes corrupted glob patterns in JS/CJS ESLint configs due to flawed comment stripping. Fixes corrupted glob patterns in JS/CJS ESLint configs due to flawed comment stripping. Source: llm_adapter@2026-07-19 Confidence: low |
— |
| Bugfix | Medium |
Corrects corrupted glob patterns caused by improper comment stripping in ESLint config parser. Corrects corrupted glob patterns caused by improper comment stripping in ESLint config parser. Source: granite4.1:30b@2026-07-19-audit Confidence: low |
— |
Full changelog
Fixed
-
JS/CJS ESLint configs had their globs silently corrupted.
_jsish_to_json
stripped comments with a regex that had no string-literal awareness, so the
/**/inside an ordinary glob was read as a block comment:{ files: ['tests/**/*.ts'] } -> {"files": ["tests*.ts"]} { ignorePatterns: ['**/*.d.ts','src/**/gen'] } -> {"ignorePatterns": ["**gen"]} { url: 'https://x.test/a/**/b' } -> {"url": "https://x.test/ab"}The second case is the worst: the strip opened at the
/*in one array element
and closed at the*/in the next, silently merging two entries into one.
The line-comment pass had the same flaw with a narrower guard — it excluded only
a preceding:, sohttps://survived while any other doubled slash in a
string ('a/b//c') was truncated.Nothing warned, so
rules.jsonrecorded the mangled globs as if parsed cleanly
and a consumer would believe the test-only relaxations applied to a file set
that matches essentially nothing. Comment stripping is now a single forward
scan that tracks the active string delimiter: quotes are special only outside a
comment, comment markers only outside a string, and a backslash escapes the next
character. An unterminated comment consumes the remainder, leaving the payload
unparseable so it takes the documented parse-fail path instead of yielding a
corrupted config.Only the no-eval parser was affected;
_parse_eslint_js_via_node(opt-in behind
CHAMELEON_ALLOW_ESLINT_EVAL) always returned the correct value, which is how
the defect was isolated to this path.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Chameleon
All releases →Beta — feedback welcome: [email protected]