@johnmorrisdotca/houseki 0.3.0 → 0.4.1

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 CHANGED
@@ -4,6 +4,27 @@ All notable changes to this package are written here, newest first, in the form
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.4.1] - 2026-10-07
8
+
9
+ ### Fixed
10
+
11
+ - Gem Swap rejects excessively nested replay inputs with a bounded validation error.
12
+ - Reshuffling preserves an active Black Hole portal and all remaining gem identities.
13
+ - Black Hole design status now matches the optional shipped tray power. CI explicitly checks public metadata and machine-specific documentation paths.
14
+
15
+ ## [0.4.0] - 2026-10-06
16
+
17
+ ### Added
18
+
19
+ - Magnetic Blocks, Shizen and Arashi each have 128 original challenges, bringing the active package to 684. Each expansion has 32 entry-level, 32 easy, 32 intermediate, 24 hard and 8 expert levels, with bilingual objectives and verified winning plays.
20
+ - Reusable campaign design and review documents, concrete grading methods, rejected-example regressions and board-coverage evidence.
21
+
22
+ ### Changed
23
+
24
+ - All expanded content is regraded from complete seeded plans, consequential placement probes, interacting objectives and mechanic-specific counterfactuals. Integer difficulty is shown from 1 to 100 in five groups. Search limits remain explicitly unknown.
25
+ - The expansion replaces the former fifty-level sets. Current campaign save/restart behavior is verified; previous-version level archives are not retained.
26
+
27
+
7
28
  ## [0.3.0] - 2026-10-06
8
29
 
9
30
  The ten open fix tickets were each read against the code, and the ones that were real are fixed and held by new tests: Magnetic Blocks' settings and Space key, and the big-board region of Falling Triplets and Colour Chains. The other tickets were already fixed in 0.2.0, and the review tests that hold them now run in `pnpm test:demo`.
@@ -83,9 +104,13 @@ Nothing that was exported has changed. The README is the family's one layout, in
83
104
  - An experimental Magnetic Blocks engine with bonded squares, magnetic floor schedules, a Floor Switch and impact drops.
84
105
  - Typed entry points, a generated API reference, an MIT licence and reproducible package checks.
85
106
 
86
- [Unreleased]: https://github.com/johnmorrisdotca/houseki/compare/v0.3.0...HEAD
107
+ [Unreleased]: https://github.com/johnmorrisdotca/houseki/compare/v0.4.1...HEAD
87
108
  [0.3.0]: https://github.com/johnmorrisdotca/houseki/compare/v0.2.1...v0.3.0
88
109
  [0.2.1]: https://github.com/johnmorrisdotca/houseki/compare/v0.2.0...v0.2.1
89
110
  [0.2.0]: https://github.com/johnmorrisdotca/houseki/compare/v0.1.1...v0.2.0
90
111
  [0.1.1]: https://github.com/johnmorrisdotca/houseki/compare/v0.1.0...v0.1.1
91
112
  [0.1.0]: https://github.com/johnmorrisdotca/houseki/releases/tag/v0.1.0
113
+
114
+ [0.4.0]: https://github.com/johnmorrisdotca/houseki/compare/v0.3.0...v0.4.0
115
+
116
+ [0.4.1]: https://github.com/johnmorrisdotca/houseki/compare/v0.4.0...v0.4.1
package/README.md CHANGED
@@ -75,13 +75,13 @@ Or straight from a page, with nothing to build:
75
75
  ## Features
76
76
 
77
77
  - **Five games**, each its own engine and its own entry point: [Falling Triplets](docs/design/01-FALLING-TRIPLETS.md), [Stone Collapse](docs/design/02-STONE-COLLAPSE.md), [Colour Chains](docs/design/03-COLOUR-CHAINS.md) [Gem Swap](docs/design/04-GEM-SWAP.md) and [Magnetic Blocks](docs/design/CAMPAIGN-EXTENSIONS.md).
