Skip to content

Releases: johnmorrisdotca/tsunagi

v1.6.3

Choose a tag to compare

@github-actions github-actions released this 06 Oct 09:46

Nothing that was exported has changed.

Fixed

  • npm showed the README cut off. 1.6.2's README was 77,000 characters, and npm keeps and shows only the first 65,536, so the page ended in the middle of the Architecture tree, without The name, Where it comes from, Development, Contributing, Changes or Licence. The README is now under 64,000 characters, and a test fails if it grows past that. Nothing was removed: the source tree is in docs/ARCHITECTURE.md, the steps for making levels in docs/MAKING-LEVELS.md, the rules for portals in docs/PORTALS.md, the drawing's classes and groups in docs/DRAWING.md, how a board is played in docs/PLAYING.md, and the full list of calls in docs/API-CALLS.md; the README keeps a summary of each and links it.

Changed

  • The Architecture test reads docs/ARCHITECTURE.md.

v1.6.2

Choose a tag to compare

@github-actions github-actions released this 06 Oct 09:26

Nothing that was exported has changed. npm shows the README from the tarball, so a README that is fuller is a release.

Added

  • The README follows the family's README standard (johnmorrisdotca/.github, README-STANDARD.md): a hero picture under the title, ### What's in it with a picture of each kind of board (colours, numbers, a colour-blind set, walls, bridges, waypoints, a board that wraps, hexagons, portals and a 30×30), an install section, an Examples section whose code is run by a test (a page with nothing else, a check in Node, a server that keeps no answers, the level of the day, a drawing as SVG text and as a file, a look of your own, a game as pure functions, a game kept and resumed, the board's events, counting answers, a board from a seed, the ladder and the portal levels), and an Accessibility section.
  • Twenty-four pictures in docs/images, in light and dark, taken from the built demo by pnpm screenshots:readme (scripts/readme-pictures.mjs) and shown by absolute address so that GitHub and npm both show them. They are WebP, each under its size budget, and are never in the tarball: pnpm test:package fails if one is.
  • pnpm test:readme type-checks and runs every TypeScript and JavaScript example in the README against the built package, and the readme job in CI runs it. The README's own earlier examples are now complete enough to run, or say that they are excerpts.
  • src/readme.test.js holds the README to the standard: its sections in order, a language on every code block, a picture's file, its alt text, its caption and its dark twin, the size budget, table widths and plain words.

Changed

  • The README's pictures moved from docs/desktop.jpg and docs/phone.jpg to docs/images/, and the pnpm pictures command is pnpm screenshots:readme.
  • The entry-point table moved from Levels to API, where the standard keeps it.
  • Repository only: the package and everything it exports are unchanged. CONTRIBUTING.md is the family's one text with a section of its own for Tsunagi, held to the master in johnmorrisdotca/.github by src/family.test.js; ci.yml and pages.yml are 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.

Fixed

  • The API reference page wraps a long entry path instead of running about 2 px wider than a 360 px screen. Nothing the package exports has changed.

v1.6.1

Choose a tag to compare

@github-actions github-actions released this 06 Oct 03:56

Nothing that was exported has changed.

Added

  • A test holds every @johnmorrisdotca/tsunagi@N version pin in the README to this package's major version.

Changed

  • The family's list, in the README and in the demo's footer, names all twenty-four packages, Karakuri and Houseki included.
  • The npm description is one sentence of 250 characters or fewer, so npm and its search show it whole; it is also the repository's About text. homepage is the demo site and author is "John Morris", the same in every package.
  • The GitHub Actions workflows use the current versions of the actions (checkout 7, setup-node 7, pnpm/action-setup 6; configure-pages 6, upload-pages-artifact 5 and deploy-pages 5 for Pages), which clears GitHub's Node 20 deprecation warning.

v1.6.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 00:25

Added

  • Every level's board without its answer: @johnmorrisdotca/tsunagi/layouts, TSUNAGI_LAYOUTS (by size, in level
    order) and TSUNAGI_PORTAL_LAYOUTS. A server that checks a solve, or lists who solved which level, knows a level by its
    board and never needs its answer, and the answers are over half of every size's file; the layouts of all 2,624 levels
    are about a third of the bytes of the levels. Made by node scripts/tsunagi-layouts.ts, held to the level files by
    layouts.test.ts. Nothing that was exported has changed.

