@johnmorrisdotca/houseki 0.2.1 → 0.4.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 CHANGED
@@ -4,6 +4,36 @@ All notable changes to this package are written here, newest first, in the form
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.4.0] - 2026-10-06
8
+
9
+ ### Added
10
+
11
+ - 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.
12
+ - Reusable campaign design and review documents, concrete grading methods, rejected-example regressions and board-coverage evidence.
13
+
14
+ ### Changed
15
+
16
+ - 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.
17
+ - The expansion replaces the former fifty-level sets. Current campaign save/restart behavior is verified; previous-version level archives are not retained.
18
+
19
+
20
+ ## [0.3.0] - 2026-10-06
21
+
22
+ 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`.
23
+
24
+ ### Added
25
+
26
+ - `powerDropPreview` of Colour Chains returns `settledCells` as well as `finalCells`: where each stone of the pair comes to rest in the board the hard drop commits, before any clear, with the stones' stable ids. `finalCells` is where the pair locks after the rebound (the cells of the `power-drop-landed` event), and stones above a gap then fall, so a ghost drawn from `finalCells` could sit a row above where the stone ends up. The new type is `ChainsPowerDropPreview`.
27
+ - `test/previews-match-outcomes.test.mjs` compares the previews with the boards the real actions leave, over thousands of played boards: the Shizen hard-drop preview, the gentle Place landing, Falling Triplets' landing row, and Magnetic Blocks' two actions. `e2e/review/boards-settings-and-keys.test.mjs` plays the demo's level settings, its Space key, its big-board keyboard navigation in both languages and the square cells of every size.
28
+
29
+ ### Fixed
30
+
31
+ - Magnetic Blocks: choosing a level or lesson shows its own board size, colours, floor and impact at once, as "Fixed · 8 × 12" ("固定"), instead of the free-play choice it would not use; the rules are locked while it is chosen, and choosing Free play, or a mode, gives the player's own settings back. Before this the controls changed only on New game, then kept the level's values for good, labelled "Custom size". The board in play is not relabelled before New, and the free choices are remembered between visits.
32
+ - Magnetic Blocks: in a campaign level or lesson the Space key did a hard drop while the ghost and the Place button showed a gentle land. The two leave different boards on about one in seven positions of the campaign. Space now does what the game's mode offers, as the ghost shows.
33
+ - Magnetic Blocks keeps its checkpoint within 350 ms of a change during continuous play; every move used to postpone the save until the player stopped.
34
+ - Falling Triplets: a board too big for the screen is a focusable, labelled region like the other two, with a position readout; its arrow keys scroll it and no longer move the triplet.
35
+ - Falling Triplets, Colour Chains and Magnetic Blocks: "Top", "Bottom" and the position readout are in Japanese when the page is, and the region is named for the board it holds, not for its scroll position. A board that fits is no longer a tab stop.
36
+
7
37
  ## [0.2.1] - 2026-10-06
8
38
 
9
39
  Nothing that was exported has changed. The README is the family's one layout, in full.
@@ -66,7 +96,11 @@ Nothing that was exported has changed. The README is the family's one layout, in
66
96
  - An experimental Magnetic Blocks engine with bonded squares, magnetic floor schedules, a Floor Switch and impact drops.
67
97
  - Typed entry points, a generated API reference, an MIT licence and reproducible package checks.
68
98
 
69
- [Unreleased]: https://github.com/johnmorrisdotca/houseki/compare/v0.2.0...HEAD
99
+ [Unreleased]: https://github.com/johnmorrisdotca/houseki/compare/v0.4.0...HEAD
100
+ [0.3.0]: https://github.com/johnmorrisdotca/houseki/compare/v0.2.1...v0.3.0
101
+ [0.2.1]: https://github.com/johnmorrisdotca/houseki/compare/v0.2.0...v0.2.1
70
102
  [0.2.0]: https://github.com/johnmorrisdotca/houseki/compare/v0.1.1...v0.2.0
71
103
  [0.1.1]: https://github.com/johnmorrisdotca/houseki/compare/v0.1.0...v0.1.1
72
104
  [0.1.0]: https://github.com/johnmorrisdotca/houseki/releases/tag/v0.1.0
105
+
106
+ [0.4.0]: https://github.com/johnmorrisdotca/houseki/compare/v0.3.0...v0.4.0
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
@@ -753,7 +753,7 @@ Ideas, bug reports and pull requests are welcome in the [issues](https://github.
753
753
 
754
754
  ## Changes
755
755
 
756
- Every release is written up in [CHANGELOG.md](./CHANGELOG.md). The latest release, 0.2.1, adds no code: it is this README in full, with pictures of every game, examples that are run on every change, examples for React, Vue, Svelte and Angular, and an Accessibility section.
756
+ Every release is written up in [CHANGELOG.md](./CHANGELOG.md). The latest release, 0.3.0, makes Magnetic Blocks show a level's fixed rules as soon as the level is chosen and give free play its own choices back, makes Space do what the ghost showed, lets a big board be scrolled from the keyboard on all three falling players, and adds `settledCells` to the Shizen hard-drop preview.
757
757
 
758
758
  ## Licence
759
759