Skip to content

chore(client): Phase 6b — bump TypeScript 5.9 → 6.0#555

Merged
Detair merged 1 commit into
mainfrom
chore/typescript-6-bump
May 10, 2026
Merged

chore(client): Phase 6b — bump TypeScript 5.9 → 6.0#555
Detair merged 1 commit into
mainfrom
chore/typescript-6-bump

Conversation

@Detair

@Detair Detair commented May 9, 2026

Copy link
Copy Markdown
Owner

Summary

Phase 6b of the dep-update sweep (spec, plan). Builds on Phase 6a (#554).

-    "typescript": "^5.9.3",
+    "typescript": "^6.0.3",

Surprise outcome — zero source changes

The plan anticipated a "flood of new diagnostics that Phase 6b will have to fix in source" with a precursor PR escape hatch if the volume was unmanageable. In practice, TypeScript 6.0.3 introduced no new diagnostics that fire on this codebase. bun run build (which runs tsc && vite build) is green with zero source changes.

tsconfig.json strictness level is unchanged — no relaxation, no new ignore. The bump is just a single-line dep update.

Test plan

  • bun run buildtsc && vite build green
  • bun run test:run — 32/32 files, 581/581 tests pass
  • bun audit — unchanged
  • bun run lint — CI-only (pre-existing local resolver issue)

🤖 Generated with Claude Code

Phase 6b of the dep-update sweep. Single-line dep bump:

  typescript ^5.9.3 → ^6.0.3

TypeScript 6 introduced no new strict diagnostics that fire on this
codebase. `bun run build` (which runs `tsc && vite build`) is green
with zero source changes. No tsconfig.json relaxation; strictness
level is unchanged.

Tests (32/32 files, 581/581) and bun audit are unaffected by this
dev-only bump.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Detair Detair merged commit 53ffd23 into main May 10, 2026
18 checks passed
Detair added a commit that referenced this pull request May 12, 2026
`bun run lint` has been silently broken on main since PR #555
(TypeScript 6 bump). Three distinct bugs in the chain — fixing all
three here so lint becomes useful again. Build and tests unaffected
(581/581 passing).

1. eslint.config.mjs — eslint-plugin-solid subpath
   `eslint-plugin-solid/configs/typescript.js` failed Node's stricter
   ESM resolution because the package's exports map only exposes
   `./configs/typescript` (no `.js` suffix). Removed the suffix.

2. brace-expansion override
   The override `^1.1.13 || ^5.0.6` was deliberately a union (per the
   dep-update spec, "do not drop the 1.x bound"). But the only
   consumer in the tree is `minimatch ^5.0.2` — the 1.x bound was
   vestigial. The union let bun resolve to 1.x, which doesn't expose
   the named `{ expand }` export minimatch's compiled CJS expects,
   crashing `@eslint/config-array` with
   `(0, brace_expansion_1.expand) is not a function`.
   Tightened to `^5.0.6` only.

3. no-unassigned-vars rule (ESLint 10 recommended)
   This rule was added to `@eslint/js` recommended in ESLint 10
   (Phase 6a) and fires false positives on SolidJS's ref pattern:
   `let myRef: T | undefined; <div ref={myRef}>`. The JSX ref={}
   binding form assigns the variable at render time, which ESLint's
   static analysis can't trace. Disabled — accounts for ~40 of the
   62 errors that were appearing once lint became runnable.

After this PR:
  bun run lint → 29 errors + 233 warnings, all real code findings.

Remaining errors are deliberately left for separate per-area PRs
(they touch specific files / call sites):

  14× preserve-caught-error  — missing `cause` on re-thrown errors
   8× solid/prefer-for       — Array#map should be <For>
   3× solid/no-innerhtml     — potential XSS, security review needed
   2× no-case-declarations
   1× no-useless-assignment
   1× no-control-regex

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

1 participant