Skip to content

Releases

v2.0.0

Choose a tag to compare

@Arubinu Arubinu released this 09 Nov 13:53

Rukebox 2.0, for the whole house

Accounts, lists played together, folders that fill themselves, a livelier radio host, a daily volume curve, birthdays and seasons: the radio becomes the house's, and everyone's.

Updating from 1.19.3? It is a major version: the radio asks before moving, and settings, music and statistics are kept, with a copy of the configuration taken first. From 2.0.0-rc.1, it is an ordinary update.

👥 Accounts

  • Owner, operators, members and guests instead of one password (the old password becomes the owner's). Members keep their own lists; playing one is a permission.
  • The owner chooses how long a login lasts, from a day to a year.

🎶 Music

  • Several lists played together, lists left out, a list played next before going back to what played.
  • Seasonal lists play only in their periods of the year, Christmas songs in December for instance.
  • Up next reordered with a long press, how long it lasts and who asked for each song; the liked songs played at once or next.
  • Web radios, M3U import and export, tags and covers written into the music files, the newest arrivals first.

📁 Folders that fill themselves

  • From a NAS, a computer or the cloud (SMB, SFTP, WebDAV, FTP), on a schedule; a mirror mode asks before removing much. Home Assistant sees the syncs, and the nightly switch-off waits for one.

🎙️ Voice and schedules

  • The radio host varies its words and says titles in their own language; voices install from the page.
  • Messages and reminders in a schedule, yearly dates, a message in someone's own voice, a party started from the player.
  • Birthdays wished on the day, at start or with a button.

🔊 Sound

  • A daily volume curve; the sleep timer can let the song end.
  • System sounds redrawn, each saying what it sounds like, with an optional signature before each at its own volume.

🏠 Home and devices

  • A DLNA media player for Home Assistant, more MQTT details, a dawn on the light strips before the morning music.
  • A rotary knob on the GPIO pins, and buttons on an OpenWrt router or Wi-Fi extender, approved from the page.
  • The Flic button rests when nothing needs it, ignores the press that connects it, and says when its battery runs low.

🛡️ Everyday

  • One major version at a time, saying what changes; the run since the last start can be erased.
  • The player warns about weak power, a storage nearly full or failing, a clock module that lost the time.
  • The journal shows the songs often skipped and those never played, each a tap away.
  • The SD card is spared, a stuck service restarts itself, and a short tour guides the first visit.

📦 Assets

  • rukebox-setup.html: the card setup page, self-contained and usable offline.
  • rukebox-server.html: the Docker, Portainer, Dockge and Proxmox LXC setup page.
  • notes.json: these notes in the six languages of the interface.

v2.0.0-rc.1

v2.0.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@Arubinu Arubinu released this 28 Oct 14:52

Rukebox 2.0, the pre-release

A test version of 2.0.0 for the radios you choose: accounts, lists played together, folders that fill themselves, a livelier radio host, a daily volume curve. It is offered to no radio: install it on purpose.

Trying it? From 1.19.3 (update to it first), over SSH: sudo rukebox-update --from-release v2.0.0-rc.1 --major, or a new card with this setup page. Settings, music and statistics are kept, and a copy of the configuration is taken first. Once 2.0.0 is out, this radio is offered it like any other.

👥 Accounts

  • Owner, operators, members and guests instead of one password (the old password becomes the owner's). Members keep their own lists; playing one is a permission.

🎶 Music

  • Several lists played together, lists left out, a list played next before going back to what played.
  • Up next reordered with a long press, a song taken out until the next round.
  • Web radios, M3U import and export, tags and covers written into the music files.

📁 Folders that fill themselves

  • From a NAS, a computer or the cloud (SMB, SFTP, WebDAV, FTP), on a schedule; a mirror mode asks before removing much. Home Assistant sees the syncs, and the nightly switch-off waits for one.

🎙️ Voice and schedules

  • The radio host varies its words and says titles in their own language; voices install from the page.
  • Messages and reminders in a schedule, yearly dates, a message in someone's own voice, a party started from the player.

🔊 Sound

  • A daily volume curve; the sleep timer can let the song end.
  • System sounds redrawn and a little louder than the music, with an optional signature before each.

🏠 Home and devices

  • A DLNA media player for Home Assistant, more MQTT details, a dawn on the light strips before the morning music.
  • A rotary knob on the GPIO pins. The Flic button rests when nothing needs it, spares the Wi-Fi during transfers and plays a sound when it connects.

🛡️ Everyday

  • One major version at a time, saying what changes; the run since the last start can be erased.
  • The SD card is spared, a stuck service restarts itself, the badge at the top says how fresh the page is, and a short tour guides the first visit.

📦 Assets

  • rukebox-setup.html: the card setup page, self-contained and usable offline.
  • rukebox-server.html: the Docker, Portainer, Dockge and Proxmox LXC setup page.
  • notes.json: these notes in the six languages of the interface.

v1.19.3

Choose a tag to compare

@Arubinu Arubinu released this 17 Oct 19:26

A visitor's tap can no longer switch the radio off

A security fix: with a password and guest access on, a guest's tap on the player could do whatever the radio's button is set to, switching it off included.

Updating from 1.19.x? Take this one: nothing to do by hand.

🔒 Security

  • The button's setting stays the household's: when the radio's button is set to switch off, go on standby or start the sleep timer, a guest's tap on the player is refused and says why. Signed-in people keep the button as it is set, and every other action works for guests as before.

🔧 Fixes

  • The French update card speaks to the reader like the rest of the interface.

📦 Assets

  • rukebox-setup.html: the card setup page, self-contained and usable offline.
  • rukebox-server.html: the Docker, Portainer, Dockge and Proxmox LXC setup page.
  • notes.json: these notes in the six languages of the interface.

v1.19.2

Choose a tag to compare

@Arubinu Arubinu released this 17 Oct 15:44

Updates that tell you what they change

The Update card now lists what every release on the way brings, in your language, and a new major version is offered only from the newest release of yours, after you have read what switching implies.

Updating from 1.x? Take this one: nothing to do by hand. It is the step every 1.x radio goes through before version 2.

🔄 Updates

  • What's new: before installing, the Update card lists the notes of each release between yours and the one offered, newest first, in the language of the interface.
  • One major version at a time: a radio is offered the newest release of its own major version. Only once it runs that one is the next major offered, never one beyond.
  • Asked before switching: a new major version opens its own confirmation, which says what switching implies, before anything is installed.
  • The same rule from SSH: sudo rukebox-update --from-release installs the newest release this radio may have; --major lets it move on to the next major version.

📦 Assets

  • rukebox-setup.html: the card setup page, self-contained and usable offline.
  • rukebox-server.html: the Docker, Portainer, Dockge and Proxmox LXC setup page.
  • notes.json: these notes in the six languages of the interface.

v1.19.1

Choose a tag to compare

@Arubinu Arubinu released this 17 Oct 14:44

Fixes only, for a steadier 1.19

Listening on the network works after a pause, Android stops reloading the page under your finger, the Home Assistant bridge runs only when it is switched on, and a container keeps its Network area.

Updating from 1.19.0? Take this one: nothing to do by hand, and nothing new to learn. It carries fixes only.

🎧 Listening on the network

  • After a pause: "Listen here", VLC and every UPnP player could fail to start when the radio had just been paused. The stream now starts at once, silence included.

📱 Interface

  • Android's refresh gesture: pulling down no longer reloads the page by accident, from the title bar or from the captive portal window either.
  • Switching off: every page, not only the player, hears that the radio is going off.
  • In a container: the Network area is back on Docker and LXC, with connected devices, bans and guest access; only the captive portal stays a radio-only setting.
  • Search lists only the pages this machine can open.
  • The French interface writes "évènement".

🏠 Home Assistant

  • Off means off: an update or an install no longer starts the MQTT bridge while Home Assistant is switched off. Saving its card starts or stops it.

🔒 Security

  • The UPnP pages answer only under the radio's own name or address, like the rest of the interface.
  • A UPnP request carrying XML entities is refused instead of being read.
  • A volume that is not a number is refused.

🔧 Other fixes

  • Covers added at the same moment as the songs are seen without a restart.
  • The web server starts on any Linux.
  • Pushing an update as root, from Linux or Windows, no longer fails on file owners.

📦 Assets

  • rukebox-setup.html: the card setup page, self-contained and usable offline.
  • rukebox-server.html: the Docker, Portainer, Dockge and Proxmox LXC setup page.

v1.19.0

Choose a tag to compare

@Arubinu Arubinu released this 12 Oct 14:09

Announcements you can hear, and an access point that is yours to open

Announcements now play at the music's loudness with the music fading around them, the access point no longer shares the radio's internet unless you say so, and duplicates can be sorted copy by copy.

Updating from 1.18.x? Take this one: nothing to do by hand. The access point stops sharing internet after the update; turn Internet through the radio on in its card if you relied on it.

📢 Announcements

  • Brought to the music's loudness: each announcement file is measured once, during the library pass, and played with the gain that matches the music (at most +12 dB, never clipping). A quiet recording no longer goes unheard.
  • Fades around them: when the music pauses for an announcement it now fades back in afterwards instead of coming back at full volume. Kept under the announcement, it goes down while the voice gets ready, so there is no gap before it.

📶 Access point

  • No longer a gateway by default: devices on the radio's Wi-Fi reach the radio only.
  • Internet through the radio: a new switch in the Access Point card shares the radio's own connection again. A phone keeps a Wi-Fi only when it has internet; without it, and with mobile data on, it sends its browser over mobile data and the interface stops opening. The switch is there for devices that join without the captive portal.
  • Honest answers: with the portal off, a phone is told "no internet" when the radio cannot offer any, so it can offer to stay connected.

🗂️ Duplicates

  • Copy by copy: keep several copies of a song when they differ, set the others aside; the last copy kept cannot be set aside.
  • Not a duplicate: a group can be ignored, and stays ignored until its copies change.
  • Marked once looked at: a green dot for groups already sorted, listed after the ones still to do.
  • Where each copy lives: a tap on a name shows every copy's place in the music folder.

🔧 Fixes

  • Flic button: a controller that is gone is replaced by itself, and the only one left is offered with a warning.
  • Add music counts the songs as well as the files.
  • The light strips' status line is centred.

📦 Assets

  • rukebox-setup.html: the card setup page, self-contained and usable offline.
  • rukebox-server.html: the Docker, Portainer, Dockge and Proxmox LXC setup page.

v1.18.1

Choose a tag to compare

@Arubinu Arubinu released this 11 Oct 19:23

A captive portal that can be switched off

The captive portal can be turned off again from its list, and "Once per device" now does what it says: a device that finished the portal is never asked again, while a new one still sees the page.

Updating from 1.18.0? Take this one: nothing to do by hand.

📶 Captive portal

  • Off, back in the list: no page pops up any more, every device is told there is no portal, and the interface opens when its address is typed.
  • Once per device is fixed: a device's first connectivity check already made it "known", so the page hardly ever showed - even to a new phone. It now counts a device that has finished the portal once.
  • Clearer choices: Once a day (back after 12 hours), Once per device, At every check, Off - with a help text that says what each one does.

📦 Assets

  • rukebox-setup.html: the card setup page, self-contained and usable offline.
  • rukebox-server.html: the Docker, Portainer, Dockge and Proxmox LXC setup page.

v1.18.0

Choose a tag to compare

@Arubinu Arubinu released this 11 Oct 14:25

Home Assistant, a night volume, and a richer blind test

The radio shows up in Home Assistant over MQTT, turns itself down at night without moving its volume slider, and the blind test asks about the artist, the decade, the genre or the album, from a chosen list, with a hint and without repeats. Underneath, the board works much less: the background services went from up to 12% of the processor each to about 1%.

Updating from 1.17.0? Take this one: nothing to do by hand.

🏠 Home Assistant

  • Settings > Home Assistant: a broker's address, account and TLS, and the radio appears by itself (MQTT discovery) with what plays, the volume, the speaker, and buttons for play/pause, next, previous, start, skip the announcement and standby.
  • The card says whether it is connected, or why not; the password is written from the page but never shown back.

🌙 Night volume

  • Settings > Volume > Night volume: between two times, the whole radio plays at a share of the volume chosen - 100% shown plays at the cap, 50% at half of it. The slider keeps showing what was chosen, and the player says when the cap runs.
  • It glides in and out over a transition (60 s by default).

🏆 Blind test

  • Songs: ask only about one music list, manual or by genre.
  • Questions: the song, the artist, the decade, the genre or the album, picked in a dialog; each round asks one the song's tags can answer, and a game the tags cannot feed is refused with the reason. Aloud, the radio says the question before each extract.
  • A hint halfway (on the phones): a first letter, or before/after 2000 for a decade - a right answer before it scores more.
  • Do not ask songs again: the songs asked come back only once the others are used up, with a button to forget them.
  • Devices linked during a game or a skip vote count as one person straight away.

⚡ Lighter on the board

  • The configuration is read with the C YAML parser: 20 ms instead of 0.4 s, which the button, card and MQTT services did every few seconds.
  • mpv starts without its Lua scripts: a sound over the music or a cue starts about 0.4 s sooner.
  • The status poll, the genre lists and the session cookie cost less on every request; the captive portal no longer loads an HTTP server at boot.
  • The optional boot tweaks (install script and card page, where they are now a listed choice) also stop the daily man-db and apt timers.

🐳 Docker

  • The image reports its health: Docker, Portainer and Dockge show it healthy once the radio and its interface answer.

🧭 The interface

  • Pickers (codecs, questions, guest pages) say how many are ticked, and stay beside their label on a phone.

📦 Assets

  • rukebox-setup.html: the card setup page, self-contained and usable offline.
  • rukebox-server.html: the Docker, Portainer, Dockge and Proxmox LXC setup page.

v1.17.0

Choose a tag to compare

@Arubinu Arubinu released this 10 Oct 11:06

A server install prepared from a page

Docker, Portainer, Dockge and Proxmox get their own setup page: rukebox-server.html asks a few questions and writes what to paste - a compose file, a stack, or one command for an LXC container. The share print comes out on white, centred on the sheet.

Updating from 1.16.0? Take this one: nothing to do by hand.

🖥️ The server setup page

  • rukebox-server.html, next to the card page: where the radio runs (Docker, a Portainer or Dockge stack, a Proxmox LXC container), its name, spoken language, timezone, interface password and sound (network only, a sound card, the machine's PipeWire, Bluetooth, multiroom).
  • Docker and stacks: a docker-compose.yml pinned to this release's image, to download or copy - with the variables in it, or apart in a .env file or the stack's environment.
  • Proxmox: the container's settings as a list, the host lines that hand it the sound cards when asked, the container's Console or pct enter, then one command to paste.
  • Nothing leaves the browser: the password is hashed there, and the answers are read once, on the very first start.

🖨️ Sharing access

  • Printed on white, even from the dark theme, and centred on the sheet.

🧭 Setup pages

  • They scroll when a step is taller than the window, and only then, with room under the buttons.

📦 Assets

  • rukebox-setup.html: the card setup page, self-contained and usable offline.
  • rukebox-server.html: the Docker, Portainer, Dockge and Proxmox LXC setup page.

v1.16.0

Choose a tag to compare

@Arubinu Arubinu released this 10 Oct 09:48

A blind test played aloud, no phone needed

The blind test can now be played aloud, in the room, without anyone holding a phone: an extract, a thinking time with its sound, then the radio says the answer. The usual game can say the answer too, and printing the access codes gets cut lines.

Updating from 1.15.0? Take this one: nothing to do by hand.

🎤 The blind test aloud

  • How to play: Aloud when starting a game: no wait for players, each round plays its extract, a thinking time (5 s by default, a setting), then the radio says the song and its artist.
  • Automatic, or At your pace: stop the extract early to give fewer clues, give the answer now, go to the next round - from the page or with a single click of the Flic button, a remote or the GPIO button.
  • First names, optional, only to keep a ranking: after each answer, tap who found it (the first one scores two points), and the game ends on its podium. They are added like the timed pause durations and kept on the device.
  • A hall of fame of its own for the games aloud; the page shows one hall at a time.
  • Sounds, in a fold: tick-tock, heartbeat, drum roll or quickening pulse for the thinking time, and a gong, a ding or a fanfare before the answer - synthesised by the radio itself.

🏆 The usual blind test

  • Say the answer: the song and its artist at the end of each round, before who found it.

🖨️ Sharing access

  • Cut lines when printing: a dashed line around the whole card, or around each code to cut them apart; one code alone prints at the size it has next to the other, without the empty half.
  • "No password" written plainly for an open network.

🧭 The interface

  • Duration fields take the whole line on a phone, and a few alignments (the hall of fame, the radio host's count).
  • New banners saying the radio also runs in LXC and Docker.

🛠️ Fixes

  • A game sound that cannot be made never stops the game: it carries on without it.

📦 Assets

  • rukebox-setup.html: the card setup page, self-contained and usable offline.