Beatify
The Music Party Game for the Speakers You Already Own
A song starts. Everyone shouts a year at the speakers. Someone is
gloriously, confidently wrong — and the room lets them know.
Guests join from their phones by scanning a QR code. No app, no accounts.
Runs on your own Home Assistant.

Website • Get Started • Supported Speakers • See It In Action
Will This Work For Me?
Three things decide it — check them before you install.
- Home Assistant 2025.1 or newer
- A supported speaker — Music Assistant (any speaker it drives), Sonos, or Alexa. Chromecast, Nest and HomePod work only through Music Assistant. See Supported Speakers.
- A music source — either a paid streaming plan (Spotify, Apple Music, YouTube Music, Tidal, Deezer or Amazon Music; free tiers can’t play a chosen track on demand, so Spotify Free won’t work) or your own music library through Music Assistant — Plex, Jellyfin or local files, with no subscription at all.
Beatify itself is free and runs entirely on your own Home Assistant.
What Is Beatify?
Beatify is a music party game. Eight people in a living room, a song on the speakers, and a
scramble to name the year before anyone else does.
The music plays through your Sonos, Alexa, or Music Assistant speakers — at party volume, not out of
a phone on the table. Everyone races to guess the release year, or, in the Title & Artist mode, to
name the song and who sings it. Points fly. Streaks build. Champions emerge, then lose it all on a
song from 1994 that nobody can place.
Underneath, it is an open-source Home Assistant integration that runs entirely on your own hardware.
No apps to download. No accounts to create. Just scan a QR code and play.
If you have played Hitster or a similar card-based music party game, the core is familiar: a song
starts, and you place its release year. Beatify does that without the cards, on the speakers already
in the house — see How Beatify compares for what it does differently, and
what it does not do at all.
Why Parties Are Better With Beatify
Zero Friction Entry — Guests scan a QR code. That’s it. No apps. No accounts. No WiFi password drama. 10 seconds from scan to playing.
Uses Your Existing Smart Speakers — Works with Music Assistant, Sonos, and Alexa speakers you already have. See Supported Speakers for details.
Two Ways to Play — Guess the release year, or switch to Title & Artist mode and type the song title (+10) and artist (+5) in free text, with typo-forgiving partial credit. Close calls go to a live 👍/👎 vote — Crowd Court — that the whole room watches on the TV.
Your Music, Your Vibe — Spotify, Apple Music, YouTube Music, Tidal, Deezer, or Amazon Music (Alexa) playlists. Curated song packs included. Create your own.
Runs Locally — No cloud, no Beatify account, no data leaves your network. Free and open-source. (You bring your own music-streaming subscription — see Requirements.)
Everyone Competes — Points, streaks, power-ups, and a dramatic finale with podium and stats. Real competition, real laughs.
Setup In Home Assistant
Step 1: Install
Via HACS (Recommended) — Beatify is in the default HACS store, so there is nothing to add manually. One click:

Or find it yourself:
HACS → Search for "Beatify"
→ Download
→ Restart Home Assistant
Manual
cd /config/custom_components
git clone https://github.com/mholzi/beatify.git beatify
# Restart Home Assistant

