diff --git a/.clang-tidy b/.clang-tidy index 43c1aa0e..1eaf7039 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -12,4 +12,6 @@ CheckOptions: value: '1' - key: cppcoreguidelines-avoid-do-while.IgnoreMacros value: '1' + - key: performance-unnecessary-value-param.AllowedTypes + value: "shared_ptr" ... diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f06fbc8..7a203733 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ endif() find_package(PkgConfig REQUIRED) find_package(Threads REQUIRED) find_package(Filesystem REQUIRED) -find_package(Boost REQUIRED COMPONENTS system program_options) +find_package(Boost REQUIRED COMPONENTS system program_options iostreams) find_package(Wt REQUIRED COMPONENTS Wt Dbo DboSqlite3 HTTP) pkg_check_modules(Taglib REQUIRED IMPORTED_TARGET taglib) pkg_check_modules(Config++ REQUIRED IMPORTED_TARGET libconfig++) diff --git a/Dockerfile-release b/Dockerfile-release index df4eaeee..b78366dc 100644 --- a/Dockerfile-release +++ b/Dockerfile-release @@ -31,6 +31,7 @@ ARG BUILD_PACKAGES=" \ libarchive-dev \ libconfig-dev \ taglib-dev \ + sqlite-dev \ gtest-dev" RUN apk add --no-cache --update ${BUILD_PACKAGES} @@ -86,7 +87,7 @@ RUN \ RUN \ DIR=/tmp/wt && mkdir -p ${DIR} && cd ${DIR} && \ - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${PREFIX} -DBUILD_EXAMPLES=OFF -DENABLE_LIBWTTEST=OFF -DCONNECTOR_FCGI=OFF && \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${PREFIX} -DBUILD_EXAMPLES=OFF -DENABLE_LIBWTTEST=OFF -DCONNECTOR_FCGI=OFF -DUSE_SYSTEM_SQLITE3=ON && \ make -j$(nproc) && \ make install @@ -147,11 +148,13 @@ ARG RUNTIME_PACKAGES=" \ lame-libs \ zlib \ boost-filesystem \ + boost-iostreams \ boost-program_options \ boost-system \ boost-thread \ libarchive \ libconfig++ \ + sqlite-libs \ taglib" ARG LMS_USER=lms diff --git a/SUBSONIC.md b/SUBSONIC.md index de749e9e..1361440c 100644 --- a/SUBSONIC.md +++ b/SUBSONIC.md @@ -11,6 +11,7 @@ OpenSubsonic is an initiative to patch and extend the legacy Subsonic API. You'l ## Extra fields The following extra fields are implemented: * `Album` response: + * `mediaType` * `played` * `musicBrainzId` * `genres` @@ -22,6 +23,10 @@ The following extra fields are implemented: * `isCompilation` * `discTitles`: discs with no subtitle are omitted * `Child` response: + * `bitDepth` + * `samplingRate` + * `channelCount` + * `mediaType` * `played` * `musicBrainzId`: note this is actually the recording MBID when this response refers to a song * `genres` @@ -33,6 +38,7 @@ The following extra fields are implemented: * `moods` * `replayGain` * `Artist` response: + * `mediaType` * `musicBrainzId` * `sortName` * `roles` diff --git a/approot/admin-scannercontroller.xml b/approot/admin-scannercontroller.xml index 1b971a16..cbe01b13 100644 --- a/approot/admin-scannercontroller.xml +++ b/approot/admin-scannercontroller.xml @@ -2,42 +2,63 @@ -
- ${tr:Lms.Admin.ScannerController.scanner} -
-
- - ${status class="form-control"} + ${tr:Lms.Admin.ScannerController.scanner} +
+
+ + ${status class="form-control"} +
+
+ + ${step-status class="form-control"} +
+
+ +
+ ${last-scan class="form-control"} + ${report-btn class="btn btn-outline-info"}
-
- - ${step-status class="form-control"} -
-
- -
- ${last-scan class="form-control"} - ${report-btn class="btn btn-outline-info"} -
-
-
-
- ${scan-btn class="btn btn-primary"} - - +
+
+
+
+
+ ${tr:Lms.Admin.ScannerController.scan-options} +
+
+
+ ${full-scan class="form-check-input"} + +
+
+ ${force-optimize class="form-check-input"} + +
+
+ ${compact class="form-check-input"} + +
+
- +
+ ${scan-btn class="btn btn-primary me-2"} + +
+
diff --git a/approot/admin-user.xml b/approot/admin-user.xml index 26f0c989..cb22ee10 100644 --- a/approot/admin-user.xml +++ b/approot/admin-user.xml @@ -6,7 +6,7 @@ ${title} ${}
-