Updates the visual-language and engine descriptions to match what
shipped (color=family, brightness=strength, near-miss radar, hover,
PNG export, taste-tuned precision, paren/annotation handling), drops
removed features (stanza reordering, dictionary definitions), adds
license + live URL.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Only # and [ lines are skipped now; full-line parentheticals are real
lyrics (MF DOOM's whole style) and get analyzed, sid'd, and rhymed.
Inline-paren ad-lib handling (rhyme internally, never claim the end
slot) is unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
"smell like a" was matching "myself why" (EH-AY) because mosaic triples
were never weak-flagged — a trailing article "a" (bare open vowel)
dangles and isn't part of the rhyme. Triples now skip an open-syllable
stopword tail, while closed ones ("mean to it" -> theme music) stay.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
meticulous (me-TIC-ulous, IH-K under -ulous) was consonance-rhyming
quick. Consonance now fires only when the stressed vowel is within one
syllable of the word end — people/sleep still rhymes, meticulous/quick
doesn't. Gated the projection side too, so a long-rime group stops
advertising a misleading stressed-syllable consonance.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The export now mirrors render() — per-token fills scaled by strength,
rhyming words tinted in their family color, sub-word tail underlines,
gray unanswered endings, near-miss dotted marks, plus the existing
alliteration/rhythm/header styling.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
setEmphasis clears when the rhyme toggle is off, so hovering doesn't
light a family or show the inspector with the rhyme layer disabled.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rhyming words now take a quiet tint of their family hue (28-60% toward
the color by strength, mixed with ink for legibility) on top of the
soft block fill — both channels at once: the block groups, the tinted
glyphs carry the color. The sub-word underline still marks the exact
rhyme. Subtle enough to read through.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Hovering a rhyming word brightens its family's chips (CSS class
toggles, no re-render, smooth .2s transition); moving onto plain text
or off the editor falls back to the caret's family. Additive only —
nothing dims. Unified the caret spotlight and hover onto one
activeFam path.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Hovering a word now brightens its whole rhyme family (dark ink on lit
chips) plus the margin bracket — same as the caret spotlight, but
following the mouse so you can sweep a verse. The weave/constellation
overlay was tried (threads, taper, forks, dots) and cut: every step
revealed it was more than the page wanted. Hover-illuminate is the
clean version.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Click a rhyme and a soft thread of light weaves under the text through
every member of its family — a spine following the line-ending rhymes
with internal rhymes forking off, drawn-in on click, nodes sized by
each word's strength, anchored to the rhyming tail. Renders beneath
the glyphs (z-index 0) with a gentle gaussian glow so it reads as
light from underneath, not a stroke on top.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Strength is now per token, not per family — a word that only slant-
matches its family (placement riding creation/elation's -ation core)
caps at 0.6 while the perfect anchors stay at 1.0. The gradient now
lives within a single color, showing each word's own grip on the rhyme.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The fill (and tail underline) now scale through a per-group strength
from the founding key: perfect 1.0, multisyllabic .82, consonant-
backed .7, vowel slant .6, consonance .55, weak ending .5. So the
page reads rhyme quality as a smooth brightness ramp, not just
perfect-vs-slant — the feature, deepened.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A line ending that rhymes with nothing but sits one phoneme from
another ending in the stanza (hand/bond — one vowel apart) gets a
dotted gold underline: a tiny edit would lock it. Restricted to
genuinely-open endings, so it never duplicates the slant/consonance
detection (which already catches same-vowel near-rhymes).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Whole rhyming word fills dimly; a bright underline marks just the
rhyming part (tonight -> under 'ight'), so the precise interlock shows
without the fill looking ragged when the phoneme->letter guess is a
letter off. Removed 'scheme' from the toolbar readout.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
#4: caret in a colored word names its family in the readout —
"rhymes ay t — night, light, flight". The colors stop being a mystery.
#5: slant rhymes render at 62% of a perfect rhyme's fill, so the page
shows match strength, not just match presence.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Each blank-line-separated stanza is its own rhyme scheme. The perfect-
rhyme pass is now keyed per stanza, and the multi/coda fusion steps
won't union families across stanza boundaries (slant/multi/consonance
buckets were already stanza-keyed). light/night in verse 1 no longer
links to bright/sight in verse 2.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
middle / unavoidable shared only a schwa+L tail — the weak-ending rule
firing on a reduced vowel. Weak endings now require a full final vowel
(infancy/see on IY stays). Surfaced that swimmers' plural -s blocked
its coda from nesting with finisher; a trailing sibilant is inflection,
so it's stripped from the coda tag — Wayne's chain stays whole, garbage
(JH) still stays out.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Lines starting with # render bold and a touch brighter (a title, not
just a dim note); ( and [ annotation lines stay dim. Export matches.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Clicking into a colored word brightens its whole rhyme family (dark
ink on lit chips) and draws a soft rounded bracket in the left gutter
spanning the family's lines — rhyme and alliteration each get their
own bracket, gated to their toggle. No dimming of the rest; additive.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
garbage/javascript were joining dollar/scholar's AA-x group via the
attach path, which lacked the coda-class guard the bucket path has.
Now a bare V-x key attaches only when the token's coda nests with the
group's — same rule both paths. syrup/burden was the same looseness
(ER-schwa, mismatched coda) and now correctly splits; the real
stir-up/were-up perfect phrase matches stay.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Python diss put pink on five different families: 18 families, 12
colors, and the assignment kept grabbing low indices so one hue piled
up. Now 16 colors (added cyan, amber, lavender, emerald) and each
family takes the globally least-used non-adjacent color, so hues
spread evenly — no color repeats more than twice on a dense page.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Slant/multi attachment, multi buckets, and unequal-length containment
fusion now require members within ~6-8 lines. "All Me" was chaining
Baby/Mercedes/loan/being/Daddy into one teal family across 110 lines;
vowel assonance is local evidence, not global. Perfect rhymes and
equal-key fusion stay global (a real rhyme carries any distance).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
At 85% fill the off-white text washed out; the focused family's
glyphs flip to dark (like the primary button) with a touch of weight.
Possible because the highlight layer owns glyph color.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The full color field stays put; the family under the caret glows
~1.8x (capped at 60%). Additive, not subtractive.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The spotlight exposed forever/question/extra/sequential as one EH-x
family. Three fixes:
- phrases obey refrain muting (the «Forever ever» carpet)
- bare V-x buckets subdivide by nesting final-coda classes, so
placement (NT) keeps creation (N) but forever (.) releases
sequential (L); phrases ride the main cluster
- single-vowel suffix fusion requires member coda sets to nest
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Click into any colored word and every other family dims to a whisper
(22% of normal); the caret's rhyme thread stays lit across the whole
draft. Caret anywhere else restores the full field. No toggle — it
follows where you are. Smallest covering token wins (word over
phrase), recomputed after each analysis since gids shift.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
r9/r10/r11 were a pale pink, a second teal, and a second orange — now
rose, indigo, and chartreuse. Color assignment stops being gid % 12:
each family picks the first hue not worn by families on its own or
neighboring lines, so similar colors never sit next to each other.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Internals 19% (phrases 14%), ends stay 34%, export matches. On long
documents the overlay layers get a tail spacer equalizing their
scroll height with the editor's, so deep scroll positions can't clamp
and slide the colors off the visible text.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The caret-line readout already gives syllables on demand; a number on
every line was furniture.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Share covers it (Notes, Files, anywhere), and drag-drop import remains
the way back in. Toolbar: Copy · Save PNG · Share + toggles.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Apple offers no content-accepting Notes URL scheme; the native share
sheet is the real path — Notes, Messages, Mail, one tap. Button only
appears where navigator.share exists (Safari, iOS, Android).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Two sub-tabs under the lookup input: Explore (associations, describes,
synonyms — the meaning side) and Wordplay (rhymes, near, multis — the
sound side). Readout and history shared; switching repaints from the
cached entry.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
What the word summons (Datamuse rel_trg): rain -> showers, monsoon,
shine, hail. The theme-building lens, first in the entry.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Multis: dictionary search by vowel skeleton — single words and
two-word combos matching the target's run from its stressed anchor
(charisma -> little/women/business; vacation plans -> information
back). Perfect rhymes excluded; phrases supported as targets; new
"multis" row in the rhymes section. Indexes warm at boot.
- Counts toggle: syllables per line in dim digits at the editor's
right edge, wrap-safe and live; carried into the PNG export.
- Suffix fusion: multi families whose vowel keys are end-aligned
containments merge (back pocket / rap profit / off it / still in
office = one Em chain), with trailing schwas stripped before
comparison; the longest end token now owns the scheme slot.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The grey wrap targeted a renderer shape that no longer exists and
silently no-opped; it now applies at the real line-append point, and
the editor selection rule is un-nested for parser safety.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Same-vowel perfect families fuse when both live at line ends:
blood/mud + thugs/drugs (+does/love/enough) read as Kanye's one AH
chain; mid-line families keep their codas distinct
- Annotation lines (#, [, ( starts) render in a dim ink — the
highlight layer now owns the glyph color (textarea text is
transparent over it), in the editor and the PNG export
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
(justify greed) now lights up with need/breed as internal rhyme; the
ending slot stays with the last word outside parens, so (yeah) tails
still can't set the scheme. The old all-or-nothing exclusion is gone.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Third extractor: the knowledge panel's standalone "Lyrics" header
through the Source:/Songwriters: footer — everything after (result
snippets, videos, People-also-search-for) drops. Requires both
markers, so a poem with a "Lyrics" line passes through whole.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Google's lyrics box ships U+2028/U+2029 between lines, which a
textarea collapses — verses arrived as one giant line. All line-
separator flavors (CR, CRLF, LS, PS, NEL, VT, FF) normalize to \n,
and the Lyrics/Songwriters/Musixmatch furniture strips with the rest.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Second extractor alongside the Genius one: quoted-title headers up
top plus a Thanks-to/Writer(s)/licensed-by footer mark the envelope;
both header and footer evidence are required, so quoted lines in your
own writing never trigger it.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The more… expanders are gone — describes, rhymes, and synonyms render
in full and the entry just scrolls. Smart paste inserts through the
undo-aware path so Cmd+Z cleanly un-pastes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A full select-all paste (nav, bio, Q&A, credits, translations) now
reduces to the block between the first [Section] header and the
Embed/About footer, with "You might also like" recommendation inserts
dropped through to the next section. Lyrics-only pastes — with or
without [tags] — pass through untouched.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Curly apostrophes broke phonetic tokenization (don't -> don + t);
pasted and dropped-in text now normalizes quotes/nbsp and drops
Genius-style cruft lines (Contributors, "... Lyrics" headers,
Translations, You might also like, Source:, Embed).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
One lookup renders the whole entry — phonetic readout as a plain
header (card chrome and dismiss gone), describes, rhymes by syllable
(+near), synonyms always fully expanded — with collapsed sections
behind "more…", a clickable history trail, and lookups firing as you
type (Go button and mode seg removed).
Multi-word lookups work: phrases read straight through for the
phonetic readout, rhyme on their final word (labeled), and hit
WordNet compounds for synonyms (new york -> Empire State).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>