Changelog
All notable changes to this package are written here, newest first, in the form of Keep a Changelog, and this package follows Semantic Versioning.
Unreleased
0.4.2 - 2026-10-14
Nothing that was exported has changed. The package has an English and Japanese documentation site with a checked example for every export.
Added
- Add the bilingual documentation site, checked public examples, paired guides, local search and machine-readable pages.
Changed
- The API link in the header reads "API" in English, so that the header takes the same number of rows in English and in Japanese on a phone, as the demo's test of a language change asks.
- Synchronize documentation tooling for repository layouts, generated type references, Node entry points and repository-specific README links.
- Keep complete resource catalogues on the documentation entry index and the active resource beside core navigation; render valid default imports in HTML and Markdown.
- The demo's smoke test counts thirty-three links in the family footer, after the sports packages joined the list, and the family test counts thirty-two packages.
- Group the package family by kind, alphabetize each group, and include the geography packages and REST in Pieces in the shared footer and README.
- Update the shared family description for addresses in all seven supported countries, including France and Germany.
0.4.1 - 2026-10-07
Fixed
- Gem Swap rejects excessively nested replay inputs with a bounded validation error.
- Reshuffling preserves an active Black Hole portal and all remaining gem identities.
- Black Hole design status now matches the optional shipped tray power. CI explicitly checks public metadata and machine-specific documentation paths.
0.4.0 - 2026-10-06
Added
- 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.
- Reusable campaign design and review documents, concrete grading methods, rejected-example regressions and board-coverage evidence.
Changed
- 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.
- The expansion replaces the former fifty-level sets. Current campaign save/restart behavior is verified; previous-version level archives are not retained.
0.3.0 - 2026-10-06
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.
Added
powerDropPreviewof Colour Chains returnssettledCellsas well asfinalCells: where each stone of the pair comes to rest in the board the hard drop commits, before any clear, with the stones' stable ids.finalCellsis where the pair locks after the rebound (the cells of thepower-drop-landedevent), and stones above a gap then fall, so a ghost drawn fromfinalCellscould sit a row above where the stone ends up. The new type isChainsPowerDropPreview.test/previews-match-outcomes.test.mjscompares 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.mjsplays the demo's level settings, its Space key, its big-board keyboard navigation in both languages and the square cells of every size.
Fixed
- 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.
- 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.
- 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.
- 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.
- 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.
0.2.1 - 2026-10-06
Nothing that was exported has changed. The README is the family's one layout, in full.
Added
- The README has a picture of the demo on a desk and on a phone, in light and dark, taken from the demo by
pnpm screenshots:readme(the pictures are indocs/images/and are not in the package), a picture of each game and campaign (Falling Triplets, Colour Chains, Gem Swap, Stone Collapse, Magnetic Blocks, Shizen and Arashi) and of the tool tray on a phone, an Examples section of nine examples that run, examples for React, Vue, Svelte and Angular, an Accessibility section, and tables of the entry points and the calls to learn first. pnpm test:readmetype-checks and runs every TypeScript and JavaScript example in the README against the built package, as a job of its own in CI;src/readme.test.jsholds the README to the family's standard (sections in order, languages on code fences, pictures with alt text and a caption, no marketing words, version pins) inpnpm check;pnpm test:packagefails if a picture or anything underdocs/is in the packed package.
Fixed
- On a phone the page's title, "Magnetic Blocks" in English, takes the whole row of its panel head and does not wrap, so that the board under it sits in the same place in English and in Japanese in any font. The browser check that holds this failed on GitHub's runners, whose fonts are wider than a Mac's; nothing the package exports has changed.
Changed
pnpm screenshots:readmetakes the README's pictures as WebP in light and dark underdocs/images/, instead of five PNGs of 3 MB taken by hand.
0.2.0 - 2026-10-06
Added
- Three dedicated fifty-level campaigns: Magnetic Blocks, Shizen and Arashi, bringing the package to 450 original graded challenges. Exact boards, finite queues, stable IDs, measured difficulty, winning witnesses and deterministic generation are published with the engines.
- Campaign selectors, fixed rule displays, goal progress, replay and next-level recovery in the players.
Fixed
- Clear game-over results and disabled play controls; fixed challenge settings; exact save recovery; responsive goal text; shared cloth and piece appearance; generated API imports and markup.
- Stable board geometry when switching English and Japanese at phone, tablet and desktop widths.
Changed
CONTRIBUTING.mdis the family's one text with a section of its own for Houseki, held to the master in johnmorrisdotca/.github bysrc/family.test.js;ci.ymlandpages.ymlare the family's one text (pnpm check, the demo, and the package on Linux, macOS and Windows), and any jobs of the package's own after them.- The demo's shared stylesheet is
demo/houseki.css(it wasgame.css), named for the package like the family's.
0.1.1 - 2026-10-05
Changed
- The package is brought to the family's standard: the same checks (
pnpm checkis lint, types and tests), tests run by Vitest, a CI workflow on Node 22 and 24, a release workflow that publishes by trusted publishing, and a Pages workflow, all on current action versions;pnpm test:packagepacks, installs and imports every entry point. package.jsonis made like the family's: a description short enough for npm, homepage, author,moduleandsideEffects.- The README follows the family's order and lists all twenty-four packages of the family, made from the shared template.
- The demo's four pages are made under the family's header, footer, language chooser, Help switch and table cloths, with a description, an icon and a title in the family's form, and an API reference in the same header. The page's own Theme button is gone: light and dark follow the device, as in the other demos.
- The demo's tests are Playwright tests that run at a phone's width and a desk's, in Chromium, and the pages themselves in WebKit too.
Fixed
- A new game on a page served over plain http, from an address other than localhost, no longer fails: the seed falls back to random bytes where
crypto.randomUUIDdoes not exist. - The API reference no longer widens the page on a phone for a doc comment that names a long entry path.
- Unused imports and variables are removed from the source; no public export, signature or behaviour changes.
0.1.0 - 2026-10-05
Added
- Original Falling Triplets, Colour Chains, Stone Collapse and Gem Swap engines with immutable state, seeded play, validated settings and canonical saves.
- 300 graded challenges and three bilingual lessons for each game.
- Family-style keyboard, keypad and touch demos, configurable boards, stored tools, goal progress and shared animation preferences.
- Optional Black Hole powers, Shizen magnetic stones with bounded rebound, and Arashi jumble and lightning schedules.
- An experimental Magnetic Blocks engine with bonded squares, magnetic floor schedules, a Floor Switch and impact drops.
- Typed entry points, a generated API reference, an MIT licence and reproducible package checks.