Skip to content

feat: Genius artist integration — bio, alt names, now-playing waveform#82

Merged
JoePittsy merged 9 commits into
mainfrom
develop
May 8, 2026
Merged

feat: Genius artist integration — bio, alt names, now-playing waveform#82
JoePittsy merged 9 commits into
mainfrom
develop

Conversation

@JoePittsy
Copy link
Copy Markdown
Member

What Lurks Beneath the Surface

Something stirs in the artist panel. Where once there was only silence — a grey void where knowledge should have lived — now breathes a dark intelligence. We have made contact with Genius.

The Summoning

A new IPC ritual was inscribed into the preload: geniusArtist. When an artist panel is opened, the daemon awakens, crawls the Genius API, and returns with things it was not supposed to know. Artist biographies. Alternate names. Social handles. The secrets were always there. We simply learned to ask.

Build-time secrets are now baked into dist/build-env.json at compile time — the packaged app can finally speak the forbidden words even without a .env to sustain it.

What It Brings Back

The right column of the artist panel has been... changed. Where the Latest Release card once stood alone in the dark, it now shares its space with things that crawled up from below:

  • The Bio — Genius's full artist description, scrollable, rendered in pale italic text as though the words themselves are afraid to be read too loudly. All paragraphs. No truncation. The truth, unabridged.
  • Alternate Names — The artist's other faces, their masks, displayed in faint uppercase letters beneath the artist name. South Atlanta Baby. Young Carti. King Vamp. They have always had many names.
  • Social Icons — The Instagram eye. The X. No labels. No handles. Just icons in the dark, watching.

The Waveform

When a top song is currently playing, its track number disappears. In its place: three bars, rising and falling, rising and falling. An animated waveform — proof that something is alive in there. When playback pauses, the bars freeze mid-motion, suspended, waiting.

The matching runs on track name rather than object ID. The IDs, we discovered, are not what they seem. They were never the same format. We do not speak of this further.

Corrections

One idea was pursued and then abandoned. A blurred Genius header image was briefly used as a background texture behind the artist header. It did not look miles better. It was removed. Some doors, once opened, are better closed.


🤖 Generated with Claude Code

Joe Pitts and others added 9 commits May 7, 2026 12:37
…ls, alt names

- Replaced truncated first-paragraph blurb with full scrollable bio (all paragraphs)
- Moved bio from header to right column (About → Socials → Latest Release stack)
- Replaced IG/𝕏 pill buttons with inline SVG icon-only buttons
- Added alternate names display below artist name in header
- Removed Artist Radio card
- Tightened sideCol gap for better column height balance

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Use genius.headerImageUrl as a blurred/dimmed background texture in the
  artist header for depth and atmosphere (brightness 0.18, blur 28px)
- Animate a 3-bar waveform in place of the track number when a top song is
  currently playing; pauses animation when playback is paused
- Highlight active track name at full opacity
- Thread currentObjectId/isPlaybackActive from App playback state into
  ArtistPanel rather than calling usePlayback a second time
- Fix ArtistPanel tests to supply new required props

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Top songs use playlist-track objectIds which differ in format from the
playback state's currentObjectId — they never matched. Switch to comparing
track title against playback.trackName which is reliable.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11.5px up from 10px, opacity 0.48 up from 0.28.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 8, 2026

Coverage Report

Status Category Percentage Covered / Total
🔵 Lines 80.37% 1671 / 2079
🔵 Statements 77.76% 1934 / 2487
🔵 Functions 73.28% 546 / 745
🔵 Branches 71.34% 1778 / 2492
File Coverage
File Stmts Branches Functions Lines Uncovered Lines
Changed Files
renderer/src/App.tsx 70.37% 55.73% 46.15% 74.4% 61, 62, 68, 81-82, 92, 111-112, 118, 123, 131, 139, 142, 147, 154-158, 205, 226-242, 260-262, 267, 351-363, 388-390, 398, 437-443, 508-516
renderer/src/components/artist/ArtistPanel.tsx 33.76% 46.73% 30% 35.93% 15-26, 63-106, 189-206
renderer/src/components/artist/TopSongRow.tsx 71.42% 50% 50% 66.66% 26-27
renderer/src/hooks/useArtistBrowse.ts 92.3% 73.07% 87.5% 95% 49, 77-80
renderer/src/types/globals.d.ts 100% 100% 100% 100%
Generated in workflow #125 for commit 8c150a4 by the Vitest Coverage Report Action

@JoePittsy JoePittsy merged commit 1674f4b into main May 8, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant