# Tsunagi 繋ぎ — Connect-the-pairs line puzzle > Tsunagi 繋ぎ — Connect-the-pairs line puzzle: seeded layouts, 2,368 hand-checked levels with unique answers, solver, walls, bridges, portals, hexagons and an SVG board. TypeScript, zero dependencies. Install with `npm install @johnmorrisdotca/tsunagi`. Every page below is also an HTML page at the same address ending in .html; the documentation's home is https://johnmorrisdotca.github.io/tsunagi/docs/. The examples on the reference pages are run when the site is built, and what they print is shown under them. ## Guides - [Getting started](https://johnmorrisdotca.github.io/tsunagi/docs/guides/getting-started.md): Install Tsunagi and check a bundled level's answer. - [Load levels and identify boards](https://johnmorrisdotca.github.io/tsunagi/docs/guides/load-levels.md): Load levels by size, check a board on the server without its answer, and keep numbers and codes stable. - [Play strokes and retain progress](https://johnmorrisdotca.github.io/tsunagi/docs/guides/play-and-strokes.md): Play with press, drag and lift, count strokes and explosions, and restore progress on the same board. - [Draw and embed a native board](https://johnmorrisdotca.github.io/tsunagi/docs/guides/draw-and-embed.md): Draw a board as SVG, mount a playable board, and keep the embed contract. - [Solve and generate with a budget](https://johnmorrisdotca.github.io/tsunagi/docs/guides/solve-and-generate.md): Count solutions within a budget, tell a proof from a give-up, and generate candidates with limits. - [Daily levels, blocks and assistance](https://johnmorrisdotca.github.io/tsunagi/docs/guides/daily-and-ladder.md): Pick a daily level by UTC date, follow the 16-level blocks, and record assistance correctly. - [Codes, steps and native twists](https://johnmorrisdotca.github.io/tsunagi/docs/guides/codes-and-twists.md): Read and write board codes, keep twist rules in their own suffixes, and tell an answer from progress. - [Level data and proof workflow](https://johnmorrisdotca.github.io/tsunagi/docs/guides/data-and-proof.md): See how level data, generation and proofs are kept apart, and why the generator is the source of truth. - [Troubleshooting and FAQ](https://johnmorrisdotca.github.io/tsunagi/docs/guides/troubleshooting.md): Find out why a board or progress is null, why no result is not a proof, and why a level set is missing or a board will not play. - [Upgrading and migrating records](https://johnmorrisdotca.github.io/tsunagi/docs/guides/upgrading.md): Keep 1.x codes valid and apply a renumbering to old records once. ## Reference - [@johnmorrisdotca/tsunagi/draw](https://johnmorrisdotca.github.io/tsunagi/docs/api/draw/index.md): Tsunagi's drawing: a board as SVG text, with its colour sets, its boards, the style that gives the drawing its look, and where everything sits in it (so a page can tell which cell a finger is over). - [@johnmorrisdotca/tsunagi/play](https://johnmorrisdotca.github.io/tsunagi/docs/api/play/index.md): Tsunagi, played in a page: `mountTsunagi` draws a level into any element and plays it by touch and mouse, with Undo, Restart, Check and Cheat, the zoom pad for big boards, and the words in English and Japanese. - [@johnmorrisdotca/tsunagi/element](https://johnmorrisdotca.github.io/tsunagi/docs/api/element/index.md): Board element - [@johnmorrisdotca/tsunagi/element/define](https://johnmorrisdotca.github.io/tsunagi/docs/api/element-define/index.md): Defines the `` element on the page. - [@johnmorrisdotca/tsunagi/levels](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels/index.md): Load level collections - [@johnmorrisdotca/tsunagi/levels-4](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-4/index.md): 4 × 4 levels - [@johnmorrisdotca/tsunagi/levels-5](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-5/index.md): 5 × 5 levels - [@johnmorrisdotca/tsunagi/levels-6](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-6/index.md): 6 × 6 levels - [@johnmorrisdotca/tsunagi/levels-7](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-7/index.md): 7 × 7 levels - [@johnmorrisdotca/tsunagi/levels-8](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-8/index.md): 8 × 8 levels - [@johnmorrisdotca/tsunagi/levels-9](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-9/index.md): 9 × 9 levels - [@johnmorrisdotca/tsunagi/levels-10](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-10/index.md): 10 × 10 levels - [@johnmorrisdotca/tsunagi/levels-11](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-11/index.md): 11 × 11 levels - [@johnmorrisdotca/tsunagi/levels-12](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-12/index.md): 12 × 12 levels - [@johnmorrisdotca/tsunagi/levels-13](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-13/index.md): 13 × 13 levels - [@johnmorrisdotca/tsunagi/levels-14](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-14/index.md): 14 × 14 levels - [@johnmorrisdotca/tsunagi/levels-15](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-15/index.md): 15 × 15 levels - [@johnmorrisdotca/tsunagi/levels-20](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-20/index.md): 20 × 20 levels - [@johnmorrisdotca/tsunagi/levels-25](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-25/index.md): 25 × 25 levels - [@johnmorrisdotca/tsunagi/levels-30](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-30/index.md): 30 × 30 levels - [@johnmorrisdotca/tsunagi/layouts](https://johnmorrisdotca.github.io/tsunagi/docs/api/layouts/index.md): Boards without answers - [@johnmorrisdotca/tsunagi/levels-portals](https://johnmorrisdotca.github.io/tsunagi/docs/api/levels-portals/index.md): Portal levels - [@johnmorrisdotca/tsunagi/marks](https://johnmorrisdotca.github.io/tsunagi/docs/api/marks/index.md): EVERY TSUNAGI LEVEL'S DIFFICULTY, 1 TO 5: one digit a level, level 1 first, from its measured score (`difficulty.ts`) among every level of its size — the marks the row under a board shows. - [@johnmorrisdotca/tsunagi/renumbered](https://johnmorrisdotca.github.io/tsunagi/docs/api/renumbered/index.md): Level-number migration - [@johnmorrisdotca/tsunagi](https://johnmorrisdotca.github.io/tsunagi/docs/api/main/index.md): Tsunagi: join each pair of marbles with a line, every line its own, filling the board. ## Optional - [Changelog](https://johnmorrisdotca.github.io/tsunagi/docs/changelog.md): every release - [Every export, in full](https://johnmorrisdotca.github.io/tsunagi/llms-full.txt) - [Source](https://github.com/johnmorrisdotca/tsunagi)