diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6cb75ea9..454f7397 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.12)
-project(lms)
+project(lms VERSION 3.69.0)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/modules/)
diff --git a/README.md b/README.md
index 7141ba87..a327bd39 100644
--- a/README.md
+++ b/README.md
@@ -90,6 +90,9 @@ If neither exists, it will then search for a file named `artist` (or another nam
2. Scan for the image: the directory is scanned starting from this common path, moving upwards if needed, until the artist image file is found.
3. Fallback search: if no image is found, _LMS_ will then search within each individual album folder.
+## Disc image lookup
+_LMS_ automatically associates images with each disc in your collection. Name the image file after the disc's subtitle or another identifier configured in `lms.conf` (see the `medium-image-file-names` setting), and place it in the same directory as the disc's tracks. If no suitable image is found, LMS will also look for embedded images within the tracks of the disc.
+
## Playlist support
_LMS_ supports playlist files in `m3u` and `m3u8` formats. These playlists are synced during the scan process and are available as public shared playlists.
diff --git a/approot/admin-about.xml b/approot/admin-about.xml
new file mode 100644
index 00000000..44b2f5c8
--- /dev/null
+++ b/approot/admin-about.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ ${tr:Lms.Admin.About.version}
+
+
+ ${version}
+
+
+
+
+ ${tr:Lms.Admin.About.homepage}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/approot/main.xml b/approot/main.xml
index d9c0fcd4..bc1eb859 100644
--- a/approot/main.xml
+++ b/approot/main.xml
@@ -44,6 +44,7 @@
${scan-settings class="dropdown-item"}
${scanner class="dropdown-item"}
${users class="dropdown-item"}
+ ${about class="dropdown-item"}
${}
${debug-tools class="dropdown-item"}
@@ -57,7 +58,6 @@
diff --git a/approot/messages.xml b/approot/messages.xml
index 070c40f2..8ef86dac 100644
--- a/approot/messages.xml
+++ b/approot/messages.xml
@@ -52,12 +52,18 @@
User not found
+
+
+About
+Homepage
+Version
+
Music libraries
Create library
@@ -101,11 +107,11 @@
Cannot get track duration
-Unable to read the image at index {1}
+Unable to read the image at index {1}: {2}
Cannot parse artist info file
Cannot parse audio file
Cannot read file ({1})
-Cannot parse image file
+Cannot parse image file: {1}
Cannot parse lyrics file
Cannot parse playlist file
Compact the database. Caution: this may take a while and will block the whole application during the compact step!
diff --git a/approot/messages_es.xml b/approot/messages_es.xml
index 0bce3785..f10b5bbe 100644
--- a/approot/messages_es.xml
+++ b/approot/messages_es.xml
@@ -52,12 +52,18 @@
No existe el usuario
+
+
+Acerca de
+Página principal
+Versión
+
Bibliotecas musicales
Crear una biblioteca
@@ -101,11 +107,11 @@
No ha sido posible obtener la duración de la pista
-No se puede leer la imagen en el índice {1}
+No se puede leer la imagen en el índice {1} : {2}
No ha sido posible analizar el fichero de información sobre el artista
No ha sido posible analizar el fichero de audio
No ha sido posible leer el fichero ({1})
-No ha sido posible analizar del fichero de imagen
+No ha sido posible analizar del fichero de imagen : {1}
No ha sido posible analizar el fichero de letras
No ha sido posible analizar el fichero de la lista de distribución
Compactar la base de datos. ¡Atención!: esta operación puede tardar bastante tiempo y la aplicación se bloqueará mientras dura la operación de compactación
diff --git a/approot/messages_fr.xml b/approot/messages_fr.xml
index c8c654b0..40a1ca5d 100644
--- a/approot/messages_fr.xml
+++ b/approot/messages_fr.xml
@@ -52,12 +52,18 @@
L'utilisateur n'existe pas
+
+
+À propos
+Page d’accueil
+Version
+
Bibliothèques musicales
Créer une bibliothèque
@@ -101,11 +107,11 @@
Impossible de récupérer la durée de la piste
-Impossible de lire l'image à l'indice {1}
+Impossible de lire l'image à l'indice {1} : {2}
Impossible d'analyser le fichier d'informations sur l'artiste
Impossible d'analyser le fichier audio
Impossible de lire le fichier ({1})
-Impossible d'analyser le fichier image
+Impossible d'analyser le fichier image : {1}
Impossible d'analyser le fichier de paroles
Impossible d'analyser le fichier de liste de lecture
Compacter la base de données. Attention : cette opération peut prendre du temps et va vérouiller l'application pendant toute l'étape de compactage!
diff --git a/approot/messages_it.xml b/approot/messages_it.xml
index 42a157a5..0238697e 100644
--- a/approot/messages_it.xml
+++ b/approot/messages_it.xml
@@ -52,12 +52,18 @@
Utente non trovato
+
+
+Informazioni
+Pagina iniziale
+Versione
+
Librerie musicali
Crea libreria
@@ -101,11 +107,11 @@
Non sono stato in grado di determinare la durata della traccia
-Impossibile leggere l'immagine all'indice {1}
+Impossibile leggere l'immagine all'indice {1} : {2}
Impossibile analizzare il file delle informazioni sull'artista
Impossibile analizzare il file audio
Non in grado di leggere il file ({1})
-Impossibile analizzare il file immagine
+Impossibile analizzare il file immagine : {1}
Impossibile analizzare il file dei testi
Impossibile analizzare il file della playlist
Compatta il database. Attenzione: ciò potrebbe richiedere del tempo e bloccherà l'intera applicazione durante il passaggio di compattazione!
diff --git a/approot/messages_pl.xml b/approot/messages_pl.xml
index 5adcdb87..41792a50 100644
--- a/approot/messages_pl.xml
+++ b/approot/messages_pl.xml
@@ -53,12 +53,18 @@
Użytkownik nie odnaleziony
+
+
+O programie
+Strona główna
+Wersja
+
Biblioteki muzyczne
Utwórz bibliotekę
@@ -102,11 +108,11 @@
Nie udało się ustalić długości ścieżki
-Nie można odczytać obrazu pod indeksem {1}
+Nie można odczytać obrazu pod indeksem {1} : {2}
Nie można przetworzyć pliku z informacjami o artyście"
Nie można przeanalizować pliku audio
Nie udało się odczytać pliku ({1})
-Nie można przeanalizować pliku obrazu
+Nie można przeanalizować pliku obrazu : {1}
Nie można przetworzyć pliku z tekstem
Nie można przeanalizować pliku playlisty
Sprasuj bazę danych. Uwaga: może to trochę zająć, a cała aplikacja będzie w tym czasie zablokowana!
diff --git a/approot/messages_zh.xml b/approot/messages_zh.xml
index 6ca9201f..5125fd20 100644
--- a/approot/messages_zh.xml
+++ b/approot/messages_zh.xml
@@ -58,6 +58,12 @@
+
+
+
+
+
+
diff --git a/approot/misc.xml b/approot/misc.xml
index 78ebf5b2..6fd85b17 100644
--- a/approot/misc.xml
+++ b/approot/misc.xml
@@ -19,6 +19,8 @@
+
+
diff --git a/approot/release.xml b/approot/release.xml
index 92160133..0d856885 100644
--- a/approot/release.xml
+++ b/approot/release.xml
@@ -33,7 +33,7 @@
- ${container class="d-grid gap-3"}
+ ${disc-container class="d-grid gap-3"}
${
}
${copyright class="text-reset"}
${}
@@ -101,6 +101,7 @@
${play-btn class="d-none d-sm-block btn btn-sm btn-outline-secondary border-0"}
+ ${star-btn class="d-none d-sm-block btn btn-sm btn-outline-secondary border-0"}
${more-btn data-bs-toggle="dropdown" aria-expanded="false" class="btn btn-sm btn-outline-secondary border-0"}
${play-btn class="d-none d-sm-block btn btn-sm btn-outline-secondary border-0"}
+ ${star-btn class="d-none d-sm-block btn btn-sm btn-outline-secondary border-0"}
${more-btn data-bs-toggle="dropdown" aria-expanded="false" class="btn btn-sm btn-outline-secondary border-0"}