@johnmorrisdotca/kumimoji 1.1.0 → 1.1.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 +15 -1
- package/README.md +61 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,19 @@ All notable changes to this project are written down here. The format follows
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [1.1.1] - 2026-10-01
|
|
10
|
+
|
|
11
|
+
Nothing that was exported has changed.
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- **An API reference page**, `api.html` on the demo site: every export of every entry point, with its signature and its doc comment, made from the source when the site is built so it cannot fall behind the code. The README and the demo's header link to it, and a test holds it to the source.
|
|
16
|
+
- **An Architecture section in the README**: how the source is split and what each file is for, held to the real files by a test.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
- The family's footer lists Jarajara.
|
|
21
|
+
|
|
9
22
|
## [1.1.0] - 2026-09-30
|
|
10
23
|
|
|
11
24
|
Nothing that was exported has changed, a seed deals the bag it always dealt,
|
|
@@ -94,7 +107,8 @@ The first release.
|
|
|
94
107
|
`@johnmorrisdotca/kumimoji/react`.
|
|
95
108
|
- A static demo for GitHub Pages.
|
|
96
109
|
|
|
97
|
-
[Unreleased]: https://github.com/johnmorrisdotca/kumimoji/compare/v1.1.
|
|
110
|
+
[Unreleased]: https://github.com/johnmorrisdotca/kumimoji/compare/v1.1.1...HEAD
|
|
111
|
+
[1.1.1]: https://github.com/johnmorrisdotca/kumimoji/compare/v1.1.0...v1.1.1
|
|
98
112
|
[1.1.0]: https://github.com/johnmorrisdotca/kumimoji/releases/tag/v1.1.0
|
|
99
113
|
[1.0.1]: https://github.com/johnmorrisdotca/kumimoji/releases/tag/v1.0.1
|
|
100
114
|
[1.0.0]: https://github.com/johnmorrisdotca/kumimoji/releases/tag/v1.0.0
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ In English and in Japanese kana. The rules as pure, seeded TypeScript, two word
|
|
|
12
12
|
<img alt="TypeScript" src="https://img.shields.io/badge/types-TypeScript-3178c6">
|
|
13
13
|
</p>
|
|
14
14
|
|
|
15
|
-
<p align="center"><a href="https://johnmorrisdotca.github.io/kumimoji/"><strong>Play a game →</strong></a></p>
|
|
15
|
+
<p align="center"><a href="https://johnmorrisdotca.github.io/kumimoji/"><strong>Play a game →</strong></a> · <a href="https://johnmorrisdotca.github.io/kumimoji/api.html">API reference</a></p>
|
|
16
16
|
|
|
17
17
|
<p align="center">
|
|
18
18
|
<img src="docs/desktop.jpg" alt="An English game half way: a crossword on the green table, a hand of tiles under it, and the buttons to draw, trade and sort" width="720">
|
|
@@ -250,6 +250,63 @@ fetches when a game is first dealt.
|
|
|
250
250
|
phone. The rules have no DOM in them and run in Node 20 and later, Deno,
|
|
251
251
|
Bun and web workers.
|
|
252
252
|
|
|
253
|
+
## Architecture
|
|
254
|
+
|
|
255
|
+
The rules are plain functions over plain data with no DOM: a game is a value,
|
|
256
|
+
every move returns the next one, and the same seed deals the same bag in every
|
|
257
|
+
browser. Word lists are loaded only when a game opens, and the table is its own
|
|
258
|
+
entry (`/ui` for plain DOM, `/react` for React), so a page that wants only the
|
|
259
|
+
rules carries none of it. A computer player is pure too, so its turn replays
|
|
260
|
+
exactly after a reload.
|
|
261
|
+
|
|
262
|
+
```text
|
|
263
|
+
src/
|
|
264
|
+
├── check.ts whether a finished grid completes a game: the one check a server also runs
|
|
265
|
+
├── computer.types.ts what a computer did in one step of its turn
|
|
266
|
+
├── computerPlay.ts the word a computer player lays: from its own hand, with no randomness
|
|
267
|
+
├── computerTurn.ts a computer's whole turn, planned as steps the page can show one at a time
|
|
268
|
+
├── export.ts a game written out as JSON or plain text, and read back
|
|
269
|
+
├── generate.ts making a game from a seed: a crossword laid first, then its tiles become the bag
|
|
270
|
+
├── grid.ts the grid of tiles on a table with no edges, and how it is written as a string
|
|
271
|
+
├── help.ts arranging the hand into a word, for a player who asks for help
|
|
272
|
+
├── index.ts the main entry: the rules, the generator, the computer player and the table's pure helpers
|
|
273
|
+
├── judge.ts judging a grid against its language's word list, run by run
|
|
274
|
+
├── kana.ts Japanese tiles: the 45 base kana, and how every other kana is played as one of them
|
|
275
|
+
├── kumimoji.types.ts the game's types: how much of the set a bag holds, and the rest
|
|
276
|
+
├── party.ts pass and play: two to eight people round one device, one bag, a hand and a table each
|
|
277
|
+
├── party.types.ts what a pass-and-play game was set up as
|
|
278
|
+
├── partyKept.ts a pass-and-play game kept in the browser as one string of JSON
|
|
279
|
+
├── partySeats.ts people and computers joining and leaving a pass-and-play game between turns
|
|
280
|
+
├── partyTurns.ts how a pass-and-play turn ends, and how the game does, and who won
|
|
281
|
+
├── placement.ts where a word can cross a crossword without spoiling it
|
|
282
|
+
├── play.ts a game being played: the bag, the hand and the table, and every move on them
|
|
283
|
+
├── random.ts a seeded random, so one seed deals one game in every browser
|
|
284
|
+
├── react.tsx the "/react" entry: a grid to draw in React
|
|
285
|
+
├── showcase.ts what the rules page shows of the game, worked out from the game's own tables
|
|
286
|
+
├── strings.ts every word Kumimoji shows a person, in English and Japanese
|
|
287
|
+
├── tableView.ts how the table is looked at: which squares are shown, and how big a tile is drawn
|
|
288
|
+
├── tileFace.ts what a tile code shows, without loading a word list
|
|
289
|
+
├── tileFamily.ts which tile of the set a tile is, without loading a word list
|
|
290
|
+
├── tileWords.ts the word list, loaded once when a game opens
|
|
291
|
+
├── tileWordsModule.ts the same lists where there is no browser, imported only by a server or a test
|
|
292
|
+
├── tiles.constants.ts every number the game is played by: tile mixes, hand sizes, lengths of a game
|
|
293
|
+
├── turn.ts turning the table while every tile stays upright
|
|
294
|
+
├── ui.ts the "/ui" entry: Kumimoji played in the browser, in plain DOM
|
|
295
|
+
├── version.ts the version of this package, as package.json has it
|
|
296
|
+
├── wilds.ts a wild tile with no letter read as whatever makes the grid words
|
|
297
|
+
├── words.en.data.ts the English word list
|
|
298
|
+
├── words.ja.data.ts the Japanese word list and tile mix
|
|
299
|
+
├── words.ts the "/words" entry: the word lists, for a place with no browser, such as a server or a test
|
|
300
|
+
└── ui/ the table that draws and plays a game
|
|
301
|
+
├── board.ts how a tile on the table is drawn: sound, in a run that is not a word, or apart
|
|
302
|
+
├── mount.ts the table itself: mounting it on a page, and the options it takes
|
|
303
|
+
└── style.ts the table's own styles, every colour and size a CSS variable so a page can restyle it
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
Tests sit beside the code they test (`*.test.ts`). `scripts/` builds the demo
|
|
307
|
+
and checks the package as npm packs it, `demo/` is the page published on
|
|
308
|
+
GitHub Pages, and `table/` taps it in real browsers.
|
|
309
|
+
|
|
253
310
|
## The name
|
|
254
311
|
|
|
255
312
|
*Kumimoji* (組み文字) is made of *kumi* (組み, from 組む, to put together or
|
|
@@ -495,7 +552,7 @@ The JSON, as `kumimojiToJSON` writes it:
|
|
|
495
552
|
{
|
|
496
553
|
"format": 1,
|
|
497
554
|
"game": "kumimoji",
|
|
498
|
-
"generator": "kumimoji 1.1.
|
|
555
|
+
"generator": "kumimoji 1.1.1",
|
|
499
556
|
"size": 3,
|
|
500
557
|
"level": "hard",
|
|
501
558
|
"seed": 44,
|
|
@@ -586,6 +643,8 @@ turn tiles into words: `glyphOf`, `soundOf`, `wordOf`, `wildFor`, `isWild`,
|
|
|
586
643
|
|
|
587
644
|
## API
|
|
588
645
|
|
|
646
|
+
The [API reference](https://johnmorrisdotca.github.io/kumimoji/api.html) lists every export of every entry point with its signature and its doc comment. It is made from the source by `pnpm site`, so it cannot fall behind the code.
|
|
647
|
+
|
|
589
648
|
Every function, type and constant has a doc comment, so an editor shows this
|
|
590
649
|
as you type. The entries:
|
|
591
650
|
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** The version of this package, as `package.json` has it. A test holds the two together. */
|
|
2
|
-
export declare const KUMIMOJI_VERSION = "1.1.
|
|
2
|
+
export declare const KUMIMOJI_VERSION = "1.1.1";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** The version of this package, as `package.json` has it. A test holds the two together. */
|
|
2
|
-
export const KUMIMOJI_VERSION = "1.1.
|
|
2
|
+
export const KUMIMOJI_VERSION = "1.1.1";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@johnmorrisdotca/kumimoji",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "Crossword tile race: a word game engine where each player builds a crossword from a bag of letter tiles, in English or Japanese kana, alone against the clock or at a table of two to eight. Seeded deals, word checking, wild tiles, a computer player, and a playable table for React, Vue, Svelte, Angular or plain HTML. Zero dependencies.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"word-game",
|