@link-foundation/sensitive-data-sanitizer 0.0.0-stage → 0.11.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +530 -0
  2. package/LICENSE +24 -0
  3. package/README.md +184 -2
  4. package/bin/legacy-example-package-name.js +95 -0
  5. package/bin/sensitive-data-sanitizer.js +430 -0
  6. package/bin/stream.js +56 -0
  7. package/docs/API.md +336 -0
  8. package/docs/COVERAGE.md +136 -0
  9. package/docs/HISTORY-REMEDIATION.md +41 -0
  10. package/examples/combined-scanners.mjs +23 -0
  11. package/examples/presidio-bridge.py +32 -0
  12. package/examples/realistic-fakes.mjs +18 -0
  13. package/examples/sanitize-session.mjs +27 -0
  14. package/examples/shared-tool-logs.mjs +21 -0
  15. package/examples/stream-jsonl.mjs +17 -0
  16. package/package.json +124 -4
  17. package/src/adapters.js +204 -0
  18. package/src/arithmetic.js +11 -0
  19. package/src/confidence.js +65 -0
  20. package/src/context.js +424 -0
  21. package/src/credentials.js +54 -0
  22. package/src/detection.js +293 -0
  23. package/src/encoded.js +233 -0
  24. package/src/engines.js +348 -0
  25. package/src/entities.js +166 -0
  26. package/src/escape-spans.js +20 -0
  27. package/src/eslint-plugin.d.ts +10 -0
  28. package/src/eslint-plugin.js +193 -0
  29. package/src/external.js +169 -0
  30. package/src/fake-names.js +222 -0
  31. package/src/fake.js +524 -0
  32. package/src/files.js +131 -0
  33. package/src/gitleaks.js +194 -0
  34. package/src/history-rewrite.js +339 -0
  35. package/src/history.js +103 -0
  36. package/src/identity.js +274 -0
  37. package/src/index.d.ts +321 -0
  38. package/src/index.js +40 -0
  39. package/src/jsonl-stream.js +198 -0
  40. package/src/keywords.js +45 -0
  41. package/src/known.js +164 -0
  42. package/src/legacy.d.ts +3 -0
  43. package/src/legacy.js +2 -0
  44. package/src/locales.js +217 -0
  45. package/src/log-bytes.js +85 -0
  46. package/src/names.js +65 -0
  47. package/src/national-checks.js +129 -0
  48. package/src/national.js +128 -0
  49. package/src/outbound.js +28 -0
  50. package/src/personal-context.js +85 -0
  51. package/src/personal.js +248 -0
  52. package/src/projection.js +126 -0
  53. package/src/propagation.js +163 -0
  54. package/src/public-verifier.js +77 -0
  55. package/src/public.js +153 -0
  56. package/src/record-worker.js +20 -0
  57. package/src/rules.js +210 -0
  58. package/src/sanitizer.js +794 -0
  59. package/src/specimens.js +34 -0
  60. package/src/stream-identity.js +129 -0
  61. package/src/stream-worker.js +18 -0
  62. package/src/stream.js +449 -0
  63. package/src/structured.js +278 -0
  64. package/src/transforms.js +192 -0
  65. package/src/transliteration.js +75 -0
  66. package/src/utf8.js +60 -0
  67. package/src/vendor/entities/aws.json +42 -0
  68. package/src/vendor/entities/azure.json +182 -0
  69. package/src/vendor/entities/google.json +219 -0
  70. package/src/vendor/gitleaks/LICENSE +21 -0
  71. package/src/vendor/gitleaks/provenance.json +8 -0
  72. package/src/vendor/gitleaks/rules-0.json +268 -0
  73. package/src/vendor/gitleaks/rules-1.json +1794 -0
  74. package/src/vendor/gitleaks/rules-2.json +292 -0
  75. package/src/vendor/gitleaks/rules-3.json +263 -0
  76. package/src/vendor/gitleaks/rules-4.json +277 -0
  77. package/src/vendor/gitleaks/rules-5.json +154 -0
  78. package/src/worker-options.js +27 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,530 @@
