diff --git a/nix/wordle-solver-web.nix b/nix/wordle-solver-web.nix index 21b2e78..bb5dfb0 100644 --- a/nix/wordle-solver-web.nix +++ b/nix/wordle-solver-web.nix @@ -14,7 +14,7 @@ stdenv.mkDerivation (finalAttrs: { yarnOfflineCache = fetchYarnDeps { yarnLock = finalAttrs.src + "/yarn.lock"; - hash = "sha256-ND+4leEGamH86IsM9JVtIqlwyrwVRQII75+rrawbiMI="; + hash = "sha256-ApqiC2ZS4GzKRXwPCb7KiMO1IemnNU7ykUYlgMp2XjE="; }; yarnBuildScript = "build-no-wasm"; diff --git a/web/package.json b/web/package.json index f64d63b..2e2e0d3 100644 --- a/web/package.json +++ b/web/package.json @@ -27,6 +27,7 @@ }, "dependencies": { "esbuild": "^0.28.2", + "katex": "^0.18.4", "rollup": "^4.62.4", "svelte": "^5.56.9", "wordle-solver": "link:./pkg" diff --git a/web/src/App.svelte b/web/src/App.svelte index 8d42466..b010e52 100644 --- a/web/src/App.svelte +++ b/web/src/App.svelte @@ -41,7 +41,9 @@ let cursor = $state(0); - function reset() { + async function reset() { + await solver_reset(use_default_wordle_answers); + guesses = [ { letters: ["", "", "", "", ""], @@ -59,11 +61,22 @@ solution_space = solver_solution_space(); } + async function stopSolver() { + await solver_reset(use_default_wordle_answers); + for (const g of guesses.slice(0, -1)) { + try { + await solver_guess(g.letters, g.colors); + } catch (_) {} + } + } + function handleKey(event: KeyboardEvent) { if (event.key === "Enter" && event.shiftKey) { best_words = solver_evaluate_words(5, (p) => { best_words_progress = p; }); + } else if (event.key === "Escape") { + stopSolver(); } else if (event.key === "Enter") { const guess = guesses[guesses.length - 1]; @@ -107,11 +120,12 @@ { - solver_reset(use_default_wordle_answers).then(() => { - reset(); - }); + onfocus={(e) => { + if (e.currentTarget) { + e.currentTarget.blur(); + } }} + onchange={reset} />
@@ -141,10 +155,17 @@Type letters · ← → navigate · Space cycle color · Backspace delete · - Enter apply · Shift+Enter solve + Enter apply · Shift+Enter solve · Escape reset
{#if best_words} -| Word | -p[solution] | -E[Inf.] | -E[Score] | +Word | ++ | + | |
|---|---|---|---|---|---|---|---|
| {s.word} | {s.solution_probability.toFixed(3)} | {/await} + + diff --git a/web/src/components/WordleLine.svelte b/web/src/components/WordleLine.svelte index 4424aeb..b59bc4d 100644 --- a/web/src/components/WordleLine.svelte +++ b/web/src/components/WordleLine.svelte @@ -69,6 +69,13 @@ class:bg-green-600={colors[i] === Color.GREEN} class:bg-yellow-600={colors[i] === Color.YELLOW} class:bg-grey-600={colors[i] === Color.GREY} + onclick={() => { + if (cursor === i) { + colors[cursor] = (colors[cursor] + 1) % 3; + } else { + cursor = i; + } + }} > {letter} diff --git a/web/yarn.lock b/web/yarn.lock index cdd5d27..505e340 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -767,6 +767,11 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +commander@^8.3.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1385,6 +1390,13 @@ json-parse-better-errors@^1.0.1: resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== +katex@^0.18.4: + version "0.18.4" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.18.4.tgz#aa09d0bfbcbab71a9a0f9d420def6c0d0a227a94" + integrity sha512-IMPntbRLOU+eu88XDiFKqQ8Akhr9Tv7jDMXqPhjG9SI1JMA4DIgXk4x9k4skJz2NZJXBRbC+2pYBLj9olqcZow== + dependencies: + commander "^8.3.0" + lightningcss-android-arm64@1.32.0: version "1.32.0" resolved "https://registry.yarnpkg.com/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz#f033885116dfefd9c6f54787523e3514b61e1968"