disk-space-saviour 0.0.0-stage → 0.12.0

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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,587 @@
1
+ # Changelog
2
+
3
+ ## 0.12.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Add `disk-space-saviour` (`dss`): a CLI and library that safely reclaims disk
8
+ space. `dss scan` reports caches and build outputs of 20+ ecosystems, version
9
+ managers, browser/IDE/AI caches, agent snapshots, system logs and forgotten
10
+ projects, and recurses into Docker: host daemons, running containers (scanned
11
+ through `docker exec`, never stopped), stopped containers (inspected with
12
+ `docker cp`, git-verified, never removed without confirmation) and nested
13
+ Docker-in-Docker daemons. `dss clean --tier safe|moderate|aggressive` deletes
14
+ with liveness and git re-checks before every item, and `dss emergency --free
15
+ 20G | --until 80%` escalates tiers until the goal is met. Every run writes a
16
+ JSON audit log.
17
+
18
+ Liveness detection matches tools by executable name as well as process name,
19
+ so a Node.js tool whose main thread is renamed (for example `MainThread`) is
20
+ still seen as running. A Docker-in-Docker CI job (`npm run test:dind`) checks
21
+ recursion two daemons deep, cleaning inside running containers, and the
22
+ approval, Git and log-backup rules for stopped containers.
23
+
24
+ Open files are matched through symlinks (a scan of `/var/...` sees files that
25
+ `lsof` reports under `/private/var/...` on macOS), and process working
26
+ directories are read with `lsof` on macOS, so a tool running elsewhere does not
27
+ block a project it is not using.
28
+
29
+ The Security workflow checks that the repository's dependency graph is enabled
30
+ before the dependency review. When it is disabled, the review is skipped with a
31
+ warning that links to the setting, and `npm audit` still fails on high-severity
32
+ advisories in every lock. Before, every pull request failed on this setting.
33
+
34
+ Fix every open CI correctness and resilience issue in the pipeline: scope the
35
+ Docker buildx cache, retry transient fetch and download failures, make the
36
+ budget wrapper escalate to SIGKILL, add a terminal status gate to every
37
+ workflow with supersede detection, verify the husky install, make the jscpd
38
+ gate analyse real files, guard the package manager declaration, turn on
39
+ command-stream errexit, gate staged formatting before release commits, add
40
+ release-preflight credential checks, and sweep zizmor/actionlint/persisted
41
+ credentials/link-recheck fixes across the workflows.
42
+
43
+ Find more regenerable data on developer Macs. New rules cover app updates
44
+ staged by Sparkle and Squirrel (ShipIt), Chrome, Yandex Browser and Firefox
45
+ HTTP caches, the Discord cache, Cursor, Windsurf and Qoder caches, the
46
+ TypeScript type acquisition cache, the rust-script cache, old playwright-go
47
+ drivers, Claude Code MCP logs and abandoned Codex runtime installs. Each
48
+ browser and updater has its own busy check, so a running Chrome does not hold
49
+ back the Firefox cache. Browser, editor and Claude Code paths are also listed
50
+ for Linux (`~/.cache`, `~/.config`) and Windows (`%LOCALAPPDATA%`, `%APPDATA%`).
51
+
52
+ Extension folders of VS Code forks (`.windsurf`, `.codeium`, `.qoder`, `.kiro`,
53
+ `.trae`) are no longer searched for projects: their bundled `node_modules`
54
+ were reported as removable, and deleting them breaks the extension.
55
+
56
+ Restore the `cargo-superseded` rule and prune Rust leaf artifacts while cargo runs, keeping library artifacts. `dss clean` watches PID 1, agents and build tools in every environment and stops cleaning it when one of them disappears. Stopped containers show their owning session, task URL, exit code, OOM flag and end time; containers kept for investigation are removed only with `--remove-container ID`. Unused tagged images show size, creation date and last user, and are removed only with `--remove-image REF` or an interactive yes per image; `--remove-unused-images` is rejected.
57
+
58
+ List the browser HTTP caches, VS Code fork caches, Discord cache and staged
59
+ macOS app updates in the README's coverage summary.
60
+
61
+ Fix the release job: the formatting check before the release commit no longer
62
+ passes the changesets that `changeset version` deleted to prettier, which
63
+ failed on the missing files and stopped every release.
64
+
65
+ The `bin` paths in `package.json` drop the leading `./`, so `npm publish` no
66
+ longer warns that the `dss` commands were "invalid and removed" (npm only
67
+ normalized them; the commands were always installed).
68
+
69
+ Report fixes from #7: `dss docker scan` lists a layer shared by several
70
+ images and tags once, with every tag on one line; the summary counts items
71
+ that need `--remove-image` or another explicit consent as `needs explicit
72
+ consent` instead of adding them to the tier totals; and a container is no
73
+ longer labelled with a session taken from a counter or flag such as `1`.
74
+
75
+ Recheck Git, liveness, Docker mounts, browser revisions, and saved scan reports before cleanup. Protect uncommitted work in stopped containers and agent snapshots, and limit emergency cleanup to the target filesystem.
76
+
77
+ Make protected-branch release fallbacks wait for real pull-request checks with
78
+ a dedicated automation token, and pin every Linux CI job to Ubuntu 24.04.
79
+
80
+ Harden CI verdicts, Docker manifest publication, timeout cleanup, broken-link
81
+ rechecks, and contributor-authored workflow logs, and refresh vulnerable
82
+ transitive development dependencies.
83
+
84
+ ## 0.11.30
85
+
86
+ ### Patch Changes
87
+
88
+ - 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.
89
+
90
+ ## 0.11.29
91
+
92
+ ### Patch Changes
93
+
94
+ - 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.
95
+
96
+ `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`.
97
+
98
+ 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.
99
+
100
+ ## 0.11.28
101
+
102
+ ### Patch Changes
103
+
104
+ - 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`.
105
+
106
+ Add a scheduled fail-closed high-severity audit for every committed npm lock.
107
+
108
+ Ignore successful redirects when checking Lychee reports for broken links.
109
+
110
+ 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.
111
+
112
+ Fail the web archive check on lychee errors that have no http(s) URL
113
+
114
+ `scripts/check-web-archive.mjs` only extracted `http(s)` links from the lychee
115
+ report, so errors such as a missing local file or an unresolvable root-relative
116
+ link were silently dropped. When those were the only errors the script printed
117
+ "No broken URLs found" and set `all_archived=true`, masking a failing lychee
118
+ run. The parser now matches the status marker instead of the URL and splits the
119
+ results into archivable URLs and links the Wayback Machine cannot answer; the
120
+ latter are annotated as errors and force `all_archived=false` with exit code 1.
121
+ Adds regression tests over a captured lychee report fixture.
122
+
123
+ 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.
124
+
125
+ Publish Docker images for both amd64 and arm64 using native runners and a multi-architecture manifest.
126
+
127
+ Suppress the reviewed DEP0005 warning from the Docker manifest artifact download step.
128
+
129
+ 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.
130
+
131
+ Give long CI steps their own execution budget so an overrun reports `failure` instead of `cancelled`.
132
+
133
+ Fail broken-link checks until archived replacements are applied to dead links.
134
+
135
+ Load `command-stream` and `lino-arguments` through a shared use-m interop shim so the release scripts work on Node 24.
136
+
137
+ 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`.
138
+
139
+ Report why `scripts/wait-for-npm.mjs` could not confirm a release. The check
140
+ queries the npm registry over HTTP and returns `{ available, status, httpStatus,
141
+ url, error }`, so an HTTP 404 ("not published") is distinguished from an
142
+ unanswered probe (5xx, rate limit, proxy, DNS). Every attempt logs its outcome,
143
+ and an unanswered probe no longer claims the version "did not become available
144
+ on npm" — it says the publish status is unknown and points at the registry URL
145
+ to check. The step also exposes an `npm_check_status` output.
146
+
147
+ ## 0.11.27
148
+
149
+ ### Patch Changes
150
+
151
+ - 53519f1: Report release pipeline timeout cancellations as visible failures on the default branch.
152
+
153
+ ## 0.11.26
154
+
155
+ ### Patch Changes
156
+
157
+ - 328d858: Add CodeQL analysis for JavaScript and GitHub Actions plus high-severity dependency review for pull requests.
158
+
159
+ ## 0.11.25
160
+
161
+ ### Patch Changes
162
+
163
+ - 8af8547: Require successful lint and test quality gates before manual releases can publish.
164
+
165
+ ## 0.11.24
166
+
167
+ ### Patch Changes
168
+
169
+ - dd8a969: Reject unsupported keys in generated workflow concurrency blocks.
170
+
171
+ ## 0.11.23
172
+
173
+ ### Patch Changes
174
+
175
+ - e73716a: Harden workflow inputs, checkout configuration, and deployment concurrency.
176
+
177
+ ## 0.11.22
178
+
179
+ ### Patch Changes
180
+
181
+ - d0b42fa: Keep excluded-directory changes from activating change-gated CI jobs on pull
182
+ requests and direct pushes.
183
+
184
+ ## 0.11.21
185
+
186
+ ### Patch Changes
187
+
188
+ - 5bf9619: Quote the fresh merge base ref to prevent shell word splitting.
189
+
190
+ ## 0.11.20
191
+
192
+ ### Patch Changes
193
+
194
+ - 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.
195
+
196
+ ## 0.11.19
197
+
198
+ ### Patch Changes
199
+
200
+ - 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`.
201
+
202
+ ## 0.11.18
203
+
204
+ ### Patch Changes
205
+
206
+ - 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.
207
+
208
+ ## 0.11.17
209
+
210
+ ### Patch Changes
211
+
212
+ - 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.
213
+
214
+ ## 0.11.16
215
+
216
+ ### Patch Changes
217
+
218
+ - 1349837: Suppress the Git default-branch hint during release workflow checkout.
219
+
220
+ ## 0.11.15
221
+
222
+ ### Patch Changes
223
+
224
+ - 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.
225
+
226
+ ## 0.11.14
227
+
228
+ ### Patch Changes
229
+
230
+ - 63b31c3: Harden generated preview-image pushes against main branch non-fast-forward races.
231
+
232
+ ## 0.11.13
233
+
234
+ ### Patch Changes
235
+
236
+ - Add a warning-level ESLint rule for changelog-style comments and strings.
237
+
238
+ Detect code changes from real merge commits pushed to main with the first-parent
239
+ merge diff while preserving pull request synthetic merge behavior.
240
+
241
+ ## 0.11.12
242
+
243
+ ### Patch Changes
244
+
245
+ - 89fb151: Ignore stray Markdown files when checking for pending changesets.
246
+
247
+ ## 0.11.11
248
+
249
+ ### Patch Changes
250
+
251
+ - d2e3932: Require exact changelog version headers when extracting GitHub release notes.
252
+ - e7356e9: Fail release-time changeset merging when any pending changeset is malformed.
253
+
254
+ ## 0.11.10
255
+
256
+ ### Patch Changes
257
+
258
+ - 9915756: Auto-detect single-language versus `js/` monorepo layouts when naming GitHub
259
+ releases, namespace multi-language JavaScript tags as `js_v<version>`, and
260
+ normalize prefixed tags before linking npm version badges.
261
+
262
+ ## 0.11.9
263
+
264
+ ### Patch Changes
265
+
266
+ - 49a8205: Add a post-publish smoke test that installs the just-published npm package in a clean project and verifies its entry points.
267
+
268
+ ## 0.11.8
269
+
270
+ ### Patch Changes
271
+
272
+ - 391530e: Skip the slow CI test matrix for pull requests that only touch non-code files.
273
+
274
+ ## 0.11.7
275
+
276
+ ### Patch Changes
277
+
278
+ - 674f9ce: Fix npm release path for brand-new packages (issue #77):
279
+ - `publish-to-npm.mjs` now classifies authentication / registry-configuration
280
+ failures (404/401/403, `access token expired`, `ENEEDAUTH`, etc.) as
281
+ non-retryable and fails fast with actionable guidance instead of retrying
282
+ `MAX_RETRIES` times and hiding the real cause behind a generic error.
283
+ - The `release` and `instant-release` publish steps now pass an optional
284
+ `NODE_AUTH_TOKEN` sourced from `secrets.NPM_TOKEN`, providing a first-publish
285
+ bootstrap path. OIDC trusted publishing remains the steady-state mechanism;
286
+ the token is only needed for the very first release of a new package.
287
+
288
+ ## 0.11.6
289
+
290
+ ### Patch Changes
291
+
292
+ - 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).
293
+
294
+ ## 0.11.5
295
+
296
+ ### Patch Changes
297
+
298
+ - 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.
299
+
300
+ ## 0.11.4
301
+
302
+ ### Patch Changes
303
+
304
+ - 35696cc: Cap generated GitHub release notes before creating releases so oversized changelog
305
+ entries link to the full tagged changelog instead of failing GitHub API
306
+ validation.
307
+
308
+ ## 0.11.3
309
+
310
+ ### Patch Changes
311
+
312
+ - 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.
313
+
314
+ ## 0.11.2
315
+
316
+ ### Patch Changes
317
+
318
+ - 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.
319
+
320
+ ## 0.11.1
321
+
322
+ ### Patch Changes
323
+
324
+ - 8cd0d70: Correct CI workflow concurrency and preview failure artifact handling in the template.
325
+
326
+ ## 0.11.0
327
+
328
+ ### Minor Changes
329
+
330
+ - e7025ed: Add a release-time `preview-regen` job to `example-app.yml` and a
331
+ `scripts/update-preview-images.mjs` driver that boot the universal example app
332
+ in a headless Chromium via `browser-commander` + Playwright, capture a
333
+ locale × theme matrix of screenshots into `docs/screenshots/example-app/`, and
334
+ commit any drift back to `main` with `[skip ci]`. Adds the matching
335
+ `npm run example:web:preview-images` script.
336
+
337
+ ## 0.10.2
338
+
339
+ ### Patch Changes
340
+
341
+ - 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.
342
+
343
+ ## 0.10.1
344
+
345
+ ### Patch Changes
346
+
347
+ - ede9f84: Publish the template as the real link-foundation example package and add the globally installable CLI entry point.
348
+
349
+ ## 0.10.0
350
+
351
+ ### Minor Changes
352
+
353
+ - 5a81a7f: Add a universal React example app with GitHub Pages, Electron desktop, and Capacitor mobile build paths.
354
+
355
+ ## 0.9.0
356
+
357
+ ### Minor Changes
358
+
359
+ - f23283c: Add an optional Docker Hub publishing path that waits for the exact npm
360
+ package version before tagging Docker images.
361
+
362
+ ## 0.8.6
363
+
364
+ ### Patch Changes
365
+
366
+ - acccf75: Format GitHub release names as human-readable `[Language] x.y.z` titles while keeping prefixed tag names unchanged.
367
+
368
+ ## 0.8.5
369
+
370
+ ### Patch Changes
371
+
372
+ - Fail GitHub release creation on unexpected gh api errors and clearly skip releases that already exist.
373
+
374
+ Enforce npm and Node.js minimum versions for trusted publishing setup and resolve a supported npm 11 tarball for fallback installs.
375
+
376
+ ## 0.8.4
377
+
378
+ ### Patch Changes
379
+
380
+ - 031f7cd: Add explicit CI job timeouts and per-test runner timeout limits.
381
+
382
+ ## 0.8.3
383
+
384
+ ### Patch Changes
385
+
386
+ - bdaa4b7: Derive release script package names from package.json instead of template placeholders.
387
+
388
+ ## 0.8.2
389
+
390
+ ### Patch Changes
391
+
392
+ - d179bb7: Add warning annotations for files approaching the CI file line limit.
393
+
394
+ ## 0.8.1
395
+
396
+ ### Patch Changes
397
+
398
+ - f0c69af: Normalize language-prefixed release tags before building npm shields.io badge URLs.
399
+
400
+ ## 0.8.0
401
+
402
+ ### Minor Changes
403
+
404
+ - 3e45a9c: Add `--tag-prefix` option to release scripts for multi-language repos
405
+
406
+ 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`).
407
+
408
+ ## 0.7.3
409
+
410
+ ### Patch Changes
411
+
412
+ - ae2cc9a: Add self-healing release mechanism that checks npm registry for unpublished versions
413
+
414
+ ## 0.7.2
415
+
416
+ ### Patch Changes
417
+
418
+ - 9126e16: fix: npm upgrade fallbacks and Node.js 24.x upgrade for CI/CD
419
+ - Upgrade Node.js from 20.x to 24.x in all workflow files (avoids broken npm in Node.js 22.22.2)
420
+ - Add 4-strategy fallback chain to setup-npm.mjs (standard, curl tarball, npx, corepack)
421
+ - Update GitHub Actions to latest versions (checkout v6, setup-node v6, create-pull-request v8)
422
+ - Add case study documentation for issue #33
423
+
424
+ ## 0.7.1
425
+
426
+ ### Patch Changes
427
+
428
+ - 6916409: Use per-commit diff instead of full-PR diff for CI change detection
429
+
430
+ ## 0.7.0
431
+
432
+ ### Minor Changes
433
+
434
+ - 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
435
+
436
+ ## 0.6.0
437
+
438
+ ### Minor Changes
439
+
440
+ - 8961862: Add automated broken link checker with Web Archive fallback suggestions
441
+ - Add `.github/workflows/links.yml` with lychee-action for link checking in Markdown and HTML files
442
+ - Add `scripts/check-web-archive.mjs` to check broken links against the Wayback Machine API
443
+ - Add `.lycheeignore` for excluding known false-positive URLs (localhost, example.com, etc.)
444
+ - Update `README.md` to document the broken link checker feature
445
+ - Scheduled weekly check (Mondays at 09:00 UTC) to catch links that break over time
446
+ - On PRs, broken links with no Web Archive fallback will fail the check
447
+ - For broken links that have archived versions, provides actionable replacement suggestions
448
+ - On scheduled runs, automatically creates a GitHub Issue with the full broken links report
449
+
450
+ Fixes #27
451
+
452
+ ## 0.5.1
453
+
454
+ ### Patch Changes
455
+
456
+ - e398190: Add comprehensive best practices comparison and improve CI concurrency
457
+ - Add DETAILED-COMPARISON.md with side-by-side analysis of ALL scripts, workflows, and configurations
458
+ - Implement cancel-in-progress for main branch concurrency (hive-mind Issue #1274 fix)
459
+ - Fix max-lines documentation (1500, not 1000)
460
+ - Reference detailed comparison from BEST-PRACTICES.md
461
+
462
+ ## 0.5.0
463
+
464
+ ### Minor Changes
465
+
466
+ - 66211b5: Add fresh merge simulation to CI/CD to prevent stale merge preview issues
467
+ - Add "Simulate fresh merge with base branch" step to lint and test jobs
468
+ - This ensures PR CI validates the actual merge result, not a stale snapshot
469
+ - Prevents CI failures on main branch after merging PRs that sat open for days
470
+ - Add case study documentation for issue #23 with root cause analysis
471
+ - Add ignore patterns for case study data files in ESLint and Prettier
472
+
473
+ See docs/case-studies/issue-23 for detailed analysis of the stale merge preview problem.
474
+
475
+ Fixes #23
476
+
477
+ ## 0.4.0
478
+
479
+ ### Minor Changes
480
+
481
+ - e6c2691: Add multi-language repository support for CI/CD scripts
482
+ - Add `scripts/js-paths.mjs` utility for automatic JavaScript package root detection
483
+ - Support both `./package.json` (single-language) and `./js/package.json` (multi-language repos)
484
+ - Add `--legacy-peer-deps` flag to npm install commands in release scripts to fix ERESOLVE errors
485
+ - Save and restore working directory after `cd` commands to fix `command-stream` library's `process.chdir()` behavior
486
+ - Add case study documentation with root cause analysis in `docs/case-studies/issue-21/`
487
+
488
+ ## 0.3.0
489
+
490
+ ### Minor Changes
491
+
492
+ - 80d9c84: Add CI check to prevent manual version modification in package.json
493
+ - Added `check-version.mjs` script that detects manual version changes in PRs
494
+ - Added `check-changesets.mjs` script to check for pending changesets (converted from inline shell)
495
+ - Added `version-check` job to release.yml workflow
496
+ - Automated release PRs (changeset-release/_ and changeset-manual-release-_) are automatically skipped
497
+
498
+ ## 0.2.2
499
+
500
+ ### Patch Changes
501
+
502
+ - 9a12139: Fix CI/CD check differences between pull request and push events
503
+
504
+ Changes:
505
+ - Add `detect-changes` job with cross-platform `detect-code-changes.mjs` script
506
+ - Make lint job independent of changeset-check (runs based on file changes only)
507
+ - Allow docs-only PRs without changeset requirement
508
+ - Handle changeset-check 'skipped' state in dependent jobs
509
+ - Exclude `.changeset/`, `docs/`, `experiments/`, `examples/` folders and markdown files from code changes detection
510
+
511
+ ## 0.2.1
512
+
513
+ ### Patch Changes
514
+
515
+ - 55aef41: Make Bun the primary runtime choice throughout the template
516
+ - Update all shebangs from `#!/usr/bin/env node` to `#!/usr/bin/env bun` in scripts, experiments, and case studies
517
+ - Update README.md to prioritize Bun in all sections (features, development, runtime support, package managers, scripts reference)
518
+ - Update examples to list Bun first
519
+ - Bun now described as "Primary runtime with highest performance" and "Primary choice" for package management
520
+ - Maintains full compatibility with Node.js and Deno
521
+
522
+ ## 0.2.0
523
+
524
+ ### Minor Changes
525
+
526
+ - d3f7fcd: Improve changeset CI/CD robustness for concurrent PRs
527
+ - Update validate-changeset.mjs to only check changesets ADDED by the current PR (not pre-existing ones)
528
+ - Add merge-changesets.mjs script to combine multiple pending changesets during release
529
+ - Merged changesets use highest version bump type (major > minor > patch) and combine descriptions chronologically
530
+ - Update release workflow to pass SHA environment variables and add merge step
531
+ - Add comprehensive case study documentation for the CI/CD improvement
532
+ - This prevents PR failures when multiple PRs merge before a release cycle completes
533
+
534
+ ## 0.1.4
535
+
536
+ ### Patch Changes
537
+
538
+ - e9703b9: Add ESLint complexity rules with reasonable thresholds
539
+
540
+ ## 0.1.3
541
+
542
+ ### Patch Changes
543
+
544
+ - 0198aaa: Add case study documentation comparing best practices from effect-template
545
+
546
+ This changeset adds comprehensive documentation analyzing best practices from
547
+ ProverCoderAI/effect-template repository, identifying gaps in our current setup,
548
+ and providing prioritized recommendations for improvements.
549
+
550
+ Key findings include missing best practices like code duplication detection (jscpd),
551
+ ESLint complexity rules, VS Code settings, and test coverage thresholds.
552
+
553
+ ## 0.1.2
554
+
555
+ ### Patch Changes
556
+
557
+ - 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.
558
+
559
+ ## 0.1.1
560
+
561
+ ### Patch Changes
562
+
563
+ - 042e877: Fix GitHub release formatting to support Major/Minor/Patch changes
564
+
565
+ The release formatting script now correctly handles all changeset types (Major, Minor, Patch) instead of only Patch changes. This ensures that:
566
+ - Section headers are removed from release notes
567
+ - PR detection works for all release types
568
+ - NPM badges are added correctly
569
+
570
+ ## 0.1.0
571
+
572
+ ### Minor Changes
573
+
574
+ - 65d76dc: Initial template setup with complete AI-driven development pipeline
575
+
576
+ Features:
577
+ - Multi-runtime support for Node.js, Bun, and Deno
578
+ - Universal testing with test-anywhere framework
579
+ - Automated release workflow with changesets
580
+ - GitHub Actions CI/CD pipeline with 9 test combinations
581
+ - Code quality tools: ESLint + Prettier with Husky pre-commit hooks
582
+ - Package manager agnostic design
583
+
584
+ All notable changes to this project will be documented in this file.
585
+
586
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
587
+ 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>