+9
-0
@@ -7,2 +7,11 @@ # Changelog | ||
| ## 2.1.1 — 2026-08-23 | ||
| - Add a dedicated Behavioral suite with composite consumer scenarios and real-Chrome Playground journeys for visible state, editor synchronization, failure, recovery, and user-directed Worker interruption. | ||
| - Prove that easy-stack works with bundlers and without a bundler: bundlers resolve the bare package import normally, while native browser ESM uses an explicit import map with no build or transpilation step. | ||
| - Document the complete normal npm-layout map, HTTP(S) and server-exposure requirements, unsupported <code>file://</code> path, and zero-build/no-transpilation workflow across every browser-facing guide and site area. | ||
| - Add a Given/When/Then native no-bundler acceptance scenario plus static source and deployment assertions that preserve import-map ordering and targets. | ||
| - Keep dependency-conflict and scoped-map testing explicitly not applicable while the published package has zero runtime dependencies; metadata and source guards force reassessment if that changes. | ||
| - Make the release workflow verify and skip an already-published matching immutable version instead of attempting a duplicate publication. | ||
| ## 2.1.0 — 2026-08-21 | ||
@@ -9,0 +18,0 @@ |
+20
-0
@@ -31,2 +31,21 @@ # Migrating to easy-stack 2.1 | ||
| ## Browser package resolution | ||
| easy-stack works with bundlers and without a bundler. Bundlers resolve the bare package import normally. Native browser ESM needs an import map before the module script, but it needs no build or transpilation step: | ||
| ```html | ||
| <script type="importmap"> | ||
| { | ||
| "imports": { | ||
| "easy-stack": "./node_modules/easy-stack/stack.js" | ||
| } | ||
| } | ||
| </script> | ||
| <script type="module"> | ||
| import Stack from 'easy-stack'; | ||
| </script> | ||
| ``` | ||
| These URLs are relative to the HTML document. Serve the application over HTTP(S), expose the mapped files from the server, and do not use `file://`. Version 2.1.1 has zero runtime dependencies, so no dependency entries or scoped nested-dependency map are required. | ||
| ## Contents and state | ||
@@ -75,1 +94,2 @@ | ||
| 7. Use `es5.js` for browser targets that cannot parse private class fields. | ||
| 8. For native no-bundler ESM, keep the import map before all module scripts and verify it over HTTP(S). |
+5
-1
| { | ||
| "name": "easy-stack", | ||
| "version": "2.1.0", | ||
| "version": "2.1.1", | ||
| "description": "Zero-dependency cooperative LIFO execution for Node.js and browsers", | ||
@@ -47,2 +47,6 @@ "type": "module", | ||
| "test:functional": "node ./scripts/test.js functional", | ||
| "test:behavioral": "node ./scripts/test.js behavioral", | ||
| "test:behavioral:chrome": "node ./scripts/test.js behavioral-browser", | ||
| "test:browser-contract": "node ./scripts/verify-browser-contract.js .", | ||
| "test:coverage-inventory": "node ./scripts/verify-coverage-inventory.js", | ||
| "test:integration": "node ./scripts/test.js integration", | ||
@@ -49,0 +53,0 @@ "test:regression": "node ./scripts/test.js regression", |
+25
-4
@@ -13,3 +13,3 @@ [](https://riaevangelist.github.io/easy-stack/) | ||
| [](https://github.com/RIAEvangelist/easy-stack/actions/workflows/ci.yml) | ||
| [](https://riaevangelist.github.io/easy-stack/testing/) | ||
| [](https://riaevangelist.github.io/easy-stack/testing/) | ||
| [](https://riaevangelist.github.io/easy-stack/testing/) | ||
@@ -86,6 +86,25 @@ [](https://riaevangelist.github.io/easy-stack/testing/) | ||
| Use `stack.js` as a native module, `stack-vanilla.js` as a modern classic script, or `es5.js` for legacy syntax: | ||
| easy-stack works with bundlers and without a bundler. Bundlers resolve the bare `easy-stack` import normally. Native browser ESM resolves that same bare import through an import map, with no build or transpilation step: | ||
| ```html | ||
| <script src="https://unpkg.com/easy-stack@2.1.0/stack-vanilla.js"></script> | ||
| <script type="importmap"> | ||
| { | ||
| "imports": { | ||
| "easy-stack": "./node_modules/easy-stack/stack.js" | ||
| } | ||
| } | ||
| </script> | ||
| <script type="module"> | ||
| import Stack from 'easy-stack'; | ||
| const stack = new Stack(); | ||
| </script> | ||
| ``` | ||
| Import-map URLs are relative to the HTML document. Serve the page over HTTP(S), and configure the server to expose the mapped `node_modules` files; `file://` is not a supported path. easy-stack currently has zero runtime dependencies, so the complete normal-layout map needs only the package entry and no scoped nested-dependency map. | ||
| Alternatively, use `stack-vanilla.js` as a modern classic script or `es5.js` for legacy syntax: | ||
| ```html | ||
| <script src="https://unpkg.com/easy-stack@2.1.1/stack-vanilla.js"></script> | ||
| <script> | ||
@@ -100,3 +119,3 @@ const stack = new Stack(); | ||
| The non-duplicated catalog contains 86 uniquely identified Unit, Functional, Integration, and Regression cases, all registered through `vanilla-test@2.1.1`. CI proves the exact Node 22.13 floor and Node 24 across Linux, macOS, and Windows; it also verifies same-constructor ESM/CommonJS interop, browser globals, the packed npm artifact, documentation links, the opaque Playground Worker, and 100% statement, branch, function, and line coverage. | ||
| The non-duplicated catalog contains 94 uniquely identified Unit, Functional, Behavioral, Integration, and Regression cases, all registered through `vanilla-test@2.1.1`. The same shared JavaScript inventory imports `easy-stack` by package name in Node and real Chrome; Chrome resolves it through the configured native import map. CI proves the exact Node 22.13 floor and Node 24 across Linux, macOS, and Windows; it also verifies composite consumer outcomes, five rendered Playground journeys in real Chrome, same-constructor ESM/CommonJS interop, browser globals, the packed npm artifact, documentation and deployment contracts, the opaque Playground Worker, and 100% statement, branch, function, and line coverage. | ||
@@ -107,2 +126,4 @@ ```sh | ||
| npm run test:functional | ||
| npm run test:behavioral | ||
| npm run test:behavioral:chrome | ||
| npm run test:integration | ||
@@ -109,0 +130,0 @@ npm run test:regression |
26982
14.22%137
18.1%