78
- - **Graded campaigns and lessons**: 100 Falling Triplets, 50 Colour Chains, 100 Stone Collapse, 50 Gem Swap, 50 Magnetic Blocks, 50 Shizen and 50 Arashi challenges (450 total), ordered by measured difficulty, each with a recorded winning play that the tests replay, and three guided lessons for each game. The boards are original, regenerated from a script, and a challenge keeps its identity if the order changes.
78
+ - **Graded campaigns and lessons**: 100 Falling Triplets, 50 Colour Chains, 100 Stone Collapse, 50 Gem Swap, 128 Magnetic Blocks, 128 Shizen and 128 Arashi challenges (684 total), ordered by measured difficulty, each with a recorded winning play that the tests replay, and three guided lessons for each game. The boards are original, regenerated from a script, and a challenge keeps its identity if the order changes.
79
79
  - **Three modes**: Relaxed (no clock, plan each move), Arcade (a timer drops the pieces) and Daily (the same board for everyone on a date).
80
80
  - **Seeded and replayable**: a state is made from a seed and a list of actions, so a save is that list, and it decodes to exactly the board it came from.
81
81
  - **Configurable boards**: presets from compact to extra wide and deep, custom sizes within stated limits, up to six colours, and shaped boards (heart, star, hexagon) for the full-board games.
82
82
  - **Stored tools** for Gem Swap (Bomb, Row clear, Colour clear) and Stone Collapse (Bomb, Pick): select a tool and a stone, look at the highlighted effect, then confirm or cancel. A run that uses a tool is marked assisted. An optional earned Black Hole shrinks as it consumes nearby gems.
83
83
  - **Nature, optional**: Shizen magnetic stones with one bounded rebound, and Arashi weather, a rare or frequent earthquake that jumbles stones and lightning that removes exposed ones, on a seeded schedule.
84
- - **Magnetic Blocks**: bonded 2×2 squares, a floor that turns magnetic on a schedule, a one-use Floor Switch and impact drops. Its fifty challenges introduce Calm/Pull choices, planned floor schedules, the Floor Switch and impact drops.
84
+ - **Magnetic Blocks**: bonded 2×2 squares, a floor that turns magnetic on a schedule, a one-use Floor Switch and impact drops. Its 128 challenges progress from forgiving landings to coupled support clearings and a necessary Floor Switch. Impact remains configurable in free play.
85
85
  - **Accessible**: permanent colour symbols, keyboard and keypad control, an Animation setting that is on by default and a reduced-motion choice that is respected.
86
86
  - **Light and dark** that follow the device, in the demo's family look.
87
87
  - **English and Japanese** words for every lesson, challenge, button and line of the demo.
@@ -95,9 +95,9 @@ Or straight from a page, with nothing to build:
95
95
  | Stone Collapse | `stone-collapse` | select a connected group and confirm | two or more touching stones of one colour | 100 |
96
96
  | Colour Chains | `colour-chains` | rotate a falling pair | a group of four or more | 50 |
97
97
  | Gem Swap | `gem-swap` | swap two neighbours | a run of three or more, which can make special gems | 50 |
98
- | Magnetic Blocks | `magnetic-blocks` | rotate a falling 2×2 block | four connected gems, with Calm/Pull settling | 50 |
99
- | Shizen | `colour-chains` | anticipate marked stones and rebound | four connected gems after attraction | 50 |
100
- | Arashi | `colour-chains` | plan around earthquakes and lightning | four connected gems after weather | 50 |
98
+ | Magnetic Blocks | `magnetic-blocks` | rotate a falling 2×2 block | four connected gems, with Calm/Pull settling | 128 |
99
+ | Shizen | `colour-chains` | anticipate marked stones and rebound | four connected gems after attraction | 128 |
100
+ | Arashi | `colour-chains` | plan around earthquakes and lightning | four connected gems after weather | 128 |
101
101
 
102
102
 
103
103
  ### What's in it
@@ -215,7 +215,7 @@ const weather = createArashiLevel(1);
215
215
  const bondedSquares = createLevel(1);
