Repository navigation
v5.0.0
forge check fails on the gate; drift (forge-pins, deps-fresh, deps-audit, deps-deprecated, renovate-active) warns, --strict fails on it.
Skip checks with reasons in package.json's forge.skip, or per run with forge check --only/--skip.
forge check --fix repairs git-hooks, renovate, deps-release-age, template-sync and forge-pins failures; git-hooks chains onto prepare, replacing husky.
forge check checks renovate-active and gitignore-env; checks run concurrently, remote ones with details.
forge init (initRepo) scaffolds the missing forge files, pinned to the release, into a repo that passes its own qa: packageManager, forge's ranges (TS 6 and 7, Vite), src/, the package fields lint wants, React configs when react is a dependency; then it checks, once the dev dependencies are installed. A throwing check fails alone.
forge-pins check: forge workflow and action pins must be the latest release; latestForgeRelease() helper.
forge sync writes the templates bundled with its version, offline; --check and the template-sync check flag drift.
Codacy is opt-in: the codacy check, the CODACY_PROJECT_TOKEN secret check, forge setup and listSecrets are removed (set the secret with gh secret set CODACY_PROJECT_TOKEN). forge sync and the template-sync check update .codacy.yml only where it exists; forge init writes no Codacy badges.
Commitlint config resolves its parser preset under Bun's isolated linker.
Coverage prints a summary under a coding agent; the react tsconfig targets ES2025; new @lzear/forge/tsconfig/base export.
Fix forge check in consumer repos: Bun's audit fails on high severity only, workspace packages skip npm lookups, publint packs with the root's manager, remote checks need a GitHub repo, --json keeps long output.
defineReactConfig and the @vitejs/plugin-react peer removed: add react() and forgePlugin() to your Vite config's plugins.
eslint-plugin-react-compiler removed: react-hooks' recommended rules run the compiler's checks. Rename react-compiler/react-compiler in your config and disable comments to the react-hooks/* rule that reports.
- Release drops the
snapshot-branchinput and itssnapshotjob. lzear-prereleaseis gone:changeset pre enter|exitremains.
./tsdown (tsdown config factories) replaces ./tsup; its tsup peer and the base tsconfig's ignoreDeprecations are gone.
react, typescript and vitest default to whether the cwd's manifests (root and workspaces) depend on them (typescript also on a tsconfig.json); breaking only for a repo that relied on a layer it doesn't depend on: pass it explicitly.
Lint JSON, Markdown (and its code blocks) and YAML: json, markdown, yaml layers, on by default.
Own consumers' repeated overrides: TanStack's only-throw-error allow, Node builtins off on JSX/TSX, default-export-style separate, sonarjs duplicates of TS and aws-* off, RESTRICTED_SYNTAX export, detected React version.
forge update holds the package manager, Node and Bun to the release-age gate, keeps corepack's hash, updates every Bun workspace keeping its ranges, and runs its network steps concurrently. Workspaces resolve from pnpm-workspace.yaml, ** globs and ! negations.
The lefthook template's pre-commit lints md, yml, yaml and jsonc files with ESLint too, and runs gitleaks on the staged changes when it is installed, naming a leak's file, line and rule.
monorepo-lintreads pnpm-workspace.yaml, so it runs sherif on pnpm-only workspaces.- The
forgefield takesrepo(owner/name), used before theoriginremote for remote checks andforge init.
The type="number" ban applies to <input> only.
The TypeScript import resolver matches the types@>=5.5 export condition.
- CI drops its advisory steps (
forge check, fallow,e18e analyze) and therun-checkinput. - The Vitest config no longer writes the
jsoncoverage report.
Upgrade from 4:
forge updatemoves the^4ranges to^5(ncu crosses majors).forge check --fixrepins forge's workflows, syncslefthook.yml(gitleaks, Markdown, YAML and JSON lint) and writes the release-age gate.eslint --fixfor the JSON, Markdown and YAML layers..codacy.ymlis no longer required.
ESLint rules
lzear/core
sonarjs/argument-type:off→errorsonarjs/aws-apigateway-public-api,sonarjs/aws-ec2-rds-dms-public,sonarjs/aws-ec2-unencrypted-ebs-volume,sonarjs/aws-efs-unencrypted,sonarjs/aws-iam-all-privileges,sonarjs/aws-iam-privilege-escalation,sonarjs/aws-iam-public-access,sonarjs/aws-opensearchservice-domain,sonarjs/aws-rds-unencrypted-databases,sonarjs/aws-restricted-ip-admin-access,sonarjs/aws-s3-bucket-granted-access,sonarjs/aws-s3-bucket-insecure-http,sonarjs/aws-s3-bucket-public-access,sonarjs/aws-s3-bucket-versioning,sonarjs/aws-sagemaker-unencrypted-notebook,sonarjs/aws-sns-unencrypted-topics,sonarjs/aws-sqs-unencrypted-queue:error→offunicorn/default-export-style: optionsnone→{ "functions": "separate" }
lzear/react
no-restricted-syntax: options changedreact-compiler/react-compiler: removed
lzear/node-browser
- new block, 1 rule
lzear/typescript
@typescript-eslint/only-throw-error: added,errorsonarjs/argument-type,sonarjs/deprecation,sonarjs/different-types-comparison,sonarjs/in-operator-type-error,sonarjs/no-array-delete,sonarjs/no-unused-vars,sonarjs/no-useless-intersection,sonarjs/unused-import: added,off
lzear/json
- new block, 4 rules
lzear/jsonc
- new block, 4 rules
lzear/json5
- new block, 4 rules
lzear/markdown
- new block, 17 rules
lzear/markdown/code-blocks
- new block, 74 rules
lzear/yaml
- new block, 20 rules
lzear/prettier/deno-json
- new block, 1 rule
lzear/prettier/yarnrc
- new block, 1 rule
lzear/prettier/markdown-code
- new block, 1 rule
Commits
a2e38aachore(deps): update actions/setup-node action to v7.1.0ee48f08chore: build before housekeep runs forge update45488d1docs(changeset): fold duplicate and internal-only entries into user-facing ones4464091docs(changeset): add the forge 4 to 5 upgrade notec6d7054chore: yarn housekeepbaa292dfeat(repo-lint): warn on drift checks, fail on them with --strict706a67dfeat(repo-lint): pick forge init's React configs from the react dependency700e3b1feat(configs)!: remove defineReactConfig65ad89ffeat(forge)!: remove forge setup68f023dfeat(eslint-config)!: drop eslint-plugin-react-compiler7fa47a9fix(repo-lint): make forge check pass in consumer repos01a9e5btest: add an end-to-end check of forge init's scaffolds52da195fix(repo-lint): make forge init scaffold a repo that passes its own qaf9963b2feat(repo-lint)!: make Codacy opt-in7d65da0feat(repo-lint): scan staged changes with gitleaks on pre-commit2e3fa57feat(repo-lint)!: drop the secret-scanning and workflow-token-read checks5066690feat(release)!: drop snapshot releases and lzear-prerelease0008d47feat(ci)!: drop the advisory CI steps nobody reads9eeaca3docs: note that an exported regex fails the dts build7ac04d4feat(repo-lint): name the GitHub repo in the forge config5ca605ffix(repo-lint): sync .codacy.yml only into repos that publish0f1bd68fix(repo-lint): run sherif on pnpm-only workspacesf9313a2style(repo-lint): format the README with Prettier3bee5cadocs: document the gitleaks job and the CI trigger events2fe6658feat(repo-lint): lint md, yml, yaml and jsonc files on pre-commit48b5893fix(repo-lint): forge init records the packageManager field7a14e5afeat(forge): forge init scaffolds a repo in one command422024efeat(repo-lint): check GitHub settings, Renovate activity and .env ignoref45eb22fix(repo-lint): git-hooks fix replaces husky in prepare4682a2dchore: yarn zizmor script passing --config .github/zizmor.yml95fe8affeat(configs): coverage summary under coding agents, react tsconfig on ES2025, forge tsconfig/base492bb05feat(eslint-config): note rule changes in the release changelog75d7bd9feat(repo-lint): forge check --fix repairs fixable failuresdf03636test(eslint-config): give config tests 30s8e68425style: format JSON files with Prettier25ed934feat(eslint-config): lint JSON, Markdown and YAML5c796f9feat(repo-lint): forge-pins check, latestForgeRelease helperb8a78bafeat(repo-lint): skip checks via package.json forge.skip, --only/--skip1a0fd42feat(repo-lint): bundle templates, forge sync --check, template-sync check666303efeat(eslint-config): detect react, typescript and vitest from manifests5121207feat(eslint-config): own consumers' repeated overrides299c61afix(repo-lint): resolve pnpm-workspace.yaml, ** and ! workspace globsba1f37afix(repo-lint): gate forge update's package manager, Node and Bun bumps by release age4167ed7feat(configs)!: drop the tsup factoryd8badedfix(eslint-config): resolve TS's types@>=5.5 export condition5bea250fix(configs): inline commitlint's parser preset for isolated installs1e2e8a4fix(repo-lint): bun update every workspace, keep the ranges9297882chore:yarn housekeep2725293fix(eslint-config): limit the number-input ban to1f2467dfeat(configs): build with tsdown, add tsdown config factoriesb0eeb80perf: run forge check alongside lint in qa6ce276aperf(repo-lint): run local check commands concurrently