helg

helg pushed to master at helg/wordle

  • aa378d8542 dict-ru new word
  • 42f7277d14 fix(solver): cap duplicated letters that are gray and non-gray in one row When a guess repeats a letter and the result marks one occurrence gray and another green/yellow, the solver now treats the green+yellow count as the exact number of that letter in the target. Previously only the lower bound was enforced, so words like 'award' (two 'a's) slipped through after 'karma' -> 'xxxxy'. Co-Authored-By: Claude Code <noreply@anthropic.com>
  • View comparison for these 2 commits »

3 weeks ago

helg pushed to master at helg/wordle

1 month ago

helg pushed to master at helg/wordle

  • 713a90029f chore: ignore raw word-bank candidate files Co-Authored-By: Claude <noreply@anthropic.com>
  • 9a90e44038 docs: update project map for raw/11-14 Co-Authored-By: Claude <noreply@anthropic.com>
  • 27e480ea68 fix: reset stale guesses when the daily word changes Co-Authored-By: Claude <noreply@anthropic.com>
  • View comparison for these 3 commits »

1 month ago

helg pushed to master at helg/wordle

  • bf6470d09d feat: restore same-day daily game on return Persist currentGame.wordId immediately when a new game starts (raw/12) and restore the day's game from localStorage: prefill guesses while in progress, show results when finished. Persist the 5th-guess hint and revealed word. The results screen now shows a read-only guess grid with statistics moved to the bottom (raw/11). Also add "грант" to the RU guessable list. Co-Authored-By: Claude <noreply@anthropic.com>
  • 585a6f0639 feat: place EN/RU language switch on the title row Move the switch from its absolute top-right position onto the same line as the screen title on all four screens (rules, game, results, solver), via an inline mode on LangSwitch. Also reconcile ARCHITECTURE-SPINE.md with the implemented code and add _bmad-output/project-context.md as the orientation artifact. Co-Authored-By: Claude <noreply@anthropic.com>
  • 3ef3d49767 fix: replace plurals in word-bank targets and add hints Remove plural nouns and 3rd-person verbs (-s forms) from the target list and replace them in place with non-plural words drawn from the guessable list, keeping target indices stable. Fill hints for all replaced words. Co-Authored-By: Claude <noreply@anthropic.com>
  • View comparison for these 3 commits »

1 month ago

helg pushed to master at helg/wordle

2 months ago

helg pushed to master at helg/wordle

  • 71318a9b06 feat: hint mode on empty solver board Pressing Enter with an empty board now returns the best starting word (by positional letter frequency) instead of doing nothing. UI shows only the suggested word, no other result elements. Co-Authored-By: Claude <noreply@anthropic.com>
  • b6c0726e24 feat: add Wordle Solver at /solver and /ru/solver Server-side filtering with positional constraints (green/yellow/gray), suggested guess scoring by letter frequency, and best-letters panel. 6×5 editable game-board grid with cursor navigation, per-tile color cycling (gray→yellow→green), and on-screen keyboard integration. Co-Authored-By: Claude <noreply@anthropic.com>
  • View comparison for these 2 commits »

2 months ago

helg pushed to master at helg/wordle

2 months ago

helg pushed to master at helg/wordle

2 months ago

helg pushed to master at helg/wordle

  • fed79d6f1d Merge remote-tracking branch 'refs/remotes/origin/master'
  • a3295448a1 fix: histogram bars now proportional instead of binary The flex: 1 shorthand (flex-basis: 0%) was overriding the width percentage on the bar div, causing bars to render full-width or empty instead of proportionally by count. Split into a track div (flex: 1, gray background) and an inner fill div (width: pct%, green) so the bar width reflects actual statistics. Co-Authored-By: Claude <noreply@anthropic.com>
  • df816473db doc: .gitignore
  • 6cf3bd4fa8 doc: config
  • edf5c04001 doc: old prompts for changes
  • View comparison for these 6 commits »

2 months ago

helg pushed to master at helg/wordle

  • c3693b1e92 refactor: dictionary hints
  • 922a2d78bc refactor: remove id field from targets, use array index Targets no longer carry an 'id' key — wordId is now the array index (0-indexed). This eliminates redundant data and simplifies lookups. Changes: - data: removed 'id' from all target entries in both word banks - TargetWord interface: removed 'id' field - getTargetWord: now uses direct array indexing instead of .find() - getDailyWordId: returns 0-indexed (days % N instead of +1) - selectPlayAgainWord: returns {target, index} instead of using t.id - play-again cache: keyed by index instead of target.id - Generation scripts: no longer write 'id' to targets Co-Authored-By: Claude <noreply@anthropic.com>
  • c48b7a32d7 feat: extend targets dictionary to 1000 words - Take first 1000 words from frequency-sorted guessable list as targets - English: 997/1000 with synonym hints (Datamuse API + WordNet) - Russian: 295/1000 with synonym hints (Abramov dictionary + curated) - IDs sequential 1..1000, most common words first - Daily word cycles through 1000 words (~2.7 years) - .gitignore: exclude 7MB Abramov dictionary (auto-downloaded by script) Co-Authored-By: Claude <noreply@anthropic.com>
  • 5391d108ed fix: audio to dict
  • View comparison for these 4 commits »

2 months ago

