181 Commits
Author SHA1 Message Date
Alex-Gilbert 1d9e877c2f readme + pyproject 2026-03-03 19:30:38 -06:00
Alex-GilbertandClaude Opus 4.6 3dfa8b3ce8 fix: promote variant spellings in word dictionary ranking
Words like "halfsister" were buried at position 99,860 (requiring Full
vocabulary) despite "half-sister" being ranked at 3,451. Strip hyphens
and spaces to normalize, then group variants together so compound forms
inherit the rank of their hyphenated/spaced counterpart.

Promotes 3,701 words. halfsister: 99,860 -> 4,020 (now in Standard).

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 21:54:58 -06:00
Alex-Gilbert 74b9820a48 font debug analysis 2026-02-23 21:17:22 -06:00
Alex-GilbertandClaude Opus 4.6 672bdc3223 fix: batch LLM validation, stream results, improve scoring prompt
- Batch candidates in groups of 50 (was 200) to avoid output token
  truncation that caused all-zero scores
- Stream scored results via SSE as each batch completes instead of
  waiting for all batches to finish
- Include solve_id in done event so validate works when results fit
  in a single page
- Rewrite prompt to judge sentence coherence ("does it make sense")
  rather than word predictability ("is it expected")
- Frontend inserts results in score-sorted order as they arrive

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 21:17:00 -06:00
Alex-GilbertandClaude Opus 4.6 fa6709cca4 feat: add LLM validation UI with score badges and context panel
Wire up Validate button in solver.js with showValidatePanel,
runValidation, and renderScoredResult functions. Add CSS for
score badges (green/yellow/red) and validate panel styling.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 16:23:06 -06:00
Alex-GilbertandClaude Opus 4.6 f7dd5a342a feat: add POST /api/solve/{id}/validate endpoint
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 16:19:21 -06:00
Alex-GilbertandClaude Opus 4.6 29a41e650c feat: add LLM validation module with prompt and tool schema
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 16:18:40 -06:00
Alex-GilbertandClaude Opus 4.6 fe25a20db9 docs: add LLM validation implementation plan
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 16:17:32 -06:00
Alex-GilbertandClaude Opus 4.6 512761cd28 docs: add LLM validation of solve results design
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 16:15:33 -06:00
Alex-GilbertandClaude Opus 4.6 a0e2bf6ec1 feat: disable two-word adjective+noun search by default
The new Wiktionary dictionary already includes 31k multi-word nouns,
making the combinatorial adjective+noun phase redundant. Add two_word
parameter (default False) to solve_word_dictionary to opt in when needed.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 15:43:00 -06:00
Alex-GilbertandClaude Opus 4.6 131c945641 data: replace word lists with Wiktionary noun dictionary
Replace the old general frequency word list (55k entries including
non-nouns like "li", "ys", "be") with a curated noun dictionary from
djstrong/nouns-with-plurals (137k entries). Frequency-sorted using
wordfreq, filtered to ASCII-only entries with min 3 characters.

