Commit Graph

29 Commits

Author SHA1 Message Date
kennethreitz e45fbf6eb3 Mosaics: first-vowel anchoring and honest empties
Anchoring at the first vowel instead of the stressed rime lets
tonight rebuild as "a night"; single-letter left words return with a
rank penalty; indexes warm at boot; the no-results message stops
blaming syllable count.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 04:21:45 -04:00
kennethreitz 43bbd527a4 Sidebar exploration tools: mosaics, phonetics, draft cross-reference
- Mosaics submode: two-word phrases that rhyme with a word perfectly,
  built by splitting its rime and searching both halves with reduced-
  vowel squeezing (placement -> place meant, creation -> way shun)
- Definition cards show phonetic anatomy (/phones/ · syllables ·
  stress dots · the rhyming tail) and what the word already rhymes
  with in your draft
- Secondary pronunciations only claim partners within 4 lines, so the
  verb pred-i-KATE can't hand predicate to a distant hook's "eight"

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 04:17:45 -04:00
kennethreitz 79dee968fa Dim internal fills (14%, phrases 10%)
Ends stay 34% — internals read as texture, not competition.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 04:10:26 -04:00
kennethreitz f46f319069 Export image button; remove Load sample
Client-side canvas render of the draft with its rhyme colors — 2x
PNG, draft-titled filename, rhymepad.org watermark. The sample still
seeds first visits; the button is gone.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 04:04:16 -04:00
kennethreitz bf1fbbfce6 Polish pass: volume, keyboard, focus, titles, tooltips
- Beats get a master volume slider (perceptual curve)
- Cmd/Ctrl+S flashes "saved" instead of the browser dialog;
  Cmd/Ctrl+K jumps to the dictionary input
- Editor autofocuses on desktop; lookup input selects-all on focus;
  panel scrolls to top on new lookups
- Browser tab title follows the active draft
- Tooltips on sample button and meter check

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 03:53:13 -04:00
kennethreitz e49e5f2844 UX feel pass
- Edited lines keep highlights over their unchanged prefix (no more
  blank-flicker while typing at line ends); 180ms debounce
- Sequence guard against out-of-order analysis responses
- iOS: 16px editor font (no zoom-jump); touch word-selection opens the
  dictionary (double-click equivalent)
- First-ever visit seeds the sample draft so colors show immediately
- Draft tabs restore caret and scroll position

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 03:44:16 -04:00
kennethreitz e6a721264b Meter check never persists — always starts off
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 03:27:38 -04:00
kennethreitz c94cb9f42e Nasal coda class, go-live polish, mobile layout, hardening
- M/N/NG merge in consonance keys (damn/hand/plans, time/line); vc
  consensus lets vowel-founded groups advertise an agreed coda
- Meta description, OG tags, orange favicon, theme-color
- Mobile: single-column layout, panel stacks under the editor
- /healthz, 100k-char draft cap, lookup length/limit caps
- Internal fills brightened (19%, ends stay 34%)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 03:19:40 -04:00
kennethreitz 359ed2c00d Widen the end-vs-internal fill contrast
End rhymes 34%, internals 13% (phrases 22/10) — scheme structure
reads at a glance without the old underlines.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 03:13:20 -04:00
kennethreitz ba0c8a715f Highlights are fills only — no more underlines
End rhymes keep the stronger tint; phrase rhymes paint the stretches
their words don't claim, so multi-word matches still read as units.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 03:09:35 -04:00
kennethreitz cab28ed23e Mosaic triple rhymes + UI truncation
Three-word vowel mosaics (mean to it / seen do it / theme music) now
group, gated hard: the mosaic must draw a full vowel beyond its anchor
word, and all-phrase buckets mirroring the same two word groups stay
suppressed. Scheme readout truncates at 16 letters; draft tabs cap at
170px with ellipsis.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 02:57:31 -04:00
kennethreitz df65fe7762 Remove the Clear button
Drafts made it redundant — open a new tab or select-all-delete.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 02:50:36 -04:00
kennethreitz 7eebbb2415 Remove caret-following suggestions
Didn't earn its place — the panel goes back to fully on-demand.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 02:49:39 -04:00
kennethreitz 942e1745e4 Caret-following rhyme suggestions in the panel
The Dictionary tab pins a dashed "rhymes for this line" box that
tracks the caret line's ending word (debounced, cached) — perfect
rhymes plus a few near ones, click-through to full entries.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 02:42:46 -04:00
kennethreitz e23552237f Reset meter check to off for everyone
Default was already off; bump the storage key so previously-stuck-on
toggles reset too.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 02:28:10 -04:00
kennethreitz 924cc54fd5 Consonant-supported phrase matching + richer synonyms
- V+schwa phrases now need their coda consonant to agree with the
  family they join: door hinge keeps orange's R, sloth hugs no longer
  rides over/shoulder. 3-vowel and full-vowel phrase runs unchanged.
