Changelog

What's new in Crossword Smart Generator. Most recent changes first.

One word is enough again, and no more duplicate results
  • FixedThe results no longer fill up with near-identical rows showing just your seed words (e.g. six rows of “HERS HIM”). Those seed-only layouts now appear only as a last resort when nothing else fits, so real fills always come first.
  • FixedA single word in “Words to Include” is enough to generate again — the two-word requirement is gone.
  • FixedThe Generate button inside the theme pool now actually starts generating instead of just closing the pool.
  • Fixed“Suggest all clues” now fills each word to the chosen number of clues in a single click. Before, words with few angles only gained one clue per click and you had to keep clicking — it now prefers distinct clues but won't leave slots empty.
Dark mode
  • AddedThe generator now has a Light / Dark / System theme toggle (top-right), and remembers your choice. The whole UI re-themes from the shared design tokens, with a no-flash script so there's no light flicker on load.
  • AddedInside the CMS, the editor follows the admin's theme automatically (and updates live when you switch it), so the two always match.
Short answers get their full set of clues
  • Fixed“Suggest all clues” no longer leaves short answers (like CGI) with just one clue. When fewer clues than requested come back for a word, the editor now fills in the missing difficulty levels with individual follow-up requests — which work better for short answers — and avoids repeating clues you already have. If a word still falls short, a notice names it so you can refine or add clues by hand.
Match the admin's look
  • ImprovedThe Smart Editor now matches the admin app's cream-and-rust look — flat cream background instead of an orange gradient, rust primary buttons, and softer card borders and shadows. The colour-coding inside the grid and results (compulsory, theme, substitute, rebus words) stays the same.
  • FixedThe editor no longer turns dark on computers set to dark mode, which looked out of place inside the always-light admin. It now stays light to match.
Theme field polish
  • AddedYou can now generate straight from the theme pool — pick words in the pool, then hit Generate right there in the modal.
  • FixedThe selected-theme name is no longer cut off to a few letters (e.g. “Ani…”) in the theme summary — short names show in full and the row wraps when space is tight.
  • ImprovedThe theme field now shows a clear (×) button when a theme is set, instead of an empty gap next to a dropdown arrow. The spinner still appears there while theme words are being generated.
Cleaner results
  • ImprovedGeneration now needs at least two words in Words to Include (or content painted into the grid). A single short seed left the rest of the grid to fill with low-quality entries, so the results read as one real word surrounded by noise — a clear inline hint now asks for a second anchor word before generating.
  • RemovedRemoved the redundant “Theme words placed” box from the per-solution panel — it repeated the green theme-word highlighting and count already shown on every result row. The seed-substitution and seeds-not-placed details remain.
Theme pool & clue suggestion fixes
  • AddedTheme pool words are now clickable — tap any word in the pool to add it to Words to Include (tap again to remove). Selected words are highlighted.
  • AddedWords too long for the current grid are no longer hidden without a trace. The theme pool now shows them greyed-out under a note, so you can see what was set aside and grow the grid to use them.
  • AddedA Delete all clues button on the Clues step clears every written clue at once (with confirmation), leaving the grid and words intact.
  • FixedSuggest all clues no longer adds two clues that are the same idea reworded — near-duplicate suggestions are now filtered out before they're added.
  • FixedThe custom clue-count field is now editable again — you can clear it and type a new number without it snapping back mid-edit; the value is applied when you finish typing.
Flexible clues — counts, difficulty mixes, and a tunable prompt
  • AddedClues are no longer locked to five fixed levels per word. Each word holds a flexible list of clues — add, delete, or change any clue's difficulty (1 easy – 5 master) right in the list.
  • AddedNew suggestion presets above the clue list: pick how many clues to suggest per word (1–5, or Custom up to 10) and how difficulties are assigned — "Easy first" (1, 2, 3…), "Difficult first" (5, 4, 3…), or "Static" with a single level for every clue (e.g. 5 clues, all level 2). Suggest-all tops each word up to the chosen count. Presets are remembered per browser.
  • AddedA Prompt settings button next to Suggest all clues opens the clue prompt editor — view and edit the system instruction, per-level guidance, and rules used to generate clues, with per-field reset and a live preview of the assembled prompt. Customizations are stored in this browser and sent with every suggestion request.
  • RemovedRemoved the per-section Suggest all links from the Across/Down headers — the main Suggest all clues button with the presets covers the whole list.
  • ImprovedContinue/Submit now require at least one clue per word (instead of all five levels), matching the new flexible clue model. The CMS submit validation was relaxed to match.
  • FixedStart over now uses an in-app confirmation dialog. The old browser confirm popup is silently blocked inside the embedded editor's iframe, which made the button appear to do nothing in the CMS.
  • ImprovedContinue to review is now pinned to the top-right of the Clues step, matching the Submit for review button on the Review step. The suggestion presets sit on their own row below the header.
  • FixedThe Review step no longer stacks duplicate validation messages (e.g. "Available at is required" three times from the panel, Submission, and Publish checks) — each requirement is shown once.
  • ImprovedNew puzzles no longer start with a generic "New Puzzle" title — the Title field starts blank (with a placeholder) so a real title must be written before submitting. Untitled drafts show as "Untitled" in the CMS puzzle list.
