|
1 | 1 | # @bomb.sh/tools |
2 | 2 |
|
| 3 | +## 0.6.0 |
| 4 | + |
| 5 | +### Minor Changes |
| 6 | + |
| 7 | +- 23997e5: Runs `publint` as a publish gate in `bsh build` and generates types by default |
| 8 | + |
| 9 | + - After a successful build, `bsh build` now runs `publint` (strict mode) against the emitted `dist/` and fails on errors — publishing mistakes like missing declaration files or broken `exports` targets are caught at build time instead of at publish. |
| 10 | + - Type declarations (`.d.mts`) are now generated by default; pass `--no-dts` to opt out. If your `package.json` declares types but they aren't emitted, the build now fails. |
| 11 | + - Entry globs that match nothing now fail with a clear message (`No entry files matched: …`) instead of tsdown's opaque `Error: undefined Cannot find entry`. |
| 12 | + - `bsh publint` output now renders full messages (e.g. which `exports` target is broken) instead of bare rule codes. |
| 13 | + |
| 14 | +- e4ad9d2: Makes `bsh` pass its own lint and widens the test fixture API |
| 15 | + |
| 16 | + - The shared oxlint config now exempts `*.config.*` files and oxlint JS plugins (`rules/**`) from `import/no-default-export` — config files and plugins legitimately require default exports. |
| 17 | + - `Fixture.write()` and `Fixture.append()` in `@bomb.sh/tools/test-utils` now accept plain strings (previously typed `Uint8Array`-only, which contradicted the runtime behavior). |
| 18 | + - `bsh test` raises the default vitest `testTimeout` to 15s — integration tests spawn real oxlint/knip binaries, which can exceed 5s on a loaded machine. |
| 19 | + - Internal: replaces all `node:path` usage with URL APIs, consolidates the duplicate knip config (`package.json#knip` was silently ignored in favor of `knip.jsonc`), and throws a coded `ToolsError` instead of a generic `Error`. |
| 20 | + |
| 21 | +- f66e1df: Makes `bsh lint --fix` fix far more than it used to |
| 22 | + |
| 23 | + - `--fix` now chains `knip --fix` after oxlint: unused dependencies and devDependencies are removed from `package.json` automatically. Dead-code fixes (unused exports/types) additionally run with `--fix --strict`; unused files are never deleted automatically. knip fixes respect your knip config — keep `ignoreDependencies` accurate, since untraceable deps (e.g. binaries referenced by path) will otherwise be removed. |
| 24 | + - The stock `no-console` rule is replaced by `bombshell-dev/no-console-log`, which auto-fixes `console.log` → `console.info` (semantically neutral in Node — they're the same stdout write). Other unlisted console methods are still flagged but not auto-fixed. |
| 25 | + |
| 26 | +- 74356f7: Scopes the `bombshell-dev/exported-function-async` and `bombshell-dev/require-export-jsdoc` lint rules to a package's public API surface |
| 27 | + |
| 28 | + `bsh lint` now derives the public surface from `package.json` (`exports`, `bin`, and `main`/`module`, mapping `dist/` paths back to `src/`), including conventional `packages/*/` workspace members. These two rules no longer fire on internal modules — only on files consumers can actually import. Packages without a publish surface (apps, examples) are exempt entirely, and wildcard passthrough exports (`"./*": "./dist/*"`) don't designate surface. |
| 29 | + |
| 30 | +- c276677: Restructures `bsh lint` output and tiers knip's dead-code checks behind `--strict` |
| 31 | + |
| 32 | + - Errors are now always shown in full; warnings collapse to a per-rule count (pass `--warnings` to see them). Warnings never affect the exit code, so this keeps actual failures visible. |
| 33 | + - Adds `--format json` for a machine-readable report (`{ summary, violations }`). Use `pnpm -s run lint -- --format json` to keep stdout clean. |
| 34 | + - Knip's dead-code issues (unused exports, types, and files) now only run with `--strict` — they fire constantly mid-implementation and are only meaningful as a commit-time gate. Dependency hygiene issues (unused dependencies/devDependencies) still always run. |
| 35 | + - Fixes `tsgo` silently type-checking nothing: file arguments made it skip the project `tsconfig` (TS5112), so default runs reported zero type errors. Type checking now always runs in project mode and explicit targets filter the report instead. This may surface previously hidden type errors. |
| 36 | + - Widens the default oxlint target from `./src` to the whole project (gitignored paths like `dist/` are respected), matching the scope of knip and tsgo. |
| 37 | + - Turns off `unicorn/consistent-function-scoping` and `no-underscore-dangle`, which fired frequently but were never deliberately enabled. |
| 38 | + - `--fix` now only exits non-zero when errors remain (previously any warning failed the run). |
| 39 | + |
| 40 | +- 83c20f7: Replaces the stock `max-params` lint rule with a Bombshell-aware version |
| 41 | + |
| 42 | + The 2-parameter limit (use an options bag beyond that) now only applies to signatures we author. Functions conforming to APIs we don't control are exempt: `override` methods, members of classes that `extends` or `implements` (e.g. Node streams, platform-shaped interfaces), and inline callbacks passed to other functions. |
| 43 | + |
| 44 | +- 7a80756: Updates the shared `tsconfig.json` baseline for modern Node packages |
| 45 | + |
| 46 | + - `target` and `lib` move from `es2022` to `es2024`, so modern APIs like `Array.prototype.toSorted` and `Promise.withResolvers` type-check without shims. |
| 47 | + - Adds `"types": ["node"]`. Packages must now have `@types/node` installed — missing it previously surfaced as dozens of `Cannot find name 'process'/'Buffer'` (TS2591) errors; now it's a single actionable `Cannot find type definition file for 'node'` (TS2688). Remedy: `pnpm add -D @types/node`. |
| 48 | + |
| 49 | +### Patch Changes |
| 50 | + |
| 51 | +- 7fe9353: Updates the `lint`, `build`, and `lifecycle` skills to match current `bsh` behavior |
| 52 | + |
| 53 | + The lint skill no longer claims publint runs in `pnpm run lint` (it gates `pnpm run build`), documents `--strict`, `--warnings`, and `--format json`, and adds a remedies table mapping common violations to their sanctioned fixes. The lifecycle skill moves the knip dead-code gate (`lint --strict`) to the PR handoff step. |
| 54 | + |
3 | 55 | ## 0.5.6 |
4 | 56 |
|
5 | 57 | ### Patch Changes |
|
0 commit comments