From 09c4c910a447beaec3657333550140258f65bedb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 3 Nov 2026 07:30:42 +0000 Subject: [PATCH] Version Packages --- .changeset/debug-freezes-world-values.md | 18 ----------------- .changeset/effect-4-1-1.md | 5 ----- .changeset/node-22.md | 13 ------------ .changeset/pixel-outlines-bent-grids.md | 11 ----------- .changeset/prototype-where-fun-lives.md | 5 ----- packages/browser/CHANGELOG.md | 13 ++++++++++++ packages/browser/package.json | 2 +- packages/core/CHANGELOG.md | 24 +++++++++++++++++++++++ packages/core/package.json | 2 +- packages/devtools/CHANGELOG.md | 14 +++++++++++++ packages/devtools/package.json | 2 +- packages/devtools/src/internal/version.ts | 2 +- packages/math/CHANGELOG.md | 13 ++++++++++++ packages/math/package.json | 2 +- packages/netcode/CHANGELOG.md | 13 ++++++++++++ packages/netcode/package.json | 2 +- packages/oxlint-plugin/CHANGELOG.md | 6 ++++++ packages/oxlint-plugin/package.json | 2 +- packages/pixi/CHANGELOG.md | 11 +++++++++++ packages/pixi/package.json | 2 +- packages/render/CHANGELOG.md | 13 ++++++++++++ packages/render/package.json | 2 +- packages/tools/CHANGELOG.md | 17 ++++++++++++++++ packages/tools/package.json | 2 +- packages/tools/src/internal/version.ts | 2 +- 25 files changed, 135 insertions(+), 63 deletions(-) delete mode 100644 .changeset/debug-freezes-world-values.md delete mode 100644 .changeset/effect-4-1-1.md delete mode 100644 .changeset/node-22.md delete mode 100644 .changeset/pixel-outlines-bent-grids.md delete mode 100644 .changeset/prototype-where-fun-lives.md diff --git a/.changeset/debug-freezes-world-values.md b/.changeset/debug-freezes-world-values.md deleted file mode 100644 index 32d1ccf0..00000000 --- a/.changeset/debug-freezes-world-values.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -"@typeonce/ritmo": minor ---- - -**Breaking (debug runtimes only): a runtime made with `debug` freezes every value it is handed, so mutating one afterwards throws where it mutates.** Values were stored by reference: an object passed to `Game.Command.spawn`, `commands.insert`, a cell's `set`/`update`, a resource write, `emit`, `runtime.send`, a next-state `set`, or `Game.Runtime.make` stayed connected to the code that made it. Mutating it later changed the world with no write, so `changed` readers missed it, and a `rewind` brought back the mutated value instead of the checkpointed one. A debug runtime now deep-freezes each value as it is queued or written, and the mutation throws a `TypeError`. Typed arrays are skipped, `Map` and `Set` contents stay writable, and runtimes without `debug` behave as before. - -If your game's tests or devtools sessions now throw, build a new value instead of mutating the one you handed over: - -```diff --const body = { x: 1, trail: [] } --commands.spawn(Game.Command.spawn([Body, body])) --body.x += 1 -+commands.spawn(Game.Command.spawn([Body, { x: 1, trail: [] }])) -+// later, in a system -+data.body.update((body) => ({ ...body, x: body.x + 1 })) -``` - -`Runtime.tick` now points to `FixedLoop.start` for ticking at a fixed rate from a frame loop. The `ritmo` skill now treats a variable a system closes over like a module variable: host input reaches systems through a resource, a sent event, or an input source service. diff --git a/.changeset/effect-4-1-1.md b/.changeset/effect-4-1-1.md deleted file mode 100644 index 5d3db7b8..00000000 --- a/.changeset/effect-4-1-1.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@typeonce/ritmo-tools": patch ---- - -`ritmo-tools` depends on Effect 4.1.1 (`effect`, `@effect/platform-node`, and `@effect/platform-node-shared`, still pinned exactly and together). diff --git a/.changeset/node-22.md b/.changeset/node-22.md deleted file mode 100644 index f9a643b2..00000000 --- a/.changeset/node-22.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@typeonce/ritmo": minor -"@typeonce/ritmo-browser": minor -"@typeonce/ritmo-render": minor -"@typeonce/ritmo-pixi": minor -"@typeonce/ritmo-math": minor -"@typeonce/ritmo-netcode": minor -"@typeonce/ritmo-devtools": minor -"@typeonce/oxlint-plugin-ritmo": minor -"@typeonce/ritmo-tools": minor ---- - -**Breaking: the packages require Node 22 or newer (Node 20 reached end of life on 2026-04-30).** `engines.node` is `>=22` for `@typeonce/ritmo`, `-browser`, `-render`, `-pixi`, `-math`, and `-netcode`; `>=22.12` for `@typeonce/oxlint-plugin-ritmo` (oxlint's own floor); `>=22.15` for `@typeonce/ritmo-devtools` (unchanged); and `>=22.19` for `@typeonce/ritmo-tools` (what `@effect/platform-node` needs). On Node 20, upgrade Node: `nvm install 22` (or 24), or `"node": ">=22"` in your CI's setup step. diff --git a/.changeset/pixel-outlines-bent-grids.md b/.changeset/pixel-outlines-bent-grids.md deleted file mode 100644 index c80ff674..00000000 --- a/.changeset/pixel-outlines-bent-grids.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@typeonce/ritmo-tools": minor ---- - -`ritmo-tools pixel`: one-pixel outlines, bent grids, and a shrink that keeps strokes whole, after [ToPixel](https://github.com/daisuqe/ToPixel). - -- **Outlines** (`outlines` in a recipe, `--outlines auto|on|off`, **Outlines** on the page; `"auto"` by default): when the picture's dark strokes are about one cell wide, a stroke a grid line split between two pixels goes back to one, never breaking the outline or a corner, and followed lines keep off dark strokes. The report's `grid.outlines` says whether it ran. -- **Follow lines** is now a choice: `"off"`, `"straight"` (every line placed at once, each on a strong edge with every gap near the cell size, instead of one after another), or `"bend"` (lines placed in each row and column of cells on their own, for a grid the generator warped). The page draws bent lines bent. -- **Keep outlines** when shrinking (`--shrink-to`, **Size**) carries outlines over as strokes: thinned back to one pixel without breaking, one-pixel steps turned into diagonals. A one-pixel ring shrunk from 16 to 11 pixels stays whole, where it used to lose its sides. - -Breaking: a recipe's `follow` is `"off"`, `"straight"`, or `"bend"`, no longer `true` or `false`, and `--follow` takes one of them. Replace `"follow": true` with `"follow": "straight"` (`--follow straight`), and `"follow": false` with `"follow": "off"` (or leave it out). diff --git a/.changeset/prototype-where-fun-lives.md b/.changeset/prototype-where-fun-lives.md deleted file mode 100644 index 0158e5b0..00000000 --- a/.changeset/prototype-where-fun-lives.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@typeonce/ritmo": patch ---- - -**The `ritmo-prototype` skill prototypes where the fun lives.** It used to start from a verb or the smallest goal, with one exception for story. Now it names five cases. For a verb, build the verb and its feedback. For goals, build the smallest goal. For a story, characters, or a mystery, write a small slice by hand; paper or text is fine when it is faster. For a place to explore, hand-build a small map with a landmark you can see before you can reach it and something off the obvious path. For a mood, bring in the look and sound early. Before this, a game about wandering and discovery got a one-screen loop as its prototype, which tests none of what makes it fun. diff --git a/packages/browser/CHANGELOG.md b/packages/browser/CHANGELOG.md index 30334485..9625a0a9 100644 --- a/packages/browser/CHANGELOG.md +++ b/packages/browser/CHANGELOG.md @@ -1,5 +1,18 @@ # @typeonce/ritmo-browser +## 0.21.0 + +### Minor Changes + +- d1d864d: **Breaking: the packages require Node 22 or newer (Node 20 reached end of life on 2026-04-30).** `engines.node` is `>=22` for `@typeonce/ritmo`, `-browser`, `-render`, `-pixi`, `-math`, and `-netcode`; `>=22.12` for `@typeonce/oxlint-plugin-ritmo` (oxlint's own floor); `>=22.15` for `@typeonce/ritmo-devtools` (unchanged); and `>=22.19` for `@typeonce/ritmo-tools` (what `@effect/platform-node` needs). On Node 20, upgrade Node: `nvm install 22` (or 24), or `"node": ">=22"` in your CI's setup step. + +### Patch Changes + +- Updated dependencies [50597a8] +- Updated dependencies [d1d864d] +- Updated dependencies [027634b] + - @typeonce/ritmo@0.21.0 + ## 0.20.0 ### Patch Changes diff --git a/packages/browser/package.json b/packages/browser/package.json index d5cc1a75..44f78377 100644 --- a/packages/browser/package.json +++ b/packages/browser/package.json @@ -1,6 +1,6 @@ { "name": "@typeonce/ritmo-browser", - "version": "0.20.0", + "version": "0.21.0", "description": "Browser fixed-step loop, keyboard, gamepad, pointer, and touch actions, merged input, local multiplayer, and input capture for Ritmo", "author": "Sandro Maglione", "license": "MIT", diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 40ddd508..9dedfd74 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,29 @@ # @typeonce/ritmo +## 0.21.0 + +### Minor Changes + +- 50597a8: **Breaking (debug runtimes only): a runtime made with `debug` freezes every value it is handed, so mutating one afterwards throws where it mutates.** Values were stored by reference: an object passed to `Game.Command.spawn`, `commands.insert`, a cell's `set`/`update`, a resource write, `emit`, `runtime.send`, a next-state `set`, or `Game.Runtime.make` stayed connected to the code that made it. Mutating it later changed the world with no write, so `changed` readers missed it, and a `rewind` brought back the mutated value instead of the checkpointed one. A debug runtime now deep-freezes each value as it is queued or written, and the mutation throws a `TypeError`. Typed arrays are skipped, `Map` and `Set` contents stay writable, and runtimes without `debug` behave as before. + + If your game's tests or devtools sessions now throw, build a new value instead of mutating the one you handed over: + + ```diff + -const body = { x: 1, trail: [] } + -commands.spawn(Game.Command.spawn([Body, body])) + -body.x += 1 + +commands.spawn(Game.Command.spawn([Body, { x: 1, trail: [] }])) + +// later, in a system + +data.body.update((body) => ({ ...body, x: body.x + 1 })) + ``` + + `Runtime.tick` now points to `FixedLoop.start` for ticking at a fixed rate from a frame loop. The `ritmo` skill now treats a variable a system closes over like a module variable: host input reaches systems through a resource, a sent event, or an input source service. +- d1d864d: **Breaking: the packages require Node 22 or newer (Node 20 reached end of life on 2026-04-30).** `engines.node` is `>=22` for `@typeonce/ritmo`, `-browser`, `-render`, `-pixi`, `-math`, and `-netcode`; `>=22.12` for `@typeonce/oxlint-plugin-ritmo` (oxlint's own floor); `>=22.15` for `@typeonce/ritmo-devtools` (unchanged); and `>=22.19` for `@typeonce/ritmo-tools` (what `@effect/platform-node` needs). On Node 20, upgrade Node: `nvm install 22` (or 24), or `"node": ">=22"` in your CI's setup step. + +### Patch Changes + +- 027634b: **The `ritmo-prototype` skill prototypes where the fun lives.** It used to start from a verb or the smallest goal, with one exception for story. Now it names five cases. For a verb, build the verb and its feedback. For goals, build the smallest goal. For a story, characters, or a mystery, write a small slice by hand; paper or text is fine when it is faster. For a place to explore, hand-build a small map with a landmark you can see before you can reach it and something off the obvious path. For a mood, bring in the look and sound early. Before this, a game about wandering and discovery got a one-screen loop as its prototype, which tests none of what makes it fun. + ## 0.20.0 ### Minor Changes diff --git a/packages/core/package.json b/packages/core/package.json index 77f9a6c1..78dead6f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@typeonce/ritmo", - "version": "0.20.0", + "version": "0.21.0", "description": "The agent-first, type-safe ECS runtime for TypeScript", "author": "Sandro Maglione", "license": "MIT", diff --git a/packages/devtools/CHANGELOG.md b/packages/devtools/CHANGELOG.md index 42aa37fd..7781f1a4 100644 --- a/packages/devtools/CHANGELOG.md +++ b/packages/devtools/CHANGELOG.md @@ -1,5 +1,19 @@ # @typeonce/ritmo-devtools +## 0.21.0 + +### Minor Changes + +- d1d864d: **Breaking: the packages require Node 22 or newer (Node 20 reached end of life on 2026-04-30).** `engines.node` is `>=22` for `@typeonce/ritmo`, `-browser`, `-render`, `-pixi`, `-math`, and `-netcode`; `>=22.12` for `@typeonce/oxlint-plugin-ritmo` (oxlint's own floor); `>=22.15` for `@typeonce/ritmo-devtools` (unchanged); and `>=22.19` for `@typeonce/ritmo-tools` (what `@effect/platform-node` needs). On Node 20, upgrade Node: `nvm install 22` (or 24), or `"node": ">=22"` in your CI's setup step. + +### Patch Changes + +- Updated dependencies [50597a8] +- Updated dependencies [d1d864d] +- Updated dependencies [027634b] + - @typeonce/ritmo@0.21.0 + - @typeonce/ritmo-netcode@0.21.0 + ## 0.20.0 ### Patch Changes diff --git a/packages/devtools/package.json b/packages/devtools/package.json index 7e461911..93a5cc87 100644 --- a/packages/devtools/package.json +++ b/packages/devtools/package.json @@ -1,6 +1,6 @@ { "name": "@typeonce/ritmo-devtools", - "version": "0.20.0", + "version": "0.21.0", "description": "Headless debug sessions, trace history, text reports, replays, and fuzzing for Ritmo runtimes", "author": "Sandro Maglione", "license": "MIT", diff --git a/packages/devtools/src/internal/version.ts b/packages/devtools/src/internal/version.ts index f9d382eb..ca5cd40c 100644 --- a/packages/devtools/src/internal/version.ts +++ b/packages/devtools/src/internal/version.ts @@ -3,4 +3,4 @@ * `package.json` by `scripts/sync-version.ts` (run by \`pnpm version-packages\`) * and checked by a test. */ -export const libraryVersion = "0.20.0" +export const libraryVersion = "0.21.0" diff --git a/packages/math/CHANGELOG.md b/packages/math/CHANGELOG.md index 7ca0e75a..5c923696 100644 --- a/packages/math/CHANGELOG.md +++ b/packages/math/CHANGELOG.md @@ -1,5 +1,18 @@ # @typeonce/ritmo-math +## 0.21.0 + +### Minor Changes + +- d1d864d: **Breaking: the packages require Node 22 or newer (Node 20 reached end of life on 2026-04-30).** `engines.node` is `>=22` for `@typeonce/ritmo`, `-browser`, `-render`, `-pixi`, `-math`, and `-netcode`; `>=22.12` for `@typeonce/oxlint-plugin-ritmo` (oxlint's own floor); `>=22.15` for `@typeonce/ritmo-devtools` (unchanged); and `>=22.19` for `@typeonce/ritmo-tools` (what `@effect/platform-node` needs). On Node 20, upgrade Node: `nvm install 22` (or 24), or `"node": ">=22"` in your CI's setup step. + +### Patch Changes + +- Updated dependencies [50597a8] +- Updated dependencies [d1d864d] +- Updated dependencies [027634b] + - @typeonce/ritmo@0.21.0 + ## 0.20.0 ### Patch Changes diff --git a/packages/math/package.json b/packages/math/package.json index ce8a49ed..ae6c8571 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,6 +1,6 @@ { "name": "@typeonce/ritmo-math", - "version": "0.20.0", + "version": "0.21.0", "description": "The 2D helpers most Ritmo games would otherwise rewrite (vectors, angles, swept collision, flow field), plain data in and out, built on Ops so they replay the same on every engine", "author": "Sandro Maglione", "license": "MIT", diff --git a/packages/netcode/CHANGELOG.md b/packages/netcode/CHANGELOG.md index 74725f4f..e0f8f21f 100644 --- a/packages/netcode/CHANGELOG.md +++ b/packages/netcode/CHANGELOG.md @@ -1,5 +1,18 @@ # @typeonce/ritmo-netcode +## 0.21.0 + +### Minor Changes + +- d1d864d: **Breaking: the packages require Node 22 or newer (Node 20 reached end of life on 2026-04-30).** `engines.node` is `>=22` for `@typeonce/ritmo`, `-browser`, `-render`, `-pixi`, `-math`, and `-netcode`; `>=22.12` for `@typeonce/oxlint-plugin-ritmo` (oxlint's own floor); `>=22.15` for `@typeonce/ritmo-devtools` (unchanged); and `>=22.19` for `@typeonce/ritmo-tools` (what `@effect/platform-node` needs). On Node 20, upgrade Node: `nvm install 22` (or 24), or `"node": ">=22"` in your CI's setup step. + +### Patch Changes + +- Updated dependencies [50597a8] +- Updated dependencies [d1d864d] +- Updated dependencies [027634b] + - @typeonce/ritmo@0.21.0 + ## 0.20.0 ### Patch Changes diff --git a/packages/netcode/package.json b/packages/netcode/package.json index f20a542d..3d188b3c 100644 --- a/packages/netcode/package.json +++ b/packages/netcode/package.json @@ -1,6 +1,6 @@ { "name": "@typeonce/ritmo-netcode", - "version": "0.20.0", + "version": "0.21.0", "description": "Rollback and lockstep sessions over any transport for Ritmo: input timelines, checkpoint history, pacing, resync, and desync checks", "author": "Sandro Maglione", "license": "MIT", diff --git a/packages/oxlint-plugin/CHANGELOG.md b/packages/oxlint-plugin/CHANGELOG.md index ad009b81..57d15e74 100644 --- a/packages/oxlint-plugin/CHANGELOG.md +++ b/packages/oxlint-plugin/CHANGELOG.md @@ -1,5 +1,11 @@ # @typeonce/oxlint-plugin-ritmo +## 0.21.0 + +### Minor Changes + +- d1d864d: **Breaking: the packages require Node 22 or newer (Node 20 reached end of life on 2026-04-30).** `engines.node` is `>=22` for `@typeonce/ritmo`, `-browser`, `-render`, `-pixi`, `-math`, and `-netcode`; `>=22.12` for `@typeonce/oxlint-plugin-ritmo` (oxlint's own floor); `>=22.15` for `@typeonce/ritmo-devtools` (unchanged); and `>=22.19` for `@typeonce/ritmo-tools` (what `@effect/platform-node` needs). On Node 20, upgrade Node: `nvm install 22` (or 24), or `"node": ">=22"` in your CI's setup step. + ## 0.20.0 ## 0.19.1 diff --git a/packages/oxlint-plugin/package.json b/packages/oxlint-plugin/package.json index 2cca9006..465d8c09 100644 --- a/packages/oxlint-plugin/package.json +++ b/packages/oxlint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@typeonce/oxlint-plugin-ritmo", - "version": "0.20.0", + "version": "0.21.0", "description": "Oxlint rules for Ritmo games: deterministic, headless simulation code and checked runtime results", "author": "Sandro Maglione", "license": "MIT", diff --git a/packages/pixi/CHANGELOG.md b/packages/pixi/CHANGELOG.md index 3f7bc135..431f9d8f 100644 --- a/packages/pixi/CHANGELOG.md +++ b/packages/pixi/CHANGELOG.md @@ -1,5 +1,16 @@ # @typeonce/ritmo-pixi +## 0.21.0 + +### Minor Changes + +- d1d864d: **Breaking: the packages require Node 22 or newer (Node 20 reached end of life on 2026-04-30).** `engines.node` is `>=22` for `@typeonce/ritmo`, `-browser`, `-render`, `-pixi`, `-math`, and `-netcode`; `>=22.12` for `@typeonce/oxlint-plugin-ritmo` (oxlint's own floor); `>=22.15` for `@typeonce/ritmo-devtools` (unchanged); and `>=22.19` for `@typeonce/ritmo-tools` (what `@effect/platform-node` needs). On Node 20, upgrade Node: `nvm install 22` (or 24), or `"node": ">=22"` in your CI's setup step. + +### Patch Changes + +- Updated dependencies [d1d864d] + - @typeonce/ritmo-render@0.21.0 + ## 0.20.0 ### Patch Changes diff --git a/packages/pixi/package.json b/packages/pixi/package.json index f3b18225..6b7562ca 100644 --- a/packages/pixi/package.json +++ b/packages/pixi/package.json @@ -1,6 +1,6 @@ { "name": "@typeonce/ritmo-pixi", - "version": "0.20.0", + "version": "0.21.0", "description": "Pixi container adapter for Ritmo render-node registries", "author": "Sandro Maglione", "license": "MIT", diff --git a/packages/render/CHANGELOG.md b/packages/render/CHANGELOG.md index 9ca868d8..b7b45c26 100644 --- a/packages/render/CHANGELOG.md +++ b/packages/render/CHANGELOG.md @@ -1,5 +1,18 @@ # @typeonce/ritmo-render +## 0.21.0 + +### Minor Changes + +- d1d864d: **Breaking: the packages require Node 22 or newer (Node 20 reached end of life on 2026-04-30).** `engines.node` is `>=22` for `@typeonce/ritmo`, `-browser`, `-render`, `-pixi`, `-math`, and `-netcode`; `>=22.12` for `@typeonce/oxlint-plugin-ritmo` (oxlint's own floor); `>=22.15` for `@typeonce/ritmo-devtools` (unchanged); and `>=22.19` for `@typeonce/ritmo-tools` (what `@effect/platform-node` needs). On Node 20, upgrade Node: `nvm install 22` (or 24), or `"node": ">=22"` in your CI's setup step. + +### Patch Changes + +- Updated dependencies [50597a8] +- Updated dependencies [d1d864d] +- Updated dependencies [027634b] + - @typeonce/ritmo@0.21.0 + ## 0.20.0 ### Patch Changes diff --git a/packages/render/package.json b/packages/render/package.json index c92cf67e..b315bcba 100644 --- a/packages/render/package.json +++ b/packages/render/package.json @@ -1,6 +1,6 @@ { "name": "@typeonce/ritmo-render", - "version": "0.20.0", + "version": "0.21.0", "description": "Renderer-agnostic entity-to-node mirroring for Ritmo", "author": "Sandro Maglione", "license": "MIT", diff --git a/packages/tools/CHANGELOG.md b/packages/tools/CHANGELOG.md index f7389ed0..5cbbb5e7 100644 --- a/packages/tools/CHANGELOG.md +++ b/packages/tools/CHANGELOG.md @@ -1,5 +1,22 @@ # @typeonce/ritmo-tools +## 0.21.0 + +### Minor Changes + +- d1d864d: **Breaking: the packages require Node 22 or newer (Node 20 reached end of life on 2026-04-30).** `engines.node` is `>=22` for `@typeonce/ritmo`, `-browser`, `-render`, `-pixi`, `-math`, and `-netcode`; `>=22.12` for `@typeonce/oxlint-plugin-ritmo` (oxlint's own floor); `>=22.15` for `@typeonce/ritmo-devtools` (unchanged); and `>=22.19` for `@typeonce/ritmo-tools` (what `@effect/platform-node` needs). On Node 20, upgrade Node: `nvm install 22` (or 24), or `"node": ">=22"` in your CI's setup step. +- 215ba15: `ritmo-tools pixel`: one-pixel outlines, bent grids, and a shrink that keeps strokes whole, after [ToPixel](https://github.com/daisuqe/ToPixel). + + - **Outlines** (`outlines` in a recipe, `--outlines auto|on|off`, **Outlines** on the page; `"auto"` by default): when the picture's dark strokes are about one cell wide, a stroke a grid line split between two pixels goes back to one, never breaking the outline or a corner, and followed lines keep off dark strokes. The report's `grid.outlines` says whether it ran. + - **Follow lines** is now a choice: `"off"`, `"straight"` (every line placed at once, each on a strong edge with every gap near the cell size, instead of one after another), or `"bend"` (lines placed in each row and column of cells on their own, for a grid the generator warped). The page draws bent lines bent. + - **Keep outlines** when shrinking (`--shrink-to`, **Size**) carries outlines over as strokes: thinned back to one pixel without breaking, one-pixel steps turned into diagonals. A one-pixel ring shrunk from 16 to 11 pixels stays whole, where it used to lose its sides. + + Breaking: a recipe's `follow` is `"off"`, `"straight"`, or `"bend"`, no longer `true` or `false`, and `--follow` takes one of them. Replace `"follow": true` with `"follow": "straight"` (`--follow straight`), and `"follow": false` with `"follow": "off"` (or leave it out). + +### Patch Changes + +- ea008a4: `ritmo-tools` depends on Effect 4.1.1 (`effect`, `@effect/platform-node`, and `@effect/platform-node-shared`, still pinned exactly and together). + ## 0.20.0 ### Minor Changes diff --git a/packages/tools/package.json b/packages/tools/package.json index 2dc9d5e3..e73e6cb1 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -1,6 +1,6 @@ { "name": "@typeonce/ritmo-tools", - "version": "0.20.0", + "version": "0.21.0", "description": "Asset tools for games made with Ritmo, for agents: fixes AI-made pixel art and animation sheets onto a true pixel grid and a palette, keeps game sounds as JSON recipes, writes game music as JSON songs built around a hum, and draws pixel art effects as code, each with a review page for a person", "author": "Sandro Maglione", "license": "MIT", diff --git a/packages/tools/src/internal/version.ts b/packages/tools/src/internal/version.ts index b19e188e..cc1c79af 100644 --- a/packages/tools/src/internal/version.ts +++ b/packages/tools/src/internal/version.ts @@ -3,4 +3,4 @@ * `package.json` by `scripts/sync-version.ts` (run by `pnpm version-packages`) * and checked by a test. */ -export const toolsVersion = "0.20.0" +export const toolsVersion = "0.21.0"