Skip to main content

AudioCheck - Releases

← App details

Nextcloud 35

AudioCheck 1.3.9
Release Details
UpdatedOct. 10, 2026, 3:26 p.m.
Changelog

Changed

  • shared app-feedback render (focus-ring + toast-dedup SSOT)
  • Atlas farm v3.5.14: rate-limiter parallel-load fix + DS contrast suite + l10n regen
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureHyFb9gGMjcEuZuCndb7XQSZTtc4HVGM4FClOArQcVWEo9pU9U04KJTko6NMgwWXe0lO+Ia+D/2l/YiL8g3X/vLUe7kVOkIMhR4Hb+9Q4COs/SFMpcwepWDeg+EeYWQdlK0g13yT0gJvWclUI7nOOipWp5oFWoGhw7s2j35ZiZsOFi/0NOFskHHViWqrr4uv0Flec3+FrDdcFzFVyQSwz2I5CrqVPm+wawXIcaQU8CP1vMfl/auUOdylyoYAohtT3xGFEVnP+ZnvpVNRd3K++upIRrcsuwQf+gz9StuX9licVRe8EJtzUefK/HqTTLjTF9oUYliA82CFEdu8xOlwAu72IwLgxw+CxHN0LSmY3v42AvBYHUhNhgbtO64o1lEDUKh9k20HqoD8yBTherO2713Ny2Rlq/+qMvqZG6JdsF/93LJVxE2KycaSiYuWnNynnn4ijMX1uXYUFIuh9csoPAytsJ5OponVPcAKsGj/V/OyELsrLWexsBFZR2q+qsOXp028XhLQrFifB5yGXj3RTFKZAk4IQHXGxyzgNlr5+shaE+HVcrcbX1Qqjy1HX/tP/lDBIdmHmH7zB/pS4N2t6R35IEPqJDSQjaIJ7GZsnwJc8AitnTMOZyHoDLzJuIIxJ3rm6+LmVYNmnYO9ElhpGn/gSS3F0yayUNpJukeRCH5k=
url: https://github.com/aSoftwareByDesignRepository/nextcloud-audiocheck/releases/download/v1.3.9/audiocheck-1.3.9.tar.gz
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.8
Release Details
UpdatedOct. 4, 2026, 7:10 p.m.
Changelog

Fixed

  • Mini-player touch targets now meet the 44px floor under Nextcloud core styles.
  • Localization: fixed media-playback mistranslations and restored missing nav subtitles; Swedish register cleaned up.
  • Uninstall/upgrade repair paths hardened.

Changed

  • Atlas v3.5.14 verification pass: expanded contract coverage; focus preservation extracted to a shared module; store screenshot URLs realigned with the published listing.

Changed

  • Version 1.3.7.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignaturebvKCuri5VKCkgIxnEBYo2YQ79EAY6Uwpc1/R5oPabr5dG2EM1Ct8vPKBt82c83j/u3MgjEWUBunzqfTEZ6UWe/N1eYA5m8Ds5XtAID35pfVTg+/kQxcTYUD848Zjgenl0kObjawh8IT+/t9F7c4TvqsmsSdOQvkRPDy8u9O06U2U1TLUbKumRY1OJ/iG72d2p3UNGKicmSHyGWeAtQEjJRHapD6zhE4w1WQKfFaJovHf3xs+h5FFgkc8OJQFWBDolCHIyvvOukv6lVVuRzsTeUh27+ooiqxFYAmzU82/TA/zhPX4ylUXdV5oeRLrSbaqOsFlZI/I9gMrbDy7gnrPpWPMFxuvn77rMIKMH+WZ8p9von3ThfPIz7fZn955R3PibSSscDOcIYzOR4Nn4KFkomvBsmgN9PFE7pAUEFma4trYL0jwLnBI5JyzXuwx12urbfXDBp+XKEy2UpMEhDq5bQ7YeQhfbxsbaplfQFqDzZlrB7KUHY6ZPw5/TdfhQe6kxfMK1iBdg/f3q4hIe+PYvjToKuRqvXEEUwmxtp5rf4Erl3SjtFvld9BVo394Z4ZwrxIAdbkMIgVzcmAP1XXlB5yj6Hv4M5wtKzD1pMi9O97T7QFtgAiahfP25M5HCv1bpdN7HZgNrFCofvDRgh/MwYET82Xva/oIynLEAeumuU0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.7
Release Details
UpdatedSept. 28, 2026, 2:34 p.m.
Changelog

Fixed

  • Authenticated stream opens are rate-limited (300/60s per user via shared ac_rate_limits + exclusive lock); over-quota returns 429 rate_limit_exceeded instead of opening another file handle.
  • AJAX cron scan tick is POST + CSRF only — drive-by GET/<img> can no longer wake the scanner; ApiCsrfGateTest treats it as a mutation.

Changed

  • Version 1.3.7.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureaAt0DHnsYy+k/xKgmVgH5R69Qex0ymU1wa4a9O6YF41xEGStcSNNZOpOcSuvF88Y3Hw59mFZGw9oTOPGpbD9+4pavqZs9YS+WbQlPIovaxmXD7FGFis9A/ebxKplXt8/6x6I5JAbVSS89XJg/fLQugUcKawhJjOdXfRsZfdJiREBvl4dnaDpw0OdkwqOEt2uOoy46+n04P+r2Vi7QW0qmNNylQdeoBPDFs1mevAvrkmShKavFkH31HKUAZ/K9jwoPIKhAqWY3Z3krOYs1I3ivDDX1FL3qeDqD/HpdsSqXTWnG1hzaPIJTePVo9guOIAyxPBkRAlD3wRGhzo8z5Vo6LgVJBoLtq/ALtgPQkUkd6EFE0Fa4M6zUl93mhbwwZGuKFuyxBBWtDcFCtOUvzm0jjJDiBI1hW+IIrh6LyYJAYWwjuS2vu8ro2eCMr8f75ntodPDwidChoGU8EtUBTAx9GR1qM2KPEFuLnhk2Up4ISiTasdYLAL+ZMdQMVDV/UPq35ikUnbgC01Y4qjpRI1KDJQcsZ+14FRbMI0IvQ6E3nGy7pAf+OdeaBP680RcgU5Kw1cL+vGoCWZ++Y/hYYINT1cm/pYRWLTJBph6pke903rgOqazpMFd6+sHzZil7Kh/lePsmiRu2GihDZQHbTeQiwlCUc4+kW1hVCylLPZ3q3Q=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.5
Release Details
UpdatedSept. 4, 2026, 7 p.m.
Changelog

Fixed

  • Global mini-player on Files/Dashboard: use OCP.InitialState.loadState (NC32+) with UTF-8-safe DOM fallback — .load was never a function, so the overlay never mounted.
  • Restore now waits for user prefs first (resumeOnOpen / volume / speed) so server preference races cannot autoplay against the user’s choice.
  • Dynamically loaded player scripts are cache-busted with the app assetVersion.
  • Boot is idempotent; global mode is set before the player stack loads so shortcuts/volume stay scoped to the overlay.
  • After browser autoplay blocks resume, Play is visually highlighted (ac-mini-player--needs-gesture) and announced politely.

Changed

  • Version 1.3.5.
  • Global overlay shows “Loading playback…” immediately while the player stack loads (no blank multi-second gap).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureUZ1IhP7Aocpvj2XN89U4TEq70g+n8EgkBrQJ5sKx6RPmunDAkCnrPinIFWgeqKEe5mV8W+jczh7uwfWBnGBduQEVp5uojAX7s5yYfMUdxdwObzGmT5mT0UxXVuVJvKNoo1k7ddOeQXpO9lh42KGvYMW0XlYY0xYlvI/rv2xBJbIk9l4vfjIUe2sCG904dFkVd17Z39qlmeCV2ZNx7g13EGbRsNamIXQLugjOiQihntQTsGVA/ekwhr2RIV3YaEe5QZkprHcgDUv44vWwMWaZqosNjk+vjxKfWhe6WleO8nbYUToyhDnhT6Lu+9Wm4HeNdq7eA1wjzfqSyZbwt6U+HcSp3Y45ql4bHkVnh0x8pQlFlsFg4c5B9Iva3Tz2l5yoYjZzJ5vvJqZdwpxlgThNaJY4BaIfZv3eG493iiZTyPbZUGmfafC/lkLqAW6ncPZqqhdkGwUaDEDvyl4MJlgp3NZKUawVH2GsaYGF5NtzO05t1e1tJVCdDUlaOYG7KyjCswf+Cp6rJXizvM2Cw+k9ESfoRLwqvjtoctUiUH07S+m42YcXjEWhT/qzCKqQJGC84Xcl6vS7gs5CwIjgnBc28PyIPdKmnkQfFDEELf+CRf6ozeC03kCS4QqbJl1Tuc6mZiTXHQN/GjjNF/MzLJD109ncvL6wni65JxOWsdhvHbI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.4
Release Details
UpdatedSept. 4, 2026, 4:39 p.m.
Changelog

Changed

  • App Store screenshots refreshed against current UI (Library / Music / Playlists / Favorites / Browse / Settings / App settings).
  • Version 1.3.4.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureJmIMvvaxd8n8+hou9lcC773VzsSsqDI50jrAzz2JsY/RU2pPTSs+T5rMQAr0/RA7jVLa1hCF1c/xU3kA83V7MWB8kf1ht3HIoyNcX88L0QkMluHZksCUlVI1OV+SpFpiCDC9UJOBxzMd9n2JP3HOGJ0Hmv+ObxtEqJR2ibc4UPfCETkRtPCtkmcNiS0Qawn6gITeoWXVcMZDonsaLqUj0a8Sy68ok5Ld+wPmBfDy0MPr+amK5H4PXQ1HzUBdt6iLIkSa6VvCsNz3dsA+PYV8BRl5YOHdOXkZCHVdX27xvBc8JMHYb4zfyfZrnPym492lR9jHQpPoA7ApPhEEFuAuyErjkznDpWiqKLGuJT0KY71RtqrgSq/Ee4VRkuphZ2VV45ttZokBpCh9gnv5UZED/xaf6Gd3wU4/QIys8K5JNXlxn6d2qseqjdi8c11lwel44y2KG3FaJJQNZq6dxFRtTk8Qm/EEQ1QF6k+hrIGw8cHEvM/OTT+khO1qdh4KSCEXXXyRzfHYR3n3IMM737UUG67dDjov2jys8jHEVGSmXEME1SgAC0MRKlYjXjrqQxA4sq6itgZLzavxihsqOkEhSIGsG/2alGTqLOM4Yzsq3kwDKU2ioT2xiI6yvJ50mVOe0MCPAMPzrQPzEraEY+TvYQ+vb9aIs62Xyv8PSIXXZ9s=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0

Nextcloud 34

AudioCheck 1.3.9
Release Details
UpdatedOct. 10, 2026, 3:26 p.m.
Changelog

Changed

  • shared app-feedback render (focus-ring + toast-dedup SSOT)
  • Atlas farm v3.5.14: rate-limiter parallel-load fix + DS contrast suite + l10n regen
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureHyFb9gGMjcEuZuCndb7XQSZTtc4HVGM4FClOArQcVWEo9pU9U04KJTko6NMgwWXe0lO+Ia+D/2l/YiL8g3X/vLUe7kVOkIMhR4Hb+9Q4COs/SFMpcwepWDeg+EeYWQdlK0g13yT0gJvWclUI7nOOipWp5oFWoGhw7s2j35ZiZsOFi/0NOFskHHViWqrr4uv0Flec3+FrDdcFzFVyQSwz2I5CrqVPm+wawXIcaQU8CP1vMfl/auUOdylyoYAohtT3xGFEVnP+ZnvpVNRd3K++upIRrcsuwQf+gz9StuX9licVRe8EJtzUefK/HqTTLjTF9oUYliA82CFEdu8xOlwAu72IwLgxw+CxHN0LSmY3v42AvBYHUhNhgbtO64o1lEDUKh9k20HqoD8yBTherO2713Ny2Rlq/+qMvqZG6JdsF/93LJVxE2KycaSiYuWnNynnn4ijMX1uXYUFIuh9csoPAytsJ5OponVPcAKsGj/V/OyELsrLWexsBFZR2q+qsOXp028XhLQrFifB5yGXj3RTFKZAk4IQHXGxyzgNlr5+shaE+HVcrcbX1Qqjy1HX/tP/lDBIdmHmH7zB/pS4N2t6R35IEPqJDSQjaIJ7GZsnwJc8AitnTMOZyHoDLzJuIIxJ3rm6+LmVYNmnYO9ElhpGn/gSS3F0yayUNpJukeRCH5k=
url: https://github.com/aSoftwareByDesignRepository/nextcloud-audiocheck/releases/download/v1.3.9/audiocheck-1.3.9.tar.gz
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.8
Release Details
UpdatedOct. 4, 2026, 7:10 p.m.
Changelog

Fixed

  • Mini-player touch targets now meet the 44px floor under Nextcloud core styles.
  • Localization: fixed media-playback mistranslations and restored missing nav subtitles; Swedish register cleaned up.
  • Uninstall/upgrade repair paths hardened.

Changed

  • Atlas v3.5.14 verification pass: expanded contract coverage; focus preservation extracted to a shared module; store screenshot URLs realigned with the published listing.

Changed

  • Version 1.3.7.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignaturebvKCuri5VKCkgIxnEBYo2YQ79EAY6Uwpc1/R5oPabr5dG2EM1Ct8vPKBt82c83j/u3MgjEWUBunzqfTEZ6UWe/N1eYA5m8Ds5XtAID35pfVTg+/kQxcTYUD848Zjgenl0kObjawh8IT+/t9F7c4TvqsmsSdOQvkRPDy8u9O06U2U1TLUbKumRY1OJ/iG72d2p3UNGKicmSHyGWeAtQEjJRHapD6zhE4w1WQKfFaJovHf3xs+h5FFgkc8OJQFWBDolCHIyvvOukv6lVVuRzsTeUh27+ooiqxFYAmzU82/TA/zhPX4ylUXdV5oeRLrSbaqOsFlZI/I9gMrbDy7gnrPpWPMFxuvn77rMIKMH+WZ8p9von3ThfPIz7fZn955R3PibSSscDOcIYzOR4Nn4KFkomvBsmgN9PFE7pAUEFma4trYL0jwLnBI5JyzXuwx12urbfXDBp+XKEy2UpMEhDq5bQ7YeQhfbxsbaplfQFqDzZlrB7KUHY6ZPw5/TdfhQe6kxfMK1iBdg/f3q4hIe+PYvjToKuRqvXEEUwmxtp5rf4Erl3SjtFvld9BVo394Z4ZwrxIAdbkMIgVzcmAP1XXlB5yj6Hv4M5wtKzD1pMi9O97T7QFtgAiahfP25M5HCv1bpdN7HZgNrFCofvDRgh/MwYET82Xva/oIynLEAeumuU0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.7
Release Details
UpdatedSept. 28, 2026, 2:34 p.m.
Changelog

Fixed

  • Authenticated stream opens are rate-limited (300/60s per user via shared ac_rate_limits + exclusive lock); over-quota returns 429 rate_limit_exceeded instead of opening another file handle.
  • AJAX cron scan tick is POST + CSRF only — drive-by GET/<img> can no longer wake the scanner; ApiCsrfGateTest treats it as a mutation.

Changed

  • Version 1.3.7.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureaAt0DHnsYy+k/xKgmVgH5R69Qex0ymU1wa4a9O6YF41xEGStcSNNZOpOcSuvF88Y3Hw59mFZGw9oTOPGpbD9+4pavqZs9YS+WbQlPIovaxmXD7FGFis9A/ebxKplXt8/6x6I5JAbVSS89XJg/fLQugUcKawhJjOdXfRsZfdJiREBvl4dnaDpw0OdkwqOEt2uOoy46+n04P+r2Vi7QW0qmNNylQdeoBPDFs1mevAvrkmShKavFkH31HKUAZ/K9jwoPIKhAqWY3Z3krOYs1I3ivDDX1FL3qeDqD/HpdsSqXTWnG1hzaPIJTePVo9guOIAyxPBkRAlD3wRGhzo8z5Vo6LgVJBoLtq/ALtgPQkUkd6EFE0Fa4M6zUl93mhbwwZGuKFuyxBBWtDcFCtOUvzm0jjJDiBI1hW+IIrh6LyYJAYWwjuS2vu8ro2eCMr8f75ntodPDwidChoGU8EtUBTAx9GR1qM2KPEFuLnhk2Up4ISiTasdYLAL+ZMdQMVDV/UPq35ikUnbgC01Y4qjpRI1KDJQcsZ+14FRbMI0IvQ6E3nGy7pAf+OdeaBP680RcgU5Kw1cL+vGoCWZ++Y/hYYINT1cm/pYRWLTJBph6pke903rgOqazpMFd6+sHzZil7Kh/lePsmiRu2GihDZQHbTeQiwlCUc4+kW1hVCylLPZ3q3Q=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.5
Release Details
UpdatedSept. 4, 2026, 7 p.m.
Changelog

Fixed

  • Global mini-player on Files/Dashboard: use OCP.InitialState.loadState (NC32+) with UTF-8-safe DOM fallback — .load was never a function, so the overlay never mounted.
  • Restore now waits for user prefs first (resumeOnOpen / volume / speed) so server preference races cannot autoplay against the user’s choice.
  • Dynamically loaded player scripts are cache-busted with the app assetVersion.
  • Boot is idempotent; global mode is set before the player stack loads so shortcuts/volume stay scoped to the overlay.
  • After browser autoplay blocks resume, Play is visually highlighted (ac-mini-player--needs-gesture) and announced politely.

Changed

  • Version 1.3.5.
  • Global overlay shows “Loading playback…” immediately while the player stack loads (no blank multi-second gap).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureUZ1IhP7Aocpvj2XN89U4TEq70g+n8EgkBrQJ5sKx6RPmunDAkCnrPinIFWgeqKEe5mV8W+jczh7uwfWBnGBduQEVp5uojAX7s5yYfMUdxdwObzGmT5mT0UxXVuVJvKNoo1k7ddOeQXpO9lh42KGvYMW0XlYY0xYlvI/rv2xBJbIk9l4vfjIUe2sCG904dFkVd17Z39qlmeCV2ZNx7g13EGbRsNamIXQLugjOiQihntQTsGVA/ekwhr2RIV3YaEe5QZkprHcgDUv44vWwMWaZqosNjk+vjxKfWhe6WleO8nbYUToyhDnhT6Lu+9Wm4HeNdq7eA1wjzfqSyZbwt6U+HcSp3Y45ql4bHkVnh0x8pQlFlsFg4c5B9Iva3Tz2l5yoYjZzJ5vvJqZdwpxlgThNaJY4BaIfZv3eG493iiZTyPbZUGmfafC/lkLqAW6ncPZqqhdkGwUaDEDvyl4MJlgp3NZKUawVH2GsaYGF5NtzO05t1e1tJVCdDUlaOYG7KyjCswf+Cp6rJXizvM2Cw+k9ESfoRLwqvjtoctUiUH07S+m42YcXjEWhT/qzCKqQJGC84Xcl6vS7gs5CwIjgnBc28PyIPdKmnkQfFDEELf+CRf6ozeC03kCS4QqbJl1Tuc6mZiTXHQN/GjjNF/MzLJD109ncvL6wni65JxOWsdhvHbI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.4
Release Details
UpdatedSept. 4, 2026, 4:39 p.m.
Changelog

Changed

  • App Store screenshots refreshed against current UI (Library / Music / Playlists / Favorites / Browse / Settings / App settings).
  • Version 1.3.4.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureJmIMvvaxd8n8+hou9lcC773VzsSsqDI50jrAzz2JsY/RU2pPTSs+T5rMQAr0/RA7jVLa1hCF1c/xU3kA83V7MWB8kf1ht3HIoyNcX88L0QkMluHZksCUlVI1OV+SpFpiCDC9UJOBxzMd9n2JP3HOGJ0Hmv+ObxtEqJR2ibc4UPfCETkRtPCtkmcNiS0Qawn6gITeoWXVcMZDonsaLqUj0a8Sy68ok5Ld+wPmBfDy0MPr+amK5H4PXQ1HzUBdt6iLIkSa6VvCsNz3dsA+PYV8BRl5YOHdOXkZCHVdX27xvBc8JMHYb4zfyfZrnPym492lR9jHQpPoA7ApPhEEFuAuyErjkznDpWiqKLGuJT0KY71RtqrgSq/Ee4VRkuphZ2VV45ttZokBpCh9gnv5UZED/xaf6Gd3wU4/QIys8K5JNXlxn6d2qseqjdi8c11lwel44y2KG3FaJJQNZq6dxFRtTk8Qm/EEQ1QF6k+hrIGw8cHEvM/OTT+khO1qdh4KSCEXXXyRzfHYR3n3IMM737UUG67dDjov2jys8jHEVGSmXEME1SgAC0MRKlYjXjrqQxA4sq6itgZLzavxihsqOkEhSIGsG/2alGTqLOM4Yzsq3kwDKU2ioT2xiI6yvJ50mVOe0MCPAMPzrQPzEraEY+TvYQ+vb9aIs62Xyv8PSIXXZ9s=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.19
Release Details
UpdatedAug. 19, 2026, 12:52 p.m.
Changelog

Changed

  • l10n glossary alignment: corrected wrong translations and standardised button labels across all shipped locales to match the cross-app glossary.
  • Help, Support & Us / Get the App: WCAG 2.1 AA hardening and translated footer copy for all website footer locales.
  • CI: collapsed GitHub Actions to a single PHP syntax-only smoke job; full test suites stay local.
  • Nextcloud: max-version remains 34 (current stable 34.0.3).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureFoH4jRGa4zrS4ytYj280rKDpJwvEKJQ8U2IyMoNJheQb4FwT0D/fBLL/jLFesziPCnz/RIQ+H0dtyYNFpuQwmUYoD7qgLK2dp6i+k9wfGxXg3MzHfwggRnZEfOln5M7OrfrCWr+0jCD7bc+qd/8QY4AWnWYcfjRvY2tYEi7a/mQYEd1t6eE5vcPR4WpHqnaXZ2kUp61eB84hfZEEV8gtOiwBppu1cxxBjyQpBREypDsHxJCL5sfOPYW41UwyqSoAsdafuCW9JyCgE1ENrc464RI5dHzZBQ9Gxf4E7pq37YYUZHUktPJ1rnDvUlhw6et4hSca2hTeBWTtPvQvGpDuip7zxvVdqBS6NOhqqIlAJ1Bm0oWiykoc7E9M+DOhj71EQTr2YGWYtHjnY71nV4TmgOOrqSRkfuYfZSsrlK/XSWwBzcoFRu8Nm3a8m2+ni/BOuNfwAT0hk9XNUv2Wx8nky3t1axkhC6cyHs33/EP+AKTfZtdWZ+2a8WzVO66KZc31m2T1sWhRhJKl5XD4b89I0wg1hNA/u0+NDr8H+CMOPaoFXguG/p4LdRZNssAAG1iAIHlKohGmXyv9MAK0KLwHAiffGYYbOkVB5/eDsmMj6SgO5WeHRZzdr/IQAN1R9enZ9E+xBFnVvK6CdhOopbCb3aNnDHYlm21+wLo4aTcJkVI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.18