- Synonyms lemmatize the query (keys -> key) and return sections:
  synonyms, opposites, broader, related (antonyms, hypernyms,
  satellites, derivational forms) — frequency-ranked, deduped.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 02:27:28 -04:00
kennethreitz 74983245ad Merge near rhymes into the Rhymes view
mode=rhyme now returns perfect rhymes plus a "near" list; the panel
shows them as one view with dashed chips for the slant side.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 02:21:26 -04:00
kennethreitz b82b26efb1 Definition always pins on top; submodes are just the lists
The Definition button is gone — every lookup shows the dictionary card
above whichever list is active (rhymes / near / synonyms).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 02:19:36 -04:00
kennethreitz 99cd934394 Sidebar is a dictionary; modes are submodes of the current word
Tab renamed Dictionary, Definition is the default submode, and every
navigation (Go, double-click, chip click, card buttons) routes through
the same word + submode state.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 02:17:30 -04:00
kennethreitz da82cd6ee2 Multi-anchor rhyme keys + Dictionary mode in the sidebar
KET-a-mine can now rhyme from its first primary stress, not just its
dictionary-final one, so it joins meth-am-PHET-a-mine's family; multi
buckets claim biggest-first since tokens carry several anchor keys.
The lookup panel grew a fourth mode: Dictionary.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 02:14:24 -04:00
kennethreitz 03fc5d16d0 Remove the current-stanza legend from the side panel
The scheme readout in the toolbar covers it; the panel is for lookups.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 02:11:51 -04:00
kennethreitz 69b8ab4e93 WordNet synonyms + double-click opens definitions
- mode=syn now served locally by NLTK WordNet (already a g2p-en dep),
  sense-grouped by part of speech and frequency-ranked; Datamuse gone
- Double-clicking a word in the draft opens its definition card; the
  card grew a Rhymes button for the old jump
- NLTK wordnet data baked into the Docker image and CI

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 02:09:00 -04:00
kennethreitz b0c4af345a UX round: definition cards, meter toggle, annotation lines
- Clicking a lookup result now opens a dictionary definition card
  (dictionaryapi.dev) with insertion as an explicit button
- Meter-break warnings live behind a "meter check" toolbar toggle
  (persisted, off by default)
- Lines starting with #, ( or [ are annotations: never highlighted,
  no scheme letter, and they don't split stanzas
- Removed stanza reordering

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 01:56:43 -04:00
kennethreitz f60818ef02 Fix highlight class collision with the lookup mode row
The prototype's .seg (display:flex segment control) clobbered the new
highlight segments, turning every rhyme span into a full-width bar.
Highlight segments are .hseg now.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 01:46:08 -04:00
kennethreitz c60b9d6d43 Overlapping rhyme layers: phrases as a second visual channel
Phrases now compete in the perfect-rhyme pass anchored at their first
word's stressed vowel ("stir up" = ER AH P = "syrup"), render as
underlines while words render as fills, and can overlap in different
colors — the syrup/cup knot finally displays both schemes. Stopword-
anchored phrases attach only on exact rime identity. Segment-based
highlight renderer replaces the span-per-token one.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 01:41:49 -04:00
kennethreitz 7eaf815e5b Meter coaching: flag lines that break the stanza's pattern
When >=60% of a stanza's lines share a syllable count (+-1), outliers
get a wavy underline and the readout names the target count.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 01:33:27 -04:00
kennethreitz a58dbf6706 Multiple drafts with tabbed switching
Browser-tab-style chips above the editor; docs live in localStorage
with auto-titles from the first line, deletion backup, and migration
of the single-draft era.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 01:32:27 -04:00
kennethreitz 7a1e0e2953 Add per-line meter detection
CMU stress markers -> stress string per line, scored against the
classical feet (iamb, trochee, anapest, dactyl, amphibrach) with
flexible monosyllables. Syllable count + best-fit meter shown in the
toolbar readout for the caret line.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 01:12:34 -04:00
kennethreitz 84bae60dff RhymePad: phonetic rhyme scratchpad for poets & rappers
FastAPI backend with CMU-dict rhyme detection (perfect, internal,
multisyllabic slant, consonance, multi-word phrases), g2p fallback for
unknown words, rhyme/synonym lookup, draggable stanza reordering,
localStorage drafts, and synthesized beats. 19 regression tests drawn
from real verses (Wayne, Em, Kanye).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 01:10:39 -04:00