Source: https://github.com/djstrong/nouns-with-plurals

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 15:39:01 -06:00
Alex-GilbertandClaude Opus 4.6 44e324e2f5 feat: add Load More button for paginated solve results
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 14:51:49 -06:00
Alex-GilbertandClaude Opus 4.6 b51dc18d9c feat: clean up solve buffer on cancel
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 14:50:40 -06:00
Alex-GilbertandClaude Opus 4.6 6341bcdfa3 feat: add GET /api/solve/{id}/results pagination endpoint
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 14:50:07 -06:00
Alex-GilbertandClaude Opus 4.6 f0b444d26c feat: cap SSE stream at PAGE_SIZE and buffer remaining results
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 14:49:30 -06:00
Alex-GilbertandClaude Opus 4.6 c8d177f23f feat: add PAGE_SIZE constant and solve results buffer
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 14:33:46 -06:00
Alex-GilbertandClaude Opus 4.6 8d7e60950c docs: add solve pagination implementation plan
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 14:30:19 -06:00
Alex-GilbertandClaude Opus 4.6 012c4bbd28 docs: add solve result pagination design
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 14:27:55 -06:00
Alex-GilbertandClaude Opus 4.6 e6b38ebc6a feat: add word frequency filtering with vocabulary size control
Sort word lists by Google Books frequency (most common first).
Add vocabulary dropdown (Common/Standard/Extended/Full) to word
mode UI that controls how many words are searched.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 14:10:08 -06:00
Alex-GilbertandClaude Opus 4.6 b768e216fc docs: add word frequency filter design
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 12:13:16 -06:00
Alex-GilbertandClaude Opus 4.6 f0efd88c27 feat: connect word mode UI controls to solver backend
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 11:41:45 -06:00
Alex-GilbertandClaude Opus 4.6 2ca73ec01f feat: wire word mode and ensure_plural to /api/solve endpoint
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 11:35:28 -06:00
Alex-GilbertandClaude Opus 4.6 a0586be336 feat: add Word mode option and plural checkbox to UI
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 11:31:22 -06:00
Alex-GilbertandClaude Opus 4.6 d04116579b feat: add two-word binary search solver (phase 2 of word mode)
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 11:06:10 -06:00
Alex-GilbertandClaude Opus 4.6 6c6a90e796 feat: add single-word noun solver (phase 1 of word mode)
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 10:05:52 -06:00
Alex-GilbertandClaude Opus 4.6 f13590f80d feat: add noun/adjective/plural word list loaders
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 10:02:11 -06:00
Alex-GilbertandClaude Opus 4.6 9d8a3c9a1f feat: add word list generation script (nouns, adjectives, plurals from WordNet)
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 09:51:15 -06:00
Alex-GilbertandClaude Opus 4.6 689609884e docs: add word dictionary mode implementation plan
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 09:39:36 -06:00
Alex-GilbertandClaude Opus 4.6 d868ce2de3 docs: add word dictionary solve mode design
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-23 09:36:50 -06:00
Alex-GilbertandClaude Opus 4.6 6e77070538 fix: known_start/end casing for multi-word name width calculation
When known_start was set with capitalized casing, the unknown portion was
forced to all-lowercase, breaking width measurements for multi-word names
(e.g., "hn doe" instead of "hn Doe"). Added _case_unknown_portion helper
that respects word boundaries. Also fixed effective_left/right kerning
context to use correctly cased characters from the display string.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-22 14:44:33 -06:00
Alex-GilbertandClaude Opus 4.6 c915935ee4 fix: defensive CSS hidden rule, cache MediaQueryList, guard setSheetSnap
- Add [hidden] { display: none !important } to prevent CSS specificity overrides
- Cache matchMedia query instead of creating new MediaQueryList per call
- Guard setSheetSnap against being called on desktop

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 16:25:46 -06:00
Alex-GilbertandClaude Opus 4.6 9ad2bc150a fix: mobile polish — tap-to-deselect and toast positioning
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 16:19:00 -06:00
Alex-GilbertandClaude Opus 4.6 f07a0c9c2c feat: wire sheet snap and tab switching to popover flow
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 16:13:15 -06:00
Alex-GilbertandClaude Opus 4.6 bee8a2f514 feat: sheet tab switching and responsive DOM relocation
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 16:11:46 -06:00
Alex-GilbertandClaude Opus 4.6 1eaf411847 feat: sheet drag and snap behavior for mobile
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 15:55:00 -06:00
Alex-GilbertandClaude Opus 4.6 6075a4f047 feat: mobile CSS for bottom sheet overlay
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 15:48:02 -06:00
Alex-GilbertandClaude Opus 4.6 95d909cc98 feat: desktop CSS for bottom-sheet as sidebar
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 15:46:47 -06:00
Alex-GilbertandClaude Opus 4.6 6ec5be11d9 refactor: replace left-panel with bottom-sheet container
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 15:42:03 -06:00
Alex-GilbertandClaude Opus 4.6 3a590e17c8 docs: add mobile-responsive implementation plan
7-task plan for bottom-sheet responsive redesign covering HTML restructuring,
desktop/mobile CSS, sheet snap behavior, tab switching, and integration.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 15:11:32 -06:00
Alex-GilbertandClaude Opus 4.6 534b3fbe33 docs: mobile-responsive redesign using bottom sheet pattern
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 15:02:28 -06:00
Alex-GilbertandClaude Opus 4.6 2297bd0aa0 fix: mobile touch-action and delete button visibility
- Add touch-action: none to #right-panel for reliable custom
  touch handling
- Show delete button on mobile (no hover state on touch devices)

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 13:29:29 -06:00
Alex-GilbertandClaude Opus 4.6 0de882c575 feat: add single-finger touch pan for mobile
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 13:26:02 -06:00
Alex-GilbertandClaude Opus 4.6 553563f871 feat: add mobile tab switching logic
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 13:24:57 -06:00
Alex-GilbertandClaude Opus 4.6 16ae903047 feat: add responsive CSS for mobile layout
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 13:24:54 -06:00
Alex-GilbertandClaude Opus 4.6 9124348e1c feat: add mobile tab bar markup and DOM refs
Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 13:23:40 -06:00
Alex-GilbertandClaude Opus 4.6 028cad35fb docs: mobile-friendly implementation plan
5-task plan: HTML tab bar, JS tab switching, responsive CSS,
single-finger touch pan, integration test.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 13:22:31 -06:00
Alex-GilbertandClaude Opus 4.6 78788bce17 docs: mobile-friendly frontend design
CSS-responsive approach with tab-based navigation at ≤768px,
full-screen solver modal, and single-finger touch pan.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-21 13:20:51 -06:00
Alex-GilbertandClaude Opus 4.6 33b88f078f feat: manual guess input + continuous text preview rendering
- Replace redaction marker span with editable input for manual guesses
- Typing in the guess field sets r.preview and shows Accept button
- drawRedactionPreview now renders left+guess+right as continuous text
  with natural font kerning (no fixed gap width during preview)
- Active preview: green left, yellow highlighted guess, green right
- Inactive preview: full merged text in yellow

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 15:45:28 -06:00
Alex-GilbertandClaude Opus 4.6 a4863350ef fix: remove blue box overlay from approved redactions
Only the merged blue text is drawn — no box overlay needed.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 15:35:09 -06:00
Alex-GilbertandClaude Opus 4.6 bff50a1315 fix: drawRedactionApproved draws box overlay + distinct green badge
The approved draw function was only drawing text with no overlay on the
redaction box area, making it look like the redaction disappeared.
Now draws a blue semi-transparent box over the redaction area (like
other states) plus the merged blue text along the line.

Also made the approved CSS badge green (--accent) to distinguish it
from the blue analyzed badge.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
2026-02-20 15:08:20 -06:00