Or manually:
Settings → Devices & Services → Add Integration → "Beatify"
That’s it. Beatify is now installed.
🎮 Your First Game in 2 Minutes
- Open: In the Home Assistant sidebar, select Beatify, then Open Beatify.
- Set up: On your first visit, choose a speaker, music service, and playlist in the guided wizard.
- Invite: On Ready to host, show the QR code; guests scan it with any phone and enter their name—no app or account needed.
- Play: When everyone appears in the lobby, select Start game.
Returning hosts skip the wizard and go straight to Ready to host. See the full hosting guide.
Opening Beatify (Admin)
After installation, access Beatify to start a game:
Beatify automatically adds itself to your Home Assistant sidebar.
- Open Home Assistant
- Look for Beatify in the left sidebar
- Click to open the launcher
- Hit “Open Beatify” — the game opens in a fullscreen new tab (no HA chrome)
Tip: If you don’t see Beatify in the sidebar, restart Home Assistant.
Option 2: Direct URL
http://YOUR-HA-IP:8123/beatify/admin
Option 3: HA Companion App
- Open the HA Companion app
- Tap the menu (☰) or swipe from left
- Select Beatify from the sidebar
Hosting Requires a Home Assistant Login
The admin/host side of Beatify is protected by your Home Assistant login.
The first time you open /beatify/admin on a device (or claim the host role
from the player page), you are sent to the normal HA login screen; after that
the device stays signed in and opening Beatify is instant.
This keeps the host controls private: if your Home Assistant is reachable from
the internet, a stranger who finds the Beatify URL cannot start a game,
control playback, trigger your speakers/lights, or end a game — every host
action requires a valid HA login. Players are unaffected — joining a game
at /beatify/play stays password-free, so guests still scan the QR code and
play with zero friction.
Any Home Assistant user account can host — Beatify does not distinguish
between HA admin and non-admin users.
Beatify exposes a single option in its options flow:
Enable HA Android Companion auth bypass — OFF by default.
Some setups hit a login loop when opening Beatify from the Home Assistant
Companion app on Android: the host page keeps bouncing back to the login
screen and never reaches the admin UI, so you can’t host from the phone. When
this toggle is ON, requests coming from the HA Android Companion app on your
local network are treated as the host without a separate login, which
breaks that loop.
⚠️ Security warning. This weakens host authentication. Leave it OFF
unless the Companion app genuinely cannot authenticate. Do NOT enable it
if Beatify is reachable through Home Assistant Cloud (Nabu Casa) or a
reverse proxy that does not forward the real client IP — in those setups
every request can look like it comes from your local network, so an internet
visitor could host games, control your speakers/lights, and end games
without any credentials. Players joining at /beatify/play are never
affected either way.
Starting a Game
First time? Beatify drops you into a 5-step first-run wizard that walks you through the whole setup:
- Speakers — Only supported speakers appear
- Music service — Spotify, Apple Music, YouTube Music, Tidal, Deezer, or Amazon Music (filtered by speaker; Amazon Music is offered only on Alexa)
- Playlist — Pick one or more curated packs
- Game mode — Difficulty, round timer, how long the song plays, announcement language, Artist Challenge / Intro Mode / Closest Wins toggles
- Lights & Voice (optional) — Party Lights mode + WLED presets, TTS announcements (only shown if Home Assistant has the entities)
After finishing, you land on the “Ready to host” screen: big Beatify wordmark, glowing QR hero card, and a Start game CTA. Share the QR code with guests — they appear as colored tiles as they scan. Hit Start game when everyone’s in.
Returning host? You skip the wizard and land directly on “Ready to host” with your previous picks preselected. Tap Edit setup any time to change speaker, service, playlists, or game mode.
Print it. Display it. Share it.
Automations: Actions and Events
Beatify adds four actions you can call from automations, scripts or Developer Tools → Actions:
| Action |
What it does |
beatify.pause_game |
Pauses the game. Optional reason: food, door or away. The reason shows on the TV, every phone and the admin page. Calling it again while paused changes the reason. |
beatify.resume_game |
Resumes a paused game. |
beatify.next_round |
Ends the round that is playing, or starts the next round from the reveal. After the last reveal it ends the game. |
beatify.end_game |
Ends the game and shows the podium. |
It also fires two events you can trigger on (watch them in Developer Tools → Events):
beatify_round_revealed: once per round, after the answer is on screen. Data: game_id, round, total_rounds, last_round, voided, song (artist, title, year), leaders.
beatify_game_ended: once per game, when the podium appears. Data: game_id, rounds_played, winners, leaderboard (rank, name, score).
Example: pause for the doorbell.
automation:
- alias: "Beatify: pause when the doorbell rings"
triggers:
- trigger: state
entity_id: binary_sensor.front_doorbell
to: "on"
actions:
- action: beatify.pause_game
data:
reason: door
# No game running? Skip quietly instead of logging an error.
continue_on_error: true
Who can call them: an automation or script that Home Assistant runs on its own can always call these actions. When a person calls one (from Developer Tools, a dashboard button or the API), that person has to be a Home Assistant administrator, the same rule as hosting a game. A non-admin user gets “Unauthorized”. If no game is running, or the game is in a phase where the action makes no sense (resuming a game that is not paused, say), the action fails with a short explanation instead of doing anything.
Play On A TV (Big-Screen Dashboard)
Beatify ships with a dedicated TV display — a landscape-locked, big-format
view that shows the lobby (QR code + joined players), round artwork, year
reveal, and live leaderboard. Players keep their phones for guessing; the
TV is the shared “stage” everyone watches.
The TV URL:
http://YOUR-HA-IP:8123/beatify/static/dashboard.html
Three ways to put it on the TV
-
Smart TV / Fire TV / Apple TV browser (cleanest) — Open the URL
directly in the TV’s built-in browser. No laptop in the loop, no browser
chrome around the page.
-
Chromecast from Chrome (laptop / desktop) — Open the URL in Chrome,
then ⋮ → Cast → Cast tab → <your Chromecast>. Easiest if you already
have the URL up to test.
-
HA Lovelace iframe card (most polished) — Embed the dashboard
inside a Lovelace view, then open that view on the TV via HA Cast or
the HA Companion app. No browser chrome at all:
type: iframe
url: /beatify/static/dashboard.html
aspect_ratio: 56.25% # 16:9
A media centre is a media player, not a browser, so the dashboard does not
run inside it — Kodi in particular has no embedded browser, and there is no
Beatify add-on for it (see #2389).
That does not stop you using the box; it just means the picture and the sound
take different paths.
- Android TV, Fire TV or Shield — Kodi is one app among others on these.
Open the dashboard URL in the device’s browser as in option 1 above, and
switch back to Kodi when the party is over.
- A dedicated HTPC that only boots into Kodi — leave the box as the
speaker (below) and put the dashboard somewhere else: a tablet on the
table, a laptop casting to the same TV, or a Lovelace view on a second
screen.
Either way the box can still be the thing making noise — that part is set up
in Music Assistant, not in Beatify.
Sending audio to the TV
The dashboard is purely visual. Music plays through whichever speaker you
picked in the admin setup, routed via Music Assistant. If you want the
sound coming out of the TV (or a soundbar/AVR attached to it), select that
device as the playback target in Music Assistant when you set up the game.
The dashboard URL and the audio target are independent — pick each one to
fit your room.
If your speaker does not appear in Music Assistant, check whether Music
Assistant has a provider for it. Kodi is the common case: Music Assistant has
no native Kodi provider, so a Kodi player only shows up once the Home
Assistant Media Players provider is enabled in Music Assistant — it then
picks up the media_player entity that Home Assistant’s Kodi integration
already provides. Same route for any other player Home Assistant knows and
Music Assistant has no driver of its own for.
Tip: A Fire TV Stick (or any cheap browser-capable streaming stick)
opened to the dashboard URL gives you a “permanent” Beatify TV display
with one device, no laptop required.
The Experience
For Players
Slide to guess. Tap to submit. Pray you’re right.
Learn the Game in 20 Seconds
Players who scan the QR code drop into a swipeable tour that teaches the core mechanics in order: guess the year, triple-or-nothing bet, steal an answer, guess the artist, and — in Title & Artist games — name that tune. The card count adapts to the game mode automatically. Skip/Next always visible, auto-advances after 4 seconds per card. By the time the host hits Start, everyone knows what to do.
The Rush
A song starts playing. The clock is ticking. You know this song… but was it '85 or '87?
The Strategy
Answer fast for bonus points. Hit a streak for multipliers. Feeling confident? Bet triple-or-nothing.
The Reveal
The year drops. The room erupts. Someone nailed it. Someone was way off. Everyone’s laughing.
Gold confetti bursts for exact guesses. Chart positions and fun facts appear. You just learned that song spent 22 weeks at #1.
For Hosts
First-run wizard walks you through setup. Every choice pre-selected when you land on Start Game.
Full Control
Skip tracks. Adjust volume. Pause the game. End early if needed. All from your phone.
Customize the Challenge
Set round timers (15s/30s/45s) and difficulty levels (Easy/Normal/Hard) to match your group. The song can also play for less than the round — 10, 15, 20 or 30 seconds of music, then silence while the answer time keeps running.
Print the QR
Physical QR code printout for the coffee table. Guests join themselves.
Play Along
Join as a player with admin controls. Compete and manage simultaneously.
Game Features
The moment of truth. Every single round.
Scoring That Creates Drama
Choose your difficulty—each changes how points are awarded:
| Difficulty |
Exact |
Close |
Near |
The Vibe |
| 😊 Easy |
10 pts |
±7 yrs = 5 pts |
±10 yrs = 1 pt |
Forgiving |
| 🎯 Normal |
10 pts |
±3 yrs = 5 pts |
±5 yrs = 1 pt |
Balanced |
| 🔥 Hard |
10 pts |
±2 yrs = 3 pts |
— |
Punishing |
Speed Bonus
Submit early: 2x multiplier
Submit at deadline: 1x multiplier
The full multiplier holds through a short grace window at the start of the round, then decays linearly. You get a moment to actually recognise the song before the clock starts costing you points.
Streak Milestones
- 3 in a row: +20 bonus points
- 5 in a row: +50 bonus points
- 10 in a row: +100 bonus points
- 15 in a row: +150 bonus points
- 20 in a row: +250 bonus points
- 25 in a row: +400 bonus points
Miss one? Streak resets. The pressure is real.
Triple or Nothing
Feeling confident? Toggle the bet before submitting.
Nail the exact year: triple your points.
Miss it — even by a year: score nothing that round.
Artist Challenge (Optional)
Know your artists? Enable this mode in game setup.
After the song, it’s a race — the first player to guess the artist correctly earns +5 bonus points.
Alternate names accepted—“Prince” or “The Artist” both count.
Movie Quiz Bonus (Optional)
For soundtrack songs. Name the film a song comes from and the first correct guess earns +5 bonus points — winner-takes-all, like the Artist Challenge.
Enable in game setup; only triggers on songs with movie metadata.
Steal Power-Up
Build a 3-answer streak to unlock Steal. Once unlocked, tap a rival mid-round to copy their answer when they submit. One steal per game — spend it wisely.
With the optional comeback token switched on, the bottom third of players are handed a Steal after the halfway round even without the streak.
Optional Twists
All off by default. Each one is a switch in game setup.
| Switch |
What it does |
| 💀 Sudden Death |
From round 2 on, the lowest scorer of each round is eliminated. Last one standing wins; a tie for last goes to the slowest submitter. Needs at least 3 players and can also be armed live from the reveal screen. |
| 🏁 Finale ×2 |
The final round pays double on accuracy, and a tie for first is settled by a one-round playoff instead of a shared win. |
| 🎁 Comeback token |
Hands the bottom third of players a Steal after the halfway round. |
| 📈 Ramp-up ordering |
Orders the songs into a difficulty arc, easy early and hard at the end, from the per-song stats Beatify already keeps. |
| 🎲 Difficulty-scaled betting |
Triple or Nothing pays ×2 on an easy song, ×3 on normal and ×5 on hard, instead of a flat ×3. |
| 😈 Sabotage |
Lets a player cut or freeze somebody else’s timer. |
| 🛡️ Streak-Shield |
Absorbs one wrong answer without breaking the streak, including one caused by a Sabotage. The absorbed round still pays no streak bonus. |
Crowd Court resolves as soon as everyone has voted, rather than waiting out the full window.
The Finale
Glory. Bragging rights. Maybe a rematch.
Fireworks explode for the winner. Full podium with medals. Personal stats. Best streaks. Bets won.
See how your game compared to all-time averages. Set a new record? Rainbow confetti and a “NEW RECORD!” badge.
Everything you need to demand a rematch.
Viewing & Selecting Playlists
Playlists are displayed on the main Beatify admin screen:
- Open Beatify (see above)
- Scroll to the Playlists section
- Check the boxes next to playlists you want to use in your game
- Selected playlists show their song count
Included Playlists
Beatify comes with 9,026 songs across 73 curated playlists:
- 🎸 100 Greatest Rock Songs — 151 rock essentials spanning 1964–2026
- ☀️ 100 Summer Anthems — 112 feel-good tracks from 1957–2020
- 🇧🇷 100% Brasil — 66 Brazilian hits across the decades
- 🇪🇸 100% en Español — 127 Latin & Spanish classics
- 🇫🇷 100% Français — 100 French hits across the eras (chanson, pop, rap, variété)
- 🎵 2000s Pop Anthems — 224 essential pop hits from the 2000s
- 🎵 2010s & 2020s Hits — 124 chart hits closing the modern-decade gap
- 🎶 40s & 50s Classics — 154 swing, crooner and early rock ‘n’ roll standards
- 🎸 60s Classics — 82 tracks from the golden age of rock & roll
- 🎙️ 70s Hits — 211 essential hits from the seventies
- 🎹 80s Hits — 267 classic hits from the decade of synths and MTV
- 🎤 90s & 2000s Hip Hop Bangers — 40 tracks from 2Pac, Eminem, JAY-Z, Nas, Dr. Dre and more
- 🎵 90s Hits — 158 essential tracks from the decade
- 🦃 American Classics · Country & Heartland — 66 country, heartland rock and folk favourites from 1951 to 2022, built for Thanksgiving
- 🎌 Anime Openings — 140 opening themes from Cowboy Bebop to Chainsaw Man
- 🍺 Ballermann Party Hits — 189 Mallorca and Schlager party tracks
- 🇨🇦 Best Canadian Hits: Top 100 — 100 Canadian hits across six decades, from The Guess Who and Rush to The Weeknd
- 🦒 Best of Giraffenaffen — 26 German children’s songs
- 🪔 Bollywood Party Hits — 79 Hindi film and party songs from 1995 to 2025, from Bole Chudiyan and Desi Girl to Stree 2
- 🇬🇧 British Invasion & Britpop — 100 tracks from The Beatles to Blur
- 🏰 Clásicos Disney (Castellano) — 64 Disney songs in the Spanish of Spain
- 🎭 Cologne Carnival — 290 German carnival favorites
- 🎸 Clásicos del Rock en Español — 39 tracks of Spanish-language rock from 1984 to 1998, Madrid to Mendoza
- 🇩🇪 Deutschpop Klassiker — 118 German pop classics, incl. the 90s / NDW canon
- 🇩🇪 Deutschrap Klassiker — 62 German rap tracks from 1995 to 2024, Freundeskreis and Beginner through Sido and Haftbefehl to Pashanim and Ski Aggu
- 🇩🇪 Deutschrock - Best Of — 100 modern German rock tracks, from Böhse Onkelz to Die Toten Hosen
- 🕺 Disco & Funk Classics — 98 essential disco and funk tracks from the 70s and 80s
- 🏰 Disney Classics — 69 soundtrack singalongs from the Disney canon
- 🇩🇪 Disney Hits Deutschland — 97 German-language Disney songs, with a guess-the-film bonus across 40 films
- 🏰 Disney Latino — 54 Disney songs in Latin American Spanish
- 🎸 Divorced Dad Rock — 107 post-grunge, nu-metal and 2000s radio-rock tracks
- 🎧 EDM Anthems — 246 festival and mainstream EDM tracks
- 🎸 Essential Alternative — 100 90s/2000s alternative rock essentials
- 💥 Eurodance 90s — 100 party songs from the eurodance era
- 🏆 Eurovision Winners (1956-2025) — 72 winning songs
- 🇲🇽 Fiesta Latina 90s — 50 Latin party anthems from Shakira, Ricky Martin, Maná
- 🇫🇮 Finnish Schlager Classics — 293 Finnish iskelmä classics
- 🌪️ Funk Carioca — 20 Brazilian baile funk hits spanning 2000–2018
- 🧃 Gen Z Anthems — 30 tracks from TikTok to Good Luck, Babe! spanning 2009–2024
- 🎯 Greatest Hits of All Time — 336 chart-toppers across four decades
- 🤘 Greatest Metal Songs of All Time — 61 legendary tracks across all major metal subgenres
- 🔊 Harder Styles — 190 hardstyle, hardcore and raw tracks
- 🎬 ICONIC movie songs — 72 songs from the movies, with a dedicated movie-quiz mode
- 🍸 James Bond Theme Songs — 24 title songs from Dr. No to Spectre, spanning 1962–2015
- 🎵 Motown & Soul Classics — 100 iconic soul tracks from Diana Ross, Marvin Gaye, The Temptations
- 🎬 Movie & TV Soundtracks — 257 iconic film soundtracks
- 🇮🇹 Musica Italiana — 115 Italian hits from the 1960s to the 2000s
- 🎸 NDW – Neue Deutsche Welle — 50 German New Wave classics from 1976–1986
- 🎤 One-Hit Wonders — 98 flash-in-the-pan classics
- 🇵🇱 Polski Rock — 100 Polish rock tracks
- 🇵🇱 Polskie hity radiowe — 92 Polish pop and rock radio hits from 1972–2016
- 🇵🇱 Polskie przeboje wszech czasów — 59 all-time Polish hits
- 🎸 Pure Pop Punk — 100 essential pop-punk tracks from the 2000s
- 🍁 Québécois 1990-2020 — 126 French-Canadian tracks from three decades of Quebec pop
- 🎸 Rock Rioplatense — 36 tracks of Argentine and Uruguayan rock from 1983 to 2013
- 💃 Salsa y Merengue — 531 Latin dance-floor classics, the second-largest list here
- 🏆 Sanremo: I Vincitori — 68 Sanremo festival winners, one for every year since 1951
- 🇩🇪 Schlager Classics — 193 German schlager classics from the 60s to today
- 🇨🇭 Schweizer Hits — 97 Swiss tracks
- ☀️ Sommerklassiker — 60 international summer hits from 1978–2023
- 🇿🇦 South Africa by Q — 89 Amapiano, Afro House and Afrobeats tracks, mostly from the 2020s, with reggae and highlife classics back to 1979
- 🎪 Tomorrowland Top 1000 — 825 tracks from the festival’s own all-time ranking
- 🇳🇱 Top 100 Dutch Classics — 104 Nederlandstalig tracks
- 💔 Top 100 Power Ballads — 99 epic rock ballads from the 80s and 90s
- 🌀 Trance Classics — 120 classic trance anthems
- 🍻 Wiesn Party Hits — 100 Oktoberfest singalongs
- 🌍 World Cup Anthems — 26 official FIFA World Cup songs, 1962–2026
- ⛵ Yacht Rock — 100 smooth West Coast classics from the 70s and 80s
Suggestion Of The Season
The setup screen surfaces a dismissible chip when a season is close — Carnival, Eurovision, World Cup, Summer — that adds the matching playlist in one tap. Dismiss it and it stays gone for that occasion.
Adding Custom Playlists
Custom playlists are stored in: config/beatify/playlists/
See Creating Playlists for the JSON format.
Mix Your Own
Don’t want to pick whole packs? The Mix tab in the playlist picker builds a fresh set on the fly from the tags you care about — no JSON editing required.
- Open the Mix tab in the playlist screen.
- Pick any combination of tags across four categories — decade, style, region, and special (the same taxonomy as the playlist filter bar).
- Choose a target size: 30, 50, or 100 songs.
- Beatify pulls every track from playlists matching your tags, de-duplicates across packs, and assembles a set at your chosen size.
By default a mix is transient — it’s built for that one game and isn’t saved. Tick “save as community playlist” before building and the assembled set is written to config/beatify/playlists/user/<slug>.json, where it shows up in the Community tab on the next refresh like any other playlist. (Unsaved mixes live in an internal playlists/mix/ folder and are cleaned up automatically — they never clutter your Community tab.)
You can carry a built mix straight into the setup wizard with “Weiter → / Continue”, exactly like selecting a curated pack.
Creating Playlists
Beatify uses JSON playlists stored in config/beatify/playlists/. The full, authoritative format lives in scripts/playlist_schema.json (validated in CI by scripts/validate_playlists.py). Here is a schema-accurate example:
{
"name": "80s Classics",
"version": "1.0",
"tags": ["decade:80s", "style:pop"],
"songs": [
{
"artist": "Michael Jackson",
"title": "Billie Jean",
"year": 1983,
"uri": "spotify:track:4cOdK2wGLETKBW3PvgPWqT",
"uri_apple_music": "https://music.apple.com/us/album/_/269572838?i=269573364",
"uri_youtube_music": null,
"uri_tidal": null,
"uri_deezer": null,
"alt_artists": ["MJ"],
"fun_fact": "Spent 7 weeks at #1 on the Billboard Hot 100.",
"fun_fact_de": "Stand 7 Wochen auf Platz 1 der Billboard Hot 100.",
"fun_fact_es": "Estuvo 7 semanas en el nº 1 del Billboard Hot 100.",
"fun_fact_fr": "7 semaines à la 1re place du Billboard Hot 100.",
"fun_fact_nl": "Stond 7 weken op nummer 1 in de Billboard Hot 100."
}
]
}
Required fields
- Playlist level:
name, version, tags, songs.
- Per song:
artist, title (both mandatory — songs missing either are silently skipped at load, #697, so you can’t play Title & Artist mode and the track never appears), year, uri, and the fun-fact set fun_fact + fun_fact_de / fun_fact_es / fun_fact_fr / fun_fact_nl.
Optional fields
- Extra provider URIs —
uri_apple_music, uri_youtube_music, uri_tidal, uri_deezer (and uri_apple_music_by_region for storefront-specific Apple Music IDs). A song with only a spotify: URI plays on Spotify but is skipped on the other services.
alt_artists (accepted spellings for the Artist Challenge), isrc, chart_info, certifications, awards (+ localized awards_de/es/fr/nl), and the movie-quiz fields movie / movie_choices (playlist-level movie_quiz_enabled: true to turn the mode on).
The uri must be a Spotify track URI (spotify:track:<22 chars>) or null. Invalid or incomplete songs are dropped silently rather than failing the whole playlist — check the Home Assistant log if a track doesn’t show up.
Playlist Tips:
- Mix decades for variety
- Include recognizable songs (obscure = frustrating)
- Add fun facts for the reveal screen — one per language
- 10-20 songs per playlist works great
Sample playlists are included to get you started immediately.
Building one with an AI assistant. The admin has a Playlist Generator that turns a Spotify
playlist into this format: it hands you a prompt, you run it in ChatGPT / Claude / a local model,
and you paste the JSON back. Beatify never calls an LLM itself. Assistants truncate large
playlists — the wall sits near 30 songs and the reason is response length, not a Beatify limit.
The fix is to run it in batches of about 30 songs and merge the songs arrays into one file,
keeping the top-level fields from the first batch.
Multi-Language Support
Beatify speaks your guests’ language.
- English — Full support
- Deutsch — Vollständige Unterstützung
- Español — Soporte completo
- Français — Support complet
- Nederlands — Volledige ondersteuning
- Italiano — Supporto completo
Select during game setup. All players see the chosen language. Fun facts and awards are also translated!
Supported Speakers
Beatify works with specific Home Assistant integrations that support music playback:
| Integration |
Supported |
Spotify |
Apple Music |
YouTube Music |
Tidal |
Deezer |
Amazon Music |
How It Works |
| Music Assistant |
✅ Yes |
✅ |
✅ |
✅ |
✅ |
✅ |
❌ |
Direct URI playback to any connected speaker |
| Sonos |
✅ Yes |
✅ |
❌ |
❌ |
❌ |
❌ |
❌ |
Direct Spotify playback via Sonos integration |
| Alexa Media Player |
✅ Yes |
✅ |
✅ |
❌ |
❌ |
❌ |
✅ |
Voice-search playback (“Play [song] on [service]”) |
| Cast (Chromecast/Nest/Google TV) |
❌ No |
— |
— |
— |
— |
— |
— |
Use Music Assistant instead |
| HomePod |
❌ No |
— |
— |
— |
— |
— |
— |
Use Music Assistant instead |
Amazon Music is Alexa-only and uses text search. Amazon has no direct-URI playback path, so Beatify asks Alexa to play each track by name (artist + title) rather than by a fixed track ID. This works well for well-tagged songs but has one caveat: Alexa occasionally picks the wrong version of a track (a live/remaster/cover) when several share a title — the round still plays, it just may not be the exact recording the playlist author intended. For pinpoint accuracy on those tracks, pick a URI-based service (Spotify/Apple Music/etc.) via Music Assistant instead.
Why Some Speakers Don’t Work Directly
Cast devices (Chromecast, Nest Audio, Nest Hub, Google TV) and HomePod don’t support direct music playback from Home Assistant. They require a streaming source.
The solution: Install Music Assistant and add your Cast/HomePod devices there. Music Assistant acts as the streaming source and works perfectly with Beatify.
Quick Compatibility Check
In Beatify’s admin screen:
- ✅ Supported players show with a platform badge (Music Assistant, Sonos, Alexa)
- ❌ Unsupported players (Cast, etc.) are hidden with a hint to use Music Assistant
Guest WiFi / Network Setup
Beatify runs entirely within Home Assistant’s HTTP server — no extra ports or services needed.
| Protocol |
Port |
Purpose |
| HTTP/HTTPS |
8123 (default) |
Game UI, API, static assets |
| WebSocket |
8123 (same port) |
Real-time game communication |
If guests are on a separate WiFi/VLAN, add a single firewall rule:
Guest VLAN → HA IP : TCP 8123
That’s it. No mDNS, no broadcast, no additional ports.
Tips:
- The QR code uses the HA URL as seen by the admin’s browser — make sure that URL is reachable from the guest network
- If using a reverse proxy (nginx/Caddy), ensure WebSocket upgrades are allowed for
/beatify/ws (standard HA proxy configs already handle this)
- If using HTTPS with a self-signed cert, guests may need to accept it once
⚠️ Fritzbox users: The Fritzbox guest WiFi fully isolates clients from your home network — this cannot be overridden with firewall rules. Players must join the main WiFi, or use a separate VLAN-capable router/access point to create a guest network with selective LAN access.
How Beatify Compares
People usually find Beatify while looking for a Hitster alternative, so here is the honest
comparison — including where the card game wins.
|
Card-based music party game |
Beatify |
| What you buy |
A box, and a new box or expansion for more music |
Nothing. 73 playlists ship with it, 9,026 songs |
| Where the music comes from |
A fixed printed deck |
Spotify, Apple Music, YouTube Music, Tidal, Deezer, Amazon Music — or your own Plex / Jellyfin / local library |
| Subscription |
None |
None required since v4.3.0 (streaming is one option, your own library is another) |
| Playback |
A phone speaker on the table |
The Sonos, Alexa or Music Assistant speakers you already own |
| How you answer |
Physically place a card on your timeline |
Guess the year — or name the title and artist in a second mode |
| Timeline placement |
✅ The core mechanic |
❌ Not implemented. Rounds score a year guess instead |
| Setup |
Open the box |
Home Assistant 2025.1+, a supported speaker, HACS install |
| Players |
Limited by the components |
20+ on their own phones, no app |
Two rows deserve more than a checkmark. Beatify has no timeline-placement mechanic — the most
requested difference, and not a small feature. And it needs a running Home Assistant: a board game
needs a table, this needs a server. If you do not have one, the box wins.
Hitster is a trademark of its respective owner. Beatify is an independent open-source project,
not affiliated with or endorsed by it; the name appears here only to describe the kind of game.
Technical Details
Requirements
- Home Assistant 2025.1+ (matches the
homeassistant floor declared in hacs.json)
- Supported media player (see Supported Speakers above)
- A music source, either of:
- A streaming service — Spotify, Apple Music, YouTube Music, Tidal, Deezer or Amazon Music, each of which needs a paid plan (on-demand single-track playback; free/ad-supported tiers don’t allow it — Spotify Free is blocked, and Music Assistant’s YouTube Music provider requires Premium too). Amazon Music playback is Alexa-only (text search — see Supported Speakers).
- Your own library — Plex, Jellyfin, local files, or anything else Music Assistant exposes as a library provider. No subscription required. Beatify builds a playable pool from it and verifies release years against MusicBrainz first, because a year-guessing game is only fair if the year is right (v4.3.0).
- HACS (recommended) or manual installation
How It Works
- Native Home Assistant integration
- WebSocket-based real-time sync
- Local processing—no cloud required
- Session persistence for reconnection
- Up to 20+ concurrent players
Architecture
Home Assistant
└── Beatify Integration
├── Game State Manager
├── WebSocket Handler
├── Media Player Service
└── Web UI (Admin + Player)
Built With AI Assistance
Beatify is built with substantial help from AI coding tools (Claude Code). That’s not a confession — it’s a feature. Here’s what that looks like in practice:
- Test coverage: 69 Python test files, JS tests via Vitest, integration tests for the WebSocket protocol — every regression gets a test before the fix lands.
- Architecture is documented in code: see
custom_components/beatify/services/media_player.py lines 111–128 — the comment block walks through why the provider-URI dispatch was rewritten, names the specific user (Levtos) whose bug report drove the change, and references the original GitHub issues (#768, #805, #808).
- 890+ closed issues with traceable root causes, not just “fixed”. URI-validation, playback-recovery, and import-flow security got dedicated sweeps in v3.3.x.
- Real users, not vanity metrics: 218 stars, 12 forks (forks = devs reading the code), 428 active HACS installs, top 11% HACS rank, MIT-licensed.
The AI is the typist. The decisions, the architecture, the bug triage, and the “ship it” call are all human. If something looks off in the code, open an issue — that’s how the documented bug-fix sweeps started in the first place.
FAQ
What game modes are there? How do you play Title & Artist?
Two modes, chosen by the host in the setup wizard. Year mode is the classic: a song plays and everyone slides to guess the release year, scored by how close you are. Title & Artist mode asks you to type the song title (+10) and the artist (+5) in free text — you don't have to be letter-perfect, since small typos earn partial credit and the forgiveness scales with title length. Genuinely close guesses go to Crowd Court, a live 30-second 👍/👎 vote the whole room can watch on the TV; plainly wrong answers are marked Wrong and scored zero. Movie Quiz and Intro bonuses stack on top of either mode. For a high-stakes twist, turn on Sudden Death (needs at least 3 players): from round 2 on, the lowest-scoring player each round is eliminated until one winner is left standing — arm it in the wizard or flip it on live from the reveal screen.
How many players can join?
Tested with 20+ players. Your WiFi is the only real constraint.
Can someone join mid-game?
Yes! Late joiners inherit the average score so they can compete fairly.
What if the host disconnects?
Game pauses automatically. Reconnect and continue exactly where you left off.
What music services work?
Spotify, Apple Music, YouTube Music, Tidal, Deezer, and Amazon Music. Support depends on your speaker platform—see the Supported Speakers table for details. Amazon Music is available on Alexa speakers only and plays via voice/text search rather than fixed track URIs.
Do I need a paid music subscription? Does Beatify work with free Spotify?
Not necessarily—there are two ways to play. Streaming needs a paid plan: Beatify plays a specific song on demand each round, and on every provider—Spotify, Apple Music, YouTube Music, Tidal, Deezer and Amazon Music—that requires a paid plan. Spotify Free does not work (its free tier blocks on-demand single-track playback via Music Assistant / Spotify Connect), and a free YouTube Music account does not work either—playback runs through Music Assistant, whose YouTube Music provider supports Premium accounts only. This is a streaming-service limitation, not a Beatify one. The curated playlists carry URIs for the five URI-based services; Amazon Music (Alexa-only) plays those same tracks by text search (artist + title) rather than a fixed URI.
Your own library needs no subscription at all. Since v4.3.0 a game can be sampled from the music you already own—Plex, Jellyfin, local files, anything Music Assistant exposes as a library provider. Beatify enriches that pool first, resolving release years against MusicBrainz and discarding what it cannot verify, because a compilation rip tagged with its pressing year would make the game unfair. Music Assistant is still required for playback; a streaming subscription is not.
Why don't my Chromecast/Nest speakers appear?
Cast devices (Chromecast, Nest Audio, Nest Hub, Google TV) don't support direct music playback from Home Assistant. Install Music Assistant and add your Cast devices there—they'll then appear in Beatify and work perfectly.
Something is stuck. What does the Reset button do?
The ↺ button in the admin header is the escape hatch. It ends whatever game is running, clears Beatify's saved setup and its local browser state, drops the cached service worker, and reloads you onto the first step of the setup wizard with nothing pre-selected. It asks before it does any of that, and it is rate-limited to three uses an hour per address.
One thing to know before you press it: the saved setup lives on your Home Assistant, not just on the phone in your hand, so a reset clears it for every device in the household. It already ends the running game for everyone anyway. If you only want to change speaker or playlists, use Edit setup instead.
Do players need to be on the same network?
No. Players only need to reach your Home Assistant. The QR code uses the address you opened the Beatify admin page with, so if you open it through Home Assistant Cloud (Nabu Casa) or your own Cloudflare/reverse-proxy URL, guests can join over mobile data without an HA login. The music still plays on your speakers, so it's meant for people in the same room.
On home WiFi it just works. Guests on a separate guest network? See Guest WiFi / Network Setup.
⚠️ If Beatify is reachable from outside, keep the Companion app host bypass option off (see Options).
Can I customize the theme?
The neon dark theme is built-in and looks stunning. Custom theming is on the roadmap.
What’s New
v4.8.9 — Every Word at Home 🌍
- The host page speaks your language: the Crate Digger AI window, its examples and the speaker hints are translated into all six languages (#3422, #3424, #3431, #3434)
- More songs: Christmas Hits is new, Greatest Hits of All Time grows by 100 songs, and German Apple Music users get checked links in 43 playlists (#3427, #3440)
- Games keep going: a song Music Assistant cannot find is skipped at once and replaced, so a ten-round game stays ten rounds (#3429, #3441)
v4.8.8 — Set in Motion 🎬
- The whole game moves: the year reel, guesses landing on the TV, scene wipes, standings that travel and a podium that builds up, with phone and TV revealing the year together (#3365, #3367, #3370, #3379)
- Phone, TV and admin share one look, and errors say what to do next instead of failing quietly (#3387, #3386, #3390, #3396)
- The host can change timer and difficulty between rounds, and stealing is one tap with undo (#2586, #3391)
- New community playlists: Animés-Séries 80-90 and Best Songs Ever, plus 114 repaired song links (#3361, #3362, #3417)
v4.8.7 — Ding Dong 🔔
- Home Assistant can run the party: pause, resume, skip or end a game from an automation, with events to react to (#3306)
- The host’s phone gets the admin page’s tools: five more rounds without losing scores, sit a guest out and bring them back, and “Play another song” to swap a track (#3303, #3304, #3261)
- Skipped songs no longer break the count: the round counter shows the real game length, and a failed intro round moves on (#3279, #3286, #3293)
- If your music service isn’t available, the game pauses and says so (#3328)
- Smaller fixes: easy-to-hard ordering works from the first party, and Schweizer Hits, Hitster 100 Français and Tomorrowland Top 1000 play cleanly again (#3305, #3301, #3331)
v4.8.6 — Thanks for Playing ⭐
- Rematch starts the next game straight away, no page reload needed (#3277)
- A skipped song can no longer sneak back in and play over the next round when the music service is slow (#3278, #3283)
- Hosting from the Home Assistant app on Android works — thanks to @stefh1970 for the report (#3275)
- When the speaker won’t start, the game says so and pauses instead of claiming there are no songs (#3264)
- A quiet star hint for the host after the third game, with a ✕ that hides it for good (#3244)
- Smaller fixes: no “So close!” when nobody guessed, “Final Results” on the last round, the real playlist name in the lobby, Italian in the language picker (#3266, #3268, #3267, #3262)
v4.8.5 — Hold the Intro 🎤
- Intro rounds wait for the host: the last song stops under the waiting card, the admin countdown holds like the TV, and the intro stops after 15 s — thanks to @aenkieh for the report (#3199)
- The lobby names both numbers: how long you hear each song and how long you have to answer (#3222)
- A speaker that can’t play your music service is refused with a clear reason, in the lobby and mid-game, and your other settings stay (#3223, #3235, #3236)
- A won bet reads “All-in bonus” at every multiplier (#3221)
- The Companion auth bypass is refused behind a reverse proxy (#3202)
- Playlist repairs in eleven playlists (#3241, #3248, #3250 and more)
v4.8.4 — One More Song 🎵
- The last song of the night gets played: a game no longer ends one round early, most often on Music Assistant (#3116)
- The host decides how long each song plays (10, 15, 20 or 30 s) while the round keeps running — thanks to @nirvdrum for the idea (#3152)
- The end screen settles down: confetti and scrolling happen once, every award names its unit, and the last player standing gets a title (#3117, #3158)
- The points breakdown on the phone matches the score, speed bonus and bets included (#3157)
- The intro-round “Start Round” button works on the admin page — thanks to @aenkieh for the report (#3122)
- Two new playlists: James Bond Theme Songs and American Classics · Country & Heartland (#3151, #3164)
v4.8.3 — Wait for It ⚡
- The TV shows an “Intro Round!” card while the round waits for the host — thanks to @aenkieh for pointing at it (#3095)
- A skipped intro round closes the “Waiting for host…” window on the guests’ phones (#3093)
- Title & Artist games from “My Music” start without verified release years, and the song count shows what the game will really draw from — thanks to @nirvdrum for the report (#3103, #3106)
- A song Beatify skipped no longer starts by itself a round later when Apple Music is slow (#3101)
- Playlist repairs: “Gotcha” moved to 1976, fresh Apple Music links for “More Than Words” and “Shine”, seven broken links fixed in 100% Français and 100% Brasil (#3092, #3099, #3087, #3089)
v4.8.2 — Does What It Says 🎯
- “Next Round” on the host phone takes taps again — thanks to @nirvdrum for the report (#3063)
- Stop Song stays stopped, even when a guest answers right after or an announcement is playing (#3053, #3054)
- A steal locks the guest’s screen like a normal answer (#3052), and cancelling a join really cancels it (#3059)
- The TV answer counter skips eliminated players and spectators (#3055)
- Title & Artist mode announces both title and artist — also reported by @nirvdrum (#3062)
- A second admin page no longer breaks the first (#3081)
- The lobby language reaches the TV and the announcements (#3056), and host-phone errors and the offline page speak all six languages (#3057, #3076)
- New playlist: Bollywood Party Hits (79 songs), and broken links fixed in 2010s & 2020s Hits and 60s Classics (#3050, #3061, #3080)
v4.8.1 — Round Ends on Time 🎯
- A steal by the last player ends the round right away — thanks to @triluch for the report (#3016)
- The TV leaves the podium when the game ends — straight to “No active game”, without the old ~8 s wait (#3026, #3041)
- The TV timer waits during an intro round until the host confirms (#3027)
- Encore and the finale tiebreaker work in easy-to-hard games (#3029)
- Sudden Death knock-outs no longer show up as “Closest” on the reveal (#3028)
- The light buttons in the host drawer work again (#3025), and the “End round” card says “1 player” (#3040)
- My Music plays every song the playlist check counted (#3018), and the TV keeps sabotage and finalist badges at the reveal (#3019)
- Broken links fixed in 40s & 50s Classics and 70s Hits (#3024, #3039)
v4.8.0 — 4.5 🎛️
- My Music can play from your own playlist — pick a Music Assistant playlist instead of the whole library; the setup says how many songs are usable and why the others were left out (#2939)
- A phone that reloads on the podium gets the rematch — it reconnects with the final standings and follows the host into the new lobby; a guest who scans the QR during the podium lands on the join form once the rematch opens (#2947)
- “Crate Digger” is now “My Music” — the new name says what the mode does; saved settings carry over (#2951)
- A lobby name wall on the TV — every guest gets a big name tile, and the newest joiner glows (#2966)
- The podium takes centre stage at game over — real steps with a crown, places 4 and up as chips underneath (#2967)
- “Round 7” when a game plays all songs — no song-pool total on the TV, phones or admin, even after the TV reloads (#2963, #3002)
- A guest you sit out stays visible — the host keeps them on the leaderboard with “Bring back”, and their phone shows “no guess” instead of “Exact!” (#3000, #3001)
- About seventy player-screen styles back — the Sudden Death and encore screens and more look right on phones again (#2989)
- The setup summary speaks your language and the host page fits small phones (#3004, #3003)
- Broken links fixed in Divorced Dad Rock, Finnish Schlager Classics, EDM Anthems and Trance Classics (#2945, #2954, #2957, #3008)
v4.7.4 — Unisono 🎚️
- Sudden Death applies whichever button started the game — the rule used to hold on one start path and not the other, and the admin page uses the one without it (#2929)
- A game started over the API announces itself — the TV and the phones no longer sit on the lobby view while the speaker connects (#2929)
- Saving a library mix as a playlist works again — the button raised a server error on every press, and quietly ignored the popularity and genre filters (#2935)
- 193 unreferenced translation keys removed across all six languages (#2907)
- Eight Harder Styles tracks fixed — wrong recordings and dead links now play the right song (#2941)
v4.7.3 — Back in the Room 🚪
- The host gets back in after a reload — reloading the player view no longer locks the host out of a paused game (#2887)
- A pause during the intro song start holds — the intro no longer plays through the pause or leaves the next round silent (#2886)
- The lobby follows a changed playlist selection — the songs that play match what the setup shows (#2888)
- New playlist: South Africa by Q — 89 Amapiano, Afro House and Afrobeats tracks (#2890)
- Seven anime openings played the wrong recording — wrong ISRCs had pulled Apple, Deezer and Tidal along with them (#2901)
- 243 more YouTube Music links across 17 playlists, taking YouTube reach to 95.8 % (#2859)
v4.7.2 — Hold That Thought ⏸️
- A pause stays a pause — reconnecting or reloading the admin phone no longer lifts a pause the host set on purpose (#2876), and the round clock stops while the game is paused (#2883)
- A late tap on the intro card no longer ends the round before the song has played (#2875)
- Safer setup summary — speaker and playlist names are shown strictly as text (#2874)
v4.7.1 — Clean Endings 🏁
- The End round card closes with the round — if the timer ends the round while the host has the card open, it no longer stays on screen through the reveal or Game Over (#2849, thanks to @Rayan-and-beyond)
- The winner’s name stays whole on the TV podium — a seven-letter name no longer breaks mid-word (#2850)
- One clapperboard on the Highlights title — the TV Game Over screen no longer shows it twice (#2866)
- +306 YouTube URIs across nine playlists, so more of the catalogue plays for anyone on YouTube Music (#2848, #2855, #2858)
v4.7.0 — The Turn 📈
- The end screen shows the round it turned on — three seconds before the podium, the TV goes back to the one round where the lead last changed hands: two lines climbing, a mark on the round, and the two names. A game somebody led from the first song has no such round, and the screen goes straight to the podium instead (#2563)
- +126 YouTube URIs across six playlists, so more of the catalogue plays for anyone on YouTube Music (#2800)
- Every guess on a year axis — the TV reveal no longer stops at a top three: each player’s guess sits on a line of years with initials, stacked where people picked the same year. Phones get the same axis (#2502, #2823)
- Ties share the podium — when two players finish level, both stand on it with the same place, on the TV, the host page and every phone (#2835)
- A cleaner TV — no duplicate leaderboard rows, a readable ranking on the reveal, fun facts that stay in their box, full-size award cards, and a join corner that covers nothing (#2820, #2821, #2822, #2824, #2828, #2833, #2834)
deutschrap-klassiker grows from 26 to 62 songs (#2816)
v4.6.0 — Second Wind 👻
- Ghost league — get knocked out in Sudden Death and you keep guessing to the last song, in a league of your own: your score sits under the survivors on the TV, and there is a Best Ghost award at the finish. Counted per ghost round played, so going out early wins nothing (#2559)
- Encore — on the reveal before the last round the host is offered five more rounds, with every score left exactly where it is. Once the last round starts the offer is gone (#2503)
- Take a guest out mid-game — connected or not. The round stops waiting for them, their points and rank stay put, and they tap their own way back in at the next round (#2746)
- The finale playoff says so out loud — when two players finish level, the room hears it in all six languages before the deciding song (#2734)
- The way in stays visible while the game runs, so a latecomer still finds the join link (#2504)
Versions between v4.2.0 and v4.6.0 are not repeated here — v4.3.0, the v4.4.x line and v4.5.0 each shipped their own set. The CHANGELOG carries all of them, and every release has its own notes on the Releases page.
v4.2.0 — Mix & Match 🎛️
- Mix tab in the playlist picker — assemble a de-duplicated set on the fly from any combination of decade, style, region and special tags, at 30, 50 or 100 songs, and save it as a community playlist in one tap (#1538)
- Suggestion of the season in the setup screen, one tap to add the matching playlist (#1539)
- New game mode: Sudden Death — from round 2 on, the lowest-scoring player each round is knocked out until only one is left standing. Ties for last go to the slowest submitter, the TV shows an “OUT” takeover, and the winner earns a “last one standing” highlight. Needs at least 3 players; arm it in the setup wizard or live from the reveal screen (#827, #1472)
- Six optional twists — Finale ×2, comeback token, ramp-up ordering, difficulty-scaled betting, Sabotage and Streak-Shield, all off by default (#1665, #1666, #1724, #1725, #1726, #1727)
- Fairer scoring — the speed multiplier holds through a grace window before decaying (#1722), and the movie quiz became winner-takes-all like the artist challenge (#1723)
- Speakers and playback — the picker hides the native twin of a Music Assistant speaker (#1627), a playback timeout no longer ends the game (#1936), and a round no longer depends on its own timer task or an open browser to finish (#1865)
- Setup follows you between devices — one source of truth for the speaker (#1927), no more forced logout after 30 days (#1932), and the wizard stops opening on a configured device (#1941)
- Reset really resets — it drops the saved setup on the server too and reloads by itself (#2036, #2041)
- Eight new playlists, catalogue 46 → 54 playlists and 5,161 → 5,980 songs, Tidal coverage 47.7% → 86.5%
- 6 music platforms, 5 languages
v4.1.3 — Content & Reliability ☀️
- Speaker volume is restored when the game ends (#1516) — if the host bumps the volume mid-game, Beatify hands the speaker back at its original level, complementing the party-lights state restore
- Speaker selection now applies immediately (#1526) — switching speakers in the wizard takes effect right away instead of routing through the previous pick until a Home Assistant restart
- Android Chrome no longer auto-translates the UI (#1527) — the page language is rendered server-side so the initial HTML already matches the locale
- Two new German playlists — Sommerklassiker ☀️ (60) and NDW – Neue Deutsche Welle (50)
- 6 music platforms, 5 languages
v4.1.2 — Disney auf Deutsch 🏰
- New community playlist “Disney Hits Deutschland 🇩🇪” (97 songs) — German-language Disney songs across the decades, year-mode ready with multi-provider URIs and the guess-the-film bonus across 40 films (#1505)
- 6 music platforms, 5 languages
v4.1.1 — Around the World 🌍
- Two new community playlists — 100% Brasil 🇧🇷 (66) and 100% Français 🇫🇷 (100), each year-mode ready with verified release years, ISRCs and multi-provider URIs
- Country packs renamed to the “100% ” scheme — matching the existing 100% en Español
- Data fixes across EDM Anthems, Trance Classics, Harder Styles and Finnish Schlager Classics
- 6 music platforms, 5 languages
v4.1.0 — Rock Solid, New Look (Now on Amazon Music) 🛒
- Amazon Music is the sixth music provider — play through Alexa speakers via voice/text search (
artist + title), no fixed track URI needed. Alexa-only; see Supported Speakers for the text-search caveat
- Reveal & dashboard redesigned — Spotlight Stage / Podium Stage — the round reveal, round-delta standings ledger, TV broadcast lower-third and end-game podium were rebuilt into one cinematic broadcast language, with the guess-the-artist result and Game Highlights reel finally shown on the TV
- Party-night reliability pass — screen-wake, TV auto-reconnect and a fixed admin login-loop keep long parties alive
- Storefront-aware Apple Music fix — per-region Apple Music IDs resolve against your Home Assistant country so the right catalog track plays
- Security pass across the import and request flows
- New community playlist “Finnish Schlager Classics 🇫🇮” (293 songs) — deduplicated iskelmä from 1949–2026, year-mode ready
- 6 music platforms, 5 languages
v4.0.0 — Name That Tune 🎵
- A whole new game mode: Title & Artist — instead of guessing the year, answer in free text: song title (+10) and artist (+5), each scored on its own. Small typos and near spellings earn partial credit, with forgiveness that scales to the title’s length. Movie and Intro bonuses still stack. Built by @jgossen01, from an idea by @Hendrik0123 (#1180)
- Crowd Court — the reveal becomes a live verdict — close calls go to a 30-second 👍/👎 room vote with a glowing countdown, running tally, and host Accept/Reject override. The TV shows the same vote in real time so the whole room can weigh in (#1180, #1243)
- Pick your mode up front — the setup wizard opens with two cards (📅 Year or ✍️ Title & Artist) and shows only the settings that apply; the first-join tour gains a “Name that tune” card
- End-of-game awards made for Title & Artist — 💯 Perfect Pair, 🧠 Name Dropper, 🎤 Artist Whisperer, and 🤏 So Close, across all 5 locales
- The cover matches the music again — the dashboard and in-game view no longer show the previous song’s album art; Beatify waits for the real artwork before putting it on screen, with full test coverage (#1260, thanks @Dtrieb)
- 39 playlists, 4,340 songs, 5 music platforms, 5 languages
v3.5.0 — Everyone’s Guess, On the Clock 🎯
- See where everyone guessed — the reveal’s round-stats (ⓘ) sheet now shows every player as a dot on a year timeline: who guessed what, who nailed it, and the points each one earned, with your own dot ringed and the top three medalled
- A countdown on every screen — the seconds to the next round now show on the host’s Next button, the big TV/dashboard, and each player’s phone
- Voice announcements speak your game language — German, Spanish, French and Dutch instead of always English, with years and scores spoken as words so neural voices don’t swallow the digits
- Party lights actually fire on game start — fixed for Govee and other non-Hue / wizard-configured setups; Light Mode chips (Static / Dynamic / WLED) are selectable again
- Two new playlists — World Cup Anthems (26, just in time for the tournament) and ICONIC Movie Songs (72, with movie-quiz mode); Disney Classics grew +69
- 39 playlists, 4,340 songs, 5 music platforms, 5 languages
v3.4.2 — Unstick the Android Launcher 🤖
- HA Companion on Android opens Beatify again — The launcher fix that shipped in v3.4.0 for iOS broke Android: tap “Beatify öffnen”, see the toast, watch nothing happen. v3.4.2 detects the Android Companion app and navigates the top frame directly instead of opening a new tab that never materialises
- One-file, one-bug, one-PR rc cycle — Standard 6-file version bumps; iOS Companion,
README 内容过长,已截取前 64 KB。完整内容请前往 GitHub 仓库查看。
评论