Skip to content

chore: migrate linting, formatting and typecheck to uncheck - #51

Merged
dinwwwh merged 3 commits into
mainfrom
claude/migrate-uncheck-package-f0bd3b
Oct 3, 2026
Merged

dinwwwh merged 3 commits into
mainfrom
claude/migrate-uncheck-package-f0bd3b

Conversation

@dinwwwh

@dinwwwh dinwwwh commented Oct 3, 2026

Copy link
Copy Markdown
Member

Replaces ESLint (@antfu/eslint-config, eslint-plugin-format), lint-staged and simple-git-hooks with uncheck, which runs sherif, oxlint, oxfmt and tsc behind one command. pnpm run check and pnpm run fix now cover lint, format, typecheck and monorepo consistency, the same way as middleapi/standard-server.

Changes

  • check / fix replace lint, lint:fix, type:check and repo:fix; prepare installs a pre-commit hook that runs uncheck staged --fix.
  • oxlint and oxfmt use the middleapi presets; tsconfigs extend uncheck/tsconfig/middleapi and /lib, so tsconfig.base.json and tsconfig.lib.json are gone.
  • CI's lint_and_typecheck job becomes check, dependabot groups uncheck, oxlint and oxfmt, Zed formats with oxfmt, and the Claude Code hook runs uncheck at the end of each turn.
  • The reformat is its own commit (style: format with oxfmt): every reformatted .ts file parses to the same AST as before apart from import order, and comments are untouched.

Notes

  • The root package.json is now private, which sherif requires.
  • unicorn/no-thenable is off, since JSON Schema's if / then keywords trigger it.
  • antfu's top-level-function rule has no oxlint equivalent, so it is no longer enforced.
  • Existing clones keep the old simple-git-hooks hook, and uncheck prepare appends to it, leaving a pnpm lint-staged call that now fails. Remove it first: rm .git/hooks/pre-commit && pnpm i.

Testing

  • pnpm run check passes (sherif, oxlint, oxfmt, tsc).
  • All 197 tests pass on Node 24 and Node 20.

Replace ESLint (@antfu/eslint-config, eslint-plugin-format), lint-staged
and simple-git-hooks with uncheck, which runs sherif, oxlint, oxfmt and
tsc behind one command, matching middleapi/standard-server.
@codecov

codecov Bot commented Oct 3, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@codspeed

codspeed Bot commented Oct 3, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 20 untouched benchmarks


Comparing claude/migrate-uncheck-package-f0bd3b (cf0d52c) with main (3b11d1f)1

Open in CodSpeed

Footnotes

  1. No successful run was found on main (0e5291a) during the generation of this report, so 3b11d1f was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes

Migrates linting/formatting/typechecking from ESLint (@antfu/eslint-config, eslint-plugin-format), lint-staged and simple-git-hooks to uncheck (sherif + oxlint + oxfmt + tsc), plus the resulting oxfmt reformat.

  • Tooling swap: check = uncheck, fix = uncheck --fix, prepare = uncheck prepare --pre-commit; lint, lint:fix, type:check and repo:fix are removed. Root becomes private: true (sherif requirement). sync:sponsors ends with pnpm run fix '**/README.md'.
  • Config: eslint.config.js, tsconfig.base.json and tsconfig.lib.json are deleted; oxlint.config.ts and oxfmt.config.ts extend the uncheck middleapi presets. Root tsconfig extends uncheck/tsconfig/middleapi; both packages extend .../lib (downgrader keeps its references: [{ path: '../types' }]).
  • Typecheck coverage is preserved: uncheck discovers both package tsconfigs and ran tsc -b packages/downgrader/tsconfig.json (building types through the reference) plus tsc -p tsconfig.json --noEmit, matching the old pnpm run -r type:check && tsc.
  • CI/editor/agent wiring: the lint_and_typecheck job becomes check running pnpm run check; dependabot groups uncheck/oxlint/oxfmt; Zed formats through external oxfmt with source.fixAll.oxc; the Claude hook moves from PostToolUse (eslint) to Stop running pnpm exec uncheck hooks run --fix.
  • Reformat commit: ~55 .ts files reformatted. I canonicalized each changed file through the TypeScript compiler (ignoring whitespace, ParenthesizedExpression, quote style and import order) and every one matches its base AST exactly.

Verification: I ran the uncheck binary directly at the repo root — sherif, oxlint, oxfmt and tsc all pass. uncheck '**/README.md' accepts the glob and formats markdown, so the sync:sponsors change is sound. gh pr checks 51 shows check and all test_matrix jobs (20/22/24/26) passing.

ℹ️ Migration notes

  • Existing clones keep the old simple-git-hooks pre-commit body (pnpm lint-staged); uncheck prepare appends to it, so commits fail until .git/hooks/pre-commit is removed. The PR body calls this out, but it only lives there — worth a line in the README/CONTRIBUTING for developers pulling the change.
  • sherif prints a non-fatal non-existant-packages warning because pnpm-workspace.yaml declares apps/*, which matches nothing. Pre-existing config, now surfaced on every check; dropping apps/* would silence it.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash (free via Pullfrog for OSS) | 𝕏

@dinwwwh
dinwwwh merged commit c18a69a into main Oct 3, 2026
8 checks passed
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