helg pushed to master at helg/wordle

  • e92e3ac01a feat: synonym hints on 5th incorrect guess - Add 'hint' synonym field to every target in word-bank.json and word-bank-ru.json - English: Datamuse API + WordNet + manual overrides for quality - Russian: fully curated 100-word synonym dictionary - Server returns hint on 5th guess when not correct (tryNo=5) - Client displays 'Hint: synonym' below grid, localized per language - i18n: EN hintLabel='Hint', RU hintLabel='Подсказка' Co-Authored-By: Claude <noreply@anthropic.com>
  • becaa75c9c perf: optimize entropy solver with cached first guess and int feedback - Cache the best first guess per dictionary (computed once from a ~100-word sample) — eliminates the O(N²) first-attempt search. - Use integer encoding for feedback patterns (base-3, 0-242) in the entropy inner loop instead of string allocation/compare. - Results: ~93s → ~24ms per target after cache warmup (~3,875x). Co-Authored-By: Claude <noreply@anthropic.com>
  • View comparison for these 2 commits »

2 months ago

helg pushed to master at helg/wordle

2 months ago

helg pushed to master at helg/wordle

  • c38d407857 feat: tap letter in current guess to move cursor Clicking/tapping a letter cell in the current (unsubmitted) guess row moves the cursor to that position, matching the arrow-key cursor navigation. Co-Authored-By: Claude <noreply@anthropic.com>

2 months ago

helg pushed to master at helg/wordle

  • 0563543e2a feat: editable word with cursor and on-the-fly validation - Add blinking underline cursor in the current guess row showing where the next letter will be inserted. - Add 4th keyboard row with Enter, Left, Right, Backspace keys. Enter and Backspace removed from existing letter rows. - Left/Right arrow keys move cursor; typing replaces the letter under cursor rather than always appending. - Enter key greys out when word is incomplete (<5 letters) or invalid (client-side validation via GET /api/validate/:word). - Both physical and on-screen keyboard share the same logic. Co-Authored-By: Claude <noreply@anthropic.com>

2 months ago

helg pushed to master at helg/wordle

  • 5068455283 feat: frequency-sorted dictionaries with 100 Gaussian-picked targets Replace alphabetically-sorted word banks with frequency-sorted dictionaries (EN: 2309→5965 words, RU: 2064→2380 words). Select 100 target words per language using Gaussian distribution (μ=0, σ=100) on the frequency-ranked lists, heavily favoring common words. New targets have IDs 1..100. Includes generation script (raw/generate-banks.py) for reproducibility. Co-Authored-By: Claude <noreply@anthropic.com>
  • 242beda1c9 refactor: offload entropy solver to child process, include failed solvers in results - Move long-running entropy computation (14s) to child_process.fork() so it never blocks the API event loop. Fast 3-solver results still computed inline on cache miss for immediate response. - Cache pre-warming now happens in daily and play-again routes too (was only in guess), so by the time the player finishes their last guess all 4 solvers are usually cached. - Failed solvers (>6 attempts) now appear on the results page instead of being hidden. They contribute 10 attempts to the difficulty score. - Fix build:bundle sed to use correct relative import depth for files in dist/server/src/routes/ (../../../ instead of ../../). - Revert solver grid to 2x2 layout. Co-Authored-By: Claude <noreply@anthropic.com>
  • 4b918ce0db fix: add Cyrillic vowels to Vowel First solver so it works for Russian VOWELS set was Latin-only (a,e,i,o,u), causing the solver to degenerate into a random guesser for Russian words. Added Cyrillic vowels (а,е,ё,и,о,у,ы,э,ю,я) so the algorithm works for both languages. Fixes missing Vowel First replay for word 'хасид'.
  • 4d031c34dc fix: switch solver replays to single-column layout for reliable visibility Changed the solver results grid from 2-column to single-column flex layout. Ensures all solver MiniBoards (including Vowel First with its 6-step rows) are always fully visible regardless of varying step counts between solvers.
  • 8af03b085a refactor: lazy cache for replays/difficulty — no startup pre-computation Cache starts empty. First API request for a word computes with 3 fast solvers (~20ms) and returns immediately, then fires all 4 solvers (including entropy) in the background. Once the background computation completes (~14s), the cache is upgraded with full results. Server startup is now instant. Play Again uses cached difficulty with a 3.0 default for words not yet played.
  • View comparison for these 8 commits »

2 months ago

helg pushed to master at helg/wordle

2 months ago

helg pushed to master at helg/wordle

2 months ago

helg pushed to master at helg/wordle

  • 16534fe334 refactor: simplify solver steps from objects to string arrays Steps changed from [{guess: 'raise'}, ...] to ['raise', ...]. Removed SolverStep interface entirely. Data files ~25% smaller.
  • 19cd6d1466 refactor: stop writing colors to word-bank files from solvers All 4 solvers now push only {guess} into replay steps. Colors are computed client-side at render time.
  • View comparison for these 2 commits »

2 months ago

helg pushed to master at helg/wordle

  • 18b945bfed fix: vowel-first solver picks starting word from the actual word bank Removed hardcoded English starting words (adieu, audio, raise, arose, irate) that caused the Russian solver to use non-Russian guesses. Now dynamically picks the best vowel-rich word from the actual guessable list for any language.

2 months ago

helg pushed to master at helg/wordle

  • 9141e1e3b5 refactor: compute solver replay colors client-side instead of storing in word-bank Removed 'colors' from SolverStep type and both word-bank JSON files. Client now computes feedback colors at render time using the same green/yellow/gray algorithm as the server. Reduces data file size and API response payload.

2 months ago