Skip to content

fix: resolve install ERESOLVE on quilt — downgrade typescript ^7.0.2 → ^6.0.3 (#33) - #34

Merged
SuperInstance merged 1 commit into
mainfrom
fix/quilt-33-typescript-downgrade
Sep 29, 2026
Merged

SuperInstance merged 1 commit into
mainfrom
fix/quilt-33-typescript-downgrade

Conversation

@SuperInstance

Copy link
Copy Markdown
Owner

What

Aligns the typescript pin to the @typescript-eslint peer ceiling until typescript-eslint catches up. Closes #33.

Why

@typescript-eslint/eslint-plugin@8.70.1 declares peer typescript@">=4.8.4 <6.1.0". The typescript 7.0.2 bump in #31 satisfies that range on its own — but violates it on the peer side, because the plugin's runtime imports typescript and depends on its API.

Per the Coddy typescript-7 changelog (Sept 2026): TypeScript 7.0 ships no stable JavaScript API. Tools that import the compiler as a library — typescript-eslint (type-aware lint rules), ts-node, Vue/Svelte/Angular template checkers, MDX — keep using TypeScript 6. The TS team expects TS 7.1 to ship a new, different API; until then the supported path is the @typescript/typescript6 npm alias alongside TS 7's tsc.

npm install (no flags) refuses to resolve. Every CI job — test (node 20), test (node 22), lint, security audit — dies at the Install dependencies step, before any code runs.

Fix

Minimal, reversible: pin typescript at ^6.0.3 (the pre-#31 state). Touches only the typescript pin in 6 package.jsons (root + packages/cli, core, mcp, sdk, tui); package-lock.json regenerated.

The TS 7 lane can re-open cleanly with two follow-up moves:

  1. Bump @typescript-eslint/eslint-plugin and @typescript-eslint/parser to ^9.x when the typescript-eslint team ships peerDeps aligned to TS 7.
  2. Use @typescript/typescript6 as an npm alias for ts-node and the type-aware lint rules, while the build uses TS 7's tsc.

That is a 2-PR lane (eslint pin + alias) — out of scope here.

Verification

Local clone at depth-30 (commit f3fbcbd):

command result
npm install 232 packages added, 0 ERESOLVE
npm run lint 0 errors, 14 warnings (pre-existing comma-dangle)
npm test 15/15 pass, 0 fail, 0 skip

Out of scope

cc: keeper (R57 fallback-aware doctrine applied — restore green, then re-attempt the major when peer lands).

…→ ^6.0.3

Closes #33 (TS7 post-merge health check).

Cause: @typescript-eslint/eslint-plugin@8.70.1 declares peer typescript
">=4.8.4 <6.1.0"; the typescript 7.0.2 bump (PR #31) violates it and npm
refuses ci/install at the resolver stage. Every CI job dies at install,
before any test or lint runs.

Per the Coddy typescript-7 changelog (Sept 2026): typescript 7.0 ships no
stable JavaScript API, and tools like typescript-eslint, ts-node, and the
Vue/Svelte/Angular template checkers call that API. The TS team expects
typescript 7.1 to ship a new, different API — until then, TS 7 + these
tools require an npm alias (@typescript/typescript6) and dual tsc config.

Minimal reversible fix: align with the current typescript-eslint ceiling
(6.0.x). Touches only the typescript pin in 6 package.jsons (root +
packages/cli,core,mcp,sdk,tui); package-lock.json regenerated.

Verified locally on depth-30 clone:
- npm install resolves cleanly (232 packages added, 0 ERESOLVE)
- npm run lint: 0 errors, 14 warnings (pre-existing comma-dangle)
- npm test: 15/15 pass, 0 fail, 0 skip across the @quilt/cli suite

Re-open the 7.x lane when typescript-eslint 9.x ships with peerDeps
aligned to TS 7.0; that bump will arrive in a separate PR with the
@typescript/typescript6 alias for ts-node only (CI lint will be 9.x then).

Note: this restores main to green from c9b5e9f (post-#32); no other
shipped code changes. publish-rubygems.yml remains chronically red on
its own pre-merge baseline (issue #33 documents, not caused by).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TS7 post-merge health check: ci red on main since the typescript 6.0.3 → 7.0.2 merge (ERESOLVE: @typescript-eslint peer caps typescript <6.1.0)

1 participant