Smart Editor polish
  • ImprovedTheme words now generate automatically — type a theme and press Enter or click away, and the word pool builds itself (a spinner shows inside the field while it works). The separate generate button is gone, and a Clear link on the selected-theme chip deselects it.
  • ImprovedOn the Review step, Author, Copyright, and Description are tucked into a collapsible "Optional details" section so the form takes far less vertical space. It expands automatically when any of those fields already has content.
  • FixedIn the embedded Smart Editor, the step header no longer leaves an empty bar after a puzzle is submitted — once the CMS toolbar takes over the workflow steps, the editor's own header disappears entirely.
Start from the grid
  • AddedYou can now start a puzzle directly in the preview grid — type letters or paint blocks and hit Generate without filling in Words to Include. The grid content acts as the constraint, and the form's required-word check recognizes it.
  • ImprovedWhen grid content narrows the search to a handful of compatible layouts, the generator now produces multiple fills per layout (targeting ~60 solutions total) instead of one solution per layout. Unconstrained generation is unchanged — variety still comes from spreading across many templates.
Drop the More variations divider
  • RemovedRemoved the "More variations" divider and the diversity re-rank that pushed novel-fill solutions above their natural score order. With one solution per template, the list no longer has near-duplicate variants to separate, and re-ranking by fill-word coverage was fighting the score-based ordering. Solutions now appear strictly in ranked order.
Tighter themed-mode substitutes
  • ImprovedIn Themed mode, starred seeds now expand to a tighter set of related-word substitutes (3 instead of 30). The theme pool is already doing the heavy lifting in this mode, so a small synonym set per seed keeps the solver's branching factor low and generation noticeably snappier. Non-themed mode still uses the full 30 — substitutes are the primary source of variety there.
Themed vs Non-themed mode + per-solution context
  • AddedExplicit Themed / Non-themed mode toggle at the top of the form. In Themed mode, picking a theme is enough — Words to Include is optional, and you can hit Generate with just a theme. In Non-themed mode, Words to Include is required and related-word substitutes are on by default for every seed (tap a chip to lock a word as exact instead).
  • ImprovedTheme panel collapses to a single line — '<Theme name> · X words ready · View pool'. The chip grid moved into a dedicated 'View pool' modal that lists every word and notes how many were hidden because they're too long for the current grid.
  • AddedEach previewed solution now surfaces 'Theme words placed' (the on-theme words the solver used) and 'Seeds not placed' (the seeds the partial-seeding fallback had to drop) right under the grid — so you can see exactly which of your inputs landed and which got dropped.
Exhaustive subset search for partial seeding
  • ImprovedWhen some Words to Include can't fit together, the generator now finds the genuinely largest fitting subset. Previously the descent was greedy — it always dropped the longest seed when no fit was found, which could miss subsets where two short seeds were the actual conflict. The new search exhaustively tries every subset at each size level (N-1, then N-2, etc.) and stops at the first size that yields any solution, so "Used 5 of 6 seeds" really means no 5-of-6 subset was missed. Bounded to 64 total subsets per run to keep wall time predictable.