Release Details
UpdatedAug. 13, 2026, 6:17 p.m.
Changelog

Added

  • Locales: Danish, Spanish, French, Italian, Norwegian Bokmål, Dutch, Polish, Swedish, and Brazilian Portuguese catalogs (l10n/*.json / *.js) with msgid parity against English.

Changed

  • l10n parity checker: scripts/check-l10n-parity.php accepts the expanded locale set and stricter catalog checks.
  • Nextcloud: max-version remains 34 (current stable 34.0.3).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureHZ5I5vJgBpslFatIeEhBfxHrLQsGRd5aqjQ9J/GV6YTxx4AI/mDu/Dovs/d/eu/MmgG3g5kACOnlJwfXdFjJ2+PDQKR8b7gOVTMAyUrWaJmOZbi40iBkq14MI+Mp7tKbnhxtK4jfczIYVKIyCXtD/i3EmCZkUoQJVDJUK25Tvieg9MFBEmeMpDw6+0azdZmcapUvFlqrVENhx2kDs3d8EAGlJUwKcbd6iZjftBy+7MHExuE+d9HziR7nqVji8wixyjHVjpAyM7B3nqAsLjDdGRTLEyNyl0vT880wXtGZDQ+tlVTFa2kFBLzgrdTjPSXF5ZKTdtRUrb09ThOrPUsvx+4ELjonewUwsiZzTNyrDz07ZWmNCBMmme0KmK51MhptLUUjXu0H3NplS/dtA8Y9DQEkZ+wY7qB9uHz1JmDn8x/xklpJwQFv8LxkRdNZejRBT5AJ9ZEwXICJ6Wrf2lYGpED4EEKp8cYTBrxmbAYzGicZW+CUWs27+n7sp6whgkI+Ecx0ngoLqpHMMDoWRnztuDfWpBBh343e2GOzob0m7aTzpIwFE2n9tg066nikaqnhCd6VQMuP71BfvZ9R+PHt3ejg5f3FmMwzMTjqaOQhCJ9dxBOYn5zvU2vs/eC9erAZPhGmI7Qx1CcWO3CxcP6JUIezEpFDP6RMyvvd0dBOd94=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.17
Release Details
UpdatedAug. 7, 2026, 3:13 p.m.
Changelog

Fixed

  • Browse showed audio outside Library folders — the catalog no longer indexes or lists tracks that are not under an enabled library root (for example only Privat/Music and Privat/Audiobooks). File events outside those folders are ignored; moving audio out of a library removes it from AudioCheck (files stay in Nextcloud Files).
  • Removing a library left stale tracks — deleting a library folder now purges its catalog rows so Browse/Music/Audiobooks update immediately.
  • Empty-library scan no longer walks the whole home — with no library folders configured, scan clears the catalog instead of falling back to /.
  • Folders facet invented parent paths — Browse → Folders no longer surfaces ancestors above your configured roots (such as /Privat or /).

Changed

  • Library UX copy — clearer remove confirmation and “How it works” steps that state only added folders appear in the library.
  • Nextcloud — max-version remains 34 (current stable 34.0.2).

Tests

  • Integration coverage for library scope (out-of-library writes, orphan purge, remove-library, folder facets, empty catalog).
  • Unit/contract gates and mutation gauntlet for indexing, browse joins, and remove-library purge.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureCQSfvNab+sLV0AaIzS3PNSB7PJmM2jwDEtvmy1jzH48WPRjDTBDW0eUlMn2+EhCkfC1VrMhAEVnuFJ9/lDOrihRSJNJKxWmh6jYt+TQOl0tomIoVFgUawJSrtHhQq9JOhzoclyNxuykan3AZNrDC1jz7bDDPafVVHi+Fd1cFwliPvxtTdJ4YwLUqSY8/XopMmJgMAT3pnq3uQWp9IBKicIdQ33xN6pOpedrwcRQFPTtqCtoUHfsbpaogWwyk1UGfOe/4GD7sLq+hw7WVzbMli2rhQzPnJqYRogiGutC7AvuCuh2a/1L8Hs0P0PVupszYOP+C9ECKg+FNfGpdRHOxCNbDYv7JSNVAv/FxWMmmjif97GfQR+Ly1Ev43Rz6td9uoX7sFkgtK0ZPXhcXj+XYBbV2S8HfVOCM9wVglkh5wytK0u9+rsS1uDLRB9/FW7it9DSOIicEzIXNDQms5XJ1+c3x7+mAAYNmvIHQR8BVhC8e0jC7Ve2kOXL6jbS0lgvMuy4QwSO6kOLr2jMeghavRruOj2a1IDjST6tlgja0FLQfdVTFLRS7buJdOpSRCIpMb2RFHa9oG7ff2gvBUI8JlHsAdHroEXACzROT8C2jODK9hNrmRWAD0bjT3a1pD+TS3Amh13sS+iNfGAOr5ZGp8VDZwesbYK0v36NzBMxSY3c=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.16
Release Details
UpdatedAug. 4, 2026, 9:14 p.m.
Changelog

Changed

  • Library folders UX — folder rows are a single clear line (name, path, track count, Remove). Content type and nested-folder settings live under collapsed Folder options.
  • Add folder flow — no content-type modal; Music / Audiobook / Auto-detect shortcuts, path-based type guessing, and automatic scan after add.
  • Store listing copy — README and info.xml descriptions clarified (free AGPL web app, formats, get-started steps).
  • Nextcloud — max-version remains 34 (current stable 34.0.2).

Tests

  • Journey + axe WCAG 2.1 AA coverage for the simplified Library surface (library-folders-ux / nested-scan e2e and PHPUnit contracts).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureUubMG3p3B/DZ3peLbwILnZdU4kKfomEhp5GJbYHG4DoXx3CkKAzKLBRdNqAn3oRVJnr+b1KGmVk2J6R7Vf6o32p7TCJWncl8vvNCu8xs/+T8bzvNNy/5QroZsYI7bRAGD1WiUINHvHzdh308HOXPfEsk1vpVGEIOeijX2k43P72uYhH2RsRwS8aoOJVo/Sreo6Q9UYiqJE+q0hldHxLbpBZCkhk2H131GA6SyAoNgZw/+VpFYV2dn744TTh9Fqf73sp0mDofKFhlJ88FDVlnF4s/gAdTS57WDtcbGcabcCqYpGe9v/kLrktkw8Fjy8F1wxW7BcG8D+RZ6bkN5XQmmo8iKF5+cRBz4BS1nDza/E9NK6OcuoWHF9gj3lOLcqPCdy+ECILKV+mlzgJhv9+wocFLyft5j/eQbl0TwRas7CVf3RQ/Pr6XJp7v0ow5WUD5R0ByYFXxyQuUa/0RO1bNdsrW2ymBe6LCbPtnzCEP6GcbBeuqZuL9Oijn/5M389DRecA9FyOpGlZSnG6wIM92ViUekHmGdR+t4Qj01ucV5z70swLve7cD5kxlQFAxwH8chdLacQqbJCrZ+f5KKfG7doTW6p0USFIm5M/rkaozs1SpwM0T8XRu7VLFrnHiiUWodA7a8Sg839jYkrdqQ/eCj/mr5KtIoXzIuXGqT6olu8s=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.15
Release Details
UpdatedAug. 2, 2026, 12:13 p.m.
Changelog

Changed

  • Packaging release: version bump for App Store / GitHub republish; confirmed Nextcloud max-version 34 against latest stable 34.0.2.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureI1SMSyNnozaIb1DCCg2uY/BLzxKDfhYxeBpmy2GdCSb4N/6EWoclCmNazmCodz7woCEOQVKPr62s0jyJ5UZ4xLEcIS4IinW8vJCHQKsPMURXao/YNaVkn9wIflgz7isyd7El0DXjUBbqgIQltY1QvrlA+HL877NarmEa5JOf8C/itN0fSUp1De68b75obdu3vLpZVCDtnMVOt7G3wobjwe0pQ+ArxvSEUrrWi7hOev9ipaROW4eP52dAH89Yn7BBzkHoAwtSP8lD4/7BT2heWAR4SrtMcxffmo0C9ZRwCNS4k55T7xfe3bhQtiKJn2EsvwDy6PnJK1QY3IAbw76Dkbwf9rEqJgqZh+VVNLJh8XBKAI4n02J9A/iUEAEtf9uf2Gxzza4kk3SHCDrTkuza0CUnUuFsFzIbSILfG3vH6gRFF+sNyOkce+k2C7KbNumVj6PxjtTOCWDcwyZhj28jEKx2sqtzfZGoo5k4Z+WGjeuqYTFam6sIm4vZduVfnOaO5zmKiWjFWc6BrbneKj1o++gR/GimY8Wt5YCvLBi0CWgXM2zKrhACg+USk3B4LySIT5WXTiYn/L8/BPugZZLDfRnlN+Xk6yl77ZERA41jmMkKeoDjow/xCYEG37fhau5oKWcr1K8H5uaJ5wQeVFETt8ipibqXCZmc+W9dZAmko7A=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.14
Release Details
UpdatedJuly 31, 2026, 10:58 p.m.
Changelog

Fixed

  • Nested audiobook folders skipped during scan (issue #9) — recursive walks no longer drop a book folder that sorts last (or alone) under its author. Layouts like /Audiobooks/Author/Book/*.mp3 and /Audiobooks/Author/Book/CD 1/*.mp3 are indexed completely.
  • Scan cursor size on deep trees — walk position is stored in a compact path+offsets form so deep Author/Book/Chapter stacks stay within the varchar(4000) cursor column across resumes.
  • Multi-disc grouping — untagged files in CD n / Disc n / Chapter n / Kapitel n folders group under the parent book and keep disc order.
  • Same-second scan prune — a new full scan picks a generation strictly newer than any existing last_seen_at, so tracks indexed by a file event in the same second are still pruned when the file becomes inaccessible (e.g. share revoke).
  • Batch-boundary infinite rescan — finishing a library root on an exact SCAN_BATCH_SIZE boundary no longer persists an empty walk cursor that restarted the same root forever and skipped prune; pause only while the current root still has work (or before starting the next root).

Changed

  • Library UX — clearer “All nested folders” scope, an Author/Book layout tip, and Settings copy that names the nested audiobook pattern.
  • Walk depth cap — recursive scans stop descending after 32 folder levels (files at that depth still index) to bound pathological nesting.
  • Nextcloud — max-version remains 34 (current stable).

Unreleased

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignaturekRn8Ins0iJGjq8QIE9RSXuWodovQaXRFp1l7YGcmUlmIOEmixZZvdpauj87CmbFfyUECJefyuX/Zyyaza+GhJj956AHQhEEg769KX8Wr7458OmKkfsMtPmTfE1u+NOl52FU7XLGYhkiuiiZzMo+FgO2o51CmWqL3qZUsIQsYQ0tV7i0czPKYeSe6F6eHLH/DDwzj2zzpi+wYOX/xmxpwcsCs4nRiPZ4fAfuQGUiZPXPVwz+/w8u9hz3wS0B1vxsQ2oorvsLFM4w/kYbK+xqyHt+7VV8OkOAwNKnZqGatYH5jMOnspmqKGtVeGc7TOzCISmTiry0gJG6gY3ph+A7SE4l27dHKOtXPZkKnEF6PYrvPN39G06nE5t1IvuUUr4463dR3zp7Dmi5a9e6SkkbtBRC46pO6MD7RI/1B/JtTILU5DcQBTDA2J24HclNCu2E8sULEdzoEqBraly3oSe8obWFjFw62iTITvkToieDkztuZ1LTICykEq+YmTrQ4qYPRnxA/crG1yVyl6r/NawDL0l1MWQJB004pOqmH2tjTWZOdWg7CRgiLn9bowIDkFL89TFo+Ej2LWxXyLXl602lgBqbwMrVIXoO+RSrn0usICB40zX/oC1ihaLHjKYGaFQiFQMHmIYfCQVVCWJRLFyVlo3+UDlZRxqy7AG1WrejoNfE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.13
Release Details
UpdatedJuly 31, 2026, 4:36 p.m.
Changelog

Added

  • Mini player ±30 — jump back/forward 30 seconds on the mini transport (same contract as Now Playing, keyboard, and MediaSession).
  • Hide mini on Now Playing — the dock is hidden on Aktuelle Wiedergabe (SSR + SPA) so the full player is the only transport strip.

Fixed

  • Mini jump aria-labels — PHP t() cannot substitute JS {seconds} placeholders; labels use fixed strings plus client hydrate from SEEK_JUMP_SEC.
  • Focus / inert when dock hides — keyboard focus leaves the mini player before it becomes hidden; inert blocks interaction while Now Playing is open.
  • No-op relative seek pending — clearing pending immediately when −/+ does not move currentTime (e.g. −30 already at 0) so sticky pending cannot skew the next jump.

Changed

  • Responsive mini transport — five-button row stays usable at 320px with ≥44px touch targets for jump controls.

Unreleased

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureeeyzFx9yVprYFecyG2++BDonnwqVdzr5C6fwmGhOly0kfgLs87nkGK/6Gv1Y7RHH5tpSvpr283z3H3pSQoDqZhxPyiqBE56oBjfK2h19Ww51UInil7kmBICWps7KT8xK5tetj0ozFCkjeA/0VX+ueJwcspM1qHXTPL1EvJwRi0abmV699RajZrrEt7oh0dYYQ93Y9l5VJkjQ9Uws5oimqdj70NBN9JBbzqc6QPlubfeMCsU7DGMAuW3k6m8xVQByT6QzJzAHbPM/FpUwdY6jX7/ktYdZ+/OY4o1ofa8TxUMjV7supVJF0SPIfCw4GzyrM1cx7iKfhVkpZsxa9n2gp5QomW9VurvH7vfJCGdTlMxdxX9mjRxb1tbEr7rs96Sq2A2whO97bOdibhpza9g9mJdwoetqKxgbDSYwNbUghX9dRZ6I+DjxHUg1z6ZE+YI2gmSpRU6DeGbaZzL859dX01BtviYAaYv8sXowvIErE4vv1RfIHShLMDJ+wX47vv6dOuK+fJMI9wN7f6KsCdxv84smJ/hzmsuaCFZ7s+5Lfx4OW3e6LGKIfMQfYDctgeysPAGD8lBx5nkcbHIx7/wfh0ljvm6dmvUpAc5sjPwV7hSTFd7Uv7Z0tew8CHIZOV4y14Pa99eo9pNxX4GeqWx6jrd7P5vPxOYZuL4ZZyO9GHQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.12
Release Details
UpdatedJuly 31, 2026, 12:19 p.m.
Changelog

Added

  • Jump back / forward 30 seconds on Now Playing — podcast-style −30 / +30 beside play (issue #6). Mini player stays simple; open Now Playing for jumps. Keyboard ←/→ and MediaSession seek use 30 seconds.

Fixed

  • Rapid ±30 seek race (web + mobile) — relative seeks accumulate against a pending target so double-taps cannot both read a stale clock and land on the same position; absolute scrub / track change cancels in-flight relative seeks.
  • MediaSession seek offset — OS/browser often advertises 10s; product hard-locks seekbackward/seekforward to 30s to match on-screen controls.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignaturePOnP8cp5nA8/cw3K2jjsWjDfLC83cAhtbGU3l69+0EIJwwgBfcGpYHK4N1bgxVRqDjrLO/4MJe3LDAmQbIvNLs+Tqv2f4QlE82LfCNS5Pqw0jQWWamR+irc7JXdMONcKvdSZaExWph3ySYcgGU6ABKGAl6K4PWepNaDc4P411lklYFcv+WXr60B9j5euPNIvr3zffXnpvsXzID9JoN7PAO5krreThU3lQHjjuivvKXLq9EZxyhHb91/KoG47VyFMIr1BJgu3JLhx3RkJoSNCUJaDzWnHVCO+2nizMyTBXF52PyF6ikLuVInaY9DOtcmvFAGSyME/gUHSzNSwI30yBdJCKawj9cKOGdXODy4UV0MDQfZjhl814k3Hdv3TDMNZ4yeGIjFpMp14vCBLvNbIe3h3wMpayPhGq3iEhDKu1UXO4WKVtFGG0+zDpuQEucF/fdWyuXKrX5qzK1oS1JNSmLC+/ZaeDdWBF8R5wKIBhGoLz3/NScsYeRcX+bNgJNDOHWNzzx+gdllrjyPhYmJmliIkr56Z4337apsLiosLi0DFS1lM7YCQ9MI6x0mzwEbAzRATLJIfTJY3nPCHLEuwJOXd65TNnpkwKfTCIpwna95zZRq+4vMxK0q6YiYNcq9XwfY7ULt96SGWcdhsKb14793w8xXUIQx+zcEPSpGlv+0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.11
Release Details
UpdatedJuly 30, 2026, 9:38 p.m.
Changelog

Fixed

  • Fatal on every file move/rename (issue #7) — NodeEventListener called the non-existent NodeRenamedEvent::getNode(). Rename events expose getSource() / getTarget() only; the listener now routes through ScanService::handleRename(), updates audio index paths in place, purges cross-storage source ids, and never lets indexing exceptions abort DAV MOVE (copy-without-delete).
  • Folder move index drift — renaming/moving a folder now rewrites descendant ac_tracks.rel_path and matching ac_libraries.folder_path prefixes (Nextcloud only emits one event for the folder), then assigns library_id immediately from the new paths (no waiting on a background scan). Previously unindexed audio that entered a library is discovered with a bounded synchronous walk; only overflow queues a scan.
  • Copied audio never indexed — NodeCopiedEvent is registered; file copies upsert immediately; folder copies use the same bounded index-into-libraries path.
  • include_subfolders on path resolve — library matching for node events now honours non-recursive library roots.
  • User/group delete listeners — cleanup failures are logged and no longer bubble into the core delete event bus.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureJ4PQtIV1I7xSKw7cG1ijV0lZ2KjgD63Y+zrmRuXSjlmLYNiksrZqv54YwWcHR3SQthSxBPOC/8h8rQ8JOHB7nWBwcs9QBB4PgU5C0F5nCnmB2Mb9Yf8LelSAdRrcZV7U3Eyf6X9/Gr/JqcOz6WgE0N2Eg3gyoDWWFmnnd9A2hqprazXx7wthwWOdi5+zA3umOjKJscQdjXKeJ/Ihs7tuFWmv1puISUFNhLj5UycCeNl+1vQ07JbAz++uRIm0QRVeJzAqt4hXBkGGaLzLW0teAkZnbEmCwLhZTrgWqQXVw9qYbnoY9cmWoMNR6RF0ShFAtvW97rv9u0XK4cRHuilmC9NP8KrfRMAjXSBE8fZrvCy+FgFlo6neM8CngcUgHd6n27vgArhWq1c7lQpbONj48jhV6dLINJkTIJ6wGnBZcPBnqhLvOWwM/574wj/0WoBP9oVYlKALsV6zCvp7dlRPZeS85+HFiSeXw3vtUKxoQKz4T+vYYupNjZGYTNL55THtH5Kgn7siKeyNiaLfushQRmvWD9T+7flZmgogs5zWxet+OjRO2WWqQeuCh9L2j9EtW527UYrO3QecCeu6Cj38+7WW+S6t+eeFJSXCotzh9X6dYXVnUCUOyrF0WwGS3huHPfJJsJqYWbPaJ7AOR+6XPr0dqKfZlnjZqFGOKulJxuc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.10
Release Details
UpdatedJuly 21, 2026, 11:19 a.m.
Changelog

Fixed

  • Queue-wide listening speed — changing speed on Now playing now sticks for the whole queue. The HTML media load() algorithm was resetting playbackRate to 1× on every track change because only playbackRate (not defaultPlaybackRate) was set before src/load(). Both rates are kept in sync and re-applied after load/play; the UI reads the session speed via getSpeed() instead of the audio element.
  • Keyboard speed shortcuts — [ / ] now persist the new rate with the queue/session (same as the speed control).
  • Settings default speed — saving the default no longer overrides an active listening session mid-queue.

Changed

  • Now playing speed control — clearer “Listening speed” label with − / select / + controls, hint that speed applies to the whole queue, 44px touch targets, and WCAG-focused labels/descriptions.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureYzRV2/sof1CISYuL/0VSftxtNGIjW6NT6swdgC1ygQ/aG/9huRnCOo23g//CcTsOPKMDgM+lpty6YftiHdDXhXS6dzbIcSqdDXuBOcHyn0fTyWHBEF7p+APMswQd5zMBhXfsxje2IXCr3OKyUIUbbSNrj00FFY1dpkS3M2oO9ud8xQ8Hld0cUcDtsw6rSmlC4kj9FN+6+pOrT1P2qMGOgvgUYf96HL5wY6oFRZTgaXJ0itz+MaHI/uvlHclzxR0FcTQqtMljaiM6qcwT81yjfxOTjv/Bs6i/B1YDKwEUc5I8+pUP8zye3sqgPmmopwzMXEpuPpM6U54hABH8IADCniyb/VZHTmTJoHz+OhctNgpsQcNc8BojVaaFa66nY17qHOnsmvlc0P0xPJQzBfXu3M4wnsepyGQPZqtrQ/2IsE8S4LLyqWn0wi2wxNbL/Il/+oHITMbFwKyd+pVpxroAunprQsYe5T4g1aUjgANSKTTmbzMbWzb7k8CIYmAhine/1U3stAfuojIgb8K0HNZUI52OPoTuC4dSiVaGq2zWmQeMy8QantICnBSFRlaxsWK0Mk05UTPCNQYX310Wmh5jWW7lbQLBxw4NdJeObbCULKdH0OkbHKfJiXRNtrwa8bpLzeTFv31peFxEFLyHFiREh7WGjUE+fUdmHUjZm2D66Mw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.9
Release Details
UpdatedJuly 15, 2026, 10:25 a.m.
Changelog

Fixed

  • Favorites listing regression test — unit and integration tests lock in hardened loadFavoriteFileIds() behavior (issue #3).
  • Native widget scheme on forced themes (issue #4 follow-up) — color-scheme is now bound to the applied Nextcloud theme (body[data-theme-*]) instead of a blanket light dark, so select dropdowns, spinners, and other browser-drawn widgets no longer render white on a forced dark theme when the OS prefers light (and vice versa). Modals and toasts, which portal onto <body>, get the same binding.
  • Active sort chip contrast — active filter chips paired --color-primary-element-light backgrounds with --color-primary-element-text ink, which is tuned for the solid primary color and became dark-on-dark (illegible) on dark themes; they now use --color-primary-element-light-text.
  • Stale theme-bind.css after upgrades — the late-loaded theme re-binding stylesheet is now versioned (?v=<app version>) so browsers pick up theming fixes on upgrade instead of serving a months-old cached copy.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignaturekTA/K5U++VfgdYLxsxtjxZdHoshbTcsnF1xoQPIi3JUCH88gDobRUpY1tWJ5WggZxWlve/HquNdt6ZcR5WSB3ymajBfWv3+vTxJWKHNpcg83tFRoq4MHPlnwHAaasAedaIYxrtg9tx6WL6pv4jof/8eN6Qcc0wmqOceCYxnGN1pSoPFpA9euzSLQtti1krxbYI++RgT1w89bvKwnAi7ToMX2HuqzwmU0z8jaSyeI1fVXzo8sWT2IJrYLNMfTdZmgGUjELW7dLnSR4OrjP4STsBWiyLHJrWLlqfa3SBr1aVQdLLMM0QGrnYaPOKEFaFI/WAnOsTYKbpXa8RUiJKnw7xcYaHKDJ9UqJCe4b8rn6/kW+hrXgFvEov9MSWWgPxlohEO7TYPB/JM/71m3KnKkT0oC05UMrbBTIV9KHg12RktHi/FOP3QZazySt7M+vA1oQpFFpLqUG+Ts4i1dft9gkftk38FH/tX+g64yrxNfIGOz1/snR8VaIjCi71loLM6MPrcFGoP0UGuorQKRRi3EDLJbgJLW9yQrhY7WrtfozmoRIPpL7ZDZG1PzF+ri1UkXYrSOY1hSQOsNXfxvxAdM6tZK1ajDdnqnAm3VayKeAqnHXvVOnYkPjyvu+8IfaAAwyNqVBNUMu1yL3Cg1SKgGmctC9wzJ/srdMf1iTwp9ylw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.8
Release Details
UpdatedJuly 13, 2026, 1:36 p.m.
Changelog

Changed

  • Nextcloud 34 — raised max-version to 34 for the current stable server release.

Fixed

  • Scan memory — library scans walk folders depth-first in batches instead of loading every audio file into memory before indexing; cursor now stores a walkStack for resume.
  • Concurrent scans — only one worker can claim RUNNING per user via an atomic DB update; lease heartbeats prevent stale takeover mid-batch.
  • Playlist integrity — reorder and delete run inside DB transactions so partial failures cannot leave inconsistent sort orders or orphan headers.
  • Mini player volume (mobile) — volume icon opens an accessible popover with slider and mute on small screens; desktop keeps inline controls (WCAG 2.1 AA).
  • API error logging — safe() and service catch blocks now pass the exception object (['exception' => $e]) to the logger instead of a message context key, which the Nextcloud logger's PSR-3 interpolation silently discarded. Internal errors now log the full class, message, and stack trace.
  • Favorites listing 500 — ITags::getFavorites() may return false on transient DB errors; LibraryService now degrades to "no favorites" instead of throwing a TypeError that broke /api/tracks?favorite=1 and all views built on it.
  • SQL portability — count queries no longer inherit ORDER BY on non-aggregated columns (rejected by PostgreSQL and MySQL 8 with ONLY_FULL_GROUP_BY); MAX() aggregates use selectAlias() so library sync revisions and playlist sort orders are read correctly; internal Doctrine ArrayParameterType replaced with the public IQueryBuilder::PARAM_INT_ARRAY.
  • Upsert races — concurrent progress saves, listened-flag writes, queue creation, and track scanning no longer 500 on unique-constraint violations; the losing writer retries as an update.
  • Playlist integrity — duplicate-name detection only maps genuine unique-constraint violations to a validation error (other DB errors surface as server errors); playlist items get a stable secondary sort key; defaultSpeed is clamped on update.
  • Favorites shuffle truncation — the client paged past the server's 100-per-page clamp instead of silently shuffling only the first 100 favorites; removed a misleading 500-track request limit from facet browsing.
  • User-facing error messages — machine codes like internal_error are translated to human-readable, localized messages in toasts; network failures get a dedicated "could not reach the server" message; fixed "1 items" pluralization on the Playlists page.
  • Dark / high-contrast theming — theme-derived --ac-* tokens are re-bound on body, #content[class*="app-audiocheck"], and #app-content.ac-app; css/theme-bind.css loads after Nextcloud theme stylesheets so backgrounds and ink stay paired on every theme (fixes light text on white backgrounds in dark mode). Added --ac-surface and corrected --ac-muted-strong mixing. Guard script scripts/check-theme-tokens.sh enforces token scope in CI.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureEAfydT7TAjAp7u/mC4U4BMg430xVorUQLwN9NJ2t0FOyr4iRNrvTX+twWERHgHflQ5YKRTAelQ/Tv5cqesv10hAeRkwdKbI8Ziz2dgVydD6aXMPzqCqzAXvr89PWutU0/GG46O2QEw45mg5qmETDfG88ecH5LwgUuDgTT2C5306oAKghnWZeGQ0MjiZMDPe4AU8d13pVVR9PxqaAlKgzQBAd1qDrelEeRreRA0VKcCqr2emryvfCZNbsFSeLxKVuIQk8Npd0c/QXVxqo4pk/3dxMcpB5HW5jucKBKSob/+1Am4dH7YK4o194GEOhnMuPD7WGDVZwJtnjXykJBHaaxJWl0Un5R1/mncAOPdur2dD40OvZXWCVQKL8Qm3MAqC2YgaPOwewsEHshvrA0MHew4BoD4iyjGBk36Ckry5IG8dsE7W0gDRS1PXOEJH/VjgKZtg0vNOuONubwuhW5N7+DSkJaCzUXwZJr/sXMgbD6R0dxOKs4d04wfcGm//ft+YTX03jZ8az5NPV1yNvM6YXZ7aDd9FxsMRtQloxq9+/C3Qha9kYJ5lP5Xk+s/XoPtQpY2N6RZEQOUX4ZqZ4sNunrao4c0F3XeUC8q13lWsQBma71iG9wm8GJ/SkJIR5ejaRIUTTqhC0ztJFwTEYXVGg/P6Z9cLr+Estq4QKmOT7r6I=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.7
Release Details
UpdatedJuly 11, 2026, 7:39 p.m.
Changelog

Fixed

  • Scan memory — library scans walk folders depth-first in batches instead of loading every audio file into memory before indexing; cursor now stores a walkStack for resume.
  • Concurrent scans — only one worker can claim RUNNING per user via an atomic DB update; lease heartbeats prevent stale takeover mid-batch.
  • Playlist integrity — reorder and delete run inside DB transactions so partial failures cannot leave inconsistent sort orders or orphan headers.
  • Mini player volume (mobile) — volume icon opens an accessible popover with slider and mute on small screens; desktop keeps inline controls (WCAG 2.1 AA).
  • API error logging — safe() and service catch blocks now pass the exception object (['exception' => $e]) to the logger instead of a message context key, which the Nextcloud logger's PSR-3 interpolation silently discarded. Internal errors now log the full class, message, and stack trace.
  • Favorites listing 500 — ITags::getFavorites() may return false on transient DB errors; LibraryService now degrades to "no favorites" instead of throwing a TypeError that broke /api/tracks?favorite=1 and all views built on it.
  • SQL portability — count queries no longer inherit ORDER BY on non-aggregated columns (rejected by PostgreSQL and MySQL 8 with ONLY_FULL_GROUP_BY); MAX() aggregates use selectAlias() so library sync revisions and playlist sort orders are read correctly; internal Doctrine ArrayParameterType replaced with the public IQueryBuilder::PARAM_INT_ARRAY.
  • Upsert races — concurrent progress saves, listened-flag writes, queue creation, and track scanning no longer 500 on unique-constraint violations; the losing writer retries as an update.
  • Playlist integrity — duplicate-name detection only maps genuine unique-constraint violations to a validation error (other DB errors surface as server errors); playlist items get a stable secondary sort key; defaultSpeed is clamped on update.
  • Favorites shuffle truncation — the client paged past the server's 100-per-page clamp instead of silently shuffling only the first 100 favorites; removed a misleading 500-track request limit from facet browsing.
  • User-facing error messages — machine codes like internal_error are translated to human-readable, localized messages in toasts; network failures get a dedicated "could not reach the server" message; fixed "1 items" pluralization on the Playlists page.
  • Dark / high-contrast theming — theme-derived --ac-* tokens are re-bound on body, #content[class*="app-audiocheck"], and #app-content.ac-app; css/theme-bind.css loads after Nextcloud theme stylesheets so backgrounds and ink stay paired on every theme (fixes light text on white backgrounds in dark mode). Added --ac-surface and corrected --ac-muted-strong mixing. Guard script scripts/check-theme-tokens.sh enforces token scope in CI.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureOYSJOAEPFmNzWN3GZeKQnDwpPjDre+YRdIPE6OCmwPAgZillckDvFX20VFmeDaLpxiVh9P6Vg/OerpU/SHxINbKCntGCIV+5I/mJX5rwx5rpdW9bjN3f58J09bqnkUo8s2sCGlKq0y9neu3ZHuRhPKGCuLVbJPP7LBs7RXDJxQjxWNIE35PflwsixAD3E2M/iPkH3jJV56AJKviy9cQa5Wa6pBGFDBb9TxF8XLo0tckNp3SBQ3F6jpcA2prvoglKQl2vIlYXb71iyXhkVYYwteHXmLmeOwiDGrYXr+4TvNgN2mU+ZjfptHEFvVKJ0Ldx8RSU4Q7R4tU9RZtUwxqqmDnRpBVBR5m4jBdBcAagjLMBg6zeqtNdJodSmyzQLQmDs6Jhtu2w+iOYd56cdZMjlV+7y+RtpCc8o36zCasZco8UbMFhHrCZ1LxAoDoqIcZONynmmcgKIUof5xkbPyE8I9xtnool86ye7HiQOMDNjYyRoNFygPtf1vuEu4UXyAZkY6a8XNUZIWUvjEfPn/5JuvcjOsErcbKFUKkuPN9mDhYbKHJUo/ESNyQrjjfhiEeMyl9x8NFNAN6B2qx6pt32NWCqtYK1K00KRpP9nJlVD/IWxvs3zJFh5M/G2k3fDH5CRV/NJiWDYo8CwNschMcaO6oc+7KH4x2UssmC033rTd8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.6
Release Details
UpdatedJune 24, 2026, 9:03 p.m.
Changelog

Added

  • Global search — shell search filters Home, Browse, Music, Audiobooks, and Playlists with debounced query sync.
  • Sleep timer — duration, end-of-chapter, and end-of-track stops on Now playing.
  • Playback start choice — Play all / collection actions offer start from beginning vs continue when saved progress exists.
  • Accent-insensitive search — normalized shadow columns (*_norm) and migration backfill library search across web and mobile.

Changed

  • App shell — persistent page chrome (breadcrumb, icon header, scope strip, grouped nav hints) aligned with BudgetCheck and MobilityCheck across all routes.
  • Section cards — Settings, App settings, Library, Browse, Music/Audiobooks, Playlists, and collection detail use shared sectionCard / collapsibleSectionCard layout.
  • Track lists (mobile) — library browse rows render as bordered cards at ≤767px; collection detail tracks match the same pattern.
  • Playlist detail actions — secondary header actions collapse into a More actions menu on narrow viewports; Play stays visible.
  • Messaging — polite/assertive live regions and toast stack for status feedback.

Fixed

  • Browse page — removed duplicate inline page header after shell migration.
  • Play all — header action only on Tracks (Music/Audiobooks) and Favorites (Browse) tabs.
  • Integration test runner — run-docker-tests.sh resolves the Nextcloud root correctly from the app directory.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureJv9Cfgd5KiHuIhWVcnmPvc+tjX9hD+iP5PRAzEryrCAlq0yfNInv9T82hm7Sw0Uug78ddijfkZ2dgD2vRZm5Pik97LCUi8R8Vck1U5LU3aSVhrHNH02l86ntKWjjhiIUj26X589gMc1DcB0nNrEjrUCf50RMtrLcB3qR1WBuzAKPW3GbA5c/zkB56nhPelVSXFY99ksX1wwNFQwvNHQ1hUNziNoaQTI5EtTr3lizvigJvY7UAZjlIdTZe7c2Gfn2YVmto5YQ7EYEfxZfQIhS3NUBDGdhpAZV2wbSFDYpcx/AxLOikAp6rU7mgb08cAsm1G19dWcSBGTFRhVJ+bBucZXzY4H1siljWo7bVp47mXBCL4TxakLtaW4TIvaYJ0KQ+hLU5Rp1JIp4fdeyXIQ4XjoEBsFxpjwme1h1z0/Dp6tGsCBcd1vuZOks3KFD2+758sCVVqz+v+sDk6+fJL7M5YK9DsHRt8j5CxVFqTfsQI4Ew87pONnYruNABlOfsW0v1AnyKI1da/oEti14Ki6ONM0sWznSbGIS00CSbR7T4wiP2ev1HFQSe+hAlTEqwyP0UuNGR1QKvlTXVdL+46M8HBx4sqlW8wfzeEFnXFsH/IQHwuw6bgPDTIoemTg/Kgfi2m3XIqdaBruQ2sXo+yMzZZ1s+q1yKA5WLDBG/D4Y0n4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.5
Release Details
UpdatedJune 20, 2026, 1:59 p.m.
Changelog

Added

  • Paginated library APIs — collection, facet, and playlist track endpoints accept page and limit so large libraries stay responsive in the web app and mobile clients.
  • Load more in the web UI — Browse collections/facets, Music/Audiobooks browse, and Playlists use server-side pagination with Load more instead of loading entire track lists at once.
  • Play now / shuffle on full lists — playlist actions fetch all pages before queuing so Play now and Shuffle play cover the complete list (with the existing 2000-track cap).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureDyugqURQcSAJsnY+5whWW+8l45Ca4rETbg8Ggr2DLSJaoNi1PE3sRa54HAWGBu5emmP6y1qOTo5O4qqTCz7R1s+VLQhB7S2UgbNyx5OyW0Z7wJ1i34W9Ve+xQLiUbrj/opqCKZiQXzqttSOXFpeT5MXOa1eykRYXHk1ogIXyA9WULjFasagxE0bJ5MqJdKLg0e+Iw3jnnBP9UDI+LOEYyGJx/AZqwsiL7wqmLcBQs3EVgF2BeMpD5jqaFyPPVodE86fqKFM6lUcC6dfxBlkrT+mgfg9Md0/gIG7FQlTljcjnpUEd5eeWp4/8K05mOiPcW8II1B1DGM4N4y6+yt0U0x2Vz22rI0wnlpBgOIrCu1b4JOiwkX60/NZwsLlhAy1v2M7+qxyN/FU6JlJM6ICo4jEnkWLXJ820IbliDDmhm/G6ji9O5NDQJFuN9h99ez80kz7g3x/CeflE3OJGmqWWR+1h7MjvYtL7AznGsqlnBs/H8ed9eqjIcFPmRPGTVXYtwRRDYLjCb2d3DGOWEzjeQVWmxQfkpm3D8UguefW7xhZX1L/YonrP914vDK7NXxl3eNPll9rQGxnCDgCfcU1RXLGpSAzYZ9VtO9TEf2y9azdq+7tOLQuI1b0SyUTONjXYOldJGXanC1AMC/QRzT8ELFrl0+D9rKeGJ1dQJyyfQa4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.4
Release Details
UpdatedJune 19, 2026, 7:17 p.m.
Changelog

Added

  • AJAX cron scan ticks — when Nextcloud uses AJAX/webcron instead of system cron, queued library scans advance via /api/scan/ajax-cron while you stay in AudioCheck (library polling and app-wide heartbeat). “Scan now” still runs an initial in-process batch; remaining batches no longer stall until a full server cron run.
  • Stale scan lock recovery — abandoned running scan rows older than 10 minutes are treated as resumable so large libraries cannot deadlock after a crash.

Changed

  • Library cron callout — explains that scans continue while using AudioCheck on AJAX cron hosts (system cron remains recommended for large libraries).
  • AJAX scan tick rate limit — 120 requests per minute per user on /api/scan/ajax-cron.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureeGQI1vbXZcWucftZYcIA0TsZ2vgHuGiAUqXs/l09B/vCADzp2LDJ1qT6X7I8SN0tybnfjYv0KUns/VcMjYZI/liyDB9AJSQIYGO/9hwPKbjyeqLPiXbP391GwHpoAcZtZs3KJQY/Ufyl7+QR44o//+81C4FQkovYK1vhQFJLUCjdTncMiESHh8ewU57NM0jqtsU1zx+aqYZLS4rkg/K1sdQq216A+L20+g7bGjMEa4NwAzrApmnLUNhTW4NjVdwAHjJuhrahVA/HWKhgo/Sakz7TlttO8T9sCzdUl7UOejDn0KnQO5XmYFqkxa5i/M9atHeIsij7L7KKKIbvReYujL6MvReZQchzMTYnVv39kZZ2TlfrsKwrevQRf+CKNczpp0tsqbrL3p6lo1I9D9bb1Xt045qA2c2q8IL3b2fSCY7emGGJWvQLtDsEZ/uAg28s6pK8wuur5PJWBFRV3lRiQtaIIgjtdggPWK//+Mo5+58hYgM1EyzjC/92lmnO510xXgEocC1JRRjlrYCoZGvpCmRFEza9woRsdb2dsPedx/XuIO/dvFpQ10Zw4jRmVTzlr6bguua8stUJ5d7P2ltRtVHNOtJck4it+pxqzKnwq1e//0QdQIef17EuUq7TgtXpONGwvGMioKTzveZ9XprZGfGUqDTLgZgpcaSyJuZDLvw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.2
Release Details
UpdatedJune 18, 2026, 1:10 p.m.
Changelog

Fixed

  • App Store screenshots — screenshot URLs in info.xml are now single-line (whitespace in the URL text prevented the store from loading images).
  • MP4 podcasts missed during scan — recursive library scans only searched *.mp4 when no audio/* files were found; MP4/M4A/M4B files tagged as video/mp4 are now always merged into scan results.

Added

  • MP4 audio container support — .mp4, .m4a, and .m4b files tagged as video/mp4 are accepted at the file gate, indexed, and offered in the Files app (extension-filtered for video/mp4).

Changed

  • App Store copy (EN + DE) — accurate format list, clarified server-side resume, removed unverifiable WCAG certification wording; accessibility described as design goals.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureT3vGGbmLd07nyi0eKXGtXs/jwWf/17iRFXBQQc0fdpJDqvMcU20ZdcyR2LVJoWdX8FimEA1VZmI0tVmFDvUrT5bdPNNn29O09MAVd9ERPhtcTWagy9LJ7roXxaHZ6ZiB+PErl2581x/+Hrf90AHcHNcOcqZ0gE3dOUjCE988aZ8Z7fXQ22LWhkJQFirlO1uq30WP2vqQ2k2Yt5fOvchmB5joPNZHnbwg5Vndmitv3PTaTruytzGoUzTrzPD0n0E1OPO/lDjeslW32UMiK2DRtqUUVvDPnrzLA3L5IBcST1WU+N8COf+agslTqLp5M+m8+LKrxuQaOh1GX1Q824IFgkW/8zizXyt45PWJSyFQYNOtlEspl+IX8hKyT2gWguxhQP6kefYBhb/WJrYcemcwcey8c/StlUKYjU8bIulSTl+Yd95YO/sMaHSneeY7R7pIX3Z2OFRjoPGVaMmuoB/hdQLTw2/V8DHCHzZlfpQHmZblCQ3k2p0o2gKS/qlgUgqtEhHbs2VBsg3ugU4Iji1z6vGTDe++R4YIjCawU5xUi8uRV7KH7A8letsHsa2upRHfR0Poe1r8TWni6qBiPd3ZtoGxh2U3QDhccwHnmUYPxE2Es2cZ4Um9t0SWX0TId4+7DQs2uatnHx7MrJaCIMlGlId9VGGLUQFWQD8xlcUn4lU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.1
Release Details
UpdatedJune 16, 2026, 8:13 p.m.
Changelog

Fixed

  • Queue destroyed on reload / app switch while playing. When restoring a queue that was playing, the browser's autoplay policy rejects audio.play() with NotAllowedError on any fresh document (reload, returning from another Nextcloud app, or a deep-link landing). The player misread that benign rejection as a media failure, marked the track unavailable, skipped through the rest, and then cleared the durable server queue — losing it on every device. loadTrack() now distinguishes autoplay/abort rejections (keep the track loaded and paused, ready to resume with one tap) from genuine media errors. The cross-device queue is preserved and recoverable.
  • Durable queue no longer discarded on a real playback error. A track that cannot be decoded in the current browser is treated as "unplayable here", not "deleted by the user"; the curated queue stays recoverable on reload or on another device. Only explicit user actions (clear queue / remove last item) wipe the persisted queue.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
Signatureai5A4WCVeltI2oihLkhMkkv3ONBNXb4T8FTzRwIjVSo0ns7GY34IwJ4iM5YS17YWC9qJVWEyAnScnNEkLcFMvJGiIvBH+TAzFZcGXzh/v2CKEZU87Dhd7ddczCMoyJ5vRk+tK3oD4idftiC/8HvyxE19O7QQv4XDO8+U+YX8MvNflhqo2on076ICOK3qYlK4G/KsNkXlv9YryLVJ+GjSkXVx7hWFQeUXrbyqmVNDYBtLpfo5yr8dQZfWmVq822TIlpqXKlFJF8AHPfixuTbaq3VE6JvEC+zvy7ngEpnV5s5Sh0hoHaB731PrGzhXR48hEvdfgUVW7MkyqL0pE0bEcyavi9NGw9HuzLshIJg7Xb0tFy0yZENOJhn9oiVuOiwRqTotiBCTIDVlDziRRNDDKfIDlgGagIEKctBoN8AuVSku0IRN/4GKYEORVWGqB/ER5AR0LksqSCFIA9VRYdtvvvkKyFbovZUAyLyW61miWtGztYoMTN5//708ooWc45n64KfL5VfTLUIV5hrJAkz1DtwlPBpGnOYKhUIVG9h9wIbT2ij8cCMeT2jSdrpAIn0hroK1hhb2b4Zo1Hx8BnK7ekeLLC/ay481STM/CC2ljPtEiepgjT1OC7+Q+Fc+Tt3rI901YMWi9eFqumNW2s88EDqdhHzdWA87RT6a+QjledY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0

Nextcloud 33

AudioCheck 1.3.9
Release Details
UpdatedOct. 10, 2026, 3:26 p.m.
Changelog

Changed

  • shared app-feedback render (focus-ring + toast-dedup SSOT)
  • Atlas farm v3.5.14: rate-limiter parallel-load fix + DS contrast suite + l10n regen
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureHyFb9gGMjcEuZuCndb7XQSZTtc4HVGM4FClOArQcVWEo9pU9U04KJTko6NMgwWXe0lO+Ia+D/2l/YiL8g3X/vLUe7kVOkIMhR4Hb+9Q4COs/SFMpcwepWDeg+EeYWQdlK0g13yT0gJvWclUI7nOOipWp5oFWoGhw7s2j35ZiZsOFi/0NOFskHHViWqrr4uv0Flec3+FrDdcFzFVyQSwz2I5CrqVPm+wawXIcaQU8CP1vMfl/auUOdylyoYAohtT3xGFEVnP+ZnvpVNRd3K++upIRrcsuwQf+gz9StuX9licVRe8EJtzUefK/HqTTLjTF9oUYliA82CFEdu8xOlwAu72IwLgxw+CxHN0LSmY3v42AvBYHUhNhgbtO64o1lEDUKh9k20HqoD8yBTherO2713Ny2Rlq/+qMvqZG6JdsF/93LJVxE2KycaSiYuWnNynnn4ijMX1uXYUFIuh9csoPAytsJ5OponVPcAKsGj/V/OyELsrLWexsBFZR2q+qsOXp028XhLQrFifB5yGXj3RTFKZAk4IQHXGxyzgNlr5+shaE+HVcrcbX1Qqjy1HX/tP/lDBIdmHmH7zB/pS4N2t6R35IEPqJDSQjaIJ7GZsnwJc8AitnTMOZyHoDLzJuIIxJ3rm6+LmVYNmnYO9ElhpGn/gSS3F0yayUNpJukeRCH5k=
url: https://github.com/aSoftwareByDesignRepository/nextcloud-audiocheck/releases/download/v1.3.9/audiocheck-1.3.9.tar.gz
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.8
Release Details
UpdatedOct. 4, 2026, 7:10 p.m.
Changelog

Fixed

  • Mini-player touch targets now meet the 44px floor under Nextcloud core styles.
  • Localization: fixed media-playback mistranslations and restored missing nav subtitles; Swedish register cleaned up.
  • Uninstall/upgrade repair paths hardened.

Changed

  • Atlas v3.5.14 verification pass: expanded contract coverage; focus preservation extracted to a shared module; store screenshot URLs realigned with the published listing.

Changed

  • Version 1.3.7.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignaturebvKCuri5VKCkgIxnEBYo2YQ79EAY6Uwpc1/R5oPabr5dG2EM1Ct8vPKBt82c83j/u3MgjEWUBunzqfTEZ6UWe/N1eYA5m8Ds5XtAID35pfVTg+/kQxcTYUD848Zjgenl0kObjawh8IT+/t9F7c4TvqsmsSdOQvkRPDy8u9O06U2U1TLUbKumRY1OJ/iG72d2p3UNGKicmSHyGWeAtQEjJRHapD6zhE4w1WQKfFaJovHf3xs+h5FFgkc8OJQFWBDolCHIyvvOukv6lVVuRzsTeUh27+ooiqxFYAmzU82/TA/zhPX4ylUXdV5oeRLrSbaqOsFlZI/I9gMrbDy7gnrPpWPMFxuvn77rMIKMH+WZ8p9von3ThfPIz7fZn955R3PibSSscDOcIYzOR4Nn4KFkomvBsmgN9PFE7pAUEFma4trYL0jwLnBI5JyzXuwx12urbfXDBp+XKEy2UpMEhDq5bQ7YeQhfbxsbaplfQFqDzZlrB7KUHY6ZPw5/TdfhQe6kxfMK1iBdg/f3q4hIe+PYvjToKuRqvXEEUwmxtp5rf4Erl3SjtFvld9BVo394Z4ZwrxIAdbkMIgVzcmAP1XXlB5yj6Hv4M5wtKzD1pMi9O97T7QFtgAiahfP25M5HCv1bpdN7HZgNrFCofvDRgh/MwYET82Xva/oIynLEAeumuU0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.7
Release Details
UpdatedSept. 28, 2026, 2:34 p.m.
Changelog

Fixed

  • Authenticated stream opens are rate-limited (300/60s per user via shared ac_rate_limits + exclusive lock); over-quota returns 429 rate_limit_exceeded instead of opening another file handle.
  • AJAX cron scan tick is POST + CSRF only — drive-by GET/<img> can no longer wake the scanner; ApiCsrfGateTest treats it as a mutation.

Changed

  • Version 1.3.7.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureaAt0DHnsYy+k/xKgmVgH5R69Qex0ymU1wa4a9O6YF41xEGStcSNNZOpOcSuvF88Y3Hw59mFZGw9oTOPGpbD9+4pavqZs9YS+WbQlPIovaxmXD7FGFis9A/ebxKplXt8/6x6I5JAbVSS89XJg/fLQugUcKawhJjOdXfRsZfdJiREBvl4dnaDpw0OdkwqOEt2uOoy46+n04P+r2Vi7QW0qmNNylQdeoBPDFs1mevAvrkmShKavFkH31HKUAZ/K9jwoPIKhAqWY3Z3krOYs1I3ivDDX1FL3qeDqD/HpdsSqXTWnG1hzaPIJTePVo9guOIAyxPBkRAlD3wRGhzo8z5Vo6LgVJBoLtq/ALtgPQkUkd6EFE0Fa4M6zUl93mhbwwZGuKFuyxBBWtDcFCtOUvzm0jjJDiBI1hW+IIrh6LyYJAYWwjuS2vu8ro2eCMr8f75ntodPDwidChoGU8EtUBTAx9GR1qM2KPEFuLnhk2Up4ISiTasdYLAL+ZMdQMVDV/UPq35ikUnbgC01Y4qjpRI1KDJQcsZ+14FRbMI0IvQ6E3nGy7pAf+OdeaBP680RcgU5Kw1cL+vGoCWZ++Y/hYYINT1cm/pYRWLTJBph6pke903rgOqazpMFd6+sHzZil7Kh/lePsmiRu2GihDZQHbTeQiwlCUc4+kW1hVCylLPZ3q3Q=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.5
Release Details
UpdatedSept. 4, 2026, 7 p.m.
Changelog

Fixed

  • Global mini-player on Files/Dashboard: use OCP.InitialState.loadState (NC32+) with UTF-8-safe DOM fallback — .load was never a function, so the overlay never mounted.
  • Restore now waits for user prefs first (resumeOnOpen / volume / speed) so server preference races cannot autoplay against the user’s choice.
  • Dynamically loaded player scripts are cache-busted with the app assetVersion.
  • Boot is idempotent; global mode is set before the player stack loads so shortcuts/volume stay scoped to the overlay.
  • After browser autoplay blocks resume, Play is visually highlighted (ac-mini-player--needs-gesture) and announced politely.

Changed

  • Version 1.3.5.
  • Global overlay shows “Loading playback…” immediately while the player stack loads (no blank multi-second gap).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureUZ1IhP7Aocpvj2XN89U4TEq70g+n8EgkBrQJ5sKx6RPmunDAkCnrPinIFWgeqKEe5mV8W+jczh7uwfWBnGBduQEVp5uojAX7s5yYfMUdxdwObzGmT5mT0UxXVuVJvKNoo1k7ddOeQXpO9lh42KGvYMW0XlYY0xYlvI/rv2xBJbIk9l4vfjIUe2sCG904dFkVd17Z39qlmeCV2ZNx7g13EGbRsNamIXQLugjOiQihntQTsGVA/ekwhr2RIV3YaEe5QZkprHcgDUv44vWwMWaZqosNjk+vjxKfWhe6WleO8nbYUToyhDnhT6Lu+9Wm4HeNdq7eA1wjzfqSyZbwt6U+HcSp3Y45ql4bHkVnh0x8pQlFlsFg4c5B9Iva3Tz2l5yoYjZzJ5vvJqZdwpxlgThNaJY4BaIfZv3eG493iiZTyPbZUGmfafC/lkLqAW6ncPZqqhdkGwUaDEDvyl4MJlgp3NZKUawVH2GsaYGF5NtzO05t1e1tJVCdDUlaOYG7KyjCswf+Cp6rJXizvM2Cw+k9ESfoRLwqvjtoctUiUH07S+m42YcXjEWhT/qzCKqQJGC84Xcl6vS7gs5CwIjgnBc28PyIPdKmnkQfFDEELf+CRf6ozeC03kCS4QqbJl1Tuc6mZiTXHQN/GjjNF/MzLJD109ncvL6wni65JxOWsdhvHbI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.4
Release Details
UpdatedSept. 4, 2026, 4:39 p.m.
Changelog

Changed

  • App Store screenshots refreshed against current UI (Library / Music / Playlists / Favorites / Browse / Settings / App settings).
  • Version 1.3.4.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureJmIMvvaxd8n8+hou9lcC773VzsSsqDI50jrAzz2JsY/RU2pPTSs+T5rMQAr0/RA7jVLa1hCF1c/xU3kA83V7MWB8kf1ht3HIoyNcX88L0QkMluHZksCUlVI1OV+SpFpiCDC9UJOBxzMd9n2JP3HOGJ0Hmv+ObxtEqJR2ibc4UPfCETkRtPCtkmcNiS0Qawn6gITeoWXVcMZDonsaLqUj0a8Sy68ok5Ld+wPmBfDy0MPr+amK5H4PXQ1HzUBdt6iLIkSa6VvCsNz3dsA+PYV8BRl5YOHdOXkZCHVdX27xvBc8JMHYb4zfyfZrnPym492lR9jHQpPoA7ApPhEEFuAuyErjkznDpWiqKLGuJT0KY71RtqrgSq/Ee4VRkuphZ2VV45ttZokBpCh9gnv5UZED/xaf6Gd3wU4/QIys8K5JNXlxn6d2qseqjdi8c11lwel44y2KG3FaJJQNZq6dxFRtTk8Qm/EEQ1QF6k+hrIGw8cHEvM/OTT+khO1qdh4KSCEXXXyRzfHYR3n3IMM737UUG67dDjov2jys8jHEVGSmXEME1SgAC0MRKlYjXjrqQxA4sq6itgZLzavxihsqOkEhSIGsG/2alGTqLOM4Yzsq3kwDKU2ioT2xiI6yvJ50mVOe0MCPAMPzrQPzEraEY+TvYQ+vb9aIs62Xyv8PSIXXZ9s=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.19
Release Details
UpdatedAug. 19, 2026, 12:52 p.m.
Changelog

Changed

  • l10n glossary alignment: corrected wrong translations and standardised button labels across all shipped locales to match the cross-app glossary.
  • Help, Support & Us / Get the App: WCAG 2.1 AA hardening and translated footer copy for all website footer locales.
  • CI: collapsed GitHub Actions to a single PHP syntax-only smoke job; full test suites stay local.
  • Nextcloud: max-version remains 34 (current stable 34.0.3).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureFoH4jRGa4zrS4ytYj280rKDpJwvEKJQ8U2IyMoNJheQb4FwT0D/fBLL/jLFesziPCnz/RIQ+H0dtyYNFpuQwmUYoD7qgLK2dp6i+k9wfGxXg3MzHfwggRnZEfOln5M7OrfrCWr+0jCD7bc+qd/8QY4AWnWYcfjRvY2tYEi7a/mQYEd1t6eE5vcPR4WpHqnaXZ2kUp61eB84hfZEEV8gtOiwBppu1cxxBjyQpBREypDsHxJCL5sfOPYW41UwyqSoAsdafuCW9JyCgE1ENrc464RI5dHzZBQ9Gxf4E7pq37YYUZHUktPJ1rnDvUlhw6et4hSca2hTeBWTtPvQvGpDuip7zxvVdqBS6NOhqqIlAJ1Bm0oWiykoc7E9M+DOhj71EQTr2YGWYtHjnY71nV4TmgOOrqSRkfuYfZSsrlK/XSWwBzcoFRu8Nm3a8m2+ni/BOuNfwAT0hk9XNUv2Wx8nky3t1axkhC6cyHs33/EP+AKTfZtdWZ+2a8WzVO66KZc31m2T1sWhRhJKl5XD4b89I0wg1hNA/u0+NDr8H+CMOPaoFXguG/p4LdRZNssAAG1iAIHlKohGmXyv9MAK0KLwHAiffGYYbOkVB5/eDsmMj6SgO5WeHRZzdr/IQAN1R9enZ9E+xBFnVvK6CdhOopbCb3aNnDHYlm21+wLo4aTcJkVI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.18
Release Details
UpdatedAug. 13, 2026, 6:17 p.m.
Changelog

Added

  • Locales: Danish, Spanish, French, Italian, Norwegian Bokmål, Dutch, Polish, Swedish, and Brazilian Portuguese catalogs (l10n/*.json / *.js) with msgid parity against English.

Changed

  • l10n parity checker: scripts/check-l10n-parity.php accepts the expanded locale set and stricter catalog checks.
  • Nextcloud: max-version remains 34 (current stable 34.0.3).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureHZ5I5vJgBpslFatIeEhBfxHrLQsGRd5aqjQ9J/GV6YTxx4AI/mDu/Dovs/d/eu/MmgG3g5kACOnlJwfXdFjJ2+PDQKR8b7gOVTMAyUrWaJmOZbi40iBkq14MI+Mp7tKbnhxtK4jfczIYVKIyCXtD/i3EmCZkUoQJVDJUK25Tvieg9MFBEmeMpDw6+0azdZmcapUvFlqrVENhx2kDs3d8EAGlJUwKcbd6iZjftBy+7MHExuE+d9HziR7nqVji8wixyjHVjpAyM7B3nqAsLjDdGRTLEyNyl0vT880wXtGZDQ+tlVTFa2kFBLzgrdTjPSXF5ZKTdtRUrb09ThOrPUsvx+4ELjonewUwsiZzTNyrDz07ZWmNCBMmme0KmK51MhptLUUjXu0H3NplS/dtA8Y9DQEkZ+wY7qB9uHz1JmDn8x/xklpJwQFv8LxkRdNZejRBT5AJ9ZEwXICJ6Wrf2lYGpED4EEKp8cYTBrxmbAYzGicZW+CUWs27+n7sp6whgkI+Ecx0ngoLqpHMMDoWRnztuDfWpBBh343e2GOzob0m7aTzpIwFE2n9tg066nikaqnhCd6VQMuP71BfvZ9R+PHt3ejg5f3FmMwzMTjqaOQhCJ9dxBOYn5zvU2vs/eC9erAZPhGmI7Qx1CcWO3CxcP6JUIezEpFDP6RMyvvd0dBOd94=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.17
Release Details
UpdatedAug. 7, 2026, 3:13 p.m.
Changelog

Fixed

  • Browse showed audio outside Library folders — the catalog no longer indexes or lists tracks that are not under an enabled library root (for example only Privat/Music and Privat/Audiobooks). File events outside those folders are ignored; moving audio out of a library removes it from AudioCheck (files stay in Nextcloud Files).
  • Removing a library left stale tracks — deleting a library folder now purges its catalog rows so Browse/Music/Audiobooks update immediately.
  • Empty-library scan no longer walks the whole home — with no library folders configured, scan clears the catalog instead of falling back to /.
  • Folders facet invented parent paths — Browse → Folders no longer surfaces ancestors above your configured roots (such as /Privat or /).

Changed

  • Library UX copy — clearer remove confirmation and “How it works” steps that state only added folders appear in the library.
  • Nextcloud — max-version remains 34 (current stable 34.0.2).

Tests

  • Integration coverage for library scope (out-of-library writes, orphan purge, remove-library, folder facets, empty catalog).
  • Unit/contract gates and mutation gauntlet for indexing, browse joins, and remove-library purge.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureCQSfvNab+sLV0AaIzS3PNSB7PJmM2jwDEtvmy1jzH48WPRjDTBDW0eUlMn2+EhCkfC1VrMhAEVnuFJ9/lDOrihRSJNJKxWmh6jYt+TQOl0tomIoVFgUawJSrtHhQq9JOhzoclyNxuykan3AZNrDC1jz7bDDPafVVHi+Fd1cFwliPvxtTdJ4YwLUqSY8/XopMmJgMAT3pnq3uQWp9IBKicIdQ33xN6pOpedrwcRQFPTtqCtoUHfsbpaogWwyk1UGfOe/4GD7sLq+hw7WVzbMli2rhQzPnJqYRogiGutC7AvuCuh2a/1L8Hs0P0PVupszYOP+C9ECKg+FNfGpdRHOxCNbDYv7JSNVAv/FxWMmmjif97GfQR+Ly1Ev43Rz6td9uoX7sFkgtK0ZPXhcXj+XYBbV2S8HfVOCM9wVglkh5wytK0u9+rsS1uDLRB9/FW7it9DSOIicEzIXNDQms5XJ1+c3x7+mAAYNmvIHQR8BVhC8e0jC7Ve2kOXL6jbS0lgvMuy4QwSO6kOLr2jMeghavRruOj2a1IDjST6tlgja0FLQfdVTFLRS7buJdOpSRCIpMb2RFHa9oG7ff2gvBUI8JlHsAdHroEXACzROT8C2jODK9hNrmRWAD0bjT3a1pD+TS3Amh13sS+iNfGAOr5ZGp8VDZwesbYK0v36NzBMxSY3c=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.16
Release Details
UpdatedAug. 4, 2026, 9:14 p.m.
Changelog

Changed

  • Library folders UX — folder rows are a single clear line (name, path, track count, Remove). Content type and nested-folder settings live under collapsed Folder options.
  • Add folder flow — no content-type modal; Music / Audiobook / Auto-detect shortcuts, path-based type guessing, and automatic scan after add.
  • Store listing copy — README and info.xml descriptions clarified (free AGPL web app, formats, get-started steps).
  • Nextcloud — max-version remains 34 (current stable 34.0.2).

Tests

  • Journey + axe WCAG 2.1 AA coverage for the simplified Library surface (library-folders-ux / nested-scan e2e and PHPUnit contracts).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureUubMG3p3B/DZ3peLbwILnZdU4kKfomEhp5GJbYHG4DoXx3CkKAzKLBRdNqAn3oRVJnr+b1KGmVk2J6R7Vf6o32p7TCJWncl8vvNCu8xs/+T8bzvNNy/5QroZsYI7bRAGD1WiUINHvHzdh308HOXPfEsk1vpVGEIOeijX2k43P72uYhH2RsRwS8aoOJVo/Sreo6Q9UYiqJE+q0hldHxLbpBZCkhk2H131GA6SyAoNgZw/+VpFYV2dn744TTh9Fqf73sp0mDofKFhlJ88FDVlnF4s/gAdTS57WDtcbGcabcCqYpGe9v/kLrktkw8Fjy8F1wxW7BcG8D+RZ6bkN5XQmmo8iKF5+cRBz4BS1nDza/E9NK6OcuoWHF9gj3lOLcqPCdy+ECILKV+mlzgJhv9+wocFLyft5j/eQbl0TwRas7CVf3RQ/Pr6XJp7v0ow5WUD5R0ByYFXxyQuUa/0RO1bNdsrW2ymBe6LCbPtnzCEP6GcbBeuqZuL9Oijn/5M389DRecA9FyOpGlZSnG6wIM92ViUekHmGdR+t4Qj01ucV5z70swLve7cD5kxlQFAxwH8chdLacQqbJCrZ+f5KKfG7doTW6p0USFIm5M/rkaozs1SpwM0T8XRu7VLFrnHiiUWodA7a8Sg839jYkrdqQ/eCj/mr5KtIoXzIuXGqT6olu8s=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.15
Release Details
UpdatedAug. 2, 2026, 12:13 p.m.
Changelog

Changed

  • Packaging release: version bump for App Store / GitHub republish; confirmed Nextcloud max-version 34 against latest stable 34.0.2.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureI1SMSyNnozaIb1DCCg2uY/BLzxKDfhYxeBpmy2GdCSb4N/6EWoclCmNazmCodz7woCEOQVKPr62s0jyJ5UZ4xLEcIS4IinW8vJCHQKsPMURXao/YNaVkn9wIflgz7isyd7El0DXjUBbqgIQltY1QvrlA+HL877NarmEa5JOf8C/itN0fSUp1De68b75obdu3vLpZVCDtnMVOt7G3wobjwe0pQ+ArxvSEUrrWi7hOev9ipaROW4eP52dAH89Yn7BBzkHoAwtSP8lD4/7BT2heWAR4SrtMcxffmo0C9ZRwCNS4k55T7xfe3bhQtiKJn2EsvwDy6PnJK1QY3IAbw76Dkbwf9rEqJgqZh+VVNLJh8XBKAI4n02J9A/iUEAEtf9uf2Gxzza4kk3SHCDrTkuza0CUnUuFsFzIbSILfG3vH6gRFF+sNyOkce+k2C7KbNumVj6PxjtTOCWDcwyZhj28jEKx2sqtzfZGoo5k4Z+WGjeuqYTFam6sIm4vZduVfnOaO5zmKiWjFWc6BrbneKj1o++gR/GimY8Wt5YCvLBi0CWgXM2zKrhACg+USk3B4LySIT5WXTiYn/L8/BPugZZLDfRnlN+Xk6yl77ZERA41jmMkKeoDjow/xCYEG37fhau5oKWcr1K8H5uaJ5wQeVFETt8ipibqXCZmc+W9dZAmko7A=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.14
Release Details
UpdatedJuly 31, 2026, 10:58 p.m.
Changelog

Fixed

  • Nested audiobook folders skipped during scan (issue #9) — recursive walks no longer drop a book folder that sorts last (or alone) under its author. Layouts like /Audiobooks/Author/Book/*.mp3 and /Audiobooks/Author/Book/CD 1/*.mp3 are indexed completely.
  • Scan cursor size on deep trees — walk position is stored in a compact path+offsets form so deep Author/Book/Chapter stacks stay within the varchar(4000) cursor column across resumes.
  • Multi-disc grouping — untagged files in CD n / Disc n / Chapter n / Kapitel n folders group under the parent book and keep disc order.
  • Same-second scan prune — a new full scan picks a generation strictly newer than any existing last_seen_at, so tracks indexed by a file event in the same second are still pruned when the file becomes inaccessible (e.g. share revoke).
  • Batch-boundary infinite rescan — finishing a library root on an exact SCAN_BATCH_SIZE boundary no longer persists an empty walk cursor that restarted the same root forever and skipped prune; pause only while the current root still has work (or before starting the next root).

Changed

  • Library UX — clearer “All nested folders” scope, an Author/Book layout tip, and Settings copy that names the nested audiobook pattern.
  • Walk depth cap — recursive scans stop descending after 32 folder levels (files at that depth still index) to bound pathological nesting.
  • Nextcloud — max-version remains 34 (current stable).

Unreleased

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignaturekRn8Ins0iJGjq8QIE9RSXuWodovQaXRFp1l7YGcmUlmIOEmixZZvdpauj87CmbFfyUECJefyuX/Zyyaza+GhJj956AHQhEEg769KX8Wr7458OmKkfsMtPmTfE1u+NOl52FU7XLGYhkiuiiZzMo+FgO2o51CmWqL3qZUsIQsYQ0tV7i0czPKYeSe6F6eHLH/DDwzj2zzpi+wYOX/xmxpwcsCs4nRiPZ4fAfuQGUiZPXPVwz+/w8u9hz3wS0B1vxsQ2oorvsLFM4w/kYbK+xqyHt+7VV8OkOAwNKnZqGatYH5jMOnspmqKGtVeGc7TOzCISmTiry0gJG6gY3ph+A7SE4l27dHKOtXPZkKnEF6PYrvPN39G06nE5t1IvuUUr4463dR3zp7Dmi5a9e6SkkbtBRC46pO6MD7RI/1B/JtTILU5DcQBTDA2J24HclNCu2E8sULEdzoEqBraly3oSe8obWFjFw62iTITvkToieDkztuZ1LTICykEq+YmTrQ4qYPRnxA/crG1yVyl6r/NawDL0l1MWQJB004pOqmH2tjTWZOdWg7CRgiLn9bowIDkFL89TFo+Ej2LWxXyLXl602lgBqbwMrVIXoO+RSrn0usICB40zX/oC1ihaLHjKYGaFQiFQMHmIYfCQVVCWJRLFyVlo3+UDlZRxqy7AG1WrejoNfE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.13
Release Details
UpdatedJuly 31, 2026, 4:36 p.m.
Changelog

Added

  • Mini player ±30 — jump back/forward 30 seconds on the mini transport (same contract as Now Playing, keyboard, and MediaSession).
  • Hide mini on Now Playing — the dock is hidden on Aktuelle Wiedergabe (SSR + SPA) so the full player is the only transport strip.

Fixed

  • Mini jump aria-labels — PHP t() cannot substitute JS {seconds} placeholders; labels use fixed strings plus client hydrate from SEEK_JUMP_SEC.
  • Focus / inert when dock hides — keyboard focus leaves the mini player before it becomes hidden; inert blocks interaction while Now Playing is open.
  • No-op relative seek pending — clearing pending immediately when −/+ does not move currentTime (e.g. −30 already at 0) so sticky pending cannot skew the next jump.

Changed

  • Responsive mini transport — five-button row stays usable at 320px with ≥44px touch targets for jump controls.

Unreleased

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureeeyzFx9yVprYFecyG2++BDonnwqVdzr5C6fwmGhOly0kfgLs87nkGK/6Gv1Y7RHH5tpSvpr283z3H3pSQoDqZhxPyiqBE56oBjfK2h19Ww51UInil7kmBICWps7KT8xK5tetj0ozFCkjeA/0VX+ueJwcspM1qHXTPL1EvJwRi0abmV699RajZrrEt7oh0dYYQ93Y9l5VJkjQ9Uws5oimqdj70NBN9JBbzqc6QPlubfeMCsU7DGMAuW3k6m8xVQByT6QzJzAHbPM/FpUwdY6jX7/ktYdZ+/OY4o1ofa8TxUMjV7supVJF0SPIfCw4GzyrM1cx7iKfhVkpZsxa9n2gp5QomW9VurvH7vfJCGdTlMxdxX9mjRxb1tbEr7rs96Sq2A2whO97bOdibhpza9g9mJdwoetqKxgbDSYwNbUghX9dRZ6I+DjxHUg1z6ZE+YI2gmSpRU6DeGbaZzL859dX01BtviYAaYv8sXowvIErE4vv1RfIHShLMDJ+wX47vv6dOuK+fJMI9wN7f6KsCdxv84smJ/hzmsuaCFZ7s+5Lfx4OW3e6LGKIfMQfYDctgeysPAGD8lBx5nkcbHIx7/wfh0ljvm6dmvUpAc5sjPwV7hSTFd7Uv7Z0tew8CHIZOV4y14Pa99eo9pNxX4GeqWx6jrd7P5vPxOYZuL4ZZyO9GHQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.12
Release Details
UpdatedJuly 31, 2026, 12:19 p.m.
Changelog

Added

  • Jump back / forward 30 seconds on Now Playing — podcast-style −30 / +30 beside play (issue #6). Mini player stays simple; open Now Playing for jumps. Keyboard ←/→ and MediaSession seek use 30 seconds.

Fixed

  • Rapid ±30 seek race (web + mobile) — relative seeks accumulate against a pending target so double-taps cannot both read a stale clock and land on the same position; absolute scrub / track change cancels in-flight relative seeks.
  • MediaSession seek offset — OS/browser often advertises 10s; product hard-locks seekbackward/seekforward to 30s to match on-screen controls.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignaturePOnP8cp5nA8/cw3K2jjsWjDfLC83cAhtbGU3l69+0EIJwwgBfcGpYHK4N1bgxVRqDjrLO/4MJe3LDAmQbIvNLs+Tqv2f4QlE82LfCNS5Pqw0jQWWamR+irc7JXdMONcKvdSZaExWph3ySYcgGU6ABKGAl6K4PWepNaDc4P411lklYFcv+WXr60B9j5euPNIvr3zffXnpvsXzID9JoN7PAO5krreThU3lQHjjuivvKXLq9EZxyhHb91/KoG47VyFMIr1BJgu3JLhx3RkJoSNCUJaDzWnHVCO+2nizMyTBXF52PyF6ikLuVInaY9DOtcmvFAGSyME/gUHSzNSwI30yBdJCKawj9cKOGdXODy4UV0MDQfZjhl814k3Hdv3TDMNZ4yeGIjFpMp14vCBLvNbIe3h3wMpayPhGq3iEhDKu1UXO4WKVtFGG0+zDpuQEucF/fdWyuXKrX5qzK1oS1JNSmLC+/ZaeDdWBF8R5wKIBhGoLz3/NScsYeRcX+bNgJNDOHWNzzx+gdllrjyPhYmJmliIkr56Z4337apsLiosLi0DFS1lM7YCQ9MI6x0mzwEbAzRATLJIfTJY3nPCHLEuwJOXd65TNnpkwKfTCIpwna95zZRq+4vMxK0q6YiYNcq9XwfY7ULt96SGWcdhsKb14793w8xXUIQx+zcEPSpGlv+0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.11
Release Details
UpdatedJuly 30, 2026, 9:38 p.m.
Changelog

Fixed

  • Fatal on every file move/rename (issue #7) — NodeEventListener called the non-existent NodeRenamedEvent::getNode(). Rename events expose getSource() / getTarget() only; the listener now routes through ScanService::handleRename(), updates audio index paths in place, purges cross-storage source ids, and never lets indexing exceptions abort DAV MOVE (copy-without-delete).
  • Folder move index drift — renaming/moving a folder now rewrites descendant ac_tracks.rel_path and matching ac_libraries.folder_path prefixes (Nextcloud only emits one event for the folder), then assigns library_id immediately from the new paths (no waiting on a background scan). Previously unindexed audio that entered a library is discovered with a bounded synchronous walk; only overflow queues a scan.
  • Copied audio never indexed — NodeCopiedEvent is registered; file copies upsert immediately; folder copies use the same bounded index-into-libraries path.
  • include_subfolders on path resolve — library matching for node events now honours non-recursive library roots.
  • User/group delete listeners — cleanup failures are logged and no longer bubble into the core delete event bus.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureJ4PQtIV1I7xSKw7cG1ijV0lZ2KjgD63Y+zrmRuXSjlmLYNiksrZqv54YwWcHR3SQthSxBPOC/8h8rQ8JOHB7nWBwcs9QBB4PgU5C0F5nCnmB2Mb9Yf8LelSAdRrcZV7U3Eyf6X9/Gr/JqcOz6WgE0N2Eg3gyoDWWFmnnd9A2hqprazXx7wthwWOdi5+zA3umOjKJscQdjXKeJ/Ihs7tuFWmv1puISUFNhLj5UycCeNl+1vQ07JbAz++uRIm0QRVeJzAqt4hXBkGGaLzLW0teAkZnbEmCwLhZTrgWqQXVw9qYbnoY9cmWoMNR6RF0ShFAtvW97rv9u0XK4cRHuilmC9NP8KrfRMAjXSBE8fZrvCy+FgFlo6neM8CngcUgHd6n27vgArhWq1c7lQpbONj48jhV6dLINJkTIJ6wGnBZcPBnqhLvOWwM/574wj/0WoBP9oVYlKALsV6zCvp7dlRPZeS85+HFiSeXw3vtUKxoQKz4T+vYYupNjZGYTNL55THtH5Kgn7siKeyNiaLfushQRmvWD9T+7flZmgogs5zWxet+OjRO2WWqQeuCh9L2j9EtW527UYrO3QecCeu6Cj38+7WW+S6t+eeFJSXCotzh9X6dYXVnUCUOyrF0WwGS3huHPfJJsJqYWbPaJ7AOR+6XPr0dqKfZlnjZqFGOKulJxuc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.10
Release Details
UpdatedJuly 21, 2026, 11:19 a.m.
Changelog

Fixed

  • Queue-wide listening speed — changing speed on Now playing now sticks for the whole queue. The HTML media load() algorithm was resetting playbackRate to 1× on every track change because only playbackRate (not defaultPlaybackRate) was set before src/load(). Both rates are kept in sync and re-applied after load/play; the UI reads the session speed via getSpeed() instead of the audio element.
  • Keyboard speed shortcuts — [ / ] now persist the new rate with the queue/session (same as the speed control).
  • Settings default speed — saving the default no longer overrides an active listening session mid-queue.

Changed

  • Now playing speed control — clearer “Listening speed” label with − / select / + controls, hint that speed applies to the whole queue, 44px touch targets, and WCAG-focused labels/descriptions.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureYzRV2/sof1CISYuL/0VSftxtNGIjW6NT6swdgC1ygQ/aG/9huRnCOo23g//CcTsOPKMDgM+lpty6YftiHdDXhXS6dzbIcSqdDXuBOcHyn0fTyWHBEF7p+APMswQd5zMBhXfsxje2IXCr3OKyUIUbbSNrj00FFY1dpkS3M2oO9ud8xQ8Hld0cUcDtsw6rSmlC4kj9FN+6+pOrT1P2qMGOgvgUYf96HL5wY6oFRZTgaXJ0itz+MaHI/uvlHclzxR0FcTQqtMljaiM6qcwT81yjfxOTjv/Bs6i/B1YDKwEUc5I8+pUP8zye3sqgPmmopwzMXEpuPpM6U54hABH8IADCniyb/VZHTmTJoHz+OhctNgpsQcNc8BojVaaFa66nY17qHOnsmvlc0P0xPJQzBfXu3M4wnsepyGQPZqtrQ/2IsE8S4LLyqWn0wi2wxNbL/Il/+oHITMbFwKyd+pVpxroAunprQsYe5T4g1aUjgANSKTTmbzMbWzb7k8CIYmAhine/1U3stAfuojIgb8K0HNZUI52OPoTuC4dSiVaGq2zWmQeMy8QantICnBSFRlaxsWK0Mk05UTPCNQYX310Wmh5jWW7lbQLBxw4NdJeObbCULKdH0OkbHKfJiXRNtrwa8bpLzeTFv31peFxEFLyHFiREh7WGjUE+fUdmHUjZm2D66Mw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.9
Release Details
UpdatedJuly 15, 2026, 10:25 a.m.
Changelog

Fixed

  • Favorites listing regression test — unit and integration tests lock in hardened loadFavoriteFileIds() behavior (issue #3).
  • Native widget scheme on forced themes (issue #4 follow-up) — color-scheme is now bound to the applied Nextcloud theme (body[data-theme-*]) instead of a blanket light dark, so select dropdowns, spinners, and other browser-drawn widgets no longer render white on a forced dark theme when the OS prefers light (and vice versa). Modals and toasts, which portal onto <body>, get the same binding.
  • Active sort chip contrast — active filter chips paired --color-primary-element-light backgrounds with --color-primary-element-text ink, which is tuned for the solid primary color and became dark-on-dark (illegible) on dark themes; they now use --color-primary-element-light-text.
  • Stale theme-bind.css after upgrades — the late-loaded theme re-binding stylesheet is now versioned (?v=<app version>) so browsers pick up theming fixes on upgrade instead of serving a months-old cached copy.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignaturekTA/K5U++VfgdYLxsxtjxZdHoshbTcsnF1xoQPIi3JUCH88gDobRUpY1tWJ5WggZxWlve/HquNdt6ZcR5WSB3ymajBfWv3+vTxJWKHNpcg83tFRoq4MHPlnwHAaasAedaIYxrtg9tx6WL6pv4jof/8eN6Qcc0wmqOceCYxnGN1pSoPFpA9euzSLQtti1krxbYI++RgT1w89bvKwnAi7ToMX2HuqzwmU0z8jaSyeI1fVXzo8sWT2IJrYLNMfTdZmgGUjELW7dLnSR4OrjP4STsBWiyLHJrWLlqfa3SBr1aVQdLLMM0QGrnYaPOKEFaFI/WAnOsTYKbpXa8RUiJKnw7xcYaHKDJ9UqJCe4b8rn6/kW+hrXgFvEov9MSWWgPxlohEO7TYPB/JM/71m3KnKkT0oC05UMrbBTIV9KHg12RktHi/FOP3QZazySt7M+vA1oQpFFpLqUG+Ts4i1dft9gkftk38FH/tX+g64yrxNfIGOz1/snR8VaIjCi71loLM6MPrcFGoP0UGuorQKRRi3EDLJbgJLW9yQrhY7WrtfozmoRIPpL7ZDZG1PzF+ri1UkXYrSOY1hSQOsNXfxvxAdM6tZK1ajDdnqnAm3VayKeAqnHXvVOnYkPjyvu+8IfaAAwyNqVBNUMu1yL3Cg1SKgGmctC9wzJ/srdMf1iTwp9ylw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.8
Release Details
UpdatedJuly 13, 2026, 1:36 p.m.
Changelog

Changed

  • Nextcloud 34 — raised max-version to 34 for the current stable server release.

Fixed

  • Scan memory — library scans walk folders depth-first in batches instead of loading every audio file into memory before indexing; cursor now stores a walkStack for resume.
  • Concurrent scans — only one worker can claim RUNNING per user via an atomic DB update; lease heartbeats prevent stale takeover mid-batch.
  • Playlist integrity — reorder and delete run inside DB transactions so partial failures cannot leave inconsistent sort orders or orphan headers.
  • Mini player volume (mobile) — volume icon opens an accessible popover with slider and mute on small screens; desktop keeps inline controls (WCAG 2.1 AA).
  • API error logging — safe() and service catch blocks now pass the exception object (['exception' => $e]) to the logger instead of a message context key, which the Nextcloud logger's PSR-3 interpolation silently discarded. Internal errors now log the full class, message, and stack trace.
  • Favorites listing 500 — ITags::getFavorites() may return false on transient DB errors; LibraryService now degrades to "no favorites" instead of throwing a TypeError that broke /api/tracks?favorite=1 and all views built on it.
  • SQL portability — count queries no longer inherit ORDER BY on non-aggregated columns (rejected by PostgreSQL and MySQL 8 with ONLY_FULL_GROUP_BY); MAX() aggregates use selectAlias() so library sync revisions and playlist sort orders are read correctly; internal Doctrine ArrayParameterType replaced with the public IQueryBuilder::PARAM_INT_ARRAY.
  • Upsert races — concurrent progress saves, listened-flag writes, queue creation, and track scanning no longer 500 on unique-constraint violations; the losing writer retries as an update.
  • Playlist integrity — duplicate-name detection only maps genuine unique-constraint violations to a validation error (other DB errors surface as server errors); playlist items get a stable secondary sort key; defaultSpeed is clamped on update.
  • Favorites shuffle truncation — the client paged past the server's 100-per-page clamp instead of silently shuffling only the first 100 favorites; removed a misleading 500-track request limit from facet browsing.
  • User-facing error messages — machine codes like internal_error are translated to human-readable, localized messages in toasts; network failures get a dedicated "could not reach the server" message; fixed "1 items" pluralization on the Playlists page.
  • Dark / high-contrast theming — theme-derived --ac-* tokens are re-bound on body, #content[class*="app-audiocheck"], and #app-content.ac-app; css/theme-bind.css loads after Nextcloud theme stylesheets so backgrounds and ink stay paired on every theme (fixes light text on white backgrounds in dark mode). Added --ac-surface and corrected --ac-muted-strong mixing. Guard script scripts/check-theme-tokens.sh enforces token scope in CI.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureEAfydT7TAjAp7u/mC4U4BMg430xVorUQLwN9NJ2t0FOyr4iRNrvTX+twWERHgHflQ5YKRTAelQ/Tv5cqesv10hAeRkwdKbI8Ziz2dgVydD6aXMPzqCqzAXvr89PWutU0/GG46O2QEw45mg5qmETDfG88ecH5LwgUuDgTT2C5306oAKghnWZeGQ0MjiZMDPe4AU8d13pVVR9PxqaAlKgzQBAd1qDrelEeRreRA0VKcCqr2emryvfCZNbsFSeLxKVuIQk8Npd0c/QXVxqo4pk/3dxMcpB5HW5jucKBKSob/+1Am4dH7YK4o194GEOhnMuPD7WGDVZwJtnjXykJBHaaxJWl0Un5R1/mncAOPdur2dD40OvZXWCVQKL8Qm3MAqC2YgaPOwewsEHshvrA0MHew4BoD4iyjGBk36Ckry5IG8dsE7W0gDRS1PXOEJH/VjgKZtg0vNOuONubwuhW5N7+DSkJaCzUXwZJr/sXMgbD6R0dxOKs4d04wfcGm//ft+YTX03jZ8az5NPV1yNvM6YXZ7aDd9FxsMRtQloxq9+/C3Qha9kYJ5lP5Xk+s/XoPtQpY2N6RZEQOUX4ZqZ4sNunrao4c0F3XeUC8q13lWsQBma71iG9wm8GJ/SkJIR5ejaRIUTTqhC0ztJFwTEYXVGg/P6Z9cLr+Estq4QKmOT7r6I=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.7
Release Details
UpdatedJuly 11, 2026, 7:39 p.m.
Changelog

Fixed

  • Scan memory — library scans walk folders depth-first in batches instead of loading every audio file into memory before indexing; cursor now stores a walkStack for resume.
  • Concurrent scans — only one worker can claim RUNNING per user via an atomic DB update; lease heartbeats prevent stale takeover mid-batch.
  • Playlist integrity — reorder and delete run inside DB transactions so partial failures cannot leave inconsistent sort orders or orphan headers.
  • Mini player volume (mobile) — volume icon opens an accessible popover with slider and mute on small screens; desktop keeps inline controls (WCAG 2.1 AA).
  • API error logging — safe() and service catch blocks now pass the exception object (['exception' => $e]) to the logger instead of a message context key, which the Nextcloud logger's PSR-3 interpolation silently discarded. Internal errors now log the full class, message, and stack trace.
  • Favorites listing 500 — ITags::getFavorites() may return false on transient DB errors; LibraryService now degrades to "no favorites" instead of throwing a TypeError that broke /api/tracks?favorite=1 and all views built on it.
  • SQL portability — count queries no longer inherit ORDER BY on non-aggregated columns (rejected by PostgreSQL and MySQL 8 with ONLY_FULL_GROUP_BY); MAX() aggregates use selectAlias() so library sync revisions and playlist sort orders are read correctly; internal Doctrine ArrayParameterType replaced with the public IQueryBuilder::PARAM_INT_ARRAY.
  • Upsert races — concurrent progress saves, listened-flag writes, queue creation, and track scanning no longer 500 on unique-constraint violations; the losing writer retries as an update.
  • Playlist integrity — duplicate-name detection only maps genuine unique-constraint violations to a validation error (other DB errors surface as server errors); playlist items get a stable secondary sort key; defaultSpeed is clamped on update.
  • Favorites shuffle truncation — the client paged past the server's 100-per-page clamp instead of silently shuffling only the first 100 favorites; removed a misleading 500-track request limit from facet browsing.
  • User-facing error messages — machine codes like internal_error are translated to human-readable, localized messages in toasts; network failures get a dedicated "could not reach the server" message; fixed "1 items" pluralization on the Playlists page.
  • Dark / high-contrast theming — theme-derived --ac-* tokens are re-bound on body, #content[class*="app-audiocheck"], and #app-content.ac-app; css/theme-bind.css loads after Nextcloud theme stylesheets so backgrounds and ink stay paired on every theme (fixes light text on white backgrounds in dark mode). Added --ac-surface and corrected --ac-muted-strong mixing. Guard script scripts/check-theme-tokens.sh enforces token scope in CI.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureOYSJOAEPFmNzWN3GZeKQnDwpPjDre+YRdIPE6OCmwPAgZillckDvFX20VFmeDaLpxiVh9P6Vg/OerpU/SHxINbKCntGCIV+5I/mJX5rwx5rpdW9bjN3f58J09bqnkUo8s2sCGlKq0y9neu3ZHuRhPKGCuLVbJPP7LBs7RXDJxQjxWNIE35PflwsixAD3E2M/iPkH3jJV56AJKviy9cQa5Wa6pBGFDBb9TxF8XLo0tckNp3SBQ3F6jpcA2prvoglKQl2vIlYXb71iyXhkVYYwteHXmLmeOwiDGrYXr+4TvNgN2mU+ZjfptHEFvVKJ0Ldx8RSU4Q7R4tU9RZtUwxqqmDnRpBVBR5m4jBdBcAagjLMBg6zeqtNdJodSmyzQLQmDs6Jhtu2w+iOYd56cdZMjlV+7y+RtpCc8o36zCasZco8UbMFhHrCZ1LxAoDoqIcZONynmmcgKIUof5xkbPyE8I9xtnool86ye7HiQOMDNjYyRoNFygPtf1vuEu4UXyAZkY6a8XNUZIWUvjEfPn/5JuvcjOsErcbKFUKkuPN9mDhYbKHJUo/ESNyQrjjfhiEeMyl9x8NFNAN6B2qx6pt32NWCqtYK1K00KRpP9nJlVD/IWxvs3zJFh5M/G2k3fDH5CRV/NJiWDYo8CwNschMcaO6oc+7KH4x2UssmC033rTd8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.6
Release Details
UpdatedJune 24, 2026, 9:03 p.m.
Changelog

Added

  • Global search — shell search filters Home, Browse, Music, Audiobooks, and Playlists with debounced query sync.
  • Sleep timer — duration, end-of-chapter, and end-of-track stops on Now playing.
  • Playback start choice — Play all / collection actions offer start from beginning vs continue when saved progress exists.
  • Accent-insensitive search — normalized shadow columns (*_norm) and migration backfill library search across web and mobile.

Changed

  • App shell — persistent page chrome (breadcrumb, icon header, scope strip, grouped nav hints) aligned with BudgetCheck and MobilityCheck across all routes.
  • Section cards — Settings, App settings, Library, Browse, Music/Audiobooks, Playlists, and collection detail use shared sectionCard / collapsibleSectionCard layout.
  • Track lists (mobile) — library browse rows render as bordered cards at ≤767px; collection detail tracks match the same pattern.
  • Playlist detail actions — secondary header actions collapse into a More actions menu on narrow viewports; Play stays visible.
  • Messaging — polite/assertive live regions and toast stack for status feedback.

Fixed

  • Browse page — removed duplicate inline page header after shell migration.
  • Play all — header action only on Tracks (Music/Audiobooks) and Favorites (Browse) tabs.
  • Integration test runner — run-docker-tests.sh resolves the Nextcloud root correctly from the app directory.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureJv9Cfgd5KiHuIhWVcnmPvc+tjX9hD+iP5PRAzEryrCAlq0yfNInv9T82hm7Sw0Uug78ddijfkZ2dgD2vRZm5Pik97LCUi8R8Vck1U5LU3aSVhrHNH02l86ntKWjjhiIUj26X589gMc1DcB0nNrEjrUCf50RMtrLcB3qR1WBuzAKPW3GbA5c/zkB56nhPelVSXFY99ksX1wwNFQwvNHQ1hUNziNoaQTI5EtTr3lizvigJvY7UAZjlIdTZe7c2Gfn2YVmto5YQ7EYEfxZfQIhS3NUBDGdhpAZV2wbSFDYpcx/AxLOikAp6rU7mgb08cAsm1G19dWcSBGTFRhVJ+bBucZXzY4H1siljWo7bVp47mXBCL4TxakLtaW4TIvaYJ0KQ+hLU5Rp1JIp4fdeyXIQ4XjoEBsFxpjwme1h1z0/Dp6tGsCBcd1vuZOks3KFD2+758sCVVqz+v+sDk6+fJL7M5YK9DsHRt8j5CxVFqTfsQI4Ew87pONnYruNABlOfsW0v1AnyKI1da/oEti14Ki6ONM0sWznSbGIS00CSbR7T4wiP2ev1HFQSe+hAlTEqwyP0UuNGR1QKvlTXVdL+46M8HBx4sqlW8wfzeEFnXFsH/IQHwuw6bgPDTIoemTg/Kgfi2m3XIqdaBruQ2sXo+yMzZZ1s+q1yKA5WLDBG/D4Y0n4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.5
Release Details
UpdatedJune 20, 2026, 1:59 p.m.
Changelog

Added

  • Paginated library APIs — collection, facet, and playlist track endpoints accept page and limit so large libraries stay responsive in the web app and mobile clients.
  • Load more in the web UI — Browse collections/facets, Music/Audiobooks browse, and Playlists use server-side pagination with Load more instead of loading entire track lists at once.
  • Play now / shuffle on full lists — playlist actions fetch all pages before queuing so Play now and Shuffle play cover the complete list (with the existing 2000-track cap).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureDyugqURQcSAJsnY+5whWW+8l45Ca4rETbg8Ggr2DLSJaoNi1PE3sRa54HAWGBu5emmP6y1qOTo5O4qqTCz7R1s+VLQhB7S2UgbNyx5OyW0Z7wJ1i34W9Ve+xQLiUbrj/opqCKZiQXzqttSOXFpeT5MXOa1eykRYXHk1ogIXyA9WULjFasagxE0bJ5MqJdKLg0e+Iw3jnnBP9UDI+LOEYyGJx/AZqwsiL7wqmLcBQs3EVgF2BeMpD5jqaFyPPVodE86fqKFM6lUcC6dfxBlkrT+mgfg9Md0/gIG7FQlTljcjnpUEd5eeWp4/8K05mOiPcW8II1B1DGM4N4y6+yt0U0x2Vz22rI0wnlpBgOIrCu1b4JOiwkX60/NZwsLlhAy1v2M7+qxyN/FU6JlJM6ICo4jEnkWLXJ820IbliDDmhm/G6ji9O5NDQJFuN9h99ez80kz7g3x/CeflE3OJGmqWWR+1h7MjvYtL7AznGsqlnBs/H8ed9eqjIcFPmRPGTVXYtwRRDYLjCb2d3DGOWEzjeQVWmxQfkpm3D8UguefW7xhZX1L/YonrP914vDK7NXxl3eNPll9rQGxnCDgCfcU1RXLGpSAzYZ9VtO9TEf2y9azdq+7tOLQuI1b0SyUTONjXYOldJGXanC1AMC/QRzT8ELFrl0+D9rKeGJ1dQJyyfQa4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.4
Release Details
UpdatedJune 19, 2026, 7:17 p.m.
Changelog

Added

  • AJAX cron scan ticks — when Nextcloud uses AJAX/webcron instead of system cron, queued library scans advance via /api/scan/ajax-cron while you stay in AudioCheck (library polling and app-wide heartbeat). “Scan now” still runs an initial in-process batch; remaining batches no longer stall until a full server cron run.
  • Stale scan lock recovery — abandoned running scan rows older than 10 minutes are treated as resumable so large libraries cannot deadlock after a crash.

Changed

  • Library cron callout — explains that scans continue while using AudioCheck on AJAX cron hosts (system cron remains recommended for large libraries).
  • AJAX scan tick rate limit — 120 requests per minute per user on /api/scan/ajax-cron.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureeGQI1vbXZcWucftZYcIA0TsZ2vgHuGiAUqXs/l09B/vCADzp2LDJ1qT6X7I8SN0tybnfjYv0KUns/VcMjYZI/liyDB9AJSQIYGO/9hwPKbjyeqLPiXbP391GwHpoAcZtZs3KJQY/Ufyl7+QR44o//+81C4FQkovYK1vhQFJLUCjdTncMiESHh8ewU57NM0jqtsU1zx+aqYZLS4rkg/K1sdQq216A+L20+g7bGjMEa4NwAzrApmnLUNhTW4NjVdwAHjJuhrahVA/HWKhgo/Sakz7TlttO8T9sCzdUl7UOejDn0KnQO5XmYFqkxa5i/M9atHeIsij7L7KKKIbvReYujL6MvReZQchzMTYnVv39kZZ2TlfrsKwrevQRf+CKNczpp0tsqbrL3p6lo1I9D9bb1Xt045qA2c2q8IL3b2fSCY7emGGJWvQLtDsEZ/uAg28s6pK8wuur5PJWBFRV3lRiQtaIIgjtdggPWK//+Mo5+58hYgM1EyzjC/92lmnO510xXgEocC1JRRjlrYCoZGvpCmRFEza9woRsdb2dsPedx/XuIO/dvFpQ10Zw4jRmVTzlr6bguua8stUJ5d7P2ltRtVHNOtJck4it+pxqzKnwq1e//0QdQIef17EuUq7TgtXpONGwvGMioKTzveZ9XprZGfGUqDTLgZgpcaSyJuZDLvw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.2
Release Details
UpdatedJune 18, 2026, 1:10 p.m.
Changelog

Fixed

  • App Store screenshots — screenshot URLs in info.xml are now single-line (whitespace in the URL text prevented the store from loading images).
  • MP4 podcasts missed during scan — recursive library scans only searched *.mp4 when no audio/* files were found; MP4/M4A/M4B files tagged as video/mp4 are now always merged into scan results.

Added

  • MP4 audio container support — .mp4, .m4a, and .m4b files tagged as video/mp4 are accepted at the file gate, indexed, and offered in the Files app (extension-filtered for video/mp4).

Changed

  • App Store copy (EN + DE) — accurate format list, clarified server-side resume, removed unverifiable WCAG certification wording; accessibility described as design goals.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureT3vGGbmLd07nyi0eKXGtXs/jwWf/17iRFXBQQc0fdpJDqvMcU20ZdcyR2LVJoWdX8FimEA1VZmI0tVmFDvUrT5bdPNNn29O09MAVd9ERPhtcTWagy9LJ7roXxaHZ6ZiB+PErl2581x/+Hrf90AHcHNcOcqZ0gE3dOUjCE988aZ8Z7fXQ22LWhkJQFirlO1uq30WP2vqQ2k2Yt5fOvchmB5joPNZHnbwg5Vndmitv3PTaTruytzGoUzTrzPD0n0E1OPO/lDjeslW32UMiK2DRtqUUVvDPnrzLA3L5IBcST1WU+N8COf+agslTqLp5M+m8+LKrxuQaOh1GX1Q824IFgkW/8zizXyt45PWJSyFQYNOtlEspl+IX8hKyT2gWguxhQP6kefYBhb/WJrYcemcwcey8c/StlUKYjU8bIulSTl+Yd95YO/sMaHSneeY7R7pIX3Z2OFRjoPGVaMmuoB/hdQLTw2/V8DHCHzZlfpQHmZblCQ3k2p0o2gKS/qlgUgqtEhHbs2VBsg3ugU4Iji1z6vGTDe++R4YIjCawU5xUi8uRV7KH7A8letsHsa2upRHfR0Poe1r8TWni6qBiPd3ZtoGxh2U3QDhccwHnmUYPxE2Es2cZ4Um9t0SWX0TId4+7DQs2uatnHx7MrJaCIMlGlId9VGGLUQFWQD8xlcUn4lU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.1
Release Details
UpdatedJune 16, 2026, 8:13 p.m.
Changelog

Fixed

  • Queue destroyed on reload / app switch while playing. When restoring a queue that was playing, the browser's autoplay policy rejects audio.play() with NotAllowedError on any fresh document (reload, returning from another Nextcloud app, or a deep-link landing). The player misread that benign rejection as a media failure, marked the track unavailable, skipped through the rest, and then cleared the durable server queue — losing it on every device. loadTrack() now distinguishes autoplay/abort rejections (keep the track loaded and paused, ready to resume with one tap) from genuine media errors. The cross-device queue is preserved and recoverable.
  • Durable queue no longer discarded on a real playback error. A track that cannot be decoded in the current browser is treated as "unplayable here", not "deleted by the user"; the curated queue stays recoverable on reload or on another device. Only explicit user actions (clear queue / remove last item) wipe the persisted queue.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
Signatureai5A4WCVeltI2oihLkhMkkv3ONBNXb4T8FTzRwIjVSo0ns7GY34IwJ4iM5YS17YWC9qJVWEyAnScnNEkLcFMvJGiIvBH+TAzFZcGXzh/v2CKEZU87Dhd7ddczCMoyJ5vRk+tK3oD4idftiC/8HvyxE19O7QQv4XDO8+U+YX8MvNflhqo2on076ICOK3qYlK4G/KsNkXlv9YryLVJ+GjSkXVx7hWFQeUXrbyqmVNDYBtLpfo5yr8dQZfWmVq822TIlpqXKlFJF8AHPfixuTbaq3VE6JvEC+zvy7ngEpnV5s5Sh0hoHaB731PrGzhXR48hEvdfgUVW7MkyqL0pE0bEcyavi9NGw9HuzLshIJg7Xb0tFy0yZENOJhn9oiVuOiwRqTotiBCTIDVlDziRRNDDKfIDlgGagIEKctBoN8AuVSku0IRN/4GKYEORVWGqB/ER5AR0LksqSCFIA9VRYdtvvvkKyFbovZUAyLyW61miWtGztYoMTN5//708ooWc45n64KfL5VfTLUIV5hrJAkz1DtwlPBpGnOYKhUIVG9h9wIbT2ij8cCMeT2jSdrpAIn0hroK1hhb2b4Zo1Hx8BnK7ekeLLC/ay481STM/CC2ljPtEiepgjT1OC7+Q+Fc+Tt3rI901YMWi9eFqumNW2s88EDqdhHzdWA87RT6a+QjledY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0

Nextcloud 32

AudioCheck 1.3.9
Release Details
UpdatedOct. 10, 2026, 3:26 p.m.
Changelog

Changed

  • shared app-feedback render (focus-ring + toast-dedup SSOT)
  • Atlas farm v3.5.14: rate-limiter parallel-load fix + DS contrast suite + l10n regen
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureHyFb9gGMjcEuZuCndb7XQSZTtc4HVGM4FClOArQcVWEo9pU9U04KJTko6NMgwWXe0lO+Ia+D/2l/YiL8g3X/vLUe7kVOkIMhR4Hb+9Q4COs/SFMpcwepWDeg+EeYWQdlK0g13yT0gJvWclUI7nOOipWp5oFWoGhw7s2j35ZiZsOFi/0NOFskHHViWqrr4uv0Flec3+FrDdcFzFVyQSwz2I5CrqVPm+wawXIcaQU8CP1vMfl/auUOdylyoYAohtT3xGFEVnP+ZnvpVNRd3K++upIRrcsuwQf+gz9StuX9licVRe8EJtzUefK/HqTTLjTF9oUYliA82CFEdu8xOlwAu72IwLgxw+CxHN0LSmY3v42AvBYHUhNhgbtO64o1lEDUKh9k20HqoD8yBTherO2713Ny2Rlq/+qMvqZG6JdsF/93LJVxE2KycaSiYuWnNynnn4ijMX1uXYUFIuh9csoPAytsJ5OponVPcAKsGj/V/OyELsrLWexsBFZR2q+qsOXp028XhLQrFifB5yGXj3RTFKZAk4IQHXGxyzgNlr5+shaE+HVcrcbX1Qqjy1HX/tP/lDBIdmHmH7zB/pS4N2t6R35IEPqJDSQjaIJ7GZsnwJc8AitnTMOZyHoDLzJuIIxJ3rm6+LmVYNmnYO9ElhpGn/gSS3F0yayUNpJukeRCH5k=
url: https://github.com/aSoftwareByDesignRepository/nextcloud-audiocheck/releases/download/v1.3.9/audiocheck-1.3.9.tar.gz
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.8
Release Details
UpdatedOct. 4, 2026, 7:10 p.m.
Changelog

Fixed

  • Mini-player touch targets now meet the 44px floor under Nextcloud core styles.
  • Localization: fixed media-playback mistranslations and restored missing nav subtitles; Swedish register cleaned up.
  • Uninstall/upgrade repair paths hardened.

Changed

  • Atlas v3.5.14 verification pass: expanded contract coverage; focus preservation extracted to a shared module; store screenshot URLs realigned with the published listing.

Changed

  • Version 1.3.7.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignaturebvKCuri5VKCkgIxnEBYo2YQ79EAY6Uwpc1/R5oPabr5dG2EM1Ct8vPKBt82c83j/u3MgjEWUBunzqfTEZ6UWe/N1eYA5m8Ds5XtAID35pfVTg+/kQxcTYUD848Zjgenl0kObjawh8IT+/t9F7c4TvqsmsSdOQvkRPDy8u9O06U2U1TLUbKumRY1OJ/iG72d2p3UNGKicmSHyGWeAtQEjJRHapD6zhE4w1WQKfFaJovHf3xs+h5FFgkc8OJQFWBDolCHIyvvOukv6lVVuRzsTeUh27+ooiqxFYAmzU82/TA/zhPX4ylUXdV5oeRLrSbaqOsFlZI/I9gMrbDy7gnrPpWPMFxuvn77rMIKMH+WZ8p9von3ThfPIz7fZn955R3PibSSscDOcIYzOR4Nn4KFkomvBsmgN9PFE7pAUEFma4trYL0jwLnBI5JyzXuwx12urbfXDBp+XKEy2UpMEhDq5bQ7YeQhfbxsbaplfQFqDzZlrB7KUHY6ZPw5/TdfhQe6kxfMK1iBdg/f3q4hIe+PYvjToKuRqvXEEUwmxtp5rf4Erl3SjtFvld9BVo394Z4ZwrxIAdbkMIgVzcmAP1XXlB5yj6Hv4M5wtKzD1pMi9O97T7QFtgAiahfP25M5HCv1bpdN7HZgNrFCofvDRgh/MwYET82Xva/oIynLEAeumuU0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.7
Release Details
UpdatedSept. 28, 2026, 2:34 p.m.
Changelog

Fixed

  • Authenticated stream opens are rate-limited (300/60s per user via shared ac_rate_limits + exclusive lock); over-quota returns 429 rate_limit_exceeded instead of opening another file handle.
  • AJAX cron scan tick is POST + CSRF only — drive-by GET/<img> can no longer wake the scanner; ApiCsrfGateTest treats it as a mutation.

Changed

  • Version 1.3.7.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureaAt0DHnsYy+k/xKgmVgH5R69Qex0ymU1wa4a9O6YF41xEGStcSNNZOpOcSuvF88Y3Hw59mFZGw9oTOPGpbD9+4pavqZs9YS+WbQlPIovaxmXD7FGFis9A/ebxKplXt8/6x6I5JAbVSS89XJg/fLQugUcKawhJjOdXfRsZfdJiREBvl4dnaDpw0OdkwqOEt2uOoy46+n04P+r2Vi7QW0qmNNylQdeoBPDFs1mevAvrkmShKavFkH31HKUAZ/K9jwoPIKhAqWY3Z3krOYs1I3ivDDX1FL3qeDqD/HpdsSqXTWnG1hzaPIJTePVo9guOIAyxPBkRAlD3wRGhzo8z5Vo6LgVJBoLtq/ALtgPQkUkd6EFE0Fa4M6zUl93mhbwwZGuKFuyxBBWtDcFCtOUvzm0jjJDiBI1hW+IIrh6LyYJAYWwjuS2vu8ro2eCMr8f75ntodPDwidChoGU8EtUBTAx9GR1qM2KPEFuLnhk2Up4ISiTasdYLAL+ZMdQMVDV/UPq35ikUnbgC01Y4qjpRI1KDJQcsZ+14FRbMI0IvQ6E3nGy7pAf+OdeaBP680RcgU5Kw1cL+vGoCWZ++Y/hYYINT1cm/pYRWLTJBph6pke903rgOqazpMFd6+sHzZil7Kh/lePsmiRu2GihDZQHbTeQiwlCUc4+kW1hVCylLPZ3q3Q=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.5
Release Details
UpdatedSept. 4, 2026, 7 p.m.
Changelog

Fixed

  • Global mini-player on Files/Dashboard: use OCP.InitialState.loadState (NC32+) with UTF-8-safe DOM fallback — .load was never a function, so the overlay never mounted.
  • Restore now waits for user prefs first (resumeOnOpen / volume / speed) so server preference races cannot autoplay against the user’s choice.
  • Dynamically loaded player scripts are cache-busted with the app assetVersion.
  • Boot is idempotent; global mode is set before the player stack loads so shortcuts/volume stay scoped to the overlay.
  • After browser autoplay blocks resume, Play is visually highlighted (ac-mini-player--needs-gesture) and announced politely.

Changed

  • Version 1.3.5.
  • Global overlay shows “Loading playback…” immediately while the player stack loads (no blank multi-second gap).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureUZ1IhP7Aocpvj2XN89U4TEq70g+n8EgkBrQJ5sKx6RPmunDAkCnrPinIFWgeqKEe5mV8W+jczh7uwfWBnGBduQEVp5uojAX7s5yYfMUdxdwObzGmT5mT0UxXVuVJvKNoo1k7ddOeQXpO9lh42KGvYMW0XlYY0xYlvI/rv2xBJbIk9l4vfjIUe2sCG904dFkVd17Z39qlmeCV2ZNx7g13EGbRsNamIXQLugjOiQihntQTsGVA/ekwhr2RIV3YaEe5QZkprHcgDUv44vWwMWaZqosNjk+vjxKfWhe6WleO8nbYUToyhDnhT6Lu+9Wm4HeNdq7eA1wjzfqSyZbwt6U+HcSp3Y45ql4bHkVnh0x8pQlFlsFg4c5B9Iva3Tz2l5yoYjZzJ5vvJqZdwpxlgThNaJY4BaIfZv3eG493iiZTyPbZUGmfafC/lkLqAW6ncPZqqhdkGwUaDEDvyl4MJlgp3NZKUawVH2GsaYGF5NtzO05t1e1tJVCdDUlaOYG7KyjCswf+Cp6rJXizvM2Cw+k9ESfoRLwqvjtoctUiUH07S+m42YcXjEWhT/qzCKqQJGC84Xcl6vS7gs5CwIjgnBc28PyIPdKmnkQfFDEELf+CRf6ozeC03kCS4QqbJl1Tuc6mZiTXHQN/GjjNF/MzLJD109ncvL6wni65JxOWsdhvHbI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.3.4
Release Details
UpdatedSept. 4, 2026, 4:39 p.m.
Changelog

Changed

  • App Store screenshots refreshed against current UI (Library / Music / Playlists / Favorites / Browse / Settings / App settings).
  • Version 1.3.4.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureJmIMvvaxd8n8+hou9lcC773VzsSsqDI50jrAzz2JsY/RU2pPTSs+T5rMQAr0/RA7jVLa1hCF1c/xU3kA83V7MWB8kf1ht3HIoyNcX88L0QkMluHZksCUlVI1OV+SpFpiCDC9UJOBxzMd9n2JP3HOGJ0Hmv+ObxtEqJR2ibc4UPfCETkRtPCtkmcNiS0Qawn6gITeoWXVcMZDonsaLqUj0a8Sy68ok5Ld+wPmBfDy0MPr+amK5H4PXQ1HzUBdt6iLIkSa6VvCsNz3dsA+PYV8BRl5YOHdOXkZCHVdX27xvBc8JMHYb4zfyfZrnPym492lR9jHQpPoA7ApPhEEFuAuyErjkznDpWiqKLGuJT0KY71RtqrgSq/Ee4VRkuphZ2VV45ttZokBpCh9gnv5UZED/xaf6Gd3wU4/QIys8K5JNXlxn6d2qseqjdi8c11lwel44y2KG3FaJJQNZq6dxFRtTk8Qm/EEQ1QF6k+hrIGw8cHEvM/OTT+khO1qdh4KSCEXXXyRzfHYR3n3IMM737UUG67dDjov2jys8jHEVGSmXEME1SgAC0MRKlYjXjrqQxA4sq6itgZLzavxihsqOkEhSIGsG/2alGTqLOM4Yzsq3kwDKU2ioT2xiI6yvJ50mVOe0MCPAMPzrQPzEraEY+TvYQ+vb9aIs62Xyv8PSIXXZ9s=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.19
Release Details
UpdatedAug. 19, 2026, 12:52 p.m.
Changelog

Changed

  • l10n glossary alignment: corrected wrong translations and standardised button labels across all shipped locales to match the cross-app glossary.
  • Help, Support & Us / Get the App: WCAG 2.1 AA hardening and translated footer copy for all website footer locales.
  • CI: collapsed GitHub Actions to a single PHP syntax-only smoke job; full test suites stay local.
  • Nextcloud: max-version remains 34 (current stable 34.0.3).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureFoH4jRGa4zrS4ytYj280rKDpJwvEKJQ8U2IyMoNJheQb4FwT0D/fBLL/jLFesziPCnz/RIQ+H0dtyYNFpuQwmUYoD7qgLK2dp6i+k9wfGxXg3MzHfwggRnZEfOln5M7OrfrCWr+0jCD7bc+qd/8QY4AWnWYcfjRvY2tYEi7a/mQYEd1t6eE5vcPR4WpHqnaXZ2kUp61eB84hfZEEV8gtOiwBppu1cxxBjyQpBREypDsHxJCL5sfOPYW41UwyqSoAsdafuCW9JyCgE1ENrc464RI5dHzZBQ9Gxf4E7pq37YYUZHUktPJ1rnDvUlhw6et4hSca2hTeBWTtPvQvGpDuip7zxvVdqBS6NOhqqIlAJ1Bm0oWiykoc7E9M+DOhj71EQTr2YGWYtHjnY71nV4TmgOOrqSRkfuYfZSsrlK/XSWwBzcoFRu8Nm3a8m2+ni/BOuNfwAT0hk9XNUv2Wx8nky3t1axkhC6cyHs33/EP+AKTfZtdWZ+2a8WzVO66KZc31m2T1sWhRhJKl5XD4b89I0wg1hNA/u0+NDr8H+CMOPaoFXguG/p4LdRZNssAAG1iAIHlKohGmXyv9MAK0KLwHAiffGYYbOkVB5/eDsmMj6SgO5WeHRZzdr/IQAN1R9enZ9E+xBFnVvK6CdhOopbCb3aNnDHYlm21+wLo4aTcJkVI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.18
Release Details
UpdatedAug. 13, 2026, 6:17 p.m.
Changelog

Added

  • Locales: Danish, Spanish, French, Italian, Norwegian Bokmål, Dutch, Polish, Swedish, and Brazilian Portuguese catalogs (l10n/*.json / *.js) with msgid parity against English.

Changed

  • l10n parity checker: scripts/check-l10n-parity.php accepts the expanded locale set and stricter catalog checks.
  • Nextcloud: max-version remains 34 (current stable 34.0.3).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureHZ5I5vJgBpslFatIeEhBfxHrLQsGRd5aqjQ9J/GV6YTxx4AI/mDu/Dovs/d/eu/MmgG3g5kACOnlJwfXdFjJ2+PDQKR8b7gOVTMAyUrWaJmOZbi40iBkq14MI+Mp7tKbnhxtK4jfczIYVKIyCXtD/i3EmCZkUoQJVDJUK25Tvieg9MFBEmeMpDw6+0azdZmcapUvFlqrVENhx2kDs3d8EAGlJUwKcbd6iZjftBy+7MHExuE+d9HziR7nqVji8wixyjHVjpAyM7B3nqAsLjDdGRTLEyNyl0vT880wXtGZDQ+tlVTFa2kFBLzgrdTjPSXF5ZKTdtRUrb09ThOrPUsvx+4ELjonewUwsiZzTNyrDz07ZWmNCBMmme0KmK51MhptLUUjXu0H3NplS/dtA8Y9DQEkZ+wY7qB9uHz1JmDn8x/xklpJwQFv8LxkRdNZejRBT5AJ9ZEwXICJ6Wrf2lYGpED4EEKp8cYTBrxmbAYzGicZW+CUWs27+n7sp6whgkI+Ecx0ngoLqpHMMDoWRnztuDfWpBBh343e2GOzob0m7aTzpIwFE2n9tg066nikaqnhCd6VQMuP71BfvZ9R+PHt3ejg5f3FmMwzMTjqaOQhCJ9dxBOYn5zvU2vs/eC9erAZPhGmI7Qx1CcWO3CxcP6JUIezEpFDP6RMyvvd0dBOd94=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.17
Release Details
UpdatedAug. 7, 2026, 3:13 p.m.
Changelog

Fixed

  • Browse showed audio outside Library folders — the catalog no longer indexes or lists tracks that are not under an enabled library root (for example only Privat/Music and Privat/Audiobooks). File events outside those folders are ignored; moving audio out of a library removes it from AudioCheck (files stay in Nextcloud Files).
  • Removing a library left stale tracks — deleting a library folder now purges its catalog rows so Browse/Music/Audiobooks update immediately.
  • Empty-library scan no longer walks the whole home — with no library folders configured, scan clears the catalog instead of falling back to /.
  • Folders facet invented parent paths — Browse → Folders no longer surfaces ancestors above your configured roots (such as /Privat or /).

Changed

  • Library UX copy — clearer remove confirmation and “How it works” steps that state only added folders appear in the library.
  • Nextcloud — max-version remains 34 (current stable 34.0.2).

Tests

  • Integration coverage for library scope (out-of-library writes, orphan purge, remove-library, folder facets, empty catalog).
  • Unit/contract gates and mutation gauntlet for indexing, browse joins, and remove-library purge.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureCQSfvNab+sLV0AaIzS3PNSB7PJmM2jwDEtvmy1jzH48WPRjDTBDW0eUlMn2+EhCkfC1VrMhAEVnuFJ9/lDOrihRSJNJKxWmh6jYt+TQOl0tomIoVFgUawJSrtHhQq9JOhzoclyNxuykan3AZNrDC1jz7bDDPafVVHi+Fd1cFwliPvxtTdJ4YwLUqSY8/XopMmJgMAT3pnq3uQWp9IBKicIdQ33xN6pOpedrwcRQFPTtqCtoUHfsbpaogWwyk1UGfOe/4GD7sLq+hw7WVzbMli2rhQzPnJqYRogiGutC7AvuCuh2a/1L8Hs0P0PVupszYOP+C9ECKg+FNfGpdRHOxCNbDYv7JSNVAv/FxWMmmjif97GfQR+Ly1Ev43Rz6td9uoX7sFkgtK0ZPXhcXj+XYBbV2S8HfVOCM9wVglkh5wytK0u9+rsS1uDLRB9/FW7it9DSOIicEzIXNDQms5XJ1+c3x7+mAAYNmvIHQR8BVhC8e0jC7Ve2kOXL6jbS0lgvMuy4QwSO6kOLr2jMeghavRruOj2a1IDjST6tlgja0FLQfdVTFLRS7buJdOpSRCIpMb2RFHa9oG7ff2gvBUI8JlHsAdHroEXACzROT8C2jODK9hNrmRWAD0bjT3a1pD+TS3Amh13sS+iNfGAOr5ZGp8VDZwesbYK0v36NzBMxSY3c=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.16
Release Details
UpdatedAug. 4, 2026, 9:14 p.m.
Changelog

Changed

  • Library folders UX — folder rows are a single clear line (name, path, track count, Remove). Content type and nested-folder settings live under collapsed Folder options.
  • Add folder flow — no content-type modal; Music / Audiobook / Auto-detect shortcuts, path-based type guessing, and automatic scan after add.
  • Store listing copy — README and info.xml descriptions clarified (free AGPL web app, formats, get-started steps).
  • Nextcloud — max-version remains 34 (current stable 34.0.2).

Tests

  • Journey + axe WCAG 2.1 AA coverage for the simplified Library surface (library-folders-ux / nested-scan e2e and PHPUnit contracts).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureUubMG3p3B/DZ3peLbwILnZdU4kKfomEhp5GJbYHG4DoXx3CkKAzKLBRdNqAn3oRVJnr+b1KGmVk2J6R7Vf6o32p7TCJWncl8vvNCu8xs/+T8bzvNNy/5QroZsYI7bRAGD1WiUINHvHzdh308HOXPfEsk1vpVGEIOeijX2k43P72uYhH2RsRwS8aoOJVo/Sreo6Q9UYiqJE+q0hldHxLbpBZCkhk2H131GA6SyAoNgZw/+VpFYV2dn744TTh9Fqf73sp0mDofKFhlJ88FDVlnF4s/gAdTS57WDtcbGcabcCqYpGe9v/kLrktkw8Fjy8F1wxW7BcG8D+RZ6bkN5XQmmo8iKF5+cRBz4BS1nDza/E9NK6OcuoWHF9gj3lOLcqPCdy+ECILKV+mlzgJhv9+wocFLyft5j/eQbl0TwRas7CVf3RQ/Pr6XJp7v0ow5WUD5R0ByYFXxyQuUa/0RO1bNdsrW2ymBe6LCbPtnzCEP6GcbBeuqZuL9Oijn/5M389DRecA9FyOpGlZSnG6wIM92ViUekHmGdR+t4Qj01ucV5z70swLve7cD5kxlQFAxwH8chdLacQqbJCrZ+f5KKfG7doTW6p0USFIm5M/rkaozs1SpwM0T8XRu7VLFrnHiiUWodA7a8Sg839jYkrdqQ/eCj/mr5KtIoXzIuXGqT6olu8s=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.15
Release Details
UpdatedAug. 2, 2026, 12:13 p.m.
Changelog

Changed

  • Packaging release: version bump for App Store / GitHub republish; confirmed Nextcloud max-version 34 against latest stable 34.0.2.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureI1SMSyNnozaIb1DCCg2uY/BLzxKDfhYxeBpmy2GdCSb4N/6EWoclCmNazmCodz7woCEOQVKPr62s0jyJ5UZ4xLEcIS4IinW8vJCHQKsPMURXao/YNaVkn9wIflgz7isyd7El0DXjUBbqgIQltY1QvrlA+HL877NarmEa5JOf8C/itN0fSUp1De68b75obdu3vLpZVCDtnMVOt7G3wobjwe0pQ+ArxvSEUrrWi7hOev9ipaROW4eP52dAH89Yn7BBzkHoAwtSP8lD4/7BT2heWAR4SrtMcxffmo0C9ZRwCNS4k55T7xfe3bhQtiKJn2EsvwDy6PnJK1QY3IAbw76Dkbwf9rEqJgqZh+VVNLJh8XBKAI4n02J9A/iUEAEtf9uf2Gxzza4kk3SHCDrTkuza0CUnUuFsFzIbSILfG3vH6gRFF+sNyOkce+k2C7KbNumVj6PxjtTOCWDcwyZhj28jEKx2sqtzfZGoo5k4Z+WGjeuqYTFam6sIm4vZduVfnOaO5zmKiWjFWc6BrbneKj1o++gR/GimY8Wt5YCvLBi0CWgXM2zKrhACg+USk3B4LySIT5WXTiYn/L8/BPugZZLDfRnlN+Xk6yl77ZERA41jmMkKeoDjow/xCYEG37fhau5oKWcr1K8H5uaJ5wQeVFETt8ipibqXCZmc+W9dZAmko7A=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.14
Release Details
UpdatedJuly 31, 2026, 10:58 p.m.
Changelog

Fixed

  • Nested audiobook folders skipped during scan (issue #9) — recursive walks no longer drop a book folder that sorts last (or alone) under its author. Layouts like /Audiobooks/Author/Book/*.mp3 and /Audiobooks/Author/Book/CD 1/*.mp3 are indexed completely.
  • Scan cursor size on deep trees — walk position is stored in a compact path+offsets form so deep Author/Book/Chapter stacks stay within the varchar(4000) cursor column across resumes.
  • Multi-disc grouping — untagged files in CD n / Disc n / Chapter n / Kapitel n folders group under the parent book and keep disc order.
  • Same-second scan prune — a new full scan picks a generation strictly newer than any existing last_seen_at, so tracks indexed by a file event in the same second are still pruned when the file becomes inaccessible (e.g. share revoke).
  • Batch-boundary infinite rescan — finishing a library root on an exact SCAN_BATCH_SIZE boundary no longer persists an empty walk cursor that restarted the same root forever and skipped prune; pause only while the current root still has work (or before starting the next root).

Changed

  • Library UX — clearer “All nested folders” scope, an Author/Book layout tip, and Settings copy that names the nested audiobook pattern.
  • Walk depth cap — recursive scans stop descending after 32 folder levels (files at that depth still index) to bound pathological nesting.
  • Nextcloud — max-version remains 34 (current stable).

Unreleased

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignaturekRn8Ins0iJGjq8QIE9RSXuWodovQaXRFp1l7YGcmUlmIOEmixZZvdpauj87CmbFfyUECJefyuX/Zyyaza+GhJj956AHQhEEg769KX8Wr7458OmKkfsMtPmTfE1u+NOl52FU7XLGYhkiuiiZzMo+FgO2o51CmWqL3qZUsIQsYQ0tV7i0czPKYeSe6F6eHLH/DDwzj2zzpi+wYOX/xmxpwcsCs4nRiPZ4fAfuQGUiZPXPVwz+/w8u9hz3wS0B1vxsQ2oorvsLFM4w/kYbK+xqyHt+7VV8OkOAwNKnZqGatYH5jMOnspmqKGtVeGc7TOzCISmTiry0gJG6gY3ph+A7SE4l27dHKOtXPZkKnEF6PYrvPN39G06nE5t1IvuUUr4463dR3zp7Dmi5a9e6SkkbtBRC46pO6MD7RI/1B/JtTILU5DcQBTDA2J24HclNCu2E8sULEdzoEqBraly3oSe8obWFjFw62iTITvkToieDkztuZ1LTICykEq+YmTrQ4qYPRnxA/crG1yVyl6r/NawDL0l1MWQJB004pOqmH2tjTWZOdWg7CRgiLn9bowIDkFL89TFo+Ej2LWxXyLXl602lgBqbwMrVIXoO+RSrn0usICB40zX/oC1ihaLHjKYGaFQiFQMHmIYfCQVVCWJRLFyVlo3+UDlZRxqy7AG1WrejoNfE=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.13
Release Details
UpdatedJuly 31, 2026, 4:36 p.m.
Changelog

Added

  • Mini player ±30 — jump back/forward 30 seconds on the mini transport (same contract as Now Playing, keyboard, and MediaSession).
  • Hide mini on Now Playing — the dock is hidden on Aktuelle Wiedergabe (SSR + SPA) so the full player is the only transport strip.

Fixed

  • Mini jump aria-labels — PHP t() cannot substitute JS {seconds} placeholders; labels use fixed strings plus client hydrate from SEEK_JUMP_SEC.
  • Focus / inert when dock hides — keyboard focus leaves the mini player before it becomes hidden; inert blocks interaction while Now Playing is open.
  • No-op relative seek pending — clearing pending immediately when −/+ does not move currentTime (e.g. −30 already at 0) so sticky pending cannot skew the next jump.

Changed

  • Responsive mini transport — five-button row stays usable at 320px with ≥44px touch targets for jump controls.

Unreleased

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureeeyzFx9yVprYFecyG2++BDonnwqVdzr5C6fwmGhOly0kfgLs87nkGK/6Gv1Y7RHH5tpSvpr283z3H3pSQoDqZhxPyiqBE56oBjfK2h19Ww51UInil7kmBICWps7KT8xK5tetj0ozFCkjeA/0VX+ueJwcspM1qHXTPL1EvJwRi0abmV699RajZrrEt7oh0dYYQ93Y9l5VJkjQ9Uws5oimqdj70NBN9JBbzqc6QPlubfeMCsU7DGMAuW3k6m8xVQByT6QzJzAHbPM/FpUwdY6jX7/ktYdZ+/OY4o1ofa8TxUMjV7supVJF0SPIfCw4GzyrM1cx7iKfhVkpZsxa9n2gp5QomW9VurvH7vfJCGdTlMxdxX9mjRxb1tbEr7rs96Sq2A2whO97bOdibhpza9g9mJdwoetqKxgbDSYwNbUghX9dRZ6I+DjxHUg1z6ZE+YI2gmSpRU6DeGbaZzL859dX01BtviYAaYv8sXowvIErE4vv1RfIHShLMDJ+wX47vv6dOuK+fJMI9wN7f6KsCdxv84smJ/hzmsuaCFZ7s+5Lfx4OW3e6LGKIfMQfYDctgeysPAGD8lBx5nkcbHIx7/wfh0ljvm6dmvUpAc5sjPwV7hSTFd7Uv7Z0tew8CHIZOV4y14Pa99eo9pNxX4GeqWx6jrd7P5vPxOYZuL4ZZyO9GHQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.12
Release Details
UpdatedJuly 31, 2026, 12:19 p.m.
Changelog

Added

  • Jump back / forward 30 seconds on Now Playing — podcast-style −30 / +30 beside play (issue #6). Mini player stays simple; open Now Playing for jumps. Keyboard ←/→ and MediaSession seek use 30 seconds.

Fixed

  • Rapid ±30 seek race (web + mobile) — relative seeks accumulate against a pending target so double-taps cannot both read a stale clock and land on the same position; absolute scrub / track change cancels in-flight relative seeks.
  • MediaSession seek offset — OS/browser often advertises 10s; product hard-locks seekbackward/seekforward to 30s to match on-screen controls.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignaturePOnP8cp5nA8/cw3K2jjsWjDfLC83cAhtbGU3l69+0EIJwwgBfcGpYHK4N1bgxVRqDjrLO/4MJe3LDAmQbIvNLs+Tqv2f4QlE82LfCNS5Pqw0jQWWamR+irc7JXdMONcKvdSZaExWph3ySYcgGU6ABKGAl6K4PWepNaDc4P411lklYFcv+WXr60B9j5euPNIvr3zffXnpvsXzID9JoN7PAO5krreThU3lQHjjuivvKXLq9EZxyhHb91/KoG47VyFMIr1BJgu3JLhx3RkJoSNCUJaDzWnHVCO+2nizMyTBXF52PyF6ikLuVInaY9DOtcmvFAGSyME/gUHSzNSwI30yBdJCKawj9cKOGdXODy4UV0MDQfZjhl814k3Hdv3TDMNZ4yeGIjFpMp14vCBLvNbIe3h3wMpayPhGq3iEhDKu1UXO4WKVtFGG0+zDpuQEucF/fdWyuXKrX5qzK1oS1JNSmLC+/ZaeDdWBF8R5wKIBhGoLz3/NScsYeRcX+bNgJNDOHWNzzx+gdllrjyPhYmJmliIkr56Z4337apsLiosLi0DFS1lM7YCQ9MI6x0mzwEbAzRATLJIfTJY3nPCHLEuwJOXd65TNnpkwKfTCIpwna95zZRq+4vMxK0q6YiYNcq9XwfY7ULt96SGWcdhsKb14793w8xXUIQx+zcEPSpGlv+0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.11
Release Details
UpdatedJuly 30, 2026, 9:38 p.m.
Changelog

Fixed

  • Fatal on every file move/rename (issue #7) — NodeEventListener called the non-existent NodeRenamedEvent::getNode(). Rename events expose getSource() / getTarget() only; the listener now routes through ScanService::handleRename(), updates audio index paths in place, purges cross-storage source ids, and never lets indexing exceptions abort DAV MOVE (copy-without-delete).
  • Folder move index drift — renaming/moving a folder now rewrites descendant ac_tracks.rel_path and matching ac_libraries.folder_path prefixes (Nextcloud only emits one event for the folder), then assigns library_id immediately from the new paths (no waiting on a background scan). Previously unindexed audio that entered a library is discovered with a bounded synchronous walk; only overflow queues a scan.
  • Copied audio never indexed — NodeCopiedEvent is registered; file copies upsert immediately; folder copies use the same bounded index-into-libraries path.
  • include_subfolders on path resolve — library matching for node events now honours non-recursive library roots.
  • User/group delete listeners — cleanup failures are logged and no longer bubble into the core delete event bus.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureJ4PQtIV1I7xSKw7cG1ijV0lZ2KjgD63Y+zrmRuXSjlmLYNiksrZqv54YwWcHR3SQthSxBPOC/8h8rQ8JOHB7nWBwcs9QBB4PgU5C0F5nCnmB2Mb9Yf8LelSAdRrcZV7U3Eyf6X9/Gr/JqcOz6WgE0N2Eg3gyoDWWFmnnd9A2hqprazXx7wthwWOdi5+zA3umOjKJscQdjXKeJ/Ihs7tuFWmv1puISUFNhLj5UycCeNl+1vQ07JbAz++uRIm0QRVeJzAqt4hXBkGGaLzLW0teAkZnbEmCwLhZTrgWqQXVw9qYbnoY9cmWoMNR6RF0ShFAtvW97rv9u0XK4cRHuilmC9NP8KrfRMAjXSBE8fZrvCy+FgFlo6neM8CngcUgHd6n27vgArhWq1c7lQpbONj48jhV6dLINJkTIJ6wGnBZcPBnqhLvOWwM/574wj/0WoBP9oVYlKALsV6zCvp7dlRPZeS85+HFiSeXw3vtUKxoQKz4T+vYYupNjZGYTNL55THtH5Kgn7siKeyNiaLfushQRmvWD9T+7flZmgogs5zWxet+OjRO2WWqQeuCh9L2j9EtW527UYrO3QecCeu6Cj38+7WW+S6t+eeFJSXCotzh9X6dYXVnUCUOyrF0WwGS3huHPfJJsJqYWbPaJ7AOR+6XPr0dqKfZlnjZqFGOKulJxuc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.10
Release Details
UpdatedJuly 21, 2026, 11:19 a.m.
Changelog

Fixed

  • Queue-wide listening speed — changing speed on Now playing now sticks for the whole queue. The HTML media load() algorithm was resetting playbackRate to 1× on every track change because only playbackRate (not defaultPlaybackRate) was set before src/load(). Both rates are kept in sync and re-applied after load/play; the UI reads the session speed via getSpeed() instead of the audio element.
  • Keyboard speed shortcuts — [ / ] now persist the new rate with the queue/session (same as the speed control).
  • Settings default speed — saving the default no longer overrides an active listening session mid-queue.

Changed

  • Now playing speed control — clearer “Listening speed” label with − / select / + controls, hint that speed applies to the whole queue, 44px touch targets, and WCAG-focused labels/descriptions.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureYzRV2/sof1CISYuL/0VSftxtNGIjW6NT6swdgC1ygQ/aG/9huRnCOo23g//CcTsOPKMDgM+lpty6YftiHdDXhXS6dzbIcSqdDXuBOcHyn0fTyWHBEF7p+APMswQd5zMBhXfsxje2IXCr3OKyUIUbbSNrj00FFY1dpkS3M2oO9ud8xQ8Hld0cUcDtsw6rSmlC4kj9FN+6+pOrT1P2qMGOgvgUYf96HL5wY6oFRZTgaXJ0itz+MaHI/uvlHclzxR0FcTQqtMljaiM6qcwT81yjfxOTjv/Bs6i/B1YDKwEUc5I8+pUP8zye3sqgPmmopwzMXEpuPpM6U54hABH8IADCniyb/VZHTmTJoHz+OhctNgpsQcNc8BojVaaFa66nY17qHOnsmvlc0P0xPJQzBfXu3M4wnsepyGQPZqtrQ/2IsE8S4LLyqWn0wi2wxNbL/Il/+oHITMbFwKyd+pVpxroAunprQsYe5T4g1aUjgANSKTTmbzMbWzb7k8CIYmAhine/1U3stAfuojIgb8K0HNZUI52OPoTuC4dSiVaGq2zWmQeMy8QantICnBSFRlaxsWK0Mk05UTPCNQYX310Wmh5jWW7lbQLBxw4NdJeObbCULKdH0OkbHKfJiXRNtrwa8bpLzeTFv31peFxEFLyHFiREh7WGjUE+fUdmHUjZm2D66Mw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.9
Release Details
UpdatedJuly 15, 2026, 10:25 a.m.
Changelog

Fixed

  • Favorites listing regression test — unit and integration tests lock in hardened loadFavoriteFileIds() behavior (issue #3).
  • Native widget scheme on forced themes (issue #4 follow-up) — color-scheme is now bound to the applied Nextcloud theme (body[data-theme-*]) instead of a blanket light dark, so select dropdowns, spinners, and other browser-drawn widgets no longer render white on a forced dark theme when the OS prefers light (and vice versa). Modals and toasts, which portal onto <body>, get the same binding.
  • Active sort chip contrast — active filter chips paired --color-primary-element-light backgrounds with --color-primary-element-text ink, which is tuned for the solid primary color and became dark-on-dark (illegible) on dark themes; they now use --color-primary-element-light-text.
  • Stale theme-bind.css after upgrades — the late-loaded theme re-binding stylesheet is now versioned (?v=<app version>) so browsers pick up theming fixes on upgrade instead of serving a months-old cached copy.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignaturekTA/K5U++VfgdYLxsxtjxZdHoshbTcsnF1xoQPIi3JUCH88gDobRUpY1tWJ5WggZxWlve/HquNdt6ZcR5WSB3ymajBfWv3+vTxJWKHNpcg83tFRoq4MHPlnwHAaasAedaIYxrtg9tx6WL6pv4jof/8eN6Qcc0wmqOceCYxnGN1pSoPFpA9euzSLQtti1krxbYI++RgT1w89bvKwnAi7ToMX2HuqzwmU0z8jaSyeI1fVXzo8sWT2IJrYLNMfTdZmgGUjELW7dLnSR4OrjP4STsBWiyLHJrWLlqfa3SBr1aVQdLLMM0QGrnYaPOKEFaFI/WAnOsTYKbpXa8RUiJKnw7xcYaHKDJ9UqJCe4b8rn6/kW+hrXgFvEov9MSWWgPxlohEO7TYPB/JM/71m3KnKkT0oC05UMrbBTIV9KHg12RktHi/FOP3QZazySt7M+vA1oQpFFpLqUG+Ts4i1dft9gkftk38FH/tX+g64yrxNfIGOz1/snR8VaIjCi71loLM6MPrcFGoP0UGuorQKRRi3EDLJbgJLW9yQrhY7WrtfozmoRIPpL7ZDZG1PzF+ri1UkXYrSOY1hSQOsNXfxvxAdM6tZK1ajDdnqnAm3VayKeAqnHXvVOnYkPjyvu+8IfaAAwyNqVBNUMu1yL3Cg1SKgGmctC9wzJ/srdMf1iTwp9ylw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.8
Release Details
UpdatedJuly 13, 2026, 1:36 p.m.
Changelog

Changed

  • Nextcloud 34 — raised max-version to 34 for the current stable server release.

Fixed

  • Scan memory — library scans walk folders depth-first in batches instead of loading every audio file into memory before indexing; cursor now stores a walkStack for resume.
  • Concurrent scans — only one worker can claim RUNNING per user via an atomic DB update; lease heartbeats prevent stale takeover mid-batch.
  • Playlist integrity — reorder and delete run inside DB transactions so partial failures cannot leave inconsistent sort orders or orphan headers.
  • Mini player volume (mobile) — volume icon opens an accessible popover with slider and mute on small screens; desktop keeps inline controls (WCAG 2.1 AA).
  • API error logging — safe() and service catch blocks now pass the exception object (['exception' => $e]) to the logger instead of a message context key, which the Nextcloud logger's PSR-3 interpolation silently discarded. Internal errors now log the full class, message, and stack trace.
  • Favorites listing 500 — ITags::getFavorites() may return false on transient DB errors; LibraryService now degrades to "no favorites" instead of throwing a TypeError that broke /api/tracks?favorite=1 and all views built on it.
  • SQL portability — count queries no longer inherit ORDER BY on non-aggregated columns (rejected by PostgreSQL and MySQL 8 with ONLY_FULL_GROUP_BY); MAX() aggregates use selectAlias() so library sync revisions and playlist sort orders are read correctly; internal Doctrine ArrayParameterType replaced with the public IQueryBuilder::PARAM_INT_ARRAY.
  • Upsert races — concurrent progress saves, listened-flag writes, queue creation, and track scanning no longer 500 on unique-constraint violations; the losing writer retries as an update.
  • Playlist integrity — duplicate-name detection only maps genuine unique-constraint violations to a validation error (other DB errors surface as server errors); playlist items get a stable secondary sort key; defaultSpeed is clamped on update.
  • Favorites shuffle truncation — the client paged past the server's 100-per-page clamp instead of silently shuffling only the first 100 favorites; removed a misleading 500-track request limit from facet browsing.
  • User-facing error messages — machine codes like internal_error are translated to human-readable, localized messages in toasts; network failures get a dedicated "could not reach the server" message; fixed "1 items" pluralization on the Playlists page.
  • Dark / high-contrast theming — theme-derived --ac-* tokens are re-bound on body, #content[class*="app-audiocheck"], and #app-content.ac-app; css/theme-bind.css loads after Nextcloud theme stylesheets so backgrounds and ink stay paired on every theme (fixes light text on white backgrounds in dark mode). Added --ac-surface and corrected --ac-muted-strong mixing. Guard script scripts/check-theme-tokens.sh enforces token scope in CI.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureEAfydT7TAjAp7u/mC4U4BMg430xVorUQLwN9NJ2t0FOyr4iRNrvTX+twWERHgHflQ5YKRTAelQ/Tv5cqesv10hAeRkwdKbI8Ziz2dgVydD6aXMPzqCqzAXvr89PWutU0/GG46O2QEw45mg5qmETDfG88ecH5LwgUuDgTT2C5306oAKghnWZeGQ0MjiZMDPe4AU8d13pVVR9PxqaAlKgzQBAd1qDrelEeRreRA0VKcCqr2emryvfCZNbsFSeLxKVuIQk8Npd0c/QXVxqo4pk/3dxMcpB5HW5jucKBKSob/+1Am4dH7YK4o194GEOhnMuPD7WGDVZwJtnjXykJBHaaxJWl0Un5R1/mncAOPdur2dD40OvZXWCVQKL8Qm3MAqC2YgaPOwewsEHshvrA0MHew4BoD4iyjGBk36Ckry5IG8dsE7W0gDRS1PXOEJH/VjgKZtg0vNOuONubwuhW5N7+DSkJaCzUXwZJr/sXMgbD6R0dxOKs4d04wfcGm//ft+YTX03jZ8az5NPV1yNvM6YXZ7aDd9FxsMRtQloxq9+/C3Qha9kYJ5lP5Xk+s/XoPtQpY2N6RZEQOUX4ZqZ4sNunrao4c0F3XeUC8q13lWsQBma71iG9wm8GJ/SkJIR5ejaRIUTTqhC0ztJFwTEYXVGg/P6Z9cLr+Estq4QKmOT7r6I=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.7
Release Details
UpdatedJuly 11, 2026, 7:39 p.m.
Changelog

Fixed

  • Scan memory — library scans walk folders depth-first in batches instead of loading every audio file into memory before indexing; cursor now stores a walkStack for resume.
  • Concurrent scans — only one worker can claim RUNNING per user via an atomic DB update; lease heartbeats prevent stale takeover mid-batch.
  • Playlist integrity — reorder and delete run inside DB transactions so partial failures cannot leave inconsistent sort orders or orphan headers.
  • Mini player volume (mobile) — volume icon opens an accessible popover with slider and mute on small screens; desktop keeps inline controls (WCAG 2.1 AA).
  • API error logging — safe() and service catch blocks now pass the exception object (['exception' => $e]) to the logger instead of a message context key, which the Nextcloud logger's PSR-3 interpolation silently discarded. Internal errors now log the full class, message, and stack trace.
  • Favorites listing 500 — ITags::getFavorites() may return false on transient DB errors; LibraryService now degrades to "no favorites" instead of throwing a TypeError that broke /api/tracks?favorite=1 and all views built on it.
  • SQL portability — count queries no longer inherit ORDER BY on non-aggregated columns (rejected by PostgreSQL and MySQL 8 with ONLY_FULL_GROUP_BY); MAX() aggregates use selectAlias() so library sync revisions and playlist sort orders are read correctly; internal Doctrine ArrayParameterType replaced with the public IQueryBuilder::PARAM_INT_ARRAY.
  • Upsert races — concurrent progress saves, listened-flag writes, queue creation, and track scanning no longer 500 on unique-constraint violations; the losing writer retries as an update.
  • Playlist integrity — duplicate-name detection only maps genuine unique-constraint violations to a validation error (other DB errors surface as server errors); playlist items get a stable secondary sort key; defaultSpeed is clamped on update.
  • Favorites shuffle truncation — the client paged past the server's 100-per-page clamp instead of silently shuffling only the first 100 favorites; removed a misleading 500-track request limit from facet browsing.
  • User-facing error messages — machine codes like internal_error are translated to human-readable, localized messages in toasts; network failures get a dedicated "could not reach the server" message; fixed "1 items" pluralization on the Playlists page.
  • Dark / high-contrast theming — theme-derived --ac-* tokens are re-bound on body, #content[class*="app-audiocheck"], and #app-content.ac-app; css/theme-bind.css loads after Nextcloud theme stylesheets so backgrounds and ink stay paired on every theme (fixes light text on white backgrounds in dark mode). Added --ac-surface and corrected --ac-muted-strong mixing. Guard script scripts/check-theme-tokens.sh enforces token scope in CI.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureOYSJOAEPFmNzWN3GZeKQnDwpPjDre+YRdIPE6OCmwPAgZillckDvFX20VFmeDaLpxiVh9P6Vg/OerpU/SHxINbKCntGCIV+5I/mJX5rwx5rpdW9bjN3f58J09bqnkUo8s2sCGlKq0y9neu3ZHuRhPKGCuLVbJPP7LBs7RXDJxQjxWNIE35PflwsixAD3E2M/iPkH3jJV56AJKviy9cQa5Wa6pBGFDBb9TxF8XLo0tckNp3SBQ3F6jpcA2prvoglKQl2vIlYXb71iyXhkVYYwteHXmLmeOwiDGrYXr+4TvNgN2mU+ZjfptHEFvVKJ0Ldx8RSU4Q7R4tU9RZtUwxqqmDnRpBVBR5m4jBdBcAagjLMBg6zeqtNdJodSmyzQLQmDs6Jhtu2w+iOYd56cdZMjlV+7y+RtpCc8o36zCasZco8UbMFhHrCZ1LxAoDoqIcZONynmmcgKIUof5xkbPyE8I9xtnool86ye7HiQOMDNjYyRoNFygPtf1vuEu4UXyAZkY6a8XNUZIWUvjEfPn/5JuvcjOsErcbKFUKkuPN9mDhYbKHJUo/ESNyQrjjfhiEeMyl9x8NFNAN6B2qx6pt32NWCqtYK1K00KRpP9nJlVD/IWxvs3zJFh5M/G2k3fDH5CRV/NJiWDYo8CwNschMcaO6oc+7KH4x2UssmC033rTd8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.6
Release Details
UpdatedJune 24, 2026, 9:03 p.m.
Changelog

Added

  • Global search — shell search filters Home, Browse, Music, Audiobooks, and Playlists with debounced query sync.
  • Sleep timer — duration, end-of-chapter, and end-of-track stops on Now playing.
  • Playback start choice — Play all / collection actions offer start from beginning vs continue when saved progress exists.
  • Accent-insensitive search — normalized shadow columns (*_norm) and migration backfill library search across web and mobile.

Changed

  • App shell — persistent page chrome (breadcrumb, icon header, scope strip, grouped nav hints) aligned with BudgetCheck and MobilityCheck across all routes.
  • Section cards — Settings, App settings, Library, Browse, Music/Audiobooks, Playlists, and collection detail use shared sectionCard / collapsibleSectionCard layout.
  • Track lists (mobile) — library browse rows render as bordered cards at ≤767px; collection detail tracks match the same pattern.
  • Playlist detail actions — secondary header actions collapse into a More actions menu on narrow viewports; Play stays visible.
  • Messaging — polite/assertive live regions and toast stack for status feedback.

Fixed

  • Browse page — removed duplicate inline page header after shell migration.
  • Play all — header action only on Tracks (Music/Audiobooks) and Favorites (Browse) tabs.
  • Integration test runner — run-docker-tests.sh resolves the Nextcloud root correctly from the app directory.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureJv9Cfgd5KiHuIhWVcnmPvc+tjX9hD+iP5PRAzEryrCAlq0yfNInv9T82hm7Sw0Uug78ddijfkZ2dgD2vRZm5Pik97LCUi8R8Vck1U5LU3aSVhrHNH02l86ntKWjjhiIUj26X589gMc1DcB0nNrEjrUCf50RMtrLcB3qR1WBuzAKPW3GbA5c/zkB56nhPelVSXFY99ksX1wwNFQwvNHQ1hUNziNoaQTI5EtTr3lizvigJvY7UAZjlIdTZe7c2Gfn2YVmto5YQ7EYEfxZfQIhS3NUBDGdhpAZV2wbSFDYpcx/AxLOikAp6rU7mgb08cAsm1G19dWcSBGTFRhVJ+bBucZXzY4H1siljWo7bVp47mXBCL4TxakLtaW4TIvaYJ0KQ+hLU5Rp1JIp4fdeyXIQ4XjoEBsFxpjwme1h1z0/Dp6tGsCBcd1vuZOks3KFD2+758sCVVqz+v+sDk6+fJL7M5YK9DsHRt8j5CxVFqTfsQI4Ew87pONnYruNABlOfsW0v1AnyKI1da/oEti14Ki6ONM0sWznSbGIS00CSbR7T4wiP2ev1HFQSe+hAlTEqwyP0UuNGR1QKvlTXVdL+46M8HBx4sqlW8wfzeEFnXFsH/IQHwuw6bgPDTIoemTg/Kgfi2m3XIqdaBruQ2sXo+yMzZZ1s+q1yKA5WLDBG/D4Y0n4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.5
Release Details
UpdatedJune 20, 2026, 1:59 p.m.
Changelog

Added

  • Paginated library APIs — collection, facet, and playlist track endpoints accept page and limit so large libraries stay responsive in the web app and mobile clients.
  • Load more in the web UI — Browse collections/facets, Music/Audiobooks browse, and Playlists use server-side pagination with Load more instead of loading entire track lists at once.
  • Play now / shuffle on full lists — playlist actions fetch all pages before queuing so Play now and Shuffle play cover the complete list (with the existing 2000-track cap).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureDyugqURQcSAJsnY+5whWW+8l45Ca4rETbg8Ggr2DLSJaoNi1PE3sRa54HAWGBu5emmP6y1qOTo5O4qqTCz7R1s+VLQhB7S2UgbNyx5OyW0Z7wJ1i34W9Ve+xQLiUbrj/opqCKZiQXzqttSOXFpeT5MXOa1eykRYXHk1ogIXyA9WULjFasagxE0bJ5MqJdKLg0e+Iw3jnnBP9UDI+LOEYyGJx/AZqwsiL7wqmLcBQs3EVgF2BeMpD5jqaFyPPVodE86fqKFM6lUcC6dfxBlkrT+mgfg9Md0/gIG7FQlTljcjnpUEd5eeWp4/8K05mOiPcW8II1B1DGM4N4y6+yt0U0x2Vz22rI0wnlpBgOIrCu1b4JOiwkX60/NZwsLlhAy1v2M7+qxyN/FU6JlJM6ICo4jEnkWLXJ820IbliDDmhm/G6ji9O5NDQJFuN9h99ez80kz7g3x/CeflE3OJGmqWWR+1h7MjvYtL7AznGsqlnBs/H8ed9eqjIcFPmRPGTVXYtwRRDYLjCb2d3DGOWEzjeQVWmxQfkpm3D8UguefW7xhZX1L/YonrP914vDK7NXxl3eNPll9rQGxnCDgCfcU1RXLGpSAzYZ9VtO9TEf2y9azdq+7tOLQuI1b0SyUTONjXYOldJGXanC1AMC/QRzT8ELFrl0+D9rKeGJ1dQJyyfQa4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.4
Release Details
UpdatedJune 19, 2026, 7:17 p.m.
Changelog

Added

  • AJAX cron scan ticks — when Nextcloud uses AJAX/webcron instead of system cron, queued library scans advance via /api/scan/ajax-cron while you stay in AudioCheck (library polling and app-wide heartbeat). “Scan now” still runs an initial in-process batch; remaining batches no longer stall until a full server cron run.
  • Stale scan lock recovery — abandoned running scan rows older than 10 minutes are treated as resumable so large libraries cannot deadlock after a crash.

Changed

  • Library cron callout — explains that scans continue while using AudioCheck on AJAX cron hosts (system cron remains recommended for large libraries).
  • AJAX scan tick rate limit — 120 requests per minute per user on /api/scan/ajax-cron.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureeGQI1vbXZcWucftZYcIA0TsZ2vgHuGiAUqXs/l09B/vCADzp2LDJ1qT6X7I8SN0tybnfjYv0KUns/VcMjYZI/liyDB9AJSQIYGO/9hwPKbjyeqLPiXbP391GwHpoAcZtZs3KJQY/Ufyl7+QR44o//+81C4FQkovYK1vhQFJLUCjdTncMiESHh8ewU57NM0jqtsU1zx+aqYZLS4rkg/K1sdQq216A+L20+g7bGjMEa4NwAzrApmnLUNhTW4NjVdwAHjJuhrahVA/HWKhgo/Sakz7TlttO8T9sCzdUl7UOejDn0KnQO5XmYFqkxa5i/M9atHeIsij7L7KKKIbvReYujL6MvReZQchzMTYnVv39kZZ2TlfrsKwrevQRf+CKNczpp0tsqbrL3p6lo1I9D9bb1Xt045qA2c2q8IL3b2fSCY7emGGJWvQLtDsEZ/uAg28s6pK8wuur5PJWBFRV3lRiQtaIIgjtdggPWK//+Mo5+58hYgM1EyzjC/92lmnO510xXgEocC1JRRjlrYCoZGvpCmRFEza9woRsdb2dsPedx/XuIO/dvFpQ10Zw4jRmVTzlr6bguua8stUJ5d7P2ltRtVHNOtJck4it+pxqzKnwq1e//0QdQIef17EuUq7TgtXpONGwvGMioKTzveZ9XprZGfGUqDTLgZgpcaSyJuZDLvw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.2
Release Details
UpdatedJune 18, 2026, 1:10 p.m.
Changelog

Fixed

  • App Store screenshots — screenshot URLs in info.xml are now single-line (whitespace in the URL text prevented the store from loading images).
  • MP4 podcasts missed during scan — recursive library scans only searched *.mp4 when no audio/* files were found; MP4/M4A/M4B files tagged as video/mp4 are now always merged into scan results.

Added

  • MP4 audio container support — .mp4, .m4a, and .m4b files tagged as video/mp4 are accepted at the file gate, indexed, and offered in the Files app (extension-filtered for video/mp4).

Changed

  • App Store copy (EN + DE) — accurate format list, clarified server-side resume, removed unverifiable WCAG certification wording; accessibility described as design goals.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
SignatureT3vGGbmLd07nyi0eKXGtXs/jwWf/17iRFXBQQc0fdpJDqvMcU20ZdcyR2LVJoWdX8FimEA1VZmI0tVmFDvUrT5bdPNNn29O09MAVd9ERPhtcTWagy9LJ7roXxaHZ6ZiB+PErl2581x/+Hrf90AHcHNcOcqZ0gE3dOUjCE988aZ8Z7fXQ22LWhkJQFirlO1uq30WP2vqQ2k2Yt5fOvchmB5joPNZHnbwg5Vndmitv3PTaTruytzGoUzTrzPD0n0E1OPO/lDjeslW32UMiK2DRtqUUVvDPnrzLA3L5IBcST1WU+N8COf+agslTqLp5M+m8+LKrxuQaOh1GX1Q824IFgkW/8zizXyt45PWJSyFQYNOtlEspl+IX8hKyT2gWguxhQP6kefYBhb/WJrYcemcwcey8c/StlUKYjU8bIulSTl+Yd95YO/sMaHSneeY7R7pIX3Z2OFRjoPGVaMmuoB/hdQLTw2/V8DHCHzZlfpQHmZblCQ3k2p0o2gKS/qlgUgqtEhHbs2VBsg3ugU4Iji1z6vGTDe++R4YIjCawU5xUi8uRV7KH7A8letsHsa2upRHfR0Poe1r8TWni6qBiPd3ZtoGxh2U3QDhccwHnmUYPxE2Es2cZ4Um9t0SWX0TId4+7DQs2uatnHx7MrJaCIMlGlId9VGGLUQFWQD8xlcUn4lU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0
AudioCheck 1.2.1
Release Details
UpdatedJune 16, 2026, 8:13 p.m.
Changelog

Fixed

  • Queue destroyed on reload / app switch while playing. When restoring a queue that was playing, the browser's autoplay policy rejects audio.play() with NotAllowedError on any fresh document (reload, returning from another Nextcloud app, or a deep-link landing). The player misread that benign rejection as a media failure, marked the track unavailable, skipped through the rest, and then cleared the durable server queue — losing it on every device. loadTrack() now distinguishes autoplay/abort rejections (keep the track loaded and paused, ready to resume with one tap) from genuine media errors. The cross-device queue is preserved and recoverable.
  • Durable queue no longer discarded on a real playback error. A track that cannot be decoded in the current browser is treated as "unplayable here", not "deleted by the user"; the curated queue stays recoverable on reload or on another device. Only explicit user actions (clear queue / remove last item) wipe the persisted queue.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEBTCCAu0CAhNtMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNjE2MTIyNjI4WhcNMzYwOTIxMTIyNjI4WjAVMRMwEQYD
VQQDDAphdWRpb2NoZWNrMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
lvpfJro/A4Yxltse59eF7eDxkDlK9oF5DgodCdx9mMHFvm0/HVbMiMKqq1N36uyH
i2ngkupkNgmViu2fVTh+eADd+fMUNgWJKYY3BlP6fpEDYPaTEnUX32G6WRqlu8EI
FqkC7TPsnlRQCqkXHJXh6eGNRRUfY3SCQSQu3MetH6dlxxSNDOcQRP9lEVXJjj2K
16O+PBDpttLbfTlvBMB122XhEyuq8jKt1bJcm/NCrzhkI6o86Vsi1zLewu9iloY2
yPW3JqQz9XLe9m7l7uhIoTSz968fU0mgssh65LAgPUS66gq6oV3dwMUVyAiRdstD
0JZ2tzLn8lHC3YIustkb2Wi+KyPoR48IhIbgpJzV7YjCXiYjR3psH5jZEChIdByJ
W15JPky7qShNUANbNs0DQAeQcify1ok+pDNdUEkkIrxKAELBrWC1wWxD0Q7+S8HJ
J0Ry0I1b+1lXtS+SqYuIQc2fCc3u71NFJBjaY7u0K8LCc8Za1LfvAeHtuVaJ9eAE
p3wRFTbWGWbkEiCxZ1cLdkuX9C1W8nMjVokhu7HytHiXuA2LmdyoV/pfUtQnZZ6Z
W7jdG9bECzsCmrgQOSAydsHKPnYEZvwe1s8wl4xZWXsi03NZJL+GpUJKdbBpxXff
Wc2TZwbE7VH7iocyqurZdGWLVt3pghW/11Y3V+OXdk0CAwEAATANBgkqhkiG9w0B
AQsFAAOCAQEAIxrvtOZBFAqumP59vtIPXTqgInvog5BtRI02QKLKh42QZmH5fjRa
7Y9BSwdBeQrfcQpjg0IWF5mpfFGl/NiO+LhOysoGPFzE8LWm+EIz9dcNCygYD3L+
O6TqhnUAhqTDSbIqZ2jc9J2KhITXtHbVWzRotO3YIsIAnerSw46K6UE5jEIy58jW
0fLoOzHMi5AjsVkO/yjLMGXQD5Vc+k0Kif5CvZ6XxjvYhC8Lwa839rJmPXGo5Ecb
fK8I4s6TCpL5WReq10zr7QzlTK84201jBSKAd73DBiH6EU9EmSdRQm9yFiJl7DND
WCkgG+3kuOLExAYBgw/QdVE+nuratALkxw==
-----END CERTIFICATE-----
Signatureai5A4WCVeltI2oihLkhMkkv3ONBNXb4T8FTzRwIjVSo0ns7GY34IwJ4iM5YS17YWC9qJVWEyAnScnNEkLcFMvJGiIvBH+TAzFZcGXzh/v2CKEZU87Dhd7ddczCMoyJ5vRk+tK3oD4idftiC/8HvyxE19O7QQv4XDO8+U+YX8MvNflhqo2on076ICOK3qYlK4G/KsNkXlv9YryLVJ+GjSkXVx7hWFQeUXrbyqmVNDYBtLpfo5yr8dQZfWmVq822TIlpqXKlFJF8AHPfixuTbaq3VE6JvEC+zvy7ngEpnV5s5Sh0hoHaB731PrGzhXR48hEvdfgUVW7MkyqL0pE0bEcyavi9NGw9HuzLshIJg7Xb0tFy0yZENOJhn9oiVuOiwRqTotiBCTIDVlDziRRNDDKfIDlgGagIEKctBoN8AuVSku0IRN/4GKYEORVWGqB/ER5AR0LksqSCFIA9VRYdtvvvkKyFbovZUAyLyW61miWtGztYoMTN5//708ooWc45n64KfL5VfTLUIV5hrJAkz1DtwlPBpGnOYKhUIVG9h9wIbT2ij8cCMeT2jSdrpAIn0hroK1hhb2b4Zo1Hx8BnK7ekeLLC/ay481STM/CC2ljPtEiepgjT1OC7+Q+Fc+Tt3rI901YMWi9eFqumNW2s88EDqdhHzdWA87RT6a+QjledY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Databases MySQL
PostgreSQL
Minimum Integer bits32
PHP>=8.2.0,<8.6.0