1
+ # Changelog
2
+
3
+ ## 0.11.31
4
+
5
+ ### Patch Changes
6
+
7
+ - Fix every open CI correctness and resilience issue in the pipeline: scope the
8
+ Docker buildx cache, retry transient fetch and download failures, make the
9
+ budget wrapper escalate to SIGKILL, add a terminal status gate to every
10
+ workflow with supersede detection, verify the husky install, make the jscpd
11
+ gate analyse real files, guard the package manager declaration, turn on
12
+ command-stream errexit, gate staged formatting before release commits, add
13
+ release-preflight credential checks, and sweep zizmor/actionlint/persisted
14
+ credentials/link-recheck fixes across the workflows.
15
+
16
+ Allow protected releases to use the built-in GitHub Actions token after
17
+ metadata-only attestation, wait through npm registry propagation without
18
+ republishing, and skip deleted changesets during staged formatting checks.
19
+
20
+ Make protected-branch release fallbacks wait for real pull-request checks with
21
+ a dedicated automation token, and pin every Linux CI job to Ubuntu 24.04.
22
+
23
+ Harden CI verdicts, Docker manifest publication, timeout cleanup, broken-link
24
+ rechecks, and contributor-authored workflow logs, and refresh vulnerable
25
+ transitive development dependencies.
26
+
27
+ ## 0.11.30
28
+
29
+ ### Patch Changes
30
+
31
+ - 8b129f9: Recognise npm's E409 "Cannot publish over previously staged version" wording as an already-published conflict in `publish-retry`, so a release that reached the registry verifies instead of failing the job.
32
+
33
+ ## 0.11.29
34
+
35
+ ### Patch Changes
36
+
37
+ - 0cd60b8: Bound the use-m CDN fetch with a per-attempt deadline and a retry, and report a load failure from the script that needs it.
38
+
39
+ `loadUse()` fetched `https://unpkg.com/use-m/use.js` with a bare `fetch()`, so a CDN blip surfaced as `TypeError: fetch failed` — a message naming neither the CDN nor the URL — and a connection that was accepted but never answered was bounded only by undici's 300 s `headersTimeout`. Each attempt now carries a 15 s deadline enforced by an `AbortController`, a failed attempt is retried up to three times with exponential backoff (51 s worst case), and the final error names the URL, the attempt count and the underlying reason, keeping the original failure as its `cause`.
40
+
41
+ The seven release scripts that loaded these modules at module scope now go through `scripts/bootstrap-dependencies.mjs`, which prints a GitHub `::error::` annotation and writes the fallback outputs the workflow reads — `published=false` for `publish-to-npm.mjs`, `version_committed=false` for `version-and-commit.mjs` — so a CDN outage no longer leaves a job with an empty `GITHUB_OUTPUT` and a loader stack.
42
+
43
+ ## 0.11.28
44
+
45
+ ### Patch Changes
46
+
47
+ - Configure the release and merge-simulation commit author as `41898282+github-actions[bot]@users.noreply.github.com` in `scripts/version-and-commit.mjs` and `scripts/simulate-fresh-merge.sh`, so those commits are attributed to the `github-actions[bot]` account and no longer require an extra approval under rulesets with `require_extra_approval_for_unattributed_changes`.
48
+
49
+ Add a scheduled fail-closed high-severity audit for every committed npm lock.
50
+
51
+ Ignore successful redirects when checking Lychee reports for broken links.
52
+
53
+ Lint the workflows themselves: a new `workflows` check runs `actionlint` (from the Docker image that bundles shellcheck) and `zizmor`, and the findings they reported are fixed — the manifest digest list is built as an array, the packaging retry logs its attempt number, the npm wait passes the release version through the environment, and third-party actions are pinned to commit hashes.
54
+
55
+ Fail the web archive check on lychee errors that have no http(s) URL
56
+
57
+ `scripts/check-web-archive.mjs` only extracted `http(s)` links from the lychee
58
+ report, so errors such as a missing local file or an unresolvable root-relative
59
+ link were silently dropped. When those were the only errors the script printed
60
+ "No broken URLs found" and set `all_archived=true`, masking a failing lychee
61
+ run. The parser now matches the status marker instead of the URL and splits the
62
+ results into archivable URLs and links the Wayback Machine cannot answer; the
63
+ latter are annotated as errors and force `all_archived=false` with exit code 1.
64
+ Adds regression tests over a captured lychee report fixture.
65
+
66
+ Compare change detection paths package-relative so the ignore list (`examples/`, `.changeset/`, `experiments/`, `dev/log/`, `docs/case-studies/`) also matches in the multi-language layout, and stop reporting other languages' files as JavaScript code changes.
67
+
68
+ Publish Docker images for both amd64 and arm64 using native runners and a multi-architecture manifest.
69
+
70
+ Suppress the reviewed DEP0005 warning from the Docker manifest artifact download step.
71
+
72
+ Land the release version bump through a pull request when a repository ruleset declines the direct push to `main`, and stop reporting a GH013 rule violation as a lost push race.
73
+
74
+ Give long CI steps their own execution budget so an overrun reports `failure` instead of `cancelled`.
75
+
76
+ Fail broken-link checks until archived replacements are applied to dead links.
77
+
78
+ Load `command-stream` and `lino-arguments` through a shared use-m interop shim so the release scripts work on Node 24.
79
+
80
+ Node 22.12+ adds a synthetic `module.exports` named export to CommonJS namespaces whose names cannot be inferred, which stops use-m from unwrapping the callable default. Destructuring `$` off the result therefore yields `undefined` and every release script fails with `TypeError: $ is not a function` on the Node 24 runners the workflows request. `scripts/use-module.mjs` normalises the namespace, reports the HTTP status when `use.js` cannot be fetched, names the observed keys when no callable export is found, and traces the resolved shape under `CI_SCRIPTS_DEBUG=1`.
81
+
82
+ Report why `scripts/wait-for-npm.mjs` could not confirm a release. The check
83
+ queries the npm registry over HTTP and returns `{ available, status, httpStatus,
84
+ url, error }`, so an HTTP 404 ("not published") is distinguished from an
85
+ unanswered probe (5xx, rate limit, proxy, DNS). Every attempt logs its outcome,
86
+ and an unanswered probe no longer claims the version "did not become available
87
+ on npm" — it says the publish status is unknown and points at the registry URL
88
+ to check. The step also exposes an `npm_check_status` output.
89
+
90
+ ## 0.11.27
91
+
92
+ ### Patch Changes
93
+
94
+ - 53519f1: Report release pipeline timeout cancellations as visible failures on the default branch.
95
+
96
+ ## 0.11.26
97
+
98
+ ### Patch Changes
99
+
100
+ - 328d858: Add CodeQL analysis for JavaScript and GitHub Actions plus high-severity dependency review for pull requests.
101
+
102
+ ## 0.11.25
103
+
104
+ ### Patch Changes
105
+
106
+ - 8af8547: Require successful lint and test quality gates before manual releases can publish.
107
+
108
+ ## 0.11.24
109
+
110
+ ### Patch Changes
111
+
112
+ - dd8a969: Reject unsupported keys in generated workflow concurrency blocks.
113
+
114
+ ## 0.11.23
115
+
116
+ ### Patch Changes
117
+
118
+ - e73716a: Harden workflow inputs, checkout configuration, and deployment concurrency.
119
+
120
+ ## 0.11.22
121
+
122
+ ### Patch Changes
123
+
124
+ - d0b42fa: Keep excluded-directory changes from activating change-gated CI jobs on pull
125
+ requests and direct pushes.
126
+
127
+ ## 0.11.21
128
+
129
+ ### Patch Changes
130
+
131
+ - 5bf9619: Quote the fresh merge base ref to prevent shell word splitting.
132
+
133
+ ## 0.11.20
134
+
135
+ ### Patch Changes
136
+
137
+ - dfd681f: Report ESLint warnings only on lines changed relative to the base branch, so unchanged findings such as `local/no-changelog-comments` stop repeating on every run. Errors are still reported for all files.
138
+
139
+ ## 0.11.19
140
+
141
+ ### Patch Changes
142
+
143
+ - 8608672: Split publish and verification failure domains in `publish-to-npm.mjs`: verification now polls the npm registry with exponential backoff, and a verification miss no longer re-runs `changeset publish`.
144
+
145
+ ## 0.11.18
146
+
147
+ ### Patch Changes
148
+
149
+ - 6b3289a: Build the Dockerfile on pull requests via a new `docker-build` job, so a broken image fails the pull request instead of only surfacing after the package is published. The build uses `push: false` with `load: true` (works for fork pull requests, which have no registry credentials) and the GHA layer cache. Repositories without a Dockerfile skip the job automatically.
150
+
151
+ ## 0.11.17
152
+
153
+ ### Patch Changes
154
+
155
+ - ebaa52a: Add a least-privilege top-level `permissions: contents: read` block to `release.yml` and `links.yml` so jobs no longer inherit the repository default `GITHUB_TOKEN` scope, with write access escalated only on the publishing jobs.
156
+
157
+ ## 0.11.16
158
+
159
+ ### Patch Changes
160
+
161
+ - 1349837: Suppress the Git default-branch hint during release workflow checkout.
162
+
163
+ ## 0.11.15
164
+
165
+ ### Patch Changes
166
+
167
+ - f04c820: Quiet release logs by checking npm package versions through the registry HTTP API and removing deprecated setup-node `always-auth` config before publish-job npm commands run.
168
+
169
+ ## 0.11.14
170
+
171
+ ### Patch Changes
172
+
173
+ - 63b31c3: Harden generated preview-image pushes against main branch non-fast-forward races.
174
+
175
+ ## 0.11.13
176
+
177
+ ### Patch Changes
178
+
179
+ - Add a warning-level ESLint rule for changelog-style comments and strings.
180
+
181
+ Detect code changes from real merge commits pushed to main with the first-parent
182
+ merge diff while preserving pull request synthetic merge behavior.
183
+
184
+ ## 0.11.12
185
+
186
+ ### Patch Changes
187
+
188
+ - 89fb151: Ignore stray Markdown files when checking for pending changesets.
189
+
190
+ ## 0.11.11
191
+
192
+ ### Patch Changes
193
+
194
+ - d2e3932: Require exact changelog version headers when extracting GitHub release notes.
195
+ - e7356e9: Fail release-time changeset merging when any pending changeset is malformed.
196
+
197
+ ## 0.11.10
198
+
199
+ ### Patch Changes
200
+
201
+ - 9915756: Auto-detect single-language versus `js/` monorepo layouts when naming GitHub
202
+ releases, namespace multi-language JavaScript tags as `js_v<version>`, and
203
+ normalize prefixed tags before linking npm version badges.
204
+
205
+ ## 0.11.9
206
+
207
+ ### Patch Changes
208
+
209
+ - 49a8205: Add a post-publish smoke test that installs the just-published npm package in a clean project and verifies its entry points.
210
+
211
+ ## 0.11.8
212
+
213
+ ### Patch Changes
214
+
215
+ - 391530e: Skip the slow CI test matrix for pull requests that only touch non-code files.
216
+
217
+ ## 0.11.7
218
+
219
+ ### Patch Changes
220
+
221
+ - 674f9ce: Fix npm release path for brand-new packages (issue #77):
222
+ - `publish-to-npm.mjs` now classifies authentication / registry-configuration
223
+ failures (404/401/403, `access token expired`, `ENEEDAUTH`, etc.) as
224
+ non-retryable and fails fast with actionable guidance instead of retrying
225
+ `MAX_RETRIES` times and hiding the real cause behind a generic error.
226
+ - The `release` and `instant-release` publish steps now pass an optional
227
+ `NODE_AUTH_TOKEN` sourced from `secrets.NPM_TOKEN`, providing a first-publish
228
+ bootstrap path. OIDC trusted publishing remains the steady-state mechanism;
229
+ the token is only needed for the very first release of a new package.
230
+
231
+ ## 0.11.6
232
+
233
+ ### Patch Changes
234
+
235
+ - 8ca3e32: Harden the `publish-dockerhub` buildx boot against transient Docker Hub registry outages. A new reusable `setup-buildx-resilient` composite action pre-pulls the pinned `moby/buildkit` image with retries and a `mirror.gcr.io` pull-through fallback, then boots buildx with the driver image pinned to the locally cached copy so a `registry-1.docker.io` blip no longer fails the publish job (issue #75).
236
+
237
+ ## 0.11.5
238
+
239
+ ### Patch Changes
240
+
241
+ - 312a2fe: Add a `concurrency` block to the Broken Link Checker workflow (`links.yml`) so redundant runs are cancelled on new commits, consistent with the other workflows in the template.
242
+
243
+ ## 0.11.4
244
+
245
+ ### Patch Changes
246
+
247
+ - 35696cc: Cap generated GitHub release notes before creating releases so oversized changelog
248
+ entries link to the full tagged changelog instead of failing GitHub API
249
+ validation.
250
+
251
+ ## 0.11.3
252
+
253
+ ### Patch Changes
254
+
255
+ - a8e4030: Run the preview screenshot regeneration workflow inside the official Playwright container to avoid stalled Chromium downloads in CI, and keep the desktop packaging job on Node 20 while verifying package output before artifact upload.
256
+
257
+ ## 0.11.2
258
+
259
+ ### Patch Changes
260
+
261
+ - aeec4cb: Enforce the 1500-line architecture limit across all JavaScript (`.js`, `.mjs`, `.cjs`) and Markdown (`.md`) files in the `check-file-line-limits` CI gate, lower the documentation limit from 2500 to 1500, and exempt case-study generated-data files explicitly.
262
+
263
+ ## 0.11.1
264
+
265
+ ### Patch Changes
266
+
267
+ - 8cd0d70: Correct CI workflow concurrency and preview failure artifact handling in the template.
268
+
269
+ ## 0.11.0
270
+
271
+ ### Minor Changes
272
+
273
+ - e7025ed: Add a release-time `preview-regen` job to `example-app.yml` and a
274
+ `scripts/update-preview-images.mjs` driver that boot the universal example app
275
+ in a headless Chromium via `browser-commander` + Playwright, capture a
276
+ locale × theme matrix of screenshots into `docs/screenshots/example-app/`, and
277
+ commit any drift back to `main` with `[skip ci]`. Adds the matching
278
+ `npm run example:web:preview-images` script.
279
+
280
+ ## 0.10.2
281
+
282
+ ### Patch Changes
283
+
284
+ - f044604: Document the one-time **Settings → Pages → Source = GitHub Actions** prerequisite for the example app deployment, and note it in a comment above the `pages-deploy` job.
285
+
286
+ ## 0.10.1
287
+
288
+ ### Patch Changes
289
+
290
+ - ede9f84: Publish the template as the real link-foundation example package and add the globally installable CLI entry point.
291
+
292
+ ## 0.10.0
293
+
294
+ ### Minor Changes
295
+
296
+ - 5a81a7f: Add a universal React example app with GitHub Pages, Electron desktop, and Capacitor mobile build paths.
297
+
298
+ ## 0.9.0
299
+
300
+ ### Minor Changes
301
+
302
+ - f23283c: Add an optional Docker Hub publishing path that waits for the exact npm
303
+ package version before tagging Docker images.
304
+
305
+ ## 0.8.6
306
+
307
+ ### Patch Changes
308
+
309
+ - acccf75: Format GitHub release names as human-readable `[Language] x.y.z` titles while keeping prefixed tag names unchanged.
310
+
311
+ ## 0.8.5
312
+
313
+ ### Patch Changes
314
+
315
+ - Fail GitHub release creation on unexpected gh api errors and clearly skip releases that already exist.
316
+
317
+ Enforce npm and Node.js minimum versions for trusted publishing setup and resolve a supported npm 11 tarball for fallback installs.
318
+
319
+ ## 0.8.4
320
+
321
+ ### Patch Changes
322
+
323
+ - 031f7cd: Add explicit CI job timeouts and per-test runner timeout limits.
324
+
325
+ ## 0.8.3
326
+
327
+ ### Patch Changes
328
+
329
+ - bdaa4b7: Derive release script package names from package.json instead of template placeholders.
330
+
331
+ ## 0.8.2
332
+
333
+ ### Patch Changes
334
+
335
+ - d179bb7: Add warning annotations for files approaching the CI file line limit.
336
+
337
+ ## 0.8.1
338
+
339
+ ### Patch Changes
340
+
341
+ - f0c69af: Normalize language-prefixed release tags before building npm shields.io badge URLs.
342
+
343
+ ## 0.8.0
344
+
345
+ ### Minor Changes
346
+
347
+ - 3e45a9c: Add `--tag-prefix` option to release scripts for multi-language repos
348
+
349
+ The `create-github-release.mjs` and `format-github-release.mjs` scripts now accept a `--tag-prefix` CLI parameter (defaulting to `v`) that allows users to customize the git tag prefix. This enables use in multi-language repositories where different language packages need distinct tag prefixes (e.g., `js-v1.0.0` vs `rust-v1.0.0`).
350
+
351
+ ## 0.7.3
352
+
353
+ ### Patch Changes
354
+
355
+ - ae2cc9a: Add self-healing release mechanism that checks npm registry for unpublished versions
356
+
357
+ ## 0.7.2
358
+
359
+ ### Patch Changes
360
+
361
+ - 9126e16: fix: npm upgrade fallbacks and Node.js 24.x upgrade for CI/CD
362
+ - Upgrade Node.js from 20.x to 24.x in all workflow files (avoids broken npm in Node.js 22.22.2)
363
+ - Add 4-strategy fallback chain to setup-npm.mjs (standard, curl tarball, npx, corepack)
364
+ - Update GitHub Actions to latest versions (checkout v6, setup-node v6, create-pull-request v8)
365
+ - Add case study documentation for issue #33
366
+
367
+ ## 0.7.1
368
+
369
+ ### Patch Changes
370
+
371
+ - 6916409: Use per-commit diff instead of full-PR diff for CI change detection
372
+
373
+ ## 0.7.0
374
+
375
+ ### Minor Changes
376
+
377
+ - 983789a: Add CI/CD best practices from hive-mind: fast-fail job ordering, test compilation, file line limits check, secrets detection, documentation validation, extracted fresh merge simulation script, and proper cancellation propagation
378
+
379
+ ## 0.6.0
380
+
381
+ ### Minor Changes
382
+
383
+ - 8961862: Add automated broken link checker with Web Archive fallback suggestions
384
+ - Add `.github/workflows/links.yml` with lychee-action for link checking in Markdown and HTML files
385
+ - Add `scripts/check-web-archive.mjs` to check broken links against the Wayback Machine API
386
+ - Add `.lycheeignore` for excluding known false-positive URLs (localhost, example.com, etc.)
387
+ - Update `README.md` to document the broken link checker feature
388
+ - Scheduled weekly check (Mondays at 09:00 UTC) to catch links that break over time
389
+ - On PRs, broken links with no Web Archive fallback will fail the check
390
+ - For broken links that have archived versions, provides actionable replacement suggestions
391
+ - On scheduled runs, automatically creates a GitHub Issue with the full broken links report
392
+
393
+ Fixes #27
394
+
395
+ ## 0.5.1
396
+
397
+ ### Patch Changes
398
+
399
+ - e398190: Add comprehensive best practices comparison and improve CI concurrency
400
+ - Add DETAILED-COMPARISON.md with side-by-side analysis of ALL scripts, workflows, and configurations
401
+ - Implement cancel-in-progress for main branch concurrency (hive-mind Issue #1274 fix)
402
+ - Fix max-lines documentation (1500, not 1000)
403
+ - Reference detailed comparison from BEST-PRACTICES.md
404
+
405
+ ## 0.5.0
406
+
407
+ ### Minor Changes
408
+
409
+ - 66211b5: Add fresh merge simulation to CI/CD to prevent stale merge preview issues
410
+ - Add "Simulate fresh merge with base branch" step to lint and test jobs
411
+ - This ensures PR CI validates the actual merge result, not a stale snapshot
412
+ - Prevents CI failures on main branch after merging PRs that sat open for days
413
+ - Add case study documentation for issue #23 with root cause analysis
414
+ - Add ignore patterns for case study data files in ESLint and Prettier
415
+
416
+ See docs/case-studies/issue-23 for detailed analysis of the stale merge preview problem.
417
+
418
+ Fixes #23
419
+
420
+ ## 0.4.0
421
+
422
+ ### Minor Changes
423
+
424
+ - e6c2691: Add multi-language repository support for CI/CD scripts
425
+ - Add `scripts/js-paths.mjs` utility for automatic JavaScript package root detection
426
+ - Support both `./package.json` (single-language) and `./js/package.json` (multi-language repos)
427
+ - Add `--legacy-peer-deps` flag to npm install commands in release scripts to fix ERESOLVE errors
428
+ - Save and restore working directory after `cd` commands to fix `command-stream` library's `process.chdir()` behavior
429
+ - Add case study documentation with root cause analysis in `docs/case-studies/issue-21/`
430
+
431
+ ## 0.3.0
432
+
433
+ ### Minor Changes
434
+
435
+ - 80d9c84: Add CI check to prevent manual version modification in package.json
436
+ - Added `check-version.mjs` script that detects manual version changes in PRs
437
+ - Added `check-changesets.mjs` script to check for pending changesets (converted from inline shell)
438
+ - Added `version-check` job to release.yml workflow
439
+ - Automated release PRs (changeset-release/_ and changeset-manual-release-_) are automatically skipped
440
+
441
+ ## 0.2.2
442
+
443
+ ### Patch Changes
444
+
445
+ - 9a12139: Fix CI/CD check differences between pull request and push events
446
+
447
+ Changes:
448
+ - Add `detect-changes` job with cross-platform `detect-code-changes.mjs` script
449
+ - Make lint job independent of changeset-check (runs based on file changes only)
450
+ - Allow docs-only PRs without changeset requirement
451
+ - Handle changeset-check 'skipped' state in dependent jobs
452
+ - Exclude `.changeset/`, `docs/`, `experiments/`, `examples/` folders and markdown files from code changes detection
453
+
454
+ ## 0.2.1
455
+
456
+ ### Patch Changes
457
+
458
+ - 55aef41: Make Bun the primary runtime choice throughout the template
459
+ - Update all shebangs from `#!/usr/bin/env node` to `#!/usr/bin/env bun` in scripts, experiments, and case studies
460
+ - Update README.md to prioritize Bun in all sections (features, development, runtime support, package managers, scripts reference)
461
+ - Update examples to list Bun first
462
+ - Bun now described as "Primary runtime with highest performance" and "Primary choice" for package management
463
+ - Maintains full compatibility with Node.js and Deno
464
+
465
+ ## 0.2.0
466
+
467
+ ### Minor Changes
468
+
469
+ - d3f7fcd: Improve changeset CI/CD robustness for concurrent PRs
470
+ - Update validate-changeset.mjs to only check changesets ADDED by the current PR (not pre-existing ones)
471
+ - Add merge-changesets.mjs script to combine multiple pending changesets during release
472
+ - Merged changesets use highest version bump type (major > minor > patch) and combine descriptions chronologically
473
+ - Update release workflow to pass SHA environment variables and add merge step
474
+ - Add comprehensive case study documentation for the CI/CD improvement
475
+ - This prevents PR failures when multiple PRs merge before a release cycle completes
476
+
477
+ ## 0.1.4
478
+
479
+ ### Patch Changes
480
+
481
+ - e9703b9: Add ESLint complexity rules with reasonable thresholds
482
+
483
+ ## 0.1.3
484
+
485
+ ### Patch Changes
486
+
487
+ - 0198aaa: Add case study documentation comparing best practices from effect-template
488
+
489
+ This changeset adds comprehensive documentation analyzing best practices from
490
+ ProverCoderAI/effect-template repository, identifying gaps in our current setup,
491
+ and providing prioritized recommendations for improvements.
492
+
493
+ Key findings include missing best practices like code duplication detection (jscpd),
494
+ ESLint complexity rules, VS Code settings, and test coverage thresholds.
495
+
496
+ ## 0.1.2
497
+
498
+ ### Patch Changes
499
+
500
+ - 2ea9b78: Enforce strict no-unused-vars ESLint rule without exceptions. All unused variables, arguments, and caught errors must now be removed or used. The `_` prefix no longer suppresses unused variable warnings.
501
+
502
+ ## 0.1.1
503
+
504
+ ### Patch Changes
505
+
506
+ - 042e877: Fix GitHub release formatting to support Major/Minor/Patch changes
507
+
508
+ The release formatting script now correctly handles all changeset types (Major, Minor, Patch) instead of only Patch changes. This ensures that:
509
+ - Section headers are removed from release notes
510
+ - PR detection works for all release types
511
+ - NPM badges are added correctly
512
+
513
+ ## 0.1.0
514
+
515
+ ### Minor Changes
516
+
517
+ - 65d76dc: Initial template setup with complete AI-driven development pipeline
518
+
519
+ Features:
520
+ - Multi-runtime support for Node.js, Bun, and Deno
521
+ - Universal testing with test-anywhere framework
522
+ - Automated release workflow with changesets
523
+ - GitHub Actions CI/CD pipeline with 9 test combinations
524
+ - Code quality tools: ESLint + Prettier with Husky pre-commit hooks
525
+ - Package manager agnostic design
526
+
527
+ All notable changes to this project will be documented in this file.
528
+
529
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
530
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
package/LICENSE ADDED
@@ -0,0 +1,24 @@
1
+ This is free and unencumbered software released into the public domain.
2
+
3
+ Anyone is free to copy, modify, publish, use, compile, sell, or
4
+ distribute this software, either in source code form or as a compiled
5
+ binary, for any purpose, commercial or non-commercial, and by any
6
+ means.
7
+
8
+ In jurisdictions that recognize copyright laws, the author or authors
9
+ of this software dedicate any and all copyright interest in the
10
+ software to the public domain. We make this dedication for the benefit
11
+ of the public at large and to the detriment of our heirs and
12
+ successors. We intend this dedication to be an overt act of
13
+ relinquishment in perpetuity of all present and future rights to this
14
+ software under copyright law.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
20
+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21
+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
23
+
24
+ For more information, please refer to <https://unlicense.org>