Synonym-broadened theme words
  • ImprovedTheme word lists from "Generate from theme" are now broadened with up to 3 strict synonyms per word (Datamuse rel_syn). Synonyms are merged into the theme set, so the solver has more on-theme fill options without the noise of broader related-word lookups (e.g. FAST → adds QUICK/RAPID/SWIFT, but APPLE doesn't pull in TREE/FRUIT/RED).
  • ImprovedPer-word synonym lookups are cached for the lifetime of the server isolate, so repeat themes pay zero extra latency for the expansion step.
Auto-fit partial seeding
  • AddedWhen you put multiple Words to Include and no template can fit all of them, the generator now automatically descends one seed at a time — trying every "drop one" subset, picking the one that fits best, and continuing to drop seeds (down to 2) until something works. Example: 6 seeds, none of which fit together — you now get the best subset (say, 4 of 6) plus a "Used 4 of 6" toast explaining the partial fit, rather than an empty result. Works in both default and seed-only modes.
  • ImprovedSolutions already track which of your seeds were placed, so the existing per-row word coloring still highlights every used seed correctly when partial-fit kicks in.
Cleaner theme words
  • ImprovedTheme word lists generated from "Generate from theme" are now filtered through a small AI cleanup pass before being shown. Datamuse alone leaks loosely-associated words (e.g. "shopping", "below", "arts" for a flower theme); the cleanup pass keeps only words a solver would clearly recognize as on-theme. In our tests, "flowers" went from 195 candidates (many off-theme) to 54 actual flowers; "tech" went from 151 to 56 real tech terms.
  • ImprovedCleaned theme lists are cached server-side by theme name, so repeat themes return instantly with no extra cost.
Per-word substitute toggle for Words to Include
  • AddedEach Word to Include now shows up as a chip below the textarea with a swap-icon toggle. Click the chip to allow related-word substitutes for that word only (e.g., DAISY can swap to PETAL, but BEE/ROSE/BUDS stay exact). Also appendable as a trailing "*" directly in the textarea — "DAISY*" is the text equivalent of tapping the chip.
  • ImprovedRelated-word lookup is now per-seed instead of all-or-nothing — only starred seeds hit Datamuse, so runs with one flexible word are faster and don't pull synonyms for seeds you want preserved.
  • RemovedGlobal "Allow related-word substitutes" and "Only use the words I typed" checkboxes — replaced by the per-word chip toggle. Tapping a chip turns on substitute mode for that word and automatically runs in seed-only mode; leaving all chips untapped runs in the default wordlist-backed mode.
  • ImprovedTheme-augmented seed-only mode — when you have starred seeds AND a Theme set, the generator now accepts templates with more slots than seeds and fills the extras from the theme pool (not the full 200k wordlist). Produces richer solutions that blend your seeds, their substitutes, and theme words without the solver stalls the full-wordlist combination would cause.
  • FixedSolutions with gibberish forced-crossing words (e.g., BBO, EJRE, BHR) are no longer shown. The solver used to make an exception in seed-only mode on the theory that proper-noun crossings were expected; that exemption was fine when seed-only was a rarely-used checkbox but became noisy now that any starred seed runs in seed-only mode. Fewer solutions is better than gibberish solutions.
Diversified solution list
  • ImprovedSolution list now surfaces genuine vocabulary variety at the top instead of eight near-identical rows that differ by one letter. Row 1 stays pinned to the top-ranked solution; rows 2+ are picked by greedy set-coverage to showcase as many different fill words as possible before falling back to rank order.
  • AddedSubtle "More variations" divider separates the varied band from the near-duplicate rank tail, so you know exactly where the flavor changes.
Grid template generator: Across/Down length rules, quality scoring, presets
  • AddedIndependent maximum length controls for Across and Down entries. Pair them with the existing minimums to lock a direction to an exact length (e.g. Down = 4–4) or leave it unbounded.
  • AddedExplicit "Allow 2-letter" toggles per direction. 2-letter slots are off by default and only appear when their direction's toggle is on. 1-letter slots are never produced regardless of configuration.
  • Added"Require every entry to cross at least one opposite-direction entry" toggle (on by default). Rejects templates with uncrossed answer slots.
  • AddedEvery emitted template now carries a quality score (0–100) and letter grade (A–F), plus 1–3 reason chips ("open grid", "corner blocks", "high interlock", etc.). Thumbnails show grade + score badges; results are sorted by quality by default.
  • AddedSort dropdown with Quality ↓, Fewest blocks, Most blocks, Enumeration order.
  • AddedPreset chip row at the top: NYT Mini 5×5, Midsize 11×11, NYT Daily 15×15, Themeless Open 15×15, and the SOW §2.3 example. Clicking a preset fills every field.
  • AddedOptional fillability pre-check — reject templates whose slot lengths have no/few wordlist candidates. Cheap (runs against a baked-in length histogram); off by default.
  • AddedSave-to-library: persist favorite templates to this browser's localStorage. Copy JSON button writes the selected grid to the clipboard.
  • AddedKeyboard shortcuts: G to generate, Escape to stop.
  • ImprovedPreview panel shows full quality metrics: white ratio, block count, slot count, avg/min/max slot length, crossings per slot.
  • ImprovedConfig panel reorganized into a dedicated "Slot length rules" section grouping Across and Down side-by-side.
  • ImprovedEmpty state surfaces preset shortcuts to get going in one click.
Symmetry controls for painting and filtering
  • AddedNew "Black-cell symmetry" dropdown above the editable grid — choose None (default), Rotational (180°), Horizontal mirror, or Vertical mirror to control how a clicked black cell mirrors to its counterpart.
  • AddedNew symmetry filter beside the template gallery's View all — narrow the templates and solution list to grids that are Rotational, Horizontal mirror, Vertical mirror, or No symmetry. Defaults to All.
  • ImprovedPainting black cells no longer auto-mirrors at 180° by default. Pick Rotational (180°) from the new symmetry dropdown to get the previous behavior.
Custom Template bank and faster generation
  • AddedNew 5x5 "Custom Template" bank with 3,212 NYT-style layouts, giving the generator a much larger pool of grid shapes to try.
  • ImprovedSeeds + substitutes runs now stop as soon as a good solution is found and stream progress while they work, so you see results sooner.
  • ImprovedFaster no-progress shortcut on the 11x11 and 15x15 pages — impossible runs give up sooner instead of grinding.
  • FixedBuild-from-seeds no longer accepts grids where a placed seed leaves an unlabeled crossing word, and picks better tied-word candidates during search.
Grid template generator, seed-fit layouts, and performance
  • AddedNew "/grid-template-generator" page — exhaustively enumerate 5x5 grid templates with symmetry options and filter them by the slot lengths your seed words need.
  • AddedNew "/build-from-seeds" page — given a fixed list of seed words, find a grid layout that fits them.
  • AddedNew 5x5 symmetry template collection; the built-in 5x5 templates are now served from curated collection banks instead of the old NYT-style set.
  • AddedEmpty-state now suggests enabling "Allow related-word substitutes" when a run finds no solutions.
  • ImprovedSubstituted seed words are highlighted in orange in the solution display so you can see at a glance which seeds were swapped for related words.
  • ImprovedSeed input is now a single textarea with inline tooltips and auto-trim, and the "Allow related-word substitutes" toggle is available independently — enabling it auto-enables seed-only mode.
  • ImprovedSeed-only generation now also tries a seed-fitting layout fallback when the template bank doesn’t find a match, so short seed lists produce more results.
  • ImprovedLarge performance pass: cached wordlist derivations across regenerations, O(1) score lookup, memoized rebus parsing and build-from-seeds, and batched time checks. Runs noticeably faster, especially on repeat generations.
  • FixedTextarea cursor no longer jumps to the end while typing seed words.
  • RemovedThe "Use scored wordlist" toggle is gone — the app now always uses the unified open-source wordlist.
Related-word matching for Words to Include
  • AddedNew "Suggest related words" panel next to Words to Include. Click the button to see synonyms and related words for your seeds, then click any suggestion to add it to your list. Theme words are filtered out so suggestions are genuinely new.
  • Added"Use only Words to Include" toggle — when on, solutions use only your seeds (and substitutes if enabled) with no wordlist fill. Good for tight, deliberate theme-only puzzles.
  • Added"Allow related-word substitutes" toggle — when on, the generator may place a synonym in place of a seed when it lands a better fit (e.g., GREAT instead of GOOD). A new panel below the grid preview shows exactly which seeds were substituted.
  • ImprovedTip hint appears when the seed-only toggle is on alone, nudging users to also enable substitutes — which dramatically widens the set of templates that can be filled.
Progressive loading and theme-word variety
  • AddedSolutions list now loads progressively via a "Show more" button instead of stopping at a hard cap. You can scroll through every valid solution the generator found.
  • ImprovedTheme words now shuffle and distribute evenly across solutions, so no single theme word dominates every puzzle.
  • ImprovedThe generator now uses all matching theme words from a saved theme rather than picking a fixed top-5.
  • AddedWords not found in the wordlist (forced by compulsory-word crossings, e.g. proper nouns) are now highlighted in red so you can spot them at a glance.
  • ImprovedCleaner empty state when a generation run produces no solutions — explains what happened and what to try next.
  • AddedYou can now regenerate with specific words excluded — useful when you want to retry without a word you didn't like.
  • AddedNYT Mini validation data updated through March 2026.
Open-source wordlist
  • AddedSwitched to a new open-source primary wordlist (SCOWL US large + WordNet lemmas) for broader, higher-quality coverage than the legacy list.
  • FixedExpanded Hunspell inflection handling so more valid word forms pass validation.