216
216
  ```
217
217
 
218
- Each campaign has fifty fixed puzzles ordered from easy to hard. Use its manifest for stable IDs, bilingual titles, objectives, difficulty marks and verified winning plans. Select Shizen or Arashi in the Colour Chains demo, or a challenge in Magnetic Blocks. A campaign uses a finite queue with no falling clock; the goal and progress appear beside the board. Fixed rules stay visible, and the result offers replay or the next challenge. See the [campaign contract](docs/design/CAMPAIGN-EXTENSIONS.md).
218
+ Each of these three campaigns has 128 fixed puzzles: 32 entry-level, 32 easy, 32 intermediate, 24 hard and 8 expert. All selected puzzles are regraded from measured evidence on an integer 1–100 scale, then ordered within those bands. Use its manifest for stable IDs, bilingual titles, objectives, difficulty marks and verified winning plans. Select Shizen or Arashi in the Colour Chains demo, or a challenge in Magnetic Blocks. A campaign uses a finite queue with no falling clock; the goal and progress appear beside the board. Fixed rules stay visible, and the result offers replay or the next challenge. See the [campaign contract](docs/design/CAMPAIGN-EXTENSIONS.md). The [review workflow](docs/design/CAMPAIGN-REVIEW-WORKFLOW.md) and [design worksheet](docs/design/CAMPAIGN-DESIGN-TEMPLATE.md) explain how to measure, review and improve future campaigns.
219
219
 
220
220
  ### In a framework
221
221
 
@@ -360,7 +360,7 @@ The engine draws nothing, so a page draws the state. Save this as a file and ser
360
360
 
361
361
  ### A challenge won by its recorded play
362
362
 
363
- Every graded challenge ships a winning play, and the tests replay all 450. A server can do the same to check that a client really won, with no screen: start the level, make the recorded moves, and read the phase.
363
+ Every graded challenge ships a winning play, and the tests replay all 684. A server can do the same to check that a client really won, with no screen: start the level, make the recorded moves, and read the phase.
364
364
 
365
365
  ```ts
366
366
  import { advanceTicks, applyAction, createLevel, levelManifest, statusOf } from "@johnmorrisdotca/houseki/falling-triplets";
@@ -509,7 +509,7 @@ true false
509
509
 
510
510
  ### The three campaigns that came after
511
511
 
512
- Magnetic Blocks, Shizen and Arashi each have fifty fixed puzzles ordered from easy to hard, with stable IDs, titles in both languages, an objective and a verified winning plan. A campaign has a finite queue and no falling clock.
512
+ Magnetic Blocks, Shizen and Arashi each have 128 fixed puzzles ordered from easy to hard, with stable IDs, titles in both languages, an objective and a verified winning plan. A campaign has a finite queue and no falling clock.
513
513
 
514
514
  ```ts
515
515
  import { createArashiLevel, createShizenLevel, arashiLevelManifest, shizenLevelManifest } from "@johnmorrisdotca/houseki/colour-chains";
@@ -521,8 +521,8 @@ console.log(createLevel(1).phase, createShizenLevel(1).settings.goal, createAras
521
521
  ```
522
522
 
523
523
  ```text
524
- 50 50 50
525
- Bonded landing 25 | 磁力の後にリバウンド | Save a path for lightning
524
+ 128 128 128
525
+ Open landing 001 | 青いガイドでリバウンド | Leave space above the target
526
526
  falling { kind: 'clear-targets', targetIds: [ 1, 2, 3 ] } frequent
527
527
  ```
528
528
 
@@ -561,7 +561,7 @@ Every export of every entry point is in the [API reference](https://johnmorrisdo
561
561
  | `@johnmorrisdotca/houseki/colour-chains` | Colour Chains: 50 challenges, three lessons, and the Shizen and Arashi campaigns |
562
562
  | `@johnmorrisdotca/houseki/stone-collapse` | Stone Collapse: 100 challenges, three lessons, hints, undo and stored tools |
563
563
  | `@johnmorrisdotca/houseki/gem-swap` | Gem Swap: 50 challenges, three lessons, hints, undo, stored tools and the Black Hole |
564
- | `@johnmorrisdotca/houseki/magnetic-blocks` | Magnetic Blocks: bonded squares, the magnetic floor and its 50 challenges |
564
+ | `@johnmorrisdotca/houseki/magnetic-blocks` | Magnetic Blocks: bonded squares, the magnetic floor and its 128 challenges |
565
565
  | `@johnmorrisdotca/houseki/nature` | The deterministic attraction, rebound and environment utilities |
566
566
 
567
567
  ### The calls to learn first