v1.5.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 00:06

Every level up to 15×15 keeps its number, its board and its answer, and every export, board code and
answer of 1.4.0 reads as it did. New: boards up to 30×30, and portals.

Added

  • Boards of 20×20, 25×25 and 30×30, 64 fixed levels each, easiest first, each proved to have exactly
    one answer (levels-20, levels-25, levels-30; TSUNAGI_SIZES gains the three). The 15th and 16th
    of each block of sixteen teach and test a twist, block by block: walls, wrap, portals, explosions.
    Wrap works at the new sizes too. Such boards are not found by luck, so they are made by taking clues
    away (reducedCandidate, src/reduce.ts): a filling is cut into short lines and neighbours are joined
    while the solver can still prove one answer within a budget of dead ends. The proof of a 30×30 takes
    about a second, and making one takes a median 25 to 66 seconds on one core (see the README for the
    measurements).
  • Portals. A portal is a pair of empty cells: a line that goes into one comes out of the other,
    going the same way. Both rings are cells the line fills, and each portal is gone through by exactly
    one line, once. In the code as a tail word, |portals<a>-<b>,…; LinkLayout.portalPairs and .portals;
    portalExit; a step across a portal has through; the solver, the checker (still O(cells)), the
    generator, transformed, the difficulty measure, Cheat, explosions and progress codes all know them.
    A drag that goes into a ring carries on out of its partner (dragFinger, Reach). Drawn as two rings
    alike, in a colour and a Greek letter, with a faint link to the partner on hover or tap; a twist,
    "portals", on the ladder.
  • A second set of levels with portals: 32 at each of 5×5 to 10×10, 12×12 and 15×15, in two blocks
    of sixteen (levels-portals, TSUNAGI_PORTAL_SIZES, TSUNAGI_PORTAL_COUNTS, TSUNAGI_PORTAL_SEED).
    The loaders, the element and mountTsunagi take a set ("classic" or "portals"), and the demo has a
    set row.
  • 82 pairs. The alphabet grows from 16 to 82 letters (PAIR_LETTERS), and each pair has its own
    colour (TSUNAGI_COLOURS grows to 82, the first 16 as they were). A board of 36 pairs or more has no
    waypoints, since the small letters are then stones.
  • Redrawing one pair. drawTsunagi groups a board's washes, beads and ghosts by pair, and
    drawTsunagiPair(layout, pair, id, options) makes one pair's. mountTsunagi patches only the pairs a
    move changed (a board with bridges is redrawn whole). On a phone-sized Chromium with the processor slowed
    four times, a move on a full 30×30 board is handled in a median 2.7 ms where redrawing everything took 18.2.
  • A binary encoding in the solver, for boards of 16×16 and up and for portals
    (countSolutionsSat(layout, limit, budget, guide, colours), SatColours), and
    countSolutionsOfLevel(layout, answer), which proves a level from its own answer.
    Boards up to 15×15 are searched as before, so no existing measurement changes.

Changed

  • The README's Limits, API, Making levels and Architecture sections cover the above; docs/strings-ja.md
    has the new words (portal, portals, portalsSays) in English and Japanese.

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 22:19

Changed

  • Needs Node 22 or later; Node 20 is no longer supported. Nothing else changed.

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 20:12

See CHANGELOG.md.

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 19:49

See CHANGELOG.md.

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 12:55

See CHANGELOG.md.

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 01 Oct 10:52

See CHANGELOG.md.