First in the toggle row, on by default; the export honors it. Rhythm
dots and alliteration underlines are independent layers, so any
combination works (e.g. rhythm-only for a clean flow view).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Rhyme/synonym chips already in your draft get a gold tick
- Word card shows WordNet sense count (3+) — double-entendre fuel
- "alliteration" toggle underlines words sharing an initial sound
(locally clustered, 3+ words), in the editor and the PNG export:
fills = tail sound, underlines = head sound
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Inline (parentheticals) are delivery, not text — they no longer rhyme
or steal the line-ending slot ("...bunch (yeah)" rhymes on bunch).
The readout leads with "bar 3/16" for the caret's place in its verse.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
WYSIWYG: PNG line spacing widens to fit, dots centered under each
word in ink, same notation as the editor.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sheet music for rapping — the label should say what it feels like,
not what linguists call it.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Optional "stress" toggle renders ●/○ dots beneath every 2+ syllable
word (filled = stressed) in a transparent overlay behind the textarea,
so the dots never disturb text metrics. Backend emits per-word stress.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The wavy break-warning and its checkbox are gone; the toolbar keeps
the neutral per-line readout (syllables + meter label) on the caret
line. Backend still computes it; the warning UI just retired.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- "Describes" lookup mode: adjectives that commonly modify the word
(night -> dark, starry, silent) via Datamuse rel_jjb, client-side
- Typing a trailing "?" on a lookup jumps straight to synonyms
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The card is now read-only — phonetic readout and dismiss only. Dropped
the orphaned insertAtCursor helper and dead button CSS with it.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Drops the dictionaryapi.dev meanings/examples entirely. The lookup
panel ("Rhymes & words") now shows a phonetic readout for the word —
/phones/, syllables, stress, rhyming tail, sounds-like (homophones),
and what it rhymes with in your draft — over Rhymes / Synonyms lists.
RhymeZone-inspired touches kept: rarity-styled chips (common bold,
rare dimmed) and homophones.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The two-word generator goes (the /api/word phonetics card stays);
the definition card now belongs to the word — switching Rhymes/
Synonyms only swaps the list, and a dismissed card stays dismissed
until a new word is looked up.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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>
- 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>
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>
- 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>
- 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>
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>
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>
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>
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>
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>
- 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>
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>
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>
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>
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>
- 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>
- 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>
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>
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>
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>
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>
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>