feat: expand sudoku analysis and interoperability

This commit is contained in:
2026-08-30 23:21:56 +02:00
parent 4a9869baa0
commit 8ca9300ab3
73 changed files with 12482 additions and 384 deletions
+83 -10
View File
@@ -14,11 +14,12 @@ export function HelpDialog({
<h3>Five complementary workspaces</h3>
<p>
<strong>Play</strong> keeps values, two kinds of notes, colours,
history and elapsed time. <strong>Set</strong> edits clues and
constraints. <strong>Generate</strong> constructs and rates bounded,
seedable variants. <strong>Solve</strong> explains logical steps and
can verify uniqueness. <strong>Helpers</strong> answers focused
questions without changing the board.
branches, replay and elapsed time. <strong>Set</strong> edits clues
and constraints. <strong>Generate</strong> constructs and rates
bounded, seedable variants. <strong>Solve</strong> explains logical
steps and can verify uniqueness. <strong>Helpers</strong> answers
focused sum, candidate and relation questions without changing the
board.
</p>
</section>
<section>
@@ -32,6 +33,18 @@ export function HelpDialog({
<dt>Shift + arrows</dt>
<dd>Extend the selection</dd>
</div>
<div>
<dt>Home / End</dt>
<dd>Move to the first or last cell in the row</dd>
</div>
<div>
<dt>Ctrl/ + Home/End</dt>
<dd>Move to the first or last cell in the grid</dd>
</div>
<div>
<dt>Page Up / Down</dt>
<dd>Move to the first or last row in the same column</dd>
</div>
<div>
<dt>19 / AG</dt>
<dd>Enter the selected symbol</dd>
@@ -64,13 +77,62 @@ export function HelpDialog({
explanation.
</p>
</section>
<section>
<h3>Branches, savepoints and replay</h3>
<p>
Open <strong>History &amp; branches</strong> while playing to name a
checkpoint, isolate a hypothesis, or inspect an earlier grid.
Discarding a hypothesis restores its exact starting state but keeps
the abandoned path available in replay. Replayed grids are read-only
until you return live or deliberately branch from that step. This
working history stays in the current browser session; save the
puzzle to the Library for durable puzzle progress.
</p>
</section>
<section>
<h3>Sum and Candidate Labs</h3>
<p>
Sum Lab enumerates bounded combinations and, when selected board
cells are enabled, candidate-compatible assignments per position.
Required, excluded and manually eliminated combinations remain local
helper state. Candidate Lab inspects selected cells and houses,
filters one or more digits, and can overlay strong and weak links
without changing handwritten notes.
</p>
</section>
<section>
<h3>Aid-mémoire scratch cells</h3>
<p>
Enable the optional aid-mémoire in Play for a non-constraining row
or compact grid of scratch cells. Each cell has its own label and
accepts values, corner marks, centre marks and colours through the
regular keypad or keyboard. Arrow keys stay within the configured
grid; Home/End move within a row, Ctrl/ + Home/End reach the first
or last cell, and Page Up/Down move to the first or last row. The
layout and entries are preserved with local Library progress.
</p>
</section>
<section>
<h3>Variant and false clues</h3>
<p>
The setter supports cages, lines, pair clues, X-sums, skyscrapers,
quadruples and maximum cells. Enable Wrogn mode to make new local
clues false, or switch existing clues individually or as a batch.
Red dashed artwork and a mark identify false clues; Σ and
identify X-sum and skyscraper readings. A false multi-cell clue
often stays undecided until enough of its cells are known, so exact
searches for dense liar puzzles can be substantially slower.
</p>
</section>
<section>
<h3>Generation and ratings</h3>
<p>
Generation runs in a worker with explicit time and search limits. A
requested level guides clue removal; the reported rating is then
calculated independently from logical techniques, clue load and
bounded exact-search evidence. A limit never becomes a false
bounded exact-search evidence. Practice mode deterministically mines
several candidates and succeeds only when the analysed solve path
contains the requested technique. A limit never becomes a false
uniqueness claim.
</p>
</section>
@@ -78,10 +140,21 @@ export function HelpDialog({
<h3>Import and privacy</h3>
<p>
Files, text, solving and generation stay in this browser. Compact
grids, project JSON, share fragments and supported f-puzzles data
are decoded locally. SudokuPad short IDs need its server and are
intentionally rejected. Review an export before sharing: titles,
authors, rules, solutions and progress may be included.
grids, project JSON, share fragments, supported f-puzzles,
SudokuPad/CTC inline data and supported Penpa+ long links are
decoded locally. Server short IDs are intentionally rejected. SVG,
PNG and PDF rendering also stays in the browser. Review an export
before sharing: titles, authors, rules, solutions, progress and
aid-mémoire entries may be included.
</p>
</section>
<section>
<h3>Screen-reader detail</h3>
<p>
Each Sudoku cell reports its row, column, region, value or notes,
colour, conflict state, candidate highlights and touching variant
clues. The board and aid-mémoire use real row and gridcell roles;
their keyboard instructions are attached to the grids.
</p>
</section>
</div>