Repository navigation
RE-KORD 5.1
Downloads
| Platform | Server (hub + client) | Client only |
|---|---|---|
| Windows x64 (portable, no install) | RE-KORD-Server-5.1.0-windows-x64.zip — extract and run RE-KORD Server.exe |
RE-KORD-Client-5.1.0-windows-x64.exe |
| Linux x64 | RE-KORD-Server-5.1.0-linux-x64.AppImage / .deb |
RE-KORD-Client-5.1.0-linux-x64.AppImage / .deb |
| Linux headless (NAS, servers) | RE-KORD-Server-5.1.0-linux-x64-headless.tar.gz — run ./run.sh |
— |
| Android (arm64, 8.0+) | — | RE-KORD-Client-5.1.0-android-arm64.apk |
The Server packages include yt-dlp, cloudflared and ffmpeg. Verify downloads with SHA256SUMS.
Linux builds need a glibc 2.39+ distribution (Ubuntu 24.04 or newer). Updating from 5.0: install
the new version over the old one; your data is migrated automatically. Full guide:
Installation.
A feature and polish release on top of RE-KORD 5: podcasts and news, embedded tags and
covers for every format, keep-awake for the hub, reliable Android background playback,
native media controls on Linux and the fixes from GitHub issue #97. Hubs and clients 5.0
and 5.1 work together; the database migrates automatically (schema v7).
New
-
Podcast e notizie (optional module, off by default): news bulletins, podcasts and
live radio in the normal player. Sources are set in the admin panel (Podcasts &
news) with a Test preview: RSS / Atom feeds, pages that point to a feed (Apple
Podcasts, WordPress, Spreaker), play.rtl.it programme archives such as RTL 102.5's
Giornale Orario, pages yt-dlp can read, and MP3 / AAC streams (also from.m3u/
.pls). HLS streams are not supported. -
Home card and a Podcasts & news section with the latest episodes per source
(relative date, length, time left), resume where you stopped, "listened" marks synced
per account (last 200 episodes), and an opt-in to show podcast listens in Recent. -
Episodes and radio play through a hub proxy (Range and seeking, visualizers keep
working) restricted to the configured episodes, with the SSRF guard on every redirect.
They never count as plays (statistics, achievements, history, Plectr), crossfade is off
around them, live streams show LIVE and cannot be seeked. -
Lightweight by design: fetched only when a card or the section opens, cached (30 min by
default, conditional requests), never polled; with the module off the hub does nothing
and clients load none of its code. -
Database schema v6 (
podcast_sources). -
Prevent the computer from sleeping (admin panel Network › Power), so a hub reached
from the LAN, the tunnel or remote desktop does not doze off: Never (default),
Always, or Only when in use (playback, transcodes, podcast streams, scans,
downloads and jobs, tunnel traffic) plus a grace period (10 min, 1–120). Only system
sleep is blocked; the screen still turns off. Linux uses a systemd-logind inhibitor
(plus GNOME's session inhibitor on GNOME) that ends with the hub even after a crash,
with an optional keep awake with the lid closed; Windows uses
SetThreadExecutionState. Live status in the panel, applied without restart, saved in
settings.json(and so in backups),GET/PUT /api/v1/system/power, and
--prevent-sleep off|always|when-active/REKORD_PREVENT_SLEEPfor headless hubs.
Event driven: no polling, nothing runs while it is off. -
Custom theme text color: a Text color picker in the custom theme (main text; the
secondary text colors follow it automatically). Automatic keeps the previous
behavior. A warning appears when text on the sections falls below the WCAG AA contrast
(4.5:1). Included in theme export / import; Extract colors from image now also picks a
readable text color. -
Desktop widths (Settings › Interface, saved per device): Content width (default
1360 px as before, Full, 1200 / 1440 / 1680 / 1920 px or a custom 960–2560 px slider
with live preview; the header follows the content) and Player bar width (default as
before, Full, Match content, presets or custom). The content and the bar stay
centered; phones and narrow windows keep the adaptive layout. -
Embedded metadata and covers for every format (GitHub issue #97): tags stored in
FLAC, Ogg Vorbis and Opus (Vorbis comments, also multi-value and4/11numbers), MP3
(ID3v2, ID3v1, APE), M4A / AAC / ALAC (MP4 atoms), WAV (ID3v2, RIFF INFO), AIFF, and,
through ffmpeg, WMA and WebM: title, artist, album artist, album, track / disc number
and totals, date, genres, BPM, lyrics and MusicBrainz ids. Read on the first scan of a
file and when it changes, filling only what Studio (or a sidecar, a fetch, the previous
version) did not curate; typed values are never overwritten. Each value records where
it came from (embedded_fields/curated_fieldsin the API). -
Embedded covers: albums without an image in their folder get the front cover stored
in one of their files (else its first picture), scaled to 1500 px at most and kept in
<data dir>/covers/embedded/, with the usual thumbnails and cache busting. Studio covers
and folder images keep winning; the music folder is never written by a scan. Broken
pictures are skipped (logged once per album). -
Admin panel Library › Embedded metadata: Read embedded metadata and covers (on by
default) and the priority Studio > embedded > file name (default) or Embedded >
Studio (filling only); Maintenance › Re-read embedded metadata (optionally also
replacing values typed in Studio, with the embedded priority).GET/PUT /api/v1/library/embedded,POST /api/v1/library/embedded/reread. -
Libraries indexed by 5.0 are completed once by a background job (Reading embedded
metadata: throttled, paused during scans, resumable, with progress in Jobs).
Database schema v7. -
Linux: native media controls (MPRIS). GNOME's media widget, shell extensions and the
media keys now see RE-KORD asorg.mpris.MediaPlayer2.rekord, with title, artist,
album, cover and Play / Pause / Next / Previous / Seek, in the client and the server
app. Updates are sent only on changes; the player exists only while something is queued. -
Instant playlist (Home › Playlist al volo): a clearer builder with genre and mood
chips (icon, name, live counts), a match mode shown only when it matters, a result bar
with the number of tracks and their length, Start playlist and Add to queue, and the
selection remembered per account. -
pnpm dev:hub: hub, client UI and admin panel together for development, without Tauri
or the GTK development packages.
Changed
- Scans are lighter: pictures stored in the files are no longer loaded for every file,
only for a few tracks of an album that needs a cover. - Plectr has no track picker any more. The game plays on the song in the player
(playing or paused), chosen in the library like everywhere else. With nothing in the
player the stage shows "Start a song from the library to play" with Open the
library and Shuffle play; "Change song" is gone from the stage, the pause menu,
the results and the side panel. Records stay (▶ plays that song). - Plectr on phones keeps the player bar at the bottom, as in 5.0: the pads sit above
it, higher and easier to reach, behind a guard strip. Presses that start on the lanes
never reach the bar and a bar tap right after a pad press is ignored; pausing or
skipping from the bar drives the game as before. - The Plectr "Cover" stage backdrop was removed; saved settings move to the default,
the visualizer (the light stage, automatic on WebKitGTK and weak devices, still turns
it off). - Phones: tighter, consistent spacing (issue #97). Below the desktop breakpoint the
spacing scale is one notch smaller (page gutter 12px instead of 16px, 8px between cards,
slimmer card, tile and track-row padding), so more of each screen is content: the album
page puts the cover beside the title and actions as in 5.x (the first tracks are on the
first screen), artist / album / genre tiles use a 56px cover, track rows are closer
together, and the player bar shows the times beside the seek bar instead of on a line
of their own (one row shorter). The bottom nav is 54px. Touch targets stay at least
44px (dense chips and sort options get an invisible hit area instead of padding). The
desktop layout is unchanged. - Linux desktop app is lighter during playback: on WebKitGTK the timeline and the
Studio icon now change once per second, so a playing track costs one frame per second
(about half the CPU in Queue and Library, including GNOME Shell's share). - Genre aliases are merged: "Drum & Bass" / "Drum and Bass", "R&B" / "Rhythm & Blues"
and "Rock & Roll" spellings show as one genre in the library and the instant playlist. - No scrollbars on touch screens: pages, sheets and lists still scroll (touch,
momentum, jump-to-track) but no longer draw a scrollbar or reserve its gutter. With a
mouse they are unchanged.
Fixed
-
Android: background playback is reliable with the screen off, in the car and across
network changes. Tracks sometimes did not start, or stopped after a while:- the media service left the foreground at every pause, and a pause caused by a call or
another app ended with Android 12+ refusing to bring it back (the app could close);
it now stays in the foreground while playing, while a track loads or reconnects, and
for 10 minutes after a pause; - CPU and Wi-Fi now stay awake while playing (the gap between two tracks let the phone
sleep and Wi-Fi doze); - a stalled stream is reconnected at the same position (also right after a switch
from Wi-Fi to mobile data), a network error no longer skips the track as unreadable,
aplay()refused in the background is retried, and the next track is buffered 20 s
ahead; - a heartbeat from the service drives these checks while the page's timers are
throttled; - the queue end now clears the notification's "playing" state.
- the media service left the foreground at every pause, and a pause caused by a call or
-
Android: music resumes after an interruption. Calls, voice notes and navigation
prompts were already resumed by the WebView; now, when another app's music or video
pauses RE-KORD, playback resumes once that audio stops (within 30 minutes, never after
you paused it yourself or after headphones / the car disconnected). No second audio
focus request: the service only watches other apps' playback and the call state. -
Android diagnostics:
adb logcat -s RekordMediashows state changes, stalls,
reconnects, network changes and interruptions (quiet in normal playback). -
FLACs showed no metadata when their tags were not in the primary tag (for example an
ID3v2 block in front of the FLAC stream, or numbers written as4/11), and only the first
of severalGENRE/ARTISTvalues was kept: every tag of a file is now read and
merged, and a file whose pictures cannot be read still gets its tags. -
"Extract colors from image" always failed in the desktop app (and in any client not
served by the hub itself): the image was fetched with browser credentials, which the
hub's CORS answer does not allow, so the browser blocked it. It now goes through the
normal hub connection; JPEG, PNG, WebP, large images and animated GIFs all work. -
Long titles and artists stretched the desktop player bar: they are now cut with "…"
on one line (full text in the tooltip), like on phones. Same for artist · album in the
Studio › Listen header, with tooltips on track rows and library tiles. -
The desktop header row now lines up exactly with the page content (it was offset by
half a scrollbar). -
Plectr could not be closed on phones: ✕ during a run only paused the game and then
ignored further taps. ✕, Exit in the pause menu and the results, and Back (first
press pauses, second exits) now always leave Plectr and restore the app's bars. -
Adding a genre to an album could crash the album page (issue #97, phones and
desktop alike; changing page brought it back): genres with two spellings of one name
in the library, such as "Rhythm & Blues" next to "R&B" or "Drum & Bass" next to
"Drum and Bass", put the same entry twice in Aggiungi genere, which the page cannot
render. Aliases are now one chip and one menu entry, removing a genre removes its
aliases too, and the menu closes as soon as a genre is picked (a second tap during the
save could start a concurrent edit). -
Web app (PWA): tracks were downloaded several times while loading when the service
worker was active (up to five times the file size in WebKit-based browsers): audio,
transcode and podcast streams now bypass the service worker. -
The offline app fell back to Italian: English and German translations are now cached too.
-
Saving metadata or a cover in Studio no longer triggers a full library re-index a few
seconds later. -
Podcasts: hardened proxy (audio content types only, header timeouts, no system proxy),
bounded feed and artwork parsing, a forced refresh honours the error backoff, and source
addresses (which may contain tokens) are hidden from users who cannot manage the hub. -
A pause pressed while the player is reconnecting or loading always wins.
-
Closing the admin panel during a scan no longer leaves the scan lock (and the keep-awake
activity) held until restart. -
Studio › Listen no longer shows a doubled "· ·" separator.
-
Cast: podcast episodes start at their resume point on the receiver.
-
Phones: the end of a page was hidden behind the bottom nav when nothing was in the
player; it now always clears the nav and the home indicator.
Known issues
- Linux: while a track plays, GNOME may also list a second, bare "RE-KORD" media entry
created by WebKitGTK itself, next to the full native one. - Android background playback was verified on an emulator; real phones with aggressive
battery savers, Bluetooth head units and car systems are still to be confirmed.