Skip to main content

MovieDB - Releases

← App details

Nextcloud 35

MovieDB 1.7.0
Release Details
UpdatedOct. 9, 2026, 11:25 a.m.
Changelog

Added

  • Administrators can set one TMDB API key for all users under Administration settings → MovieDB. A personal key still takes precedence (#24).
  • MovieDB checks a new TMDB API key with TMDB before saving it, and explains when TMDB rejects it, for example when the short API key was entered instead of the API Read Access Token.
  • When no TMDB API key is set, the message now mentions that an administrator can set one up for everyone; administrators get a link to the setting. In the settings, administrators see their own wording and a link to manage the key for all users.

Changed

  • New App Store screenshots with real TMDB covers, now including sharing a library, import / export and the key for all users.
  • Requires Nextcloud 33 or later and PHP 8.2 or later. Nextcloud 32 reached end of life in September 2026; servers still on it keep MovieDB 1.6.1.

Fixed

  • Saving settings no longer stores the TMDB API key when another setting in the same request is invalid.
  • The "TMDB API Key Required" message no longer flashes briefly while the app loads.
  • An API key with a trailing line break is no longer accepted.
  • The API key status label in the settings is readable in dark theme.
  • Movie cards and sorting by rating use the rating of the latest watch, like the movie's page. Before, a rewatched movie showed its best rating on the card.
  • The "Mark as Favorite" checkbox in the add and edit forms is now Nextcloud's own checkbox; hovering it no longer shows a tall outline around the box.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signaturev3Jt9K0VipfxocQhfgKoyCQjLISd2dVMs+ZNuXy286HADFdIcsjR30BiOY6fn1CUKOS+heudhJUD+yEUqWjfUAkJxd5sDA3iao0fjnvzBagpXkdymorV7cbET49aRAQv1/jNSaaNf9Gbw6ILIxN5Qb0mxZfgm/YCDgE+FSQvQnssHT3ffW1tBtuJrPsq4Vmj+ZK++H21KM51pxHhpRS6QJYGnCG+VIY7ADlTC5Fbo2oOgXJxheGRieVSabpMoQozTvPhG+YGz034kmy/qt5nHUPmeVG22hFWaGhSDoUx/u/r7mBbl+ldgbYkGpz2MrEvGZTOTi6/fMQgUVQX7RPGDBpC05jZcz8Wdx4Gjj534/oxAb6dAV0/kJlXzVAtoJ83LeFR+LniHvRJGvq5CF/csJY2f1cQNZl9uExJdUNQWVNgjFj6S5j7SE87a26F5D3/IcU2QZTfd1raok0/mM+m1BcPbRW+LwjAzL/0jvhfdadgmKiFcSKEFe+rueuTBdFu/09U5svAqicT09XTi6IB+bqv9sYUKyoOyLP6klEm4itVFi2fMrzBRtq3i9ffCJhq5fLaPgcCCUuaXzcY8IbjTav/rgXZyZhNneOPSwSA0xfLPOHdFs33VpN2px8uUUAD6Lwfd8RxOIvlc8B9RzlOY/QGwxnoAb06M8b6LVjzyF0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=33.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.6.1
Release Details
UpdatedOct. 7, 2026, 7:46 p.m.
Changelog

Changed

  • The App Store description now lists the library import / export feature from 1.6.0.

Fixed

  • On wide screens, the backdrop of a movie or TV show page no longer covers the navigation (#69).
  • In the add and edit forms, selects now line up with the date field next to them, and the "Mark as Favorite" checkbox lines up with its label (#70).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signature4NmLpgSqpBcuvJFv+Fa8/Rm3cZNLYo/1EJK3SQ6CB8EPuKxVbelPt+oImJ39cmEb
6lLoRV1ATjMe8BCtWTZHij272U7TUDL62dqnR6fhk95NoRG3+xWvZ4O/TQ3wbk7b
W+5r4sr0HGqiD5w9h8Fj387v0rvpBTTCVZrdeanbGsfycGO4/0ox/rCarC41y/W1
TR5UxF04WhsqdsPSQh2n+FVlCldKWB3gDojMCEJR3pBf0zZq3OEAtWBLk24Nr2pa
U/rPVdk8tI7RYDEGQCDlnlBv7hpDy3fkdeWSfKIK6VZmMx6wnJozIXYa3jitlILc
bZ9uWpeSG/gP7bItmONDQ+q6kuBCPwCr7yHLrvdJ+MN1jSqEdZbMLaViwLQVxYVw
n70rQdgkskgD+J51aumhYA5F2hStkgaDkkeEFf/1/zLjz9xFjUOteopM+qf3p1gk
IZ6NKxBZnI3A7XxxLTk3fGPMsFblt0BAwMtJC7oZF57aKW4uQbz/i4aMERKp6CtT
W/KV5B2CqL12jkXLPALEPxKks7q3O7n/eZxAFCJQ1BWT9t7VxSKHwt0FOrUlfJEj
66cI6PNKfSGw4W62zW66QhDey4K6hG80SQ89+/gFOPyEvzCksfhhYIuhtoMKJoBx
wXz20NfVyI1Ejw3LEwuxEZbKQdKPFcqPVA6boyaTPps=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.6.0
Release Details
UpdatedOct. 6, 2026, 6:22 p.m.
Changelog

Added

  • Export and import of a library as a single JSON file (Settings → Import / Export), for backups and for moving a collection to another Nextcloud instance (#62). It covers movies, TV shows with episode progress, rewatches, ratings, reviews, the watchlist and custom platforms, but not the TMDB API key. Import needs edit permission, skips titles that are already in the library, runs in one transaction and needs no TMDB requests. The uploaded file is validated field by field, and a confirmation dialog shows what will be imported, including the library and time the file was exported from. Export files are named moviedb-<library>-<YYYY-MM-DD_HH-mm>.json.
  • Settings "About" section now shows the app version and links to the source code, issue tracker, App Store page and license. info.xml gained a <website> entry.

Fixed

  • Saving settings showed the "Settings saved" message twice, and removing the API key showed both "Settings saved" and "API key removed". A failed save could also show an error followed by a success message. Each action now shows exactly one message matching the outcome.
  • Importing a file made of a huge number of tiny entries could exhaust the server's memory while the file was being read, even though it was below the 25 MB size limit. Such files are now rejected up front.
  • Control characters (such as a NUL byte) in an imported file are removed from text fields. PostgreSQL silently cut the text at a NUL byte, so a title could end up shortened.

Maintenance

  • Tests for the export (including an export → import round trip) and for the remaining import limits. The import and export were also tested on PostgreSQL.

Pre-release of 1.6.0 for testing the new export/import; its changes are listed under 1.6.0. It was only offered to servers that allow pre-releases.

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signatureg1tV4oIWUHNEku7x9Z7favhaUd8KtidITA6rPee8nOB6LrUeZXNWOuMCHAPh9yxoRtlmUHPQhM02//J39TeUWTOKuOPl2GvfIofEbNZPLO2j2LpSI4ucSeQIYcb9RkhC4IknVDENJ8EBNHKiJ96Kh3kI12hZrrHer4kjK29UOb0IiCZoCY0L1fpuQ7/YmwwGy1W33MS6k3X/Rt/jOKxaxNGDci5n709adR+FDEpsw6xWXx2P2hcDIot7eBN6Orc5ZRWcilkYnZux9CXdUapP4ZdB7eeJTefNjU5IMxvlTbrLG8ulkcJ/OWHuJ0BgjVKD0TesIr+kyt/4kMJo5DBLkGTtVqgGZtkdGc43CtnIOSVI/A11prrvB7Auawy3w9gFD+0ndDfg9LnS+tMPlMStjG3IF9RMXgeuDAsV2GGOu7QDjMWO71KWpFyNN8Xo10eqCL/zXNjQaDXsGwuYiuruNwQdvZYJ8vC+6w0S8FXewwosAq7GZgVA/D2wpIxpBhl76GlGcweZUJB2fV7zPjT2Kawi8moRh6oDUVuxBJT1fp3PN6W3UKpd93SMzIsXNE1C25wQe9DPqfCGKcZWYaPkwwWfsmygUowt796VRXpld8ee+klurhHxcg7bE/HxpYhaSMxaae+W7SFXHVjyrPbmZa4nry9/C/Zei593Yveb6S8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.5
Release Details
UpdatedSept. 28, 2026, 6:49 p.m.
Changelog

Added

  • An "About" section in Settings with the TMDB logo and the attribution notice required by TMDB's API terms, translated into all five locales. The same notice is now in the App Store description and the README.

Maintenance

  • Upgraded vitest and @vitest/coverage-v8 4 → 5 together, plus patch and minor bumps of webpack, eslint, jsdom and @typescript-eslint/*. No functional changes.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureyCWt1i5hurMVmbsvYoEIcAWrz8j37SE1hATcmGXhK7I1sX7LisRP8Y1AgicgzVVa
p2X59Iy/J3Gj020tPkB6QKsaRngdg6+lW50Hn5gZ08Fl9h8ODhl5H5JKjnSzbEkM
2GQizK+VyH+6tenpU5+UkjM0AuzFspqQlSP4eCLW4sVE8rev/q7F1hjo1Yt7lqpq
obpKvImzyoPlbVCThMFw4DW3mwrhmqAdD87yqlJ34g43ddErfM3vKmDRQWewtENA
AAVKkuC15hPqc3Z+Zs6LJLGq/DKFSu1rvW7MUqc6wNq8kt1HL887Kleem5+jHSEG
wpmF2gWX3rV4In+gHUVgM4INqfxPj8APAlcvrtLYs/DtXX9EW0btgrCDEhlJkEJA
FjvNAKHcci6av10CNg7UCNzmbnt2ok8ojOg3nrg8OnpHUHqRS3qBH+dZAhj9sAEl
1WCJLT3vUUXapYwREFpvNKDELIRxmg8D6OWh6NF9VLpXY6xyICUwS/dk4tiriItE
QtnlqyDagRjif2aItJZULRDOPC737oL2KzZvRmImm/8UFR9QFtbe/yU21x9ebl3n
160RufMVndfA1jGM/ss+SxvrpnO1gNkl/fSVFIuflx0gINHo6kcg2BsqB0jDwy8H
Y9W7g072frrtpVgVznCOZIDlG+SDZbFCsfTwaALgs3U=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.4
Release Details
UpdatedSept. 21, 2026, 7:59 a.m.
Changelog

Fixed

  • Several UI strings (search placeholders, "Enter movie/TV show title...", "Importing episodes...", "Write your thoughts...") had their trailing ... normalized to a proper ellipsis character (…) in an earlier change, but the translation files still keyed on the old three-dot strings. Non-English users were seeing raw English fallbacks for these. All five locales (de, es, fr, it, nl) are now back in sync.
  • Added the missing translation for "Failed to leave library. Please try again." across all locales.
  • Fixed a typo in the Spanish translation of that message ("abandonador" → "abandonar").

Thanks to @ba3r for reporting and fixing the translation drift (#47).

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureKoU6GVlNgvtWAC9hWlSkVvK1e4m0Y/0Hm54qQTDgucO86ZdlP3OkJu0TehQ5O0K5
xtVq3jNUvkeoU/rewdLnREnVclfkBsmjeE2WGBgEIp1oM9xivg1jun3kXdXp/FWy
H5vL5MZZkUOLLGztrUJ/wli+DNicZbeEYK636MSpG+WO9gFGMrJRgNFu/34/p+OA
CyTpmSRW/1o5JwamYxGW1eCXwrJcDng3nzvyaq9HcYanMLU4LJi5XF43ZZXyJEJS
iywTogu3BDPfS0cfZly9SG3n5aSROV3FGjYjgOi1abjXZthovKHBps/HCnqmeBB7
vvjsNT15+QgbHgMKJmBLa/2NSb2iRbHxWj7RemBnW5t0LYpaTM+GiubOoPEACDkR
U8ty8UhynqAK6SHT1mmYlc1tk6JCaNy+Dxr8EiqY7hBwt/FkgIh6d4a3ySxljpR9
ef3QFu1PKn/2gGoAxLJYqo29L8i/u1QMBSlnC4/+vFoIqJjZU+t8J7Xto50uGV5e
0UUdOlmfYRH2PfzRO0y/C/nLMIVNsdgthndN0E5qogcT5f7hYVnne1BN/tllc93C
2ypAmgn8NEaksRJPw+2CZF9HADe5s6hijyXScWZz90KDWdUu0eCC8KLSp/bTQuaz
hCfgEJ1r+VdIuKxcDvfRExeCcby8RelgGPIlHxA37Go=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.3
Release Details
UpdatedSept. 20, 2026, 8:51 p.m.
Changelog

Fixed

  • Fresh installs on Nextcloud 32 no longer fail during occ app:enable. Three boolean columns (episodes.watched, libraries.is_personal, library_members.permission_edit) were declared NOT NULL in a way NC 32's migration validator rejects, and the moviedb_library_members table name hit NC's identifier-length limit for an auto-generated primary key name. Existing installs (including upgrades) are unaffected.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureSM91S8OUY7ERDhmFmiIJXRNo6AZzurMLVq7lFZy0GYfMwT5arI2CYJa1XlO1tUxk
0hDrvIY570YgZ1z6wWak3fd+855YYvMEjvUjT4TEBmsa76ZWKogg3TLFSUuFlqaB
Ktw9gKw4VsGqce4jinvAiSi66ZmRcTFJZd6nltqUrFQmzhcSDlshJkYs2UCqmIQL
7j56ylMMxhLWx2/zfMn14InRqNyXZuHzamrgGLKY+65BW+y/mlHZvGS/Pf/ivOD7
8JOR9NbLhtk3rO/g/ymTJW6smRkl1XcXKzutRxjQMzwZBFc4GQhwmAHFDGWx8B3O
yTiyZGKhvO//UKIEDk/JPcYU8lNOLN7MAN9QJgPGStblMasS0Hvlj1AfryTQS+Uj
SWTLlfWd3FjPB8sPc7i+V3i/CohnKKCiEJ2XX+tviVErn5z2l3hVw1RzQHyHCKea
fOyfL6CpCZQOWgmJuRpFkdoeRiw2PeH03cMN+4FeBTnV5cktpL+qcMA3uDyfpxAD
ijRxYDvmSj81Ylb83Aa7HdO5W4NJPaimu+rzX2wagomBpLeab7VT3Z2lT76E/h7Q
89r/KbnnsjEZBzasOmTYZ8cSx8di785gJcdqoh7tlronUTRm1TJJDgPX1P3gBCkm
GUsmBDZmrZ75Ubl3Wz3LSKWz7DMNkncZaPMZNRAtH7k=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.2
Release Details
UpdatedSept. 20, 2026, 7:22 p.m.
Changelog

Fixed

  • "Watches by Year" on the Dashboard now groups by the year you actually watched a movie/show, not its release/air year. Matches the "year in review" convention used by Trakt/Letterboxd.
  • The "Watches by Year" chart no longer stretches to fill most of the screen when there are only a few bars (e.g. a small watch history).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signaturekai3DGfd2M037yLLMLcYqZWHi6lneYfEykTrNFtz+M4LA4eh0LS7NhfOCnOcf+Hn
otpQkbSb1+VtwlQba40wUBtoQn0CHrgZ+TfUsCX09I5NGSBDZiq+mtlCexIL8tWN
i9xD5jkfxocBn63s5Iw9tG6IXqBCEspaR9GIdJsRp+3tNV62uCederi+LWpfaErn
YYbNGMXMhlXyObkamiA0Y02bIGOg9r7iHURklVUdObG5NKMUnldG+b3iqfpU7Gz6
7otcc3I00Cq3KxSB+ZAypTml6DjrYpf54zp8JL0lMi63QfXBNjSY+dkwR00+ufqC
RGIwZN5v1azDVMOD0zHUQyS4Hk5425tpX2gzq4QneEQXc8pCKLPq4Nedf0ghEf9q
snHNMvJB3vgW5dsUlRMtvPEK2FzA9oQR7SASx6+DoO72/tba3adeAtpFfMKLjh97
WPkuR7JfKENrDSzONzZou13ylsWVmc6Qx/1WA2Y3mlxOZOndIbGZYVqXomKOgXGR
Cf1ECEBvQQrdNLaRVSl6/yma4UNVNOOHp8OoszZNV49NkIuprLbbDQruB5I6e+fN
lmzmIWOQOeaU8hcw6422L1E2e7/oPtwNVr1BDFWHIb5AhDvEgDijh//MgHXtyhtf
Sk0OYyQYmbrw5Nj8jqGrhV4Q3FXtLmvj5otumk0QDPM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.1
Release Details
UpdatedSept. 20, 2026, 6:30 p.m.
Changelog

Fixed

  • The v1.5.0 release tarball contained stray macOS AppleDouble (._*) files and extended-attribute metadata (from com.apple.provenance, newly applied to files by macOS 26/27), which broke the Nextcloud App Store installer's "exactly one top-level folder" check on some upgrades (Extracted app moviedb has more than 1 folder). This release is content-identical to 1.5.0, repackaged with COPYFILE_DISABLE=1 and explicit xattr/AppleDouble stripping.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureMNWzJHDY5k2lApRRKmevWNUpqhtY7kORwD4FBvXTTscE2boide8e2JzJMSw7qbW/
OddgepINDy5AHgUw6hLbSmREvG5r44+VAoj6GJFtcJiTL/k4RHfSEECbEzBUNIsE
+Qray3p5h2sZH5Cqykq96pcGL230tEj8+tz4G6XQNMoOeghb5SZrdVeUcwpQGeoj
5ojYPd5TkUY3B+biuJxe4LwolWJRrxhNrW4E5WIgoibzO5VDggwyHK5GUDsLIiTb
uot1f546sL0WxbcW07K8kXJ5nnKbA25eRDvEqtgHBxNs667wb2ArMCAcEdLwR822
oFungmHhkXN5qTouDg95dbdoCBddYOE7lrK/viiIsD5xYwJ45/pWGHd0NeMJiDcN
+2NHrLC4pPo1k3PQ3snp6SG0DSOF5Sc/90ygd0CdWR2QDEDvYLnxIaooB17VUzeZ
3CtIlNJLoPmgMNTu7/H9o6YpaL1Z4CHerTbsd1VdlXGMzmm4kZk5N4v7LQFrpb1K
eRh6/kNjomkns7u4yJErdTsYICC6mgrnbRKIAqEIn9bagmjyQl5nMH9Jpa7Jl+5O
hL7ZekiXjEzvWL4YvrRyupxUVKBZklGmxhNMGpoelHpT1/wm1GSXKCnkUA8TTjMe
NXTKWJrwNHe03RlOCEhPYtNcik/xF04KICtAMi74iII=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.0
Release Details
UpdatedSept. 20, 2026, 3:19 p.m.
Changelog

Added

  • Dashboard now includes "Watches by Year" and "Watches by Platform" charts, including TV show watches (previously excluded from these stats). Both charts share a new "Show" filter to view All / Movies / TV Shows only.
  • Watchlist pagination (page/limit params, matching Movie/Series), fixing the previously unbounded /api/watchlist response.

Changed

  • Visual polish pass: consistent card hover/shadow treatment across MovieCard/SeriesCard/Dashboard stat cards (shared radius/shadow/transition values), a subtle poster gradient scrim for badge legibility, per-stat accent colors on the Dashboard, and richer chart styling — gradient-filled bars with a grow-in animation on Watches by Year, gradient fills and a smoother track on Watches by Platform.

Fixed

  • Recently Watched and Top Rated cards on the Dashboard no longer collapse into unreadable narrow strips on mobile viewports.
  • The Dashboard chart filter control no longer overflows the screen on narrow viewports.
  • /api/watchlist, /api/movies, and /api/series no longer throw a division-by-zero error on limit=0, or accept a negative page/limit that produced a negative offset — all three now clamp to sane minimums. totalPages is now consistently returned as an integer.
  • The watchlist's media-type filter no longer silently returns zero results on an unrecognized mediaType value — invalid values are now treated as "no filter", matching the stats endpoints' existing behavior.
  • Changing sort order on the watchlist while on a later page no longer leaves the user on a now out-of-range page; sorting resets to page 1.
  • The Dashboard's media-type "Show" filter is now visibly grouped with both charts it affects (under one "Watch Statistics" section) instead of appearing to apply only to "Watches by Year".
  • Switching the active shared library no longer leaves stale watchlist pagination/filter state behind — a page number or type filter left over from a previous library (which may have far more or fewer items) could point past the end of the new library's results and show a false empty state. Movies/TV filters are reset the same way.
  • The sidebar's watchlist counter badge now always reflects the library's true total, not a search/media-type-filtered count — previously applying a filter on the Watchlist page made the badge appear to shrink until the filter was cleared.
  • Opening the Watchlist page no longer fires two competing API requests (one before the active library was known, one after) — the first could return data for the wrong library depending on response timing.
  • Rapidly switching the Dashboard's "Show" chart filter no longer risks displaying stale data if an earlier request resolves after a later one.

Changed

  • Extracted the duplicated mediaType query-param validation from StatsController/WatchlistController into a shared helper on AuthenticatedController.
  • Added a resetFilters() action to the watchlist store (mirroring Movies/Series) so sort/type-filter/pagination resets follow one consistent pattern across Watchlist.vue and the shared-library switcher.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signaturexlyj+iMssN5+P1t+mfcYmQON/vtzerlnfPfb8QSxeAxwBvZCluFiIJ0MO6YY2R1K
4mwFvG4Kd1wjQULGd4g4fN+VN7UwsS4Jdp4jolx+qKIc5Hm5YGtTjO0DgOe3AfmX
5NuQzUgbV2f8SEhb7mVKsMIC51HCez2r+AEq0AQOaNOVv6SETZ8FzsYofWHZwxUU
5YzsBD1fOGilOLQEx3oEwqxHLQaknCOnmrKR++jF7v0Qtz85zp8oC9cophzJD7ei
BayPpbB1q8oX73mt4t+yCfWbzgBZRGWrsxPuAuP4YUYAMm8v4ii8RSuE+zeGDwv1
yFwxbmvCqw3SvIvLo4XP/ep0RQcOjt1SKMS6lfilIKZKfx+2oA+JcC5tR9fUC9w7
8SfAxBcm8uunMGl3SCKMlFig9CRJU80q1S//vtTWi5zJOh8Jdvc5fLg4T2weamsE
MeqD0OYlniLRWuhVR05FNxUeFKLMnDtdYU2hHhgAn420sfpPxIIaax9rS+DgBMqu
m6l2oOxXe74Rj6BjyvoPquYEXg30DBGl3isNgxD7j+93CKrXFUgltL7wqE/mXFVb
pw2/ZzaRbnY2qwBpfYXmYRi0n1CYpKdKSJtMNCQw2rG7MGhAeeO4/UJvGhg/DRdb
O2URYsUTmQmu5gOP81hXZ0hsLYIunFdLqn8nSnTnO6M=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.4.1
Release Details
UpdatedSept. 13, 2026, 2:22 p.m.
Changelog

Fixed

  • Translation placeholders now render correctly in paginated movie lists.

Tests

  • Added regression coverage for translated placeholders and plural arguments.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignaturefW/4adHB/dpgcR8RMr/F6/964k5AHNAz9qD1DjFFnAh/tVFcjQpUrd7ZBR8+Sc1uSe9NE8oogHa/WZ6bGr81mR1tdzUPq2jAzS91oCz6EM5o0eH3zkx21JjMLdZWJGQ2aSlqa14s/EtjgYWtWUS1HOHRfIyCmPvbvJciWQIZPXyD0GUnr5EENxgzvOm2n4duZ510ATiozQ2g3+IvlY/Mnm7rdwzza44Uokre3SSnnwi5aCA/GBjZdq3Eyu7EWtPNqUCyiW3+8l32GF1IqInQC5X00eKrEKfao8A8Zyvt6+3omx92rw4MObORIZnr7VSvu5yd7S8mz5bR72dSbNVFz1omC2DkhZquLvTE1ETLE3sxHuqEAjD0DC7CmqMIUy+mnRcNBSDdkgnuae2TOklbJK14m2tXNovCBL6BtGqIt4kPHBNloxr+zeanzhjwR/8Qz/xPbGudy7P6rGGPrdVk8GzRm+tCbh6TvhtMmYSo+GDsaJN9zQ8Tocsul7Ja960NN1jVJjIQhtyWQtd5Ym+TlPZ5UjmIqEmWrbWyzRdwzXgfAT6J1IE6hXZvujWfxFZV3u0seVej2gowsJDGD69/iWjtC5WVliAAoGTNBcjgBewO11+TeIb4HMa2cQsg9VdDeYMF/Uegawce68Tc39qWFl7YFDnG/iYnT/61T8r4QtQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.4.0
Release Details
UpdatedSept. 1, 2026, 6:57 p.m.
Changelog

Added

  • Shared Libraries: create named libraries and share your movie/TV collection with other Nextcloud users — assign viewer or editor roles, manage members, and switch between libraries from a single account. Everything about a title (catalog, watchlist, episode progress, ratings, platform, review) is shared across all library members; user_id on catalog rows becomes legacy attribution only — library membership is the sole access gate
  • New DB tables moviedb_libraries and moviedb_library_members; all catalog tables gain a library_id NOT NULL column (Migrations V5 → V7)
  • V5 backfills every user's existing data into an auto-created personal library; V6 enforces the NOT NULL constraint; V7 heals any duplicate-membership edge cases left by a check-then-insert race in V5
  • Self-leave: members added to a shared library can leave it without needing the owner to remove them (Leave button + confirmation dialog in the Libraries view)
  • GET /api/libraries/sharees?search=... — user-search endpoint backed by OCP\Collaboration\Collaborators\ISearch, respecting Nextcloud's shareapi_restrict_user_enumeration and group-restriction admin settings
  • Viewer notice banners on Add Movie, Add TV Show, and Add to Watchlist pages when the active library is view-only

Changed

  • All catalog endpoints (/api/movies, /api/series, /api/watchlist, watches, stats) now accept an optional libraryId query/body param and scope reads/writes to that library; omitting it falls back to the user's personal library
  • LibraryService.resolveLibraryId (writes) throws on a denied explicit ID instead of silently falling back to personal, preventing cross-library write confusion
  • Member management restricted to owner only (editors can no longer add/remove members); viewers see the members list read-only
  • Library delete cascade wrapped in a DB transaction (episodes → watches → watchlist → series → movies → members → library)
  • Rename preserves the caller's owner role in the response (annotate() helper centralises role annotation for all library-returning endpoints)
  • GET /api/libraries/sharees requires at least 1 character to prevent zero-query full user enumeration
  • Dashboard "Recently Watched" now interleaves movies and TV shows sorted by watch date instead of showing movies-only followed by TV-only

Fixed

  • Library rename bug: editing the name field immediately after saving no longer reverts to the pre-save name due to a stale local binding

Tests

  • 121 PHP tests, 136 JS tests, 0 lint errors
  • New: LibraryServiceTest (21 PHP tests covering create, rename, member CRUD, self-leave, canAccess/canEdit, annotate)
  • New: libraries.spec.js (28 JS tests covering store state, getters, fetch, create/rename/remove, leaveLibrary, member actions)
  • All pre-existing tests updated for v1.4 API signatures (libraryId param added to MovieService, WatchlistService, SeriesService, MovieWatchService, StatsService)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureW/fG+iP7aiQ4JEqCs4ZaUYIW5HEfc+0t5YrUipKM8MEUvnJZh0N48oTjVhHI17TU
BcpmMBoE9/0TsaLEsK/F2sPUij5qhbEbnHIebiDI579YJxlSfNqj4ITcVFfMYiHh
6q2uSLsxyb7fQgL66RHbzaqq3PFRfRhdc5OmoJtB3Hq+xpvBDrkz516zKjD8hy01
CrI2kLhzYvqf4V8uqBCvfEh+SP0vlCuIGyzjYpqwIAw3YX6Y/2/3Ll7WCoAGAOEA
h6jCiGRhPFXP4tgD+Hj2hqGyRA9LjgkZWLbEGDSw/TclEee43pCAcT/b3p/Pv2wH
PokcYxn+cAAeOxqWG/v/JOk0SoDItx4gH1z4dKAVbnXz3emvAO6GjX/O5M80NZAv
ZWTzNjDHi0ErKAMb+WRRR3/aEvFt1UqIUsNGq4lFYPUX/lYePMEF/bY/aw3joHse
XgwhP4y2qVERPW48FX7GphVFgy7FdAmYXuCz6TapWJGx24bQyn6R7laNNAubGazE
0kvBi8day7u5iGib80rm0IBoCP6c9FEXFJKa1jlrCqfWdb3z7z0zn5Os2bx/sQ6X
rj0e+c/c75NtU48RBx61oCDGZM2RW9VoMfnf8IYVEpn391aNLFKxedFG6sdJvto2
tx+j5B8B7BH2wSLBeGPV9BnIw6ZCeMgB5r2mxq9YIBM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.3.1
Release Details
UpdatedAug. 29, 2026, 7:33 a.m.
Changelog

Fixed

  • PlatformService::findAllForUser now checks hasDefaults() before calling createDefaults(), avoiding an unnecessary DB write on every PHP process start
  • SeriesServiceTest: test mocks corrected from non-existent findByTmdbId to findByTmdbIdAndSeries; static $defaultsSeeded flag reset between test cases so platform-seeding tests run in isolation

Changed

  • App Store description updated to reflect TV show tracking and rewatch support added in 1.2.0 and 1.3.0
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureMBqLzKCQipMCqtf0gq6QFUqrK631nyx3olhG568t71yV/TOlV8kNQkntE1dQqNay
t6HB0DDREGQqfvGa8cg5MBmfg1aq3+8i/DWxVOAmavSD5vU9of2XnwjZivDfvJNu
/yOvUz6DnmK/GMCQ/FufzVZKanTCLPQ6d365qdnyHSpJcjXVp4hir8d7YbwGxqWo
DNSq6+g13CvCxMLo+tCaQK6AO3YZYKscYlSoo7YTO5vOfMErupZdv8TRHz0zj8YN
+kndD8NarfyOIEid0k8KTcA7rXdAIN13V8CjtQnwbjV4uk831MEfA6weKQkdaxt3
mnUBWi4lvCLcd2pqDlriHe0c/jqFLll2GQJNoXchfGH7nYwE5Lfn3+5lq6gha7Ke
KU6rsN8DlhEdKXl80ZIWfHwOGgewUhrVx5spgvaQ90Sjsq4J+ilX1osXQW+4YMyH
w6uKZfDFbR9t/NI55iBjDuAQNGkE6pIIVDcwOu48y5KSqC0bKiO65jwrA2dr5WSn
7Z8IsFbWR6rszgI47bbuhbV8Vfk+BteeC91LfyBvWljDuxgFNeOXQBhTeedsyx6B
y45vDccx0I5KaHm6lTlZ8eMeEGmADQ3qVaB1Vv/zmgt2cGJljO1EpbIBBJQsqn2S
eRw1V0S8qgctZTtCIdXc9jyIusM/cK+dHdR/hYKpvCU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.3.0
Release Details
UpdatedAug. 29, 2026, 6:50 a.m.
Changelog

Added

  • Episode-level TV show support (#15): track series, seasons, and individual episodes. Series get their own /tv section, list view, and detail page separate from movies
  • New moviedb_series and moviedb_episodes tables; series metadata and every episode (including specials) are imported from TMDB on add, one API call per season
  • Derived progress: season and series completion are computed from each episode's watched flag — never stored as a season/series-level percentage. Unaired episodes (air date in the future or unknown) are excluded from the denominator; specials (season 0) are stored and shown but excluded from progress
  • "Up next" card surfaces the first aired, unwatched episode
  • Mark whole season / whole series watched fan-out — idempotent, so re-clicking never re-flips; only aired, non-special episodes are affected
  • Series-owned watch metadata: a TV show carries its own rating, platform, language watched, and watch date — set on the Add TV Show and Edit TV Show forms, exactly like a movie — stored as a single series-level row in moviedb_movie_watches (nullable series_id/episode_id). Individual episodes are a plain watched/unwatched checkbox with no per-episode metadata
  • TMDB Movies/TV toggle in the search UI; localized TV genre list
  • Watchlist now supports TV shows as well as movies: a unified watchlist with a Movies/TV type toggle when adding, a Movie/TV badge on each entry, and an All/Movies/TV Shows type filter. Marking a show as watched imports the whole series (all seasons/episodes) and routes to its /tv detail page; marking a movie behaves as before
  • Dashboard tiles for TV shows watched and episodes watched; total runtime now includes episode runtime
  • Translations for all new strings (de, es, fr, it, nl)

Changed

  • Migration Version000003Date20260828 adds the series/episode tables (including a watched boolean on moviedb_episodes), relaxes moviedb_movie_watches.movie_id to nullable, and adds a media_type column to moviedb_watchlist (default movie; existing rows backfill to movie) — all add-only or NOT-NULL relaxation, safe for the SQLite fresh-install batch; no columns dropped
  • media_type is now populated on movies (default movie) for forward-compatibility
  • Year and platform charts remain movies-only in this release
  • Dashboard Avg Rating and Top Rated now include TV shows alongside movies — a show's rating lives on its single series-level watch row, so it counts toward the average and can appear in the Top Rated row. Movie and series cards now carry a small Movie/TV type badge

Fixed

  • Default streaming platforms are now seeded lazily on first read (PlatformService::findAllForUser) instead of relying solely on the migration's postSchemaChange hook, which Nextcloud does not reliably fire during occ app:enable. Fresh installs no longer show an empty platform picker; the seed is idempotent so it never duplicates existing defaults
  • Recently watched TV shows now appear on the dashboard alongside movies (the recent stats endpoint returns series with at least one watched episode, most-recently-watched first)
  • Episode watched state is stored as a boolean watched column on moviedb_episodes (toggled by the per-episode checkbox and the season/series "mark all watched" actions), and total runtime counts each watched episode's runtime. This replaces the earlier per-episode "log watch" dialog: episodes no longer carry their own date/platform/language/rating — that metadata belongs to the show as a whole (see Added)
  • Series import no longer fails when a show has a specials season: moviedb_episodes.season_number/episode_number now carry a DB default of 0 so episodes in season 0 (which match the entity's default and are thus omitted from the QBMapper INSERT) persist instead of hitting a NOT NULL constraint. Affected both direct series add and "mark watched" on a series watchlist item
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signatureo53wujykdigXdIMMC7OwGc4U1s5G5LWDUGFrsnyTbMe4zh9zLM/pb4KwuGJNbSWZ
lNAnrJg86s3Uj+tNdHMnEVzYkeAAqZ92TSdVN6UCbL+LMU+LbdJJOijXhEQho0xF
NF0x1U2+AzuW6fVDOC7eYmtIuCBAB/4xiGra/bqGVPGTpttmdYpkg6TEmF4NkhKs
TH0sNeoqbOKH0bvWU6q4d27Icqc8klNA+Eo61AGq4OOg4zY5I2CTdZHrGQW1uarV
esawGTxZpEf0B0+eg3dvMOXRq4f7ULLDGxvgbSZ8ulevAem0zHuO0ldeov1YJScb
5ko5nINoVV/AKJLqSgqkMX2XSduc12llo4uYD2aiSS4GqoIX60JwO2fFR59YfphM
1i4E5hVxGYWfXEOX9h38sOt2ea9yUS8/CUYLaXppP5Xr7gC1/gShFennJ4HEms8+
LAJXGgYaUwVR1OZzQ1IoydswGSeeHV++5Qs2cjD0no/Hy5FG1EFUPBJUuKmcwQSG
Q8YmI8/gxs+5M1O4vxCXWl4NaOnWbEkDoKKotQA5aOJVZfk0zIFUSjb0ZW87Q5NU
tBDZNi6ccg2DWNOxWdYgvpBwGDoLySpS5Z3csCKLkEmET6YGocEVTk3QdDW/XsYV
AXyD3J/SF1omJfWKZMJhLGxmdkDEdWg0/XSlbKgaUS4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.6.0-beta.1
Release Details
UpdatedSept. 29, 2026, 6:16 p.m.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureIVU+tpVoMJZkMAJEFNoTD1LzoPZH09lhaZ5hWZg2Z5XnvRvDLg2wcWwovsKTCKd5fkf7RjzjFYQhYl6MvRZvxeESq/xQzS8P9TBKtcyJX5rSipoAZOS30n4s5XcD/NbkHAnnf3nwrrtQroFgiKAZZfv1s83M8b3B1QFKfkQQmFclbZHTEkdf197ZGi1O1AGD52YuPmymPc4Bz/CbMaxqjllZw0elt04tdJzY1Ti1fiT5ukqB+3hVNoxwEj7NotYrntQoaOBwFLun4+1JD+lMkZH+x2kwqPienRwH5Uyf5RHdBIAG6kejtK6PIF4SdYhBLc9Ytjc2yBA9mdFIhIO70Y1i7PXynagRXG0haqFWXMYCRWhgh26XUkci/GFwZpsPtyqVdxN4UY7FxlvgQcqPVRKDKhba6DGVepoex5RS25A7YvJbUw4mEfdO2WFAOhJDXYEMkxy4N79u+1V9c3b2EhZ7zeMEbGfWxAnH7okaNOSqQHdu57OGr9ZwThQBFkWP+kEkAz1HZ5VMjguOM6oKMYYaMC2enhFsVIvKaR0gBEWP/eyHBdkU1YRCFI/WaV/5iv1fjAjQjOCUWJsCnew/ruuVbDqFkwfMPUNWZeVXDerxXYJjNCqIxIXZUw+RIuxkuGxq/x9WBfFtLIW6yTli8cmTjUf/1mIF4n+ak89tsBY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32

Nextcloud 34

MovieDB 1.7.0
Release Details
UpdatedOct. 9, 2026, 11:25 a.m.
Changelog

Added

  • Administrators can set one TMDB API key for all users under Administration settings → MovieDB. A personal key still takes precedence (#24).
  • MovieDB checks a new TMDB API key with TMDB before saving it, and explains when TMDB rejects it, for example when the short API key was entered instead of the API Read Access Token.
  • When no TMDB API key is set, the message now mentions that an administrator can set one up for everyone; administrators get a link to the setting. In the settings, administrators see their own wording and a link to manage the key for all users.

Changed

  • New App Store screenshots with real TMDB covers, now including sharing a library, import / export and the key for all users.
  • Requires Nextcloud 33 or later and PHP 8.2 or later. Nextcloud 32 reached end of life in September 2026; servers still on it keep MovieDB 1.6.1.

Fixed

  • Saving settings no longer stores the TMDB API key when another setting in the same request is invalid.
  • The "TMDB API Key Required" message no longer flashes briefly while the app loads.
  • An API key with a trailing line break is no longer accepted.
  • The API key status label in the settings is readable in dark theme.
  • Movie cards and sorting by rating use the rating of the latest watch, like the movie's page. Before, a rewatched movie showed its best rating on the card.
  • The "Mark as Favorite" checkbox in the add and edit forms is now Nextcloud's own checkbox; hovering it no longer shows a tall outline around the box.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signaturev3Jt9K0VipfxocQhfgKoyCQjLISd2dVMs+ZNuXy286HADFdIcsjR30BiOY6fn1CUKOS+heudhJUD+yEUqWjfUAkJxd5sDA3iao0fjnvzBagpXkdymorV7cbET49aRAQv1/jNSaaNf9Gbw6ILIxN5Qb0mxZfgm/YCDgE+FSQvQnssHT3ffW1tBtuJrPsq4Vmj+ZK++H21KM51pxHhpRS6QJYGnCG+VIY7ADlTC5Fbo2oOgXJxheGRieVSabpMoQozTvPhG+YGz034kmy/qt5nHUPmeVG22hFWaGhSDoUx/u/r7mBbl+ldgbYkGpz2MrEvGZTOTi6/fMQgUVQX7RPGDBpC05jZcz8Wdx4Gjj534/oxAb6dAV0/kJlXzVAtoJ83LeFR+LniHvRJGvq5CF/csJY2f1cQNZl9uExJdUNQWVNgjFj6S5j7SE87a26F5D3/IcU2QZTfd1raok0/mM+m1BcPbRW+LwjAzL/0jvhfdadgmKiFcSKEFe+rueuTBdFu/09U5svAqicT09XTi6IB+bqv9sYUKyoOyLP6klEm4itVFi2fMrzBRtq3i9ffCJhq5fLaPgcCCUuaXzcY8IbjTav/rgXZyZhNneOPSwSA0xfLPOHdFs33VpN2px8uUUAD6Lwfd8RxOIvlc8B9RzlOY/QGwxnoAb06M8b6LVjzyF0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=33.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.6.1
Release Details
UpdatedOct. 7, 2026, 7:46 p.m.
Changelog

Changed

  • The App Store description now lists the library import / export feature from 1.6.0.

Fixed

  • On wide screens, the backdrop of a movie or TV show page no longer covers the navigation (#69).
  • In the add and edit forms, selects now line up with the date field next to them, and the "Mark as Favorite" checkbox lines up with its label (#70).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signature4NmLpgSqpBcuvJFv+Fa8/Rm3cZNLYo/1EJK3SQ6CB8EPuKxVbelPt+oImJ39cmEb
6lLoRV1ATjMe8BCtWTZHij272U7TUDL62dqnR6fhk95NoRG3+xWvZ4O/TQ3wbk7b
W+5r4sr0HGqiD5w9h8Fj387v0rvpBTTCVZrdeanbGsfycGO4/0ox/rCarC41y/W1
TR5UxF04WhsqdsPSQh2n+FVlCldKWB3gDojMCEJR3pBf0zZq3OEAtWBLk24Nr2pa
U/rPVdk8tI7RYDEGQCDlnlBv7hpDy3fkdeWSfKIK6VZmMx6wnJozIXYa3jitlILc
bZ9uWpeSG/gP7bItmONDQ+q6kuBCPwCr7yHLrvdJ+MN1jSqEdZbMLaViwLQVxYVw
n70rQdgkskgD+J51aumhYA5F2hStkgaDkkeEFf/1/zLjz9xFjUOteopM+qf3p1gk
IZ6NKxBZnI3A7XxxLTk3fGPMsFblt0BAwMtJC7oZF57aKW4uQbz/i4aMERKp6CtT
W/KV5B2CqL12jkXLPALEPxKks7q3O7n/eZxAFCJQ1BWT9t7VxSKHwt0FOrUlfJEj
66cI6PNKfSGw4W62zW66QhDey4K6hG80SQ89+/gFOPyEvzCksfhhYIuhtoMKJoBx
wXz20NfVyI1Ejw3LEwuxEZbKQdKPFcqPVA6boyaTPps=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.6.0
Release Details
UpdatedOct. 6, 2026, 6:22 p.m.
Changelog

Added

  • Export and import of a library as a single JSON file (Settings → Import / Export), for backups and for moving a collection to another Nextcloud instance (#62). It covers movies, TV shows with episode progress, rewatches, ratings, reviews, the watchlist and custom platforms, but not the TMDB API key. Import needs edit permission, skips titles that are already in the library, runs in one transaction and needs no TMDB requests. The uploaded file is validated field by field, and a confirmation dialog shows what will be imported, including the library and time the file was exported from. Export files are named moviedb-<library>-<YYYY-MM-DD_HH-mm>.json.
  • Settings "About" section now shows the app version and links to the source code, issue tracker, App Store page and license. info.xml gained a <website> entry.

Fixed

  • Saving settings showed the "Settings saved" message twice, and removing the API key showed both "Settings saved" and "API key removed". A failed save could also show an error followed by a success message. Each action now shows exactly one message matching the outcome.
  • Importing a file made of a huge number of tiny entries could exhaust the server's memory while the file was being read, even though it was below the 25 MB size limit. Such files are now rejected up front.
  • Control characters (such as a NUL byte) in an imported file are removed from text fields. PostgreSQL silently cut the text at a NUL byte, so a title could end up shortened.

Maintenance

  • Tests for the export (including an export → import round trip) and for the remaining import limits. The import and export were also tested on PostgreSQL.

Pre-release of 1.6.0 for testing the new export/import; its changes are listed under 1.6.0. It was only offered to servers that allow pre-releases.

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signatureg1tV4oIWUHNEku7x9Z7favhaUd8KtidITA6rPee8nOB6LrUeZXNWOuMCHAPh9yxoRtlmUHPQhM02//J39TeUWTOKuOPl2GvfIofEbNZPLO2j2LpSI4ucSeQIYcb9RkhC4IknVDENJ8EBNHKiJ96Kh3kI12hZrrHer4kjK29UOb0IiCZoCY0L1fpuQ7/YmwwGy1W33MS6k3X/Rt/jOKxaxNGDci5n709adR+FDEpsw6xWXx2P2hcDIot7eBN6Orc5ZRWcilkYnZux9CXdUapP4ZdB7eeJTefNjU5IMxvlTbrLG8ulkcJ/OWHuJ0BgjVKD0TesIr+kyt/4kMJo5DBLkGTtVqgGZtkdGc43CtnIOSVI/A11prrvB7Auawy3w9gFD+0ndDfg9LnS+tMPlMStjG3IF9RMXgeuDAsV2GGOu7QDjMWO71KWpFyNN8Xo10eqCL/zXNjQaDXsGwuYiuruNwQdvZYJ8vC+6w0S8FXewwosAq7GZgVA/D2wpIxpBhl76GlGcweZUJB2fV7zPjT2Kawi8moRh6oDUVuxBJT1fp3PN6W3UKpd93SMzIsXNE1C25wQe9DPqfCGKcZWYaPkwwWfsmygUowt796VRXpld8ee+klurhHxcg7bE/HxpYhaSMxaae+W7SFXHVjyrPbmZa4nry9/C/Zei593Yveb6S8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.5
Release Details
UpdatedSept. 28, 2026, 6:49 p.m.
Changelog

Added

  • An "About" section in Settings with the TMDB logo and the attribution notice required by TMDB's API terms, translated into all five locales. The same notice is now in the App Store description and the README.

Maintenance

  • Upgraded vitest and @vitest/coverage-v8 4 → 5 together, plus patch and minor bumps of webpack, eslint, jsdom and @typescript-eslint/*. No functional changes.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureyCWt1i5hurMVmbsvYoEIcAWrz8j37SE1hATcmGXhK7I1sX7LisRP8Y1AgicgzVVa
p2X59Iy/J3Gj020tPkB6QKsaRngdg6+lW50Hn5gZ08Fl9h8ODhl5H5JKjnSzbEkM
2GQizK+VyH+6tenpU5+UkjM0AuzFspqQlSP4eCLW4sVE8rev/q7F1hjo1Yt7lqpq
obpKvImzyoPlbVCThMFw4DW3mwrhmqAdD87yqlJ34g43ddErfM3vKmDRQWewtENA
AAVKkuC15hPqc3Z+Zs6LJLGq/DKFSu1rvW7MUqc6wNq8kt1HL887Kleem5+jHSEG
wpmF2gWX3rV4In+gHUVgM4INqfxPj8APAlcvrtLYs/DtXX9EW0btgrCDEhlJkEJA
FjvNAKHcci6av10CNg7UCNzmbnt2ok8ojOg3nrg8OnpHUHqRS3qBH+dZAhj9sAEl
1WCJLT3vUUXapYwREFpvNKDELIRxmg8D6OWh6NF9VLpXY6xyICUwS/dk4tiriItE
QtnlqyDagRjif2aItJZULRDOPC737oL2KzZvRmImm/8UFR9QFtbe/yU21x9ebl3n
160RufMVndfA1jGM/ss+SxvrpnO1gNkl/fSVFIuflx0gINHo6kcg2BsqB0jDwy8H
Y9W7g072frrtpVgVznCOZIDlG+SDZbFCsfTwaALgs3U=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.4
Release Details
UpdatedSept. 21, 2026, 7:59 a.m.
Changelog

Fixed

  • Several UI strings (search placeholders, "Enter movie/TV show title...", "Importing episodes...", "Write your thoughts...") had their trailing ... normalized to a proper ellipsis character (…) in an earlier change, but the translation files still keyed on the old three-dot strings. Non-English users were seeing raw English fallbacks for these. All five locales (de, es, fr, it, nl) are now back in sync.
  • Added the missing translation for "Failed to leave library. Please try again." across all locales.
  • Fixed a typo in the Spanish translation of that message ("abandonador" → "abandonar").

Thanks to @ba3r for reporting and fixing the translation drift (#47).

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureKoU6GVlNgvtWAC9hWlSkVvK1e4m0Y/0Hm54qQTDgucO86ZdlP3OkJu0TehQ5O0K5
xtVq3jNUvkeoU/rewdLnREnVclfkBsmjeE2WGBgEIp1oM9xivg1jun3kXdXp/FWy
H5vL5MZZkUOLLGztrUJ/wli+DNicZbeEYK636MSpG+WO9gFGMrJRgNFu/34/p+OA
CyTpmSRW/1o5JwamYxGW1eCXwrJcDng3nzvyaq9HcYanMLU4LJi5XF43ZZXyJEJS
iywTogu3BDPfS0cfZly9SG3n5aSROV3FGjYjgOi1abjXZthovKHBps/HCnqmeBB7
vvjsNT15+QgbHgMKJmBLa/2NSb2iRbHxWj7RemBnW5t0LYpaTM+GiubOoPEACDkR
U8ty8UhynqAK6SHT1mmYlc1tk6JCaNy+Dxr8EiqY7hBwt/FkgIh6d4a3ySxljpR9
ef3QFu1PKn/2gGoAxLJYqo29L8i/u1QMBSlnC4/+vFoIqJjZU+t8J7Xto50uGV5e
0UUdOlmfYRH2PfzRO0y/C/nLMIVNsdgthndN0E5qogcT5f7hYVnne1BN/tllc93C
2ypAmgn8NEaksRJPw+2CZF9HADe5s6hijyXScWZz90KDWdUu0eCC8KLSp/bTQuaz
hCfgEJ1r+VdIuKxcDvfRExeCcby8RelgGPIlHxA37Go=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.3
Release Details
UpdatedSept. 20, 2026, 8:51 p.m.
Changelog

Fixed

  • Fresh installs on Nextcloud 32 no longer fail during occ app:enable. Three boolean columns (episodes.watched, libraries.is_personal, library_members.permission_edit) were declared NOT NULL in a way NC 32's migration validator rejects, and the moviedb_library_members table name hit NC's identifier-length limit for an auto-generated primary key name. Existing installs (including upgrades) are unaffected.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureSM91S8OUY7ERDhmFmiIJXRNo6AZzurMLVq7lFZy0GYfMwT5arI2CYJa1XlO1tUxk
0hDrvIY570YgZ1z6wWak3fd+855YYvMEjvUjT4TEBmsa76ZWKogg3TLFSUuFlqaB
Ktw9gKw4VsGqce4jinvAiSi66ZmRcTFJZd6nltqUrFQmzhcSDlshJkYs2UCqmIQL
7j56ylMMxhLWx2/zfMn14InRqNyXZuHzamrgGLKY+65BW+y/mlHZvGS/Pf/ivOD7
8JOR9NbLhtk3rO/g/ymTJW6smRkl1XcXKzutRxjQMzwZBFc4GQhwmAHFDGWx8B3O
yTiyZGKhvO//UKIEDk/JPcYU8lNOLN7MAN9QJgPGStblMasS0Hvlj1AfryTQS+Uj
SWTLlfWd3FjPB8sPc7i+V3i/CohnKKCiEJ2XX+tviVErn5z2l3hVw1RzQHyHCKea
fOyfL6CpCZQOWgmJuRpFkdoeRiw2PeH03cMN+4FeBTnV5cktpL+qcMA3uDyfpxAD
ijRxYDvmSj81Ylb83Aa7HdO5W4NJPaimu+rzX2wagomBpLeab7VT3Z2lT76E/h7Q
89r/KbnnsjEZBzasOmTYZ8cSx8di785gJcdqoh7tlronUTRm1TJJDgPX1P3gBCkm
GUsmBDZmrZ75Ubl3Wz3LSKWz7DMNkncZaPMZNRAtH7k=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.2
Release Details
UpdatedSept. 20, 2026, 7:22 p.m.
Changelog

Fixed

  • "Watches by Year" on the Dashboard now groups by the year you actually watched a movie/show, not its release/air year. Matches the "year in review" convention used by Trakt/Letterboxd.
  • The "Watches by Year" chart no longer stretches to fill most of the screen when there are only a few bars (e.g. a small watch history).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signaturekai3DGfd2M037yLLMLcYqZWHi6lneYfEykTrNFtz+M4LA4eh0LS7NhfOCnOcf+Hn
otpQkbSb1+VtwlQba40wUBtoQn0CHrgZ+TfUsCX09I5NGSBDZiq+mtlCexIL8tWN
i9xD5jkfxocBn63s5Iw9tG6IXqBCEspaR9GIdJsRp+3tNV62uCederi+LWpfaErn
YYbNGMXMhlXyObkamiA0Y02bIGOg9r7iHURklVUdObG5NKMUnldG+b3iqfpU7Gz6
7otcc3I00Cq3KxSB+ZAypTml6DjrYpf54zp8JL0lMi63QfXBNjSY+dkwR00+ufqC
RGIwZN5v1azDVMOD0zHUQyS4Hk5425tpX2gzq4QneEQXc8pCKLPq4Nedf0ghEf9q
snHNMvJB3vgW5dsUlRMtvPEK2FzA9oQR7SASx6+DoO72/tba3adeAtpFfMKLjh97
WPkuR7JfKENrDSzONzZou13ylsWVmc6Qx/1WA2Y3mlxOZOndIbGZYVqXomKOgXGR
Cf1ECEBvQQrdNLaRVSl6/yma4UNVNOOHp8OoszZNV49NkIuprLbbDQruB5I6e+fN
lmzmIWOQOeaU8hcw6422L1E2e7/oPtwNVr1BDFWHIb5AhDvEgDijh//MgHXtyhtf
Sk0OYyQYmbrw5Nj8jqGrhV4Q3FXtLmvj5otumk0QDPM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.1
Release Details
UpdatedSept. 20, 2026, 6:30 p.m.
Changelog

Fixed

  • The v1.5.0 release tarball contained stray macOS AppleDouble (._*) files and extended-attribute metadata (from com.apple.provenance, newly applied to files by macOS 26/27), which broke the Nextcloud App Store installer's "exactly one top-level folder" check on some upgrades (Extracted app moviedb has more than 1 folder). This release is content-identical to 1.5.0, repackaged with COPYFILE_DISABLE=1 and explicit xattr/AppleDouble stripping.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureMNWzJHDY5k2lApRRKmevWNUpqhtY7kORwD4FBvXTTscE2boide8e2JzJMSw7qbW/
OddgepINDy5AHgUw6hLbSmREvG5r44+VAoj6GJFtcJiTL/k4RHfSEECbEzBUNIsE
+Qray3p5h2sZH5Cqykq96pcGL230tEj8+tz4G6XQNMoOeghb5SZrdVeUcwpQGeoj
5ojYPd5TkUY3B+biuJxe4LwolWJRrxhNrW4E5WIgoibzO5VDggwyHK5GUDsLIiTb
uot1f546sL0WxbcW07K8kXJ5nnKbA25eRDvEqtgHBxNs667wb2ArMCAcEdLwR822
oFungmHhkXN5qTouDg95dbdoCBddYOE7lrK/viiIsD5xYwJ45/pWGHd0NeMJiDcN
+2NHrLC4pPo1k3PQ3snp6SG0DSOF5Sc/90ygd0CdWR2QDEDvYLnxIaooB17VUzeZ
3CtIlNJLoPmgMNTu7/H9o6YpaL1Z4CHerTbsd1VdlXGMzmm4kZk5N4v7LQFrpb1K
eRh6/kNjomkns7u4yJErdTsYICC6mgrnbRKIAqEIn9bagmjyQl5nMH9Jpa7Jl+5O
hL7ZekiXjEzvWL4YvrRyupxUVKBZklGmxhNMGpoelHpT1/wm1GSXKCnkUA8TTjMe
NXTKWJrwNHe03RlOCEhPYtNcik/xF04KICtAMi74iII=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.0
Release Details
UpdatedSept. 20, 2026, 3:19 p.m.
Changelog

Added

  • Dashboard now includes "Watches by Year" and "Watches by Platform" charts, including TV show watches (previously excluded from these stats). Both charts share a new "Show" filter to view All / Movies / TV Shows only.
  • Watchlist pagination (page/limit params, matching Movie/Series), fixing the previously unbounded /api/watchlist response.

Changed

  • Visual polish pass: consistent card hover/shadow treatment across MovieCard/SeriesCard/Dashboard stat cards (shared radius/shadow/transition values), a subtle poster gradient scrim for badge legibility, per-stat accent colors on the Dashboard, and richer chart styling — gradient-filled bars with a grow-in animation on Watches by Year, gradient fills and a smoother track on Watches by Platform.

Fixed

  • Recently Watched and Top Rated cards on the Dashboard no longer collapse into unreadable narrow strips on mobile viewports.
  • The Dashboard chart filter control no longer overflows the screen on narrow viewports.
  • /api/watchlist, /api/movies, and /api/series no longer throw a division-by-zero error on limit=0, or accept a negative page/limit that produced a negative offset — all three now clamp to sane minimums. totalPages is now consistently returned as an integer.
  • The watchlist's media-type filter no longer silently returns zero results on an unrecognized mediaType value — invalid values are now treated as "no filter", matching the stats endpoints' existing behavior.
  • Changing sort order on the watchlist while on a later page no longer leaves the user on a now out-of-range page; sorting resets to page 1.
  • The Dashboard's media-type "Show" filter is now visibly grouped with both charts it affects (under one "Watch Statistics" section) instead of appearing to apply only to "Watches by Year".
  • Switching the active shared library no longer leaves stale watchlist pagination/filter state behind — a page number or type filter left over from a previous library (which may have far more or fewer items) could point past the end of the new library's results and show a false empty state. Movies/TV filters are reset the same way.
  • The sidebar's watchlist counter badge now always reflects the library's true total, not a search/media-type-filtered count — previously applying a filter on the Watchlist page made the badge appear to shrink until the filter was cleared.
  • Opening the Watchlist page no longer fires two competing API requests (one before the active library was known, one after) — the first could return data for the wrong library depending on response timing.
  • Rapidly switching the Dashboard's "Show" chart filter no longer risks displaying stale data if an earlier request resolves after a later one.

Changed

  • Extracted the duplicated mediaType query-param validation from StatsController/WatchlistController into a shared helper on AuthenticatedController.
  • Added a resetFilters() action to the watchlist store (mirroring Movies/Series) so sort/type-filter/pagination resets follow one consistent pattern across Watchlist.vue and the shared-library switcher.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signaturexlyj+iMssN5+P1t+mfcYmQON/vtzerlnfPfb8QSxeAxwBvZCluFiIJ0MO6YY2R1K
4mwFvG4Kd1wjQULGd4g4fN+VN7UwsS4Jdp4jolx+qKIc5Hm5YGtTjO0DgOe3AfmX
5NuQzUgbV2f8SEhb7mVKsMIC51HCez2r+AEq0AQOaNOVv6SETZ8FzsYofWHZwxUU
5YzsBD1fOGilOLQEx3oEwqxHLQaknCOnmrKR++jF7v0Qtz85zp8oC9cophzJD7ei
BayPpbB1q8oX73mt4t+yCfWbzgBZRGWrsxPuAuP4YUYAMm8v4ii8RSuE+zeGDwv1
yFwxbmvCqw3SvIvLo4XP/ep0RQcOjt1SKMS6lfilIKZKfx+2oA+JcC5tR9fUC9w7
8SfAxBcm8uunMGl3SCKMlFig9CRJU80q1S//vtTWi5zJOh8Jdvc5fLg4T2weamsE
MeqD0OYlniLRWuhVR05FNxUeFKLMnDtdYU2hHhgAn420sfpPxIIaax9rS+DgBMqu
m6l2oOxXe74Rj6BjyvoPquYEXg30DBGl3isNgxD7j+93CKrXFUgltL7wqE/mXFVb
pw2/ZzaRbnY2qwBpfYXmYRi0n1CYpKdKSJtMNCQw2rG7MGhAeeO4/UJvGhg/DRdb
O2URYsUTmQmu5gOP81hXZ0hsLYIunFdLqn8nSnTnO6M=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.4.1
Release Details
UpdatedSept. 13, 2026, 2:22 p.m.
Changelog

Fixed

  • Translation placeholders now render correctly in paginated movie lists.

Tests

  • Added regression coverage for translated placeholders and plural arguments.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignaturefW/4adHB/dpgcR8RMr/F6/964k5AHNAz9qD1DjFFnAh/tVFcjQpUrd7ZBR8+Sc1uSe9NE8oogHa/WZ6bGr81mR1tdzUPq2jAzS91oCz6EM5o0eH3zkx21JjMLdZWJGQ2aSlqa14s/EtjgYWtWUS1HOHRfIyCmPvbvJciWQIZPXyD0GUnr5EENxgzvOm2n4duZ510ATiozQ2g3+IvlY/Mnm7rdwzza44Uokre3SSnnwi5aCA/GBjZdq3Eyu7EWtPNqUCyiW3+8l32GF1IqInQC5X00eKrEKfao8A8Zyvt6+3omx92rw4MObORIZnr7VSvu5yd7S8mz5bR72dSbNVFz1omC2DkhZquLvTE1ETLE3sxHuqEAjD0DC7CmqMIUy+mnRcNBSDdkgnuae2TOklbJK14m2tXNovCBL6BtGqIt4kPHBNloxr+zeanzhjwR/8Qz/xPbGudy7P6rGGPrdVk8GzRm+tCbh6TvhtMmYSo+GDsaJN9zQ8Tocsul7Ja960NN1jVJjIQhtyWQtd5Ym+TlPZ5UjmIqEmWrbWyzRdwzXgfAT6J1IE6hXZvujWfxFZV3u0seVej2gowsJDGD69/iWjtC5WVliAAoGTNBcjgBewO11+TeIb4HMa2cQsg9VdDeYMF/Uegawce68Tc39qWFl7YFDnG/iYnT/61T8r4QtQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.4.0
Release Details
UpdatedSept. 1, 2026, 6:57 p.m.
Changelog

Added

  • Shared Libraries: create named libraries and share your movie/TV collection with other Nextcloud users — assign viewer or editor roles, manage members, and switch between libraries from a single account. Everything about a title (catalog, watchlist, episode progress, ratings, platform, review) is shared across all library members; user_id on catalog rows becomes legacy attribution only — library membership is the sole access gate
  • New DB tables moviedb_libraries and moviedb_library_members; all catalog tables gain a library_id NOT NULL column (Migrations V5 → V7)
  • V5 backfills every user's existing data into an auto-created personal library; V6 enforces the NOT NULL constraint; V7 heals any duplicate-membership edge cases left by a check-then-insert race in V5
  • Self-leave: members added to a shared library can leave it without needing the owner to remove them (Leave button + confirmation dialog in the Libraries view)
  • GET /api/libraries/sharees?search=... — user-search endpoint backed by OCP\Collaboration\Collaborators\ISearch, respecting Nextcloud's shareapi_restrict_user_enumeration and group-restriction admin settings
  • Viewer notice banners on Add Movie, Add TV Show, and Add to Watchlist pages when the active library is view-only

Changed

  • All catalog endpoints (/api/movies, /api/series, /api/watchlist, watches, stats) now accept an optional libraryId query/body param and scope reads/writes to that library; omitting it falls back to the user's personal library
  • LibraryService.resolveLibraryId (writes) throws on a denied explicit ID instead of silently falling back to personal, preventing cross-library write confusion
  • Member management restricted to owner only (editors can no longer add/remove members); viewers see the members list read-only
  • Library delete cascade wrapped in a DB transaction (episodes → watches → watchlist → series → movies → members → library)
  • Rename preserves the caller's owner role in the response (annotate() helper centralises role annotation for all library-returning endpoints)
  • GET /api/libraries/sharees requires at least 1 character to prevent zero-query full user enumeration
  • Dashboard "Recently Watched" now interleaves movies and TV shows sorted by watch date instead of showing movies-only followed by TV-only

Fixed

  • Library rename bug: editing the name field immediately after saving no longer reverts to the pre-save name due to a stale local binding

Tests

  • 121 PHP tests, 136 JS tests, 0 lint errors
  • New: LibraryServiceTest (21 PHP tests covering create, rename, member CRUD, self-leave, canAccess/canEdit, annotate)
  • New: libraries.spec.js (28 JS tests covering store state, getters, fetch, create/rename/remove, leaveLibrary, member actions)
  • All pre-existing tests updated for v1.4 API signatures (libraryId param added to MovieService, WatchlistService, SeriesService, MovieWatchService, StatsService)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureW/fG+iP7aiQ4JEqCs4ZaUYIW5HEfc+0t5YrUipKM8MEUvnJZh0N48oTjVhHI17TU
BcpmMBoE9/0TsaLEsK/F2sPUij5qhbEbnHIebiDI579YJxlSfNqj4ITcVFfMYiHh
6q2uSLsxyb7fQgL66RHbzaqq3PFRfRhdc5OmoJtB3Hq+xpvBDrkz516zKjD8hy01
CrI2kLhzYvqf4V8uqBCvfEh+SP0vlCuIGyzjYpqwIAw3YX6Y/2/3Ll7WCoAGAOEA
h6jCiGRhPFXP4tgD+Hj2hqGyRA9LjgkZWLbEGDSw/TclEee43pCAcT/b3p/Pv2wH
PokcYxn+cAAeOxqWG/v/JOk0SoDItx4gH1z4dKAVbnXz3emvAO6GjX/O5M80NZAv
ZWTzNjDHi0ErKAMb+WRRR3/aEvFt1UqIUsNGq4lFYPUX/lYePMEF/bY/aw3joHse
XgwhP4y2qVERPW48FX7GphVFgy7FdAmYXuCz6TapWJGx24bQyn6R7laNNAubGazE
0kvBi8day7u5iGib80rm0IBoCP6c9FEXFJKa1jlrCqfWdb3z7z0zn5Os2bx/sQ6X
rj0e+c/c75NtU48RBx61oCDGZM2RW9VoMfnf8IYVEpn391aNLFKxedFG6sdJvto2
tx+j5B8B7BH2wSLBeGPV9BnIw6ZCeMgB5r2mxq9YIBM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.3.1
Release Details
UpdatedAug. 29, 2026, 7:33 a.m.
Changelog

Fixed

  • PlatformService::findAllForUser now checks hasDefaults() before calling createDefaults(), avoiding an unnecessary DB write on every PHP process start
  • SeriesServiceTest: test mocks corrected from non-existent findByTmdbId to findByTmdbIdAndSeries; static $defaultsSeeded flag reset between test cases so platform-seeding tests run in isolation

Changed

  • App Store description updated to reflect TV show tracking and rewatch support added in 1.2.0 and 1.3.0
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureMBqLzKCQipMCqtf0gq6QFUqrK631nyx3olhG568t71yV/TOlV8kNQkntE1dQqNay
t6HB0DDREGQqfvGa8cg5MBmfg1aq3+8i/DWxVOAmavSD5vU9of2XnwjZivDfvJNu
/yOvUz6DnmK/GMCQ/FufzVZKanTCLPQ6d365qdnyHSpJcjXVp4hir8d7YbwGxqWo
DNSq6+g13CvCxMLo+tCaQK6AO3YZYKscYlSoo7YTO5vOfMErupZdv8TRHz0zj8YN
+kndD8NarfyOIEid0k8KTcA7rXdAIN13V8CjtQnwbjV4uk831MEfA6weKQkdaxt3
mnUBWi4lvCLcd2pqDlriHe0c/jqFLll2GQJNoXchfGH7nYwE5Lfn3+5lq6gha7Ke
KU6rsN8DlhEdKXl80ZIWfHwOGgewUhrVx5spgvaQ90Sjsq4J+ilX1osXQW+4YMyH
w6uKZfDFbR9t/NI55iBjDuAQNGkE6pIIVDcwOu48y5KSqC0bKiO65jwrA2dr5WSn
7Z8IsFbWR6rszgI47bbuhbV8Vfk+BteeC91LfyBvWljDuxgFNeOXQBhTeedsyx6B
y45vDccx0I5KaHm6lTlZ8eMeEGmADQ3qVaB1Vv/zmgt2cGJljO1EpbIBBJQsqn2S
eRw1V0S8qgctZTtCIdXc9jyIusM/cK+dHdR/hYKpvCU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.3.0
Release Details
UpdatedAug. 29, 2026, 6:50 a.m.
Changelog

Added

  • Episode-level TV show support (#15): track series, seasons, and individual episodes. Series get their own /tv section, list view, and detail page separate from movies
  • New moviedb_series and moviedb_episodes tables; series metadata and every episode (including specials) are imported from TMDB on add, one API call per season
  • Derived progress: season and series completion are computed from each episode's watched flag — never stored as a season/series-level percentage. Unaired episodes (air date in the future or unknown) are excluded from the denominator; specials (season 0) are stored and shown but excluded from progress
  • "Up next" card surfaces the first aired, unwatched episode
  • Mark whole season / whole series watched fan-out — idempotent, so re-clicking never re-flips; only aired, non-special episodes are affected
  • Series-owned watch metadata: a TV show carries its own rating, platform, language watched, and watch date — set on the Add TV Show and Edit TV Show forms, exactly like a movie — stored as a single series-level row in moviedb_movie_watches (nullable series_id/episode_id). Individual episodes are a plain watched/unwatched checkbox with no per-episode metadata
  • TMDB Movies/TV toggle in the search UI; localized TV genre list
  • Watchlist now supports TV shows as well as movies: a unified watchlist with a Movies/TV type toggle when adding, a Movie/TV badge on each entry, and an All/Movies/TV Shows type filter. Marking a show as watched imports the whole series (all seasons/episodes) and routes to its /tv detail page; marking a movie behaves as before
  • Dashboard tiles for TV shows watched and episodes watched; total runtime now includes episode runtime
  • Translations for all new strings (de, es, fr, it, nl)

Changed

  • Migration Version000003Date20260828 adds the series/episode tables (including a watched boolean on moviedb_episodes), relaxes moviedb_movie_watches.movie_id to nullable, and adds a media_type column to moviedb_watchlist (default movie; existing rows backfill to movie) — all add-only or NOT-NULL relaxation, safe for the SQLite fresh-install batch; no columns dropped
  • media_type is now populated on movies (default movie) for forward-compatibility
  • Year and platform charts remain movies-only in this release
  • Dashboard Avg Rating and Top Rated now include TV shows alongside movies — a show's rating lives on its single series-level watch row, so it counts toward the average and can appear in the Top Rated row. Movie and series cards now carry a small Movie/TV type badge

Fixed

  • Default streaming platforms are now seeded lazily on first read (PlatformService::findAllForUser) instead of relying solely on the migration's postSchemaChange hook, which Nextcloud does not reliably fire during occ app:enable. Fresh installs no longer show an empty platform picker; the seed is idempotent so it never duplicates existing defaults
  • Recently watched TV shows now appear on the dashboard alongside movies (the recent stats endpoint returns series with at least one watched episode, most-recently-watched first)
  • Episode watched state is stored as a boolean watched column on moviedb_episodes (toggled by the per-episode checkbox and the season/series "mark all watched" actions), and total runtime counts each watched episode's runtime. This replaces the earlier per-episode "log watch" dialog: episodes no longer carry their own date/platform/language/rating — that metadata belongs to the show as a whole (see Added)
  • Series import no longer fails when a show has a specials season: moviedb_episodes.season_number/episode_number now carry a DB default of 0 so episodes in season 0 (which match the entity's default and are thus omitted from the QBMapper INSERT) persist instead of hitting a NOT NULL constraint. Affected both direct series add and "mark watched" on a series watchlist item
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signatureo53wujykdigXdIMMC7OwGc4U1s5G5LWDUGFrsnyTbMe4zh9zLM/pb4KwuGJNbSWZ
lNAnrJg86s3Uj+tNdHMnEVzYkeAAqZ92TSdVN6UCbL+LMU+LbdJJOijXhEQho0xF
NF0x1U2+AzuW6fVDOC7eYmtIuCBAB/4xiGra/bqGVPGTpttmdYpkg6TEmF4NkhKs
TH0sNeoqbOKH0bvWU6q4d27Icqc8klNA+Eo61AGq4OOg4zY5I2CTdZHrGQW1uarV
esawGTxZpEf0B0+eg3dvMOXRq4f7ULLDGxvgbSZ8ulevAem0zHuO0ldeov1YJScb
5ko5nINoVV/AKJLqSgqkMX2XSduc12llo4uYD2aiSS4GqoIX60JwO2fFR59YfphM
1i4E5hVxGYWfXEOX9h38sOt2ea9yUS8/CUYLaXppP5Xr7gC1/gShFennJ4HEms8+
LAJXGgYaUwVR1OZzQ1IoydswGSeeHV++5Qs2cjD0no/Hy5FG1EFUPBJUuKmcwQSG
Q8YmI8/gxs+5M1O4vxCXWl4NaOnWbEkDoKKotQA5aOJVZfk0zIFUSjb0ZW87Q5NU
tBDZNi6ccg2DWNOxWdYgvpBwGDoLySpS5Z3csCKLkEmET6YGocEVTk3QdDW/XsYV
AXyD3J/SF1omJfWKZMJhLGxmdkDEdWg0/XSlbKgaUS4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.2.0
Release Details
UpdatedAug. 25, 2026, 6:53 p.m.
Changelog

Added

  • Rewatch support: new moviedb_movie_watches table stores one row per viewing (date, rating, review, platform, language). Each movie can now have a full watch history (#19)
  • Log again button on the movie detail page with a star-rating selector for quick rewatch logging
  • Watch history section on movie detail listing all watches with per-entry delete (hidden when only one entry exists)
  • Watchlist "mark as watched" on an already-watched movie now appends a new watch entry instead of creating a duplicate movie record

Changed

  • Migration Version000002Date20260824 backfills all existing per-movie watch data into the new watches table with a verify-before-drop guard; legacy columns are retained in 1.2.0 for safe downgrade and will be dropped in a future release
  • Star-rating selector replaces free-text number input in the log-watch dialog
  • Removed redundant date/language summary box from the movie detail header

Fixed

  • Edit form: rating/review/date changes now persist correctly even for movies without a prior watch row (previously silently dropped)

Tests

  • 73 JS tests, 69 PHP tests, 0 lint errors
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignaturezhR5gYHFnW4DQvbjaabhFfJoVCbw2xCpGDCzNmSHHNauQYQqsDweLrZpfHvADAHPuAvzv4OPDCXxngxRRvDTviwUnx+jmuvNpzSDazRNbQ18yZdGqrKF/T/ccCTMjpxtDqTnOJJIcPpAAASc4WWG6Vu44w3L2bzH7/4yC2AkXuAFoC9P+yAXnDNUvgpfHHGRj7CeYjBlqOZNwvOTfYacvw+kyJ0ozzWteH0sy5Y1+I4BNL0wtK3T7V7RD1BzALT889qCGyUtIph8D7XT57+uiVAntBZQQpTqoN3yGNu9fTPVzyC5b8frY45XOGX6pSQ/q0uQ7++BU4sKp8DuKiEZ9mwbHNp2Y4CnoY3rSE+IWi6CZpRAi+UY6UeL9dwcJ98Ts/1SHh9HYn/URPi02mAI1xmXkTfkQyfU+lLvASs5LfYrx69Cdi9O43tbYijo3SrtTANvy2TgicMj9maiMPP4eCtJ2fyN5T2vvYxJv3GYvKOmc4ZhBOG4OPhlOZtb1HnGbXFF+Vm/9oPpNax5KrbX3Ne7kSZs791ibk0hiXNPfHehdDZxBnXVTVhXvBknF8VyAQ09lXKlQ3GT9R9PKcZDVKXN4m/do4Lcs7XgeSQOEzmXS8LUY7ihwjHv7AIWK1e6To3MKLd5mT0RpJSbnTv6OFwhgv1psHfjOkkVQzVRkGs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Minimum Integer bits32
MovieDB 1.1.2
Release Details
UpdatedAug. 24, 2026, 6:27 p.m.
Changelog

Fixed

  • Prevent adding the same movie twice: POST /api/movies now returns 409 Conflict with the existing movie's id when a duplicate tmdbId is submitted, matching the existing watchlist behavior (#17)
  • Watchlist store now shows a specific "already in your watchlist" message on 409 instead of the generic "failed to add" toast

Added

  • Friendly duplicate-movie dialog in the Add Movie view offering "View existing entry" (routes to the existing movie's detail page) or "Cancel", instead of a plain error toast
  • New i18n strings for the duplicate-movie dialog in all 5 locales (de, es, fr, it, nl)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signature3svKAWeA1wnMKWjv6gguqWhW0hzWaovMs/B5VSy/vgo3j6zWKdUSnhPh18kL1STC4zCJ32lrpiMZzzeqMLUzDbVobV/8vY+fNpy02JV8doFOd+3UCf2kpxjY6Mt6AnfgSpoS7RDgykSZYmnX0qcVvH3GMJEfoZ1qCwSPZ5o2OPVQqv58e1jTYo+NVyOV6lkGZSoBt/qFxbupa4SZpSHp8Nx3h/fSeQdmRKewWjzHTJXhKXgpbMWUu0iCYx9wF/+uJO60OAGD4NFtVIPQmS7TEJ2CdYtQl+2DGquEPAx41RlxCWsjskwKpq5/BSq/uogwbM6Gz9pp3+G8viW6PDWC+nLlGdReXETOdVLCCMIGSGPfW5adYl2ZZb+gUcwb7ndKZ5Mm7vuoRh/HA5KNwxbSPwEXKCBY8WgkzcRRA/Ijc014G9run2px7yLA7E/j1Ym8ENkvOh3Kpk5V79lPjOya5ul4KcJw3idLmGSUFUDS2e4htJCmOyE3u3p+8t78ZU+PVvXOhxL43Aet9Bg3I+jW+WDqtdiRDv/9O4eiGCi1DiJBclroeKIYamOHcco5a3ZTEeqEe9LTS/iF1078BI7JTDhT/iAh1P+Fxpiarvr3gEh/tR6ae0OrwTH1/VWKQike1fkEzubcd81ArfoudJrylOxv+O/2W27j28DGpAI3DB4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Minimum Integer bits32
MovieDB 1.1.1
Release Details
UpdatedJuly 31, 2026, 10:10 a.m.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureoBoTuKwkslFX+XV2GPd7IYGCm/NvKhzIAawUt8qG9Gy4GCmIDGmPAtoiQa3ze9+2
MttRv3DMyuODHW1/Idr386cNa+L3witDP8hyiNv6uWLlJzQeh3Qo/etyKfhtdHGf
R4YAq/sIIQF02s9jtlsKaQ5dDLd+EpbP/1JD2/uWPu0vbQerL2HJTLIrPGn78kI4
nyK2nSUJCH0MtV4Elq4dG87Sg2jZCQvqkxZgle208FN9jx19EogjZSy1Dfyq49CI
NzdoKYX6+/EGcF1Vizl0ibtR+A+k+8E9c40qnUrs+XfbLNe+G+VBZ/Eo0AvEO79I
hiJWWaqorAwIUkt27vjik4Re6gsSjP0qo2b9btnsYn2Dj5s+dfza93QmygS6ExKL
ScGvTxSr/tANM6gAWIZqmzSu0plvp6uSA+1dRplhPkLGMk4KcJS0y1YvGdXEpbK+
caBHHdfkG6EAv9Y65+frFxCPxQdh9UloV4bYcVV8XTbhISC9J/rKPd2qlcmkaM2d
SsaC4+3F4Vbcw26CDEYi7mUl9SGW9BnBVqUmiEjZhbIAmuJssuwaVQQpn0nkUcxb
GE+k8b5+5W5J+EdMZISrZtChQz/uS7Ori+XSkxYuL7msRhlmUAWibZUl9LY66OxY
LEXNNteTYhC0n6PSBpIcsPNkFYGW5SLVsv21gyxc/Dg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Minimum Integer bits32
MovieDB 1.6.0-beta.1
Release Details
UpdatedSept. 29, 2026, 6:16 p.m.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureIVU+tpVoMJZkMAJEFNoTD1LzoPZH09lhaZ5hWZg2Z5XnvRvDLg2wcWwovsKTCKd5fkf7RjzjFYQhYl6MvRZvxeESq/xQzS8P9TBKtcyJX5rSipoAZOS30n4s5XcD/NbkHAnnf3nwrrtQroFgiKAZZfv1s83M8b3B1QFKfkQQmFclbZHTEkdf197ZGi1O1AGD52YuPmymPc4Bz/CbMaxqjllZw0elt04tdJzY1Ti1fiT5ukqB+3hVNoxwEj7NotYrntQoaOBwFLun4+1JD+lMkZH+x2kwqPienRwH5Uyf5RHdBIAG6kejtK6PIF4SdYhBLc9Ytjc2yBA9mdFIhIO70Y1i7PXynagRXG0haqFWXMYCRWhgh26XUkci/GFwZpsPtyqVdxN4UY7FxlvgQcqPVRKDKhba6DGVepoex5RS25A7YvJbUw4mEfdO2WFAOhJDXYEMkxy4N79u+1V9c3b2EhZ7zeMEbGfWxAnH7okaNOSqQHdu57OGr9ZwThQBFkWP+kEkAz1HZ5VMjguOM6oKMYYaMC2enhFsVIvKaR0gBEWP/eyHBdkU1YRCFI/WaV/5iv1fjAjQjOCUWJsCnew/ruuVbDqFkwfMPUNWZeVXDerxXYJjNCqIxIXZUw+RIuxkuGxq/x9WBfFtLIW6yTli8cmTjUf/1mIF4n+ak89tsBY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32

Nextcloud 33

MovieDB 1.7.0
Release Details
UpdatedOct. 9, 2026, 11:25 a.m.
Changelog

Added

  • Administrators can set one TMDB API key for all users under Administration settings → MovieDB. A personal key still takes precedence (#24).
  • MovieDB checks a new TMDB API key with TMDB before saving it, and explains when TMDB rejects it, for example when the short API key was entered instead of the API Read Access Token.
  • When no TMDB API key is set, the message now mentions that an administrator can set one up for everyone; administrators get a link to the setting. In the settings, administrators see their own wording and a link to manage the key for all users.

Changed

  • New App Store screenshots with real TMDB covers, now including sharing a library, import / export and the key for all users.
  • Requires Nextcloud 33 or later and PHP 8.2 or later. Nextcloud 32 reached end of life in September 2026; servers still on it keep MovieDB 1.6.1.

Fixed

  • Saving settings no longer stores the TMDB API key when another setting in the same request is invalid.
  • The "TMDB API Key Required" message no longer flashes briefly while the app loads.
  • An API key with a trailing line break is no longer accepted.
  • The API key status label in the settings is readable in dark theme.
  • Movie cards and sorting by rating use the rating of the latest watch, like the movie's page. Before, a rewatched movie showed its best rating on the card.
  • The "Mark as Favorite" checkbox in the add and edit forms is now Nextcloud's own checkbox; hovering it no longer shows a tall outline around the box.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signaturev3Jt9K0VipfxocQhfgKoyCQjLISd2dVMs+ZNuXy286HADFdIcsjR30BiOY6fn1CUKOS+heudhJUD+yEUqWjfUAkJxd5sDA3iao0fjnvzBagpXkdymorV7cbET49aRAQv1/jNSaaNf9Gbw6ILIxN5Qb0mxZfgm/YCDgE+FSQvQnssHT3ffW1tBtuJrPsq4Vmj+ZK++H21KM51pxHhpRS6QJYGnCG+VIY7ADlTC5Fbo2oOgXJxheGRieVSabpMoQozTvPhG+YGz034kmy/qt5nHUPmeVG22hFWaGhSDoUx/u/r7mBbl+ldgbYkGpz2MrEvGZTOTi6/fMQgUVQX7RPGDBpC05jZcz8Wdx4Gjj534/oxAb6dAV0/kJlXzVAtoJ83LeFR+LniHvRJGvq5CF/csJY2f1cQNZl9uExJdUNQWVNgjFj6S5j7SE87a26F5D3/IcU2QZTfd1raok0/mM+m1BcPbRW+LwjAzL/0jvhfdadgmKiFcSKEFe+rueuTBdFu/09U5svAqicT09XTi6IB+bqv9sYUKyoOyLP6klEm4itVFi2fMrzBRtq3i9ffCJhq5fLaPgcCCUuaXzcY8IbjTav/rgXZyZhNneOPSwSA0xfLPOHdFs33VpN2px8uUUAD6Lwfd8RxOIvlc8B9RzlOY/QGwxnoAb06M8b6LVjzyF0=
Signature digestsha512
Dependencies
Required Nextcloud versions >=33.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.6.1
Release Details
UpdatedOct. 7, 2026, 7:46 p.m.
Changelog

Changed

  • The App Store description now lists the library import / export feature from 1.6.0.

Fixed

  • On wide screens, the backdrop of a movie or TV show page no longer covers the navigation (#69).
  • In the add and edit forms, selects now line up with the date field next to them, and the "Mark as Favorite" checkbox lines up with its label (#70).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signature4NmLpgSqpBcuvJFv+Fa8/Rm3cZNLYo/1EJK3SQ6CB8EPuKxVbelPt+oImJ39cmEb
6lLoRV1ATjMe8BCtWTZHij272U7TUDL62dqnR6fhk95NoRG3+xWvZ4O/TQ3wbk7b
W+5r4sr0HGqiD5w9h8Fj387v0rvpBTTCVZrdeanbGsfycGO4/0ox/rCarC41y/W1
TR5UxF04WhsqdsPSQh2n+FVlCldKWB3gDojMCEJR3pBf0zZq3OEAtWBLk24Nr2pa
U/rPVdk8tI7RYDEGQCDlnlBv7hpDy3fkdeWSfKIK6VZmMx6wnJozIXYa3jitlILc
bZ9uWpeSG/gP7bItmONDQ+q6kuBCPwCr7yHLrvdJ+MN1jSqEdZbMLaViwLQVxYVw
n70rQdgkskgD+J51aumhYA5F2hStkgaDkkeEFf/1/zLjz9xFjUOteopM+qf3p1gk
IZ6NKxBZnI3A7XxxLTk3fGPMsFblt0BAwMtJC7oZF57aKW4uQbz/i4aMERKp6CtT
W/KV5B2CqL12jkXLPALEPxKks7q3O7n/eZxAFCJQ1BWT9t7VxSKHwt0FOrUlfJEj
66cI6PNKfSGw4W62zW66QhDey4K6hG80SQ89+/gFOPyEvzCksfhhYIuhtoMKJoBx
wXz20NfVyI1Ejw3LEwuxEZbKQdKPFcqPVA6boyaTPps=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.6.0
Release Details
UpdatedOct. 6, 2026, 6:22 p.m.
Changelog

Added

  • Export and import of a library as a single JSON file (Settings → Import / Export), for backups and for moving a collection to another Nextcloud instance (#62). It covers movies, TV shows with episode progress, rewatches, ratings, reviews, the watchlist and custom platforms, but not the TMDB API key. Import needs edit permission, skips titles that are already in the library, runs in one transaction and needs no TMDB requests. The uploaded file is validated field by field, and a confirmation dialog shows what will be imported, including the library and time the file was exported from. Export files are named moviedb-<library>-<YYYY-MM-DD_HH-mm>.json.
  • Settings "About" section now shows the app version and links to the source code, issue tracker, App Store page and license. info.xml gained a <website> entry.

Fixed

  • Saving settings showed the "Settings saved" message twice, and removing the API key showed both "Settings saved" and "API key removed". A failed save could also show an error followed by a success message. Each action now shows exactly one message matching the outcome.
  • Importing a file made of a huge number of tiny entries could exhaust the server's memory while the file was being read, even though it was below the 25 MB size limit. Such files are now rejected up front.
  • Control characters (such as a NUL byte) in an imported file are removed from text fields. PostgreSQL silently cut the text at a NUL byte, so a title could end up shortened.

Maintenance

  • Tests for the export (including an export → import round trip) and for the remaining import limits. The import and export were also tested on PostgreSQL.

Pre-release of 1.6.0 for testing the new export/import; its changes are listed under 1.6.0. It was only offered to servers that allow pre-releases.

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signatureg1tV4oIWUHNEku7x9Z7favhaUd8KtidITA6rPee8nOB6LrUeZXNWOuMCHAPh9yxoRtlmUHPQhM02//J39TeUWTOKuOPl2GvfIofEbNZPLO2j2LpSI4ucSeQIYcb9RkhC4IknVDENJ8EBNHKiJ96Kh3kI12hZrrHer4kjK29UOb0IiCZoCY0L1fpuQ7/YmwwGy1W33MS6k3X/Rt/jOKxaxNGDci5n709adR+FDEpsw6xWXx2P2hcDIot7eBN6Orc5ZRWcilkYnZux9CXdUapP4ZdB7eeJTefNjU5IMxvlTbrLG8ulkcJ/OWHuJ0BgjVKD0TesIr+kyt/4kMJo5DBLkGTtVqgGZtkdGc43CtnIOSVI/A11prrvB7Auawy3w9gFD+0ndDfg9LnS+tMPlMStjG3IF9RMXgeuDAsV2GGOu7QDjMWO71KWpFyNN8Xo10eqCL/zXNjQaDXsGwuYiuruNwQdvZYJ8vC+6w0S8FXewwosAq7GZgVA/D2wpIxpBhl76GlGcweZUJB2fV7zPjT2Kawi8moRh6oDUVuxBJT1fp3PN6W3UKpd93SMzIsXNE1C25wQe9DPqfCGKcZWYaPkwwWfsmygUowt796VRXpld8ee+klurhHxcg7bE/HxpYhaSMxaae+W7SFXHVjyrPbmZa4nry9/C/Zei593Yveb6S8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.5
Release Details
UpdatedSept. 28, 2026, 6:49 p.m.
Changelog

Added

  • An "About" section in Settings with the TMDB logo and the attribution notice required by TMDB's API terms, translated into all five locales. The same notice is now in the App Store description and the README.

Maintenance

  • Upgraded vitest and @vitest/coverage-v8 4 → 5 together, plus patch and minor bumps of webpack, eslint, jsdom and @typescript-eslint/*. No functional changes.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureyCWt1i5hurMVmbsvYoEIcAWrz8j37SE1hATcmGXhK7I1sX7LisRP8Y1AgicgzVVa
p2X59Iy/J3Gj020tPkB6QKsaRngdg6+lW50Hn5gZ08Fl9h8ODhl5H5JKjnSzbEkM
2GQizK+VyH+6tenpU5+UkjM0AuzFspqQlSP4eCLW4sVE8rev/q7F1hjo1Yt7lqpq
obpKvImzyoPlbVCThMFw4DW3mwrhmqAdD87yqlJ34g43ddErfM3vKmDRQWewtENA
AAVKkuC15hPqc3Z+Zs6LJLGq/DKFSu1rvW7MUqc6wNq8kt1HL887Kleem5+jHSEG
wpmF2gWX3rV4In+gHUVgM4INqfxPj8APAlcvrtLYs/DtXX9EW0btgrCDEhlJkEJA
FjvNAKHcci6av10CNg7UCNzmbnt2ok8ojOg3nrg8OnpHUHqRS3qBH+dZAhj9sAEl
1WCJLT3vUUXapYwREFpvNKDELIRxmg8D6OWh6NF9VLpXY6xyICUwS/dk4tiriItE
QtnlqyDagRjif2aItJZULRDOPC737oL2KzZvRmImm/8UFR9QFtbe/yU21x9ebl3n
160RufMVndfA1jGM/ss+SxvrpnO1gNkl/fSVFIuflx0gINHo6kcg2BsqB0jDwy8H
Y9W7g072frrtpVgVznCOZIDlG+SDZbFCsfTwaALgs3U=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.4
Release Details
UpdatedSept. 21, 2026, 7:59 a.m.
Changelog

Fixed

  • Several UI strings (search placeholders, "Enter movie/TV show title...", "Importing episodes...", "Write your thoughts...") had their trailing ... normalized to a proper ellipsis character (…) in an earlier change, but the translation files still keyed on the old three-dot strings. Non-English users were seeing raw English fallbacks for these. All five locales (de, es, fr, it, nl) are now back in sync.
  • Added the missing translation for "Failed to leave library. Please try again." across all locales.
  • Fixed a typo in the Spanish translation of that message ("abandonador" → "abandonar").

Thanks to @ba3r for reporting and fixing the translation drift (#47).

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureKoU6GVlNgvtWAC9hWlSkVvK1e4m0Y/0Hm54qQTDgucO86ZdlP3OkJu0TehQ5O0K5
xtVq3jNUvkeoU/rewdLnREnVclfkBsmjeE2WGBgEIp1oM9xivg1jun3kXdXp/FWy
H5vL5MZZkUOLLGztrUJ/wli+DNicZbeEYK636MSpG+WO9gFGMrJRgNFu/34/p+OA
CyTpmSRW/1o5JwamYxGW1eCXwrJcDng3nzvyaq9HcYanMLU4LJi5XF43ZZXyJEJS
iywTogu3BDPfS0cfZly9SG3n5aSROV3FGjYjgOi1abjXZthovKHBps/HCnqmeBB7
vvjsNT15+QgbHgMKJmBLa/2NSb2iRbHxWj7RemBnW5t0LYpaTM+GiubOoPEACDkR
U8ty8UhynqAK6SHT1mmYlc1tk6JCaNy+Dxr8EiqY7hBwt/FkgIh6d4a3ySxljpR9
ef3QFu1PKn/2gGoAxLJYqo29L8i/u1QMBSlnC4/+vFoIqJjZU+t8J7Xto50uGV5e
0UUdOlmfYRH2PfzRO0y/C/nLMIVNsdgthndN0E5qogcT5f7hYVnne1BN/tllc93C
2ypAmgn8NEaksRJPw+2CZF9HADe5s6hijyXScWZz90KDWdUu0eCC8KLSp/bTQuaz
hCfgEJ1r+VdIuKxcDvfRExeCcby8RelgGPIlHxA37Go=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.3
Release Details
UpdatedSept. 20, 2026, 8:51 p.m.
Changelog

Fixed

  • Fresh installs on Nextcloud 32 no longer fail during occ app:enable. Three boolean columns (episodes.watched, libraries.is_personal, library_members.permission_edit) were declared NOT NULL in a way NC 32's migration validator rejects, and the moviedb_library_members table name hit NC's identifier-length limit for an auto-generated primary key name. Existing installs (including upgrades) are unaffected.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureSM91S8OUY7ERDhmFmiIJXRNo6AZzurMLVq7lFZy0GYfMwT5arI2CYJa1XlO1tUxk
0hDrvIY570YgZ1z6wWak3fd+855YYvMEjvUjT4TEBmsa76ZWKogg3TLFSUuFlqaB
Ktw9gKw4VsGqce4jinvAiSi66ZmRcTFJZd6nltqUrFQmzhcSDlshJkYs2UCqmIQL
7j56ylMMxhLWx2/zfMn14InRqNyXZuHzamrgGLKY+65BW+y/mlHZvGS/Pf/ivOD7
8JOR9NbLhtk3rO/g/ymTJW6smRkl1XcXKzutRxjQMzwZBFc4GQhwmAHFDGWx8B3O
yTiyZGKhvO//UKIEDk/JPcYU8lNOLN7MAN9QJgPGStblMasS0Hvlj1AfryTQS+Uj
SWTLlfWd3FjPB8sPc7i+V3i/CohnKKCiEJ2XX+tviVErn5z2l3hVw1RzQHyHCKea
fOyfL6CpCZQOWgmJuRpFkdoeRiw2PeH03cMN+4FeBTnV5cktpL+qcMA3uDyfpxAD
ijRxYDvmSj81Ylb83Aa7HdO5W4NJPaimu+rzX2wagomBpLeab7VT3Z2lT76E/h7Q
89r/KbnnsjEZBzasOmTYZ8cSx8di785gJcdqoh7tlronUTRm1TJJDgPX1P3gBCkm
GUsmBDZmrZ75Ubl3Wz3LSKWz7DMNkncZaPMZNRAtH7k=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.2
Release Details
UpdatedSept. 20, 2026, 7:22 p.m.
Changelog

Fixed

  • "Watches by Year" on the Dashboard now groups by the year you actually watched a movie/show, not its release/air year. Matches the "year in review" convention used by Trakt/Letterboxd.
  • The "Watches by Year" chart no longer stretches to fill most of the screen when there are only a few bars (e.g. a small watch history).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signaturekai3DGfd2M037yLLMLcYqZWHi6lneYfEykTrNFtz+M4LA4eh0LS7NhfOCnOcf+Hn
otpQkbSb1+VtwlQba40wUBtoQn0CHrgZ+TfUsCX09I5NGSBDZiq+mtlCexIL8tWN
i9xD5jkfxocBn63s5Iw9tG6IXqBCEspaR9GIdJsRp+3tNV62uCederi+LWpfaErn
YYbNGMXMhlXyObkamiA0Y02bIGOg9r7iHURklVUdObG5NKMUnldG+b3iqfpU7Gz6
7otcc3I00Cq3KxSB+ZAypTml6DjrYpf54zp8JL0lMi63QfXBNjSY+dkwR00+ufqC
RGIwZN5v1azDVMOD0zHUQyS4Hk5425tpX2gzq4QneEQXc8pCKLPq4Nedf0ghEf9q
snHNMvJB3vgW5dsUlRMtvPEK2FzA9oQR7SASx6+DoO72/tba3adeAtpFfMKLjh97
WPkuR7JfKENrDSzONzZou13ylsWVmc6Qx/1WA2Y3mlxOZOndIbGZYVqXomKOgXGR
Cf1ECEBvQQrdNLaRVSl6/yma4UNVNOOHp8OoszZNV49NkIuprLbbDQruB5I6e+fN
lmzmIWOQOeaU8hcw6422L1E2e7/oPtwNVr1BDFWHIb5AhDvEgDijh//MgHXtyhtf
Sk0OYyQYmbrw5Nj8jqGrhV4Q3FXtLmvj5otumk0QDPM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.1
Release Details
UpdatedSept. 20, 2026, 6:30 p.m.
Changelog

Fixed

  • The v1.5.0 release tarball contained stray macOS AppleDouble (._*) files and extended-attribute metadata (from com.apple.provenance, newly applied to files by macOS 26/27), which broke the Nextcloud App Store installer's "exactly one top-level folder" check on some upgrades (Extracted app moviedb has more than 1 folder). This release is content-identical to 1.5.0, repackaged with COPYFILE_DISABLE=1 and explicit xattr/AppleDouble stripping.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureMNWzJHDY5k2lApRRKmevWNUpqhtY7kORwD4FBvXTTscE2boide8e2JzJMSw7qbW/
OddgepINDy5AHgUw6hLbSmREvG5r44+VAoj6GJFtcJiTL/k4RHfSEECbEzBUNIsE
+Qray3p5h2sZH5Cqykq96pcGL230tEj8+tz4G6XQNMoOeghb5SZrdVeUcwpQGeoj
5ojYPd5TkUY3B+biuJxe4LwolWJRrxhNrW4E5WIgoibzO5VDggwyHK5GUDsLIiTb
uot1f546sL0WxbcW07K8kXJ5nnKbA25eRDvEqtgHBxNs667wb2ArMCAcEdLwR822
oFungmHhkXN5qTouDg95dbdoCBddYOE7lrK/viiIsD5xYwJ45/pWGHd0NeMJiDcN
+2NHrLC4pPo1k3PQ3snp6SG0DSOF5Sc/90ygd0CdWR2QDEDvYLnxIaooB17VUzeZ
3CtIlNJLoPmgMNTu7/H9o6YpaL1Z4CHerTbsd1VdlXGMzmm4kZk5N4v7LQFrpb1K
eRh6/kNjomkns7u4yJErdTsYICC6mgrnbRKIAqEIn9bagmjyQl5nMH9Jpa7Jl+5O
hL7ZekiXjEzvWL4YvrRyupxUVKBZklGmxhNMGpoelHpT1/wm1GSXKCnkUA8TTjMe
NXTKWJrwNHe03RlOCEhPYtNcik/xF04KICtAMi74iII=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.0
Release Details
UpdatedSept. 20, 2026, 3:19 p.m.
Changelog

Added

  • Dashboard now includes "Watches by Year" and "Watches by Platform" charts, including TV show watches (previously excluded from these stats). Both charts share a new "Show" filter to view All / Movies / TV Shows only.
  • Watchlist pagination (page/limit params, matching Movie/Series), fixing the previously unbounded /api/watchlist response.

Changed

  • Visual polish pass: consistent card hover/shadow treatment across MovieCard/SeriesCard/Dashboard stat cards (shared radius/shadow/transition values), a subtle poster gradient scrim for badge legibility, per-stat accent colors on the Dashboard, and richer chart styling — gradient-filled bars with a grow-in animation on Watches by Year, gradient fills and a smoother track on Watches by Platform.

Fixed

  • Recently Watched and Top Rated cards on the Dashboard no longer collapse into unreadable narrow strips on mobile viewports.
  • The Dashboard chart filter control no longer overflows the screen on narrow viewports.
  • /api/watchlist, /api/movies, and /api/series no longer throw a division-by-zero error on limit=0, or accept a negative page/limit that produced a negative offset — all three now clamp to sane minimums. totalPages is now consistently returned as an integer.
  • The watchlist's media-type filter no longer silently returns zero results on an unrecognized mediaType value — invalid values are now treated as "no filter", matching the stats endpoints' existing behavior.
  • Changing sort order on the watchlist while on a later page no longer leaves the user on a now out-of-range page; sorting resets to page 1.
  • The Dashboard's media-type "Show" filter is now visibly grouped with both charts it affects (under one "Watch Statistics" section) instead of appearing to apply only to "Watches by Year".
  • Switching the active shared library no longer leaves stale watchlist pagination/filter state behind — a page number or type filter left over from a previous library (which may have far more or fewer items) could point past the end of the new library's results and show a false empty state. Movies/TV filters are reset the same way.
  • The sidebar's watchlist counter badge now always reflects the library's true total, not a search/media-type-filtered count — previously applying a filter on the Watchlist page made the badge appear to shrink until the filter was cleared.
  • Opening the Watchlist page no longer fires two competing API requests (one before the active library was known, one after) — the first could return data for the wrong library depending on response timing.
  • Rapidly switching the Dashboard's "Show" chart filter no longer risks displaying stale data if an earlier request resolves after a later one.

Changed

  • Extracted the duplicated mediaType query-param validation from StatsController/WatchlistController into a shared helper on AuthenticatedController.
  • Added a resetFilters() action to the watchlist store (mirroring Movies/Series) so sort/type-filter/pagination resets follow one consistent pattern across Watchlist.vue and the shared-library switcher.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signaturexlyj+iMssN5+P1t+mfcYmQON/vtzerlnfPfb8QSxeAxwBvZCluFiIJ0MO6YY2R1K
4mwFvG4Kd1wjQULGd4g4fN+VN7UwsS4Jdp4jolx+qKIc5Hm5YGtTjO0DgOe3AfmX
5NuQzUgbV2f8SEhb7mVKsMIC51HCez2r+AEq0AQOaNOVv6SETZ8FzsYofWHZwxUU
5YzsBD1fOGilOLQEx3oEwqxHLQaknCOnmrKR++jF7v0Qtz85zp8oC9cophzJD7ei
BayPpbB1q8oX73mt4t+yCfWbzgBZRGWrsxPuAuP4YUYAMm8v4ii8RSuE+zeGDwv1
yFwxbmvCqw3SvIvLo4XP/ep0RQcOjt1SKMS6lfilIKZKfx+2oA+JcC5tR9fUC9w7
8SfAxBcm8uunMGl3SCKMlFig9CRJU80q1S//vtTWi5zJOh8Jdvc5fLg4T2weamsE
MeqD0OYlniLRWuhVR05FNxUeFKLMnDtdYU2hHhgAn420sfpPxIIaax9rS+DgBMqu
m6l2oOxXe74Rj6BjyvoPquYEXg30DBGl3isNgxD7j+93CKrXFUgltL7wqE/mXFVb
pw2/ZzaRbnY2qwBpfYXmYRi0n1CYpKdKSJtMNCQw2rG7MGhAeeO4/UJvGhg/DRdb
O2URYsUTmQmu5gOP81hXZ0hsLYIunFdLqn8nSnTnO6M=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.4.1
Release Details
UpdatedSept. 13, 2026, 2:22 p.m.
Changelog

Fixed

  • Translation placeholders now render correctly in paginated movie lists.

Tests

  • Added regression coverage for translated placeholders and plural arguments.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignaturefW/4adHB/dpgcR8RMr/F6/964k5AHNAz9qD1DjFFnAh/tVFcjQpUrd7ZBR8+Sc1uSe9NE8oogHa/WZ6bGr81mR1tdzUPq2jAzS91oCz6EM5o0eH3zkx21JjMLdZWJGQ2aSlqa14s/EtjgYWtWUS1HOHRfIyCmPvbvJciWQIZPXyD0GUnr5EENxgzvOm2n4duZ510ATiozQ2g3+IvlY/Mnm7rdwzza44Uokre3SSnnwi5aCA/GBjZdq3Eyu7EWtPNqUCyiW3+8l32GF1IqInQC5X00eKrEKfao8A8Zyvt6+3omx92rw4MObORIZnr7VSvu5yd7S8mz5bR72dSbNVFz1omC2DkhZquLvTE1ETLE3sxHuqEAjD0DC7CmqMIUy+mnRcNBSDdkgnuae2TOklbJK14m2tXNovCBL6BtGqIt4kPHBNloxr+zeanzhjwR/8Qz/xPbGudy7P6rGGPrdVk8GzRm+tCbh6TvhtMmYSo+GDsaJN9zQ8Tocsul7Ja960NN1jVJjIQhtyWQtd5Ym+TlPZ5UjmIqEmWrbWyzRdwzXgfAT6J1IE6hXZvujWfxFZV3u0seVej2gowsJDGD69/iWjtC5WVliAAoGTNBcjgBewO11+TeIb4HMa2cQsg9VdDeYMF/Uegawce68Tc39qWFl7YFDnG/iYnT/61T8r4QtQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.4.0
Release Details
UpdatedSept. 1, 2026, 6:57 p.m.
Changelog

Added

  • Shared Libraries: create named libraries and share your movie/TV collection with other Nextcloud users — assign viewer or editor roles, manage members, and switch between libraries from a single account. Everything about a title (catalog, watchlist, episode progress, ratings, platform, review) is shared across all library members; user_id on catalog rows becomes legacy attribution only — library membership is the sole access gate
  • New DB tables moviedb_libraries and moviedb_library_members; all catalog tables gain a library_id NOT NULL column (Migrations V5 → V7)
  • V5 backfills every user's existing data into an auto-created personal library; V6 enforces the NOT NULL constraint; V7 heals any duplicate-membership edge cases left by a check-then-insert race in V5
  • Self-leave: members added to a shared library can leave it without needing the owner to remove them (Leave button + confirmation dialog in the Libraries view)
  • GET /api/libraries/sharees?search=... — user-search endpoint backed by OCP\Collaboration\Collaborators\ISearch, respecting Nextcloud's shareapi_restrict_user_enumeration and group-restriction admin settings
  • Viewer notice banners on Add Movie, Add TV Show, and Add to Watchlist pages when the active library is view-only

Changed

  • All catalog endpoints (/api/movies, /api/series, /api/watchlist, watches, stats) now accept an optional libraryId query/body param and scope reads/writes to that library; omitting it falls back to the user's personal library
  • LibraryService.resolveLibraryId (writes) throws on a denied explicit ID instead of silently falling back to personal, preventing cross-library write confusion
  • Member management restricted to owner only (editors can no longer add/remove members); viewers see the members list read-only
  • Library delete cascade wrapped in a DB transaction (episodes → watches → watchlist → series → movies → members → library)
  • Rename preserves the caller's owner role in the response (annotate() helper centralises role annotation for all library-returning endpoints)
  • GET /api/libraries/sharees requires at least 1 character to prevent zero-query full user enumeration
  • Dashboard "Recently Watched" now interleaves movies and TV shows sorted by watch date instead of showing movies-only followed by TV-only

Fixed

  • Library rename bug: editing the name field immediately after saving no longer reverts to the pre-save name due to a stale local binding

Tests

  • 121 PHP tests, 136 JS tests, 0 lint errors
  • New: LibraryServiceTest (21 PHP tests covering create, rename, member CRUD, self-leave, canAccess/canEdit, annotate)
  • New: libraries.spec.js (28 JS tests covering store state, getters, fetch, create/rename/remove, leaveLibrary, member actions)
  • All pre-existing tests updated for v1.4 API signatures (libraryId param added to MovieService, WatchlistService, SeriesService, MovieWatchService, StatsService)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureW/fG+iP7aiQ4JEqCs4ZaUYIW5HEfc+0t5YrUipKM8MEUvnJZh0N48oTjVhHI17TU
BcpmMBoE9/0TsaLEsK/F2sPUij5qhbEbnHIebiDI579YJxlSfNqj4ITcVFfMYiHh
6q2uSLsxyb7fQgL66RHbzaqq3PFRfRhdc5OmoJtB3Hq+xpvBDrkz516zKjD8hy01
CrI2kLhzYvqf4V8uqBCvfEh+SP0vlCuIGyzjYpqwIAw3YX6Y/2/3Ll7WCoAGAOEA
h6jCiGRhPFXP4tgD+Hj2hqGyRA9LjgkZWLbEGDSw/TclEee43pCAcT/b3p/Pv2wH
PokcYxn+cAAeOxqWG/v/JOk0SoDItx4gH1z4dKAVbnXz3emvAO6GjX/O5M80NZAv
ZWTzNjDHi0ErKAMb+WRRR3/aEvFt1UqIUsNGq4lFYPUX/lYePMEF/bY/aw3joHse
XgwhP4y2qVERPW48FX7GphVFgy7FdAmYXuCz6TapWJGx24bQyn6R7laNNAubGazE
0kvBi8day7u5iGib80rm0IBoCP6c9FEXFJKa1jlrCqfWdb3z7z0zn5Os2bx/sQ6X
rj0e+c/c75NtU48RBx61oCDGZM2RW9VoMfnf8IYVEpn391aNLFKxedFG6sdJvto2
tx+j5B8B7BH2wSLBeGPV9BnIw6ZCeMgB5r2mxq9YIBM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.3.1
Release Details
UpdatedAug. 29, 2026, 7:33 a.m.
Changelog

Fixed

  • PlatformService::findAllForUser now checks hasDefaults() before calling createDefaults(), avoiding an unnecessary DB write on every PHP process start
  • SeriesServiceTest: test mocks corrected from non-existent findByTmdbId to findByTmdbIdAndSeries; static $defaultsSeeded flag reset between test cases so platform-seeding tests run in isolation

Changed

  • App Store description updated to reflect TV show tracking and rewatch support added in 1.2.0 and 1.3.0
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureMBqLzKCQipMCqtf0gq6QFUqrK631nyx3olhG568t71yV/TOlV8kNQkntE1dQqNay
t6HB0DDREGQqfvGa8cg5MBmfg1aq3+8i/DWxVOAmavSD5vU9of2XnwjZivDfvJNu
/yOvUz6DnmK/GMCQ/FufzVZKanTCLPQ6d365qdnyHSpJcjXVp4hir8d7YbwGxqWo
DNSq6+g13CvCxMLo+tCaQK6AO3YZYKscYlSoo7YTO5vOfMErupZdv8TRHz0zj8YN
+kndD8NarfyOIEid0k8KTcA7rXdAIN13V8CjtQnwbjV4uk831MEfA6weKQkdaxt3
mnUBWi4lvCLcd2pqDlriHe0c/jqFLll2GQJNoXchfGH7nYwE5Lfn3+5lq6gha7Ke
KU6rsN8DlhEdKXl80ZIWfHwOGgewUhrVx5spgvaQ90Sjsq4J+ilX1osXQW+4YMyH
w6uKZfDFbR9t/NI55iBjDuAQNGkE6pIIVDcwOu48y5KSqC0bKiO65jwrA2dr5WSn
7Z8IsFbWR6rszgI47bbuhbV8Vfk+BteeC91LfyBvWljDuxgFNeOXQBhTeedsyx6B
y45vDccx0I5KaHm6lTlZ8eMeEGmADQ3qVaB1Vv/zmgt2cGJljO1EpbIBBJQsqn2S
eRw1V0S8qgctZTtCIdXc9jyIusM/cK+dHdR/hYKpvCU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.3.0
Release Details
UpdatedAug. 29, 2026, 6:50 a.m.
Changelog

Added

  • Episode-level TV show support (#15): track series, seasons, and individual episodes. Series get their own /tv section, list view, and detail page separate from movies
  • New moviedb_series and moviedb_episodes tables; series metadata and every episode (including specials) are imported from TMDB on add, one API call per season
  • Derived progress: season and series completion are computed from each episode's watched flag — never stored as a season/series-level percentage. Unaired episodes (air date in the future or unknown) are excluded from the denominator; specials (season 0) are stored and shown but excluded from progress
  • "Up next" card surfaces the first aired, unwatched episode
  • Mark whole season / whole series watched fan-out — idempotent, so re-clicking never re-flips; only aired, non-special episodes are affected
  • Series-owned watch metadata: a TV show carries its own rating, platform, language watched, and watch date — set on the Add TV Show and Edit TV Show forms, exactly like a movie — stored as a single series-level row in moviedb_movie_watches (nullable series_id/episode_id). Individual episodes are a plain watched/unwatched checkbox with no per-episode metadata
  • TMDB Movies/TV toggle in the search UI; localized TV genre list
  • Watchlist now supports TV shows as well as movies: a unified watchlist with a Movies/TV type toggle when adding, a Movie/TV badge on each entry, and an All/Movies/TV Shows type filter. Marking a show as watched imports the whole series (all seasons/episodes) and routes to its /tv detail page; marking a movie behaves as before
  • Dashboard tiles for TV shows watched and episodes watched; total runtime now includes episode runtime
  • Translations for all new strings (de, es, fr, it, nl)

Changed

  • Migration Version000003Date20260828 adds the series/episode tables (including a watched boolean on moviedb_episodes), relaxes moviedb_movie_watches.movie_id to nullable, and adds a media_type column to moviedb_watchlist (default movie; existing rows backfill to movie) — all add-only or NOT-NULL relaxation, safe for the SQLite fresh-install batch; no columns dropped
  • media_type is now populated on movies (default movie) for forward-compatibility
  • Year and platform charts remain movies-only in this release
  • Dashboard Avg Rating and Top Rated now include TV shows alongside movies — a show's rating lives on its single series-level watch row, so it counts toward the average and can appear in the Top Rated row. Movie and series cards now carry a small Movie/TV type badge

Fixed

  • Default streaming platforms are now seeded lazily on first read (PlatformService::findAllForUser) instead of relying solely on the migration's postSchemaChange hook, which Nextcloud does not reliably fire during occ app:enable. Fresh installs no longer show an empty platform picker; the seed is idempotent so it never duplicates existing defaults
  • Recently watched TV shows now appear on the dashboard alongside movies (the recent stats endpoint returns series with at least one watched episode, most-recently-watched first)
  • Episode watched state is stored as a boolean watched column on moviedb_episodes (toggled by the per-episode checkbox and the season/series "mark all watched" actions), and total runtime counts each watched episode's runtime. This replaces the earlier per-episode "log watch" dialog: episodes no longer carry their own date/platform/language/rating — that metadata belongs to the show as a whole (see Added)
  • Series import no longer fails when a show has a specials season: moviedb_episodes.season_number/episode_number now carry a DB default of 0 so episodes in season 0 (which match the entity's default and are thus omitted from the QBMapper INSERT) persist instead of hitting a NOT NULL constraint. Affected both direct series add and "mark watched" on a series watchlist item
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signatureo53wujykdigXdIMMC7OwGc4U1s5G5LWDUGFrsnyTbMe4zh9zLM/pb4KwuGJNbSWZ
lNAnrJg86s3Uj+tNdHMnEVzYkeAAqZ92TSdVN6UCbL+LMU+LbdJJOijXhEQho0xF
NF0x1U2+AzuW6fVDOC7eYmtIuCBAB/4xiGra/bqGVPGTpttmdYpkg6TEmF4NkhKs
TH0sNeoqbOKH0bvWU6q4d27Icqc8klNA+Eo61AGq4OOg4zY5I2CTdZHrGQW1uarV
esawGTxZpEf0B0+eg3dvMOXRq4f7ULLDGxvgbSZ8ulevAem0zHuO0ldeov1YJScb
5ko5nINoVV/AKJLqSgqkMX2XSduc12llo4uYD2aiSS4GqoIX60JwO2fFR59YfphM
1i4E5hVxGYWfXEOX9h38sOt2ea9yUS8/CUYLaXppP5Xr7gC1/gShFennJ4HEms8+
LAJXGgYaUwVR1OZzQ1IoydswGSeeHV++5Qs2cjD0no/Hy5FG1EFUPBJUuKmcwQSG
Q8YmI8/gxs+5M1O4vxCXWl4NaOnWbEkDoKKotQA5aOJVZfk0zIFUSjb0ZW87Q5NU
tBDZNi6ccg2DWNOxWdYgvpBwGDoLySpS5Z3csCKLkEmET6YGocEVTk3QdDW/XsYV
AXyD3J/SF1omJfWKZMJhLGxmdkDEdWg0/XSlbKgaUS4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.2.0
Release Details
UpdatedAug. 25, 2026, 6:53 p.m.
Changelog

Added

  • Rewatch support: new moviedb_movie_watches table stores one row per viewing (date, rating, review, platform, language). Each movie can now have a full watch history (#19)
  • Log again button on the movie detail page with a star-rating selector for quick rewatch logging
  • Watch history section on movie detail listing all watches with per-entry delete (hidden when only one entry exists)
  • Watchlist "mark as watched" on an already-watched movie now appends a new watch entry instead of creating a duplicate movie record

Changed

  • Migration Version000002Date20260824 backfills all existing per-movie watch data into the new watches table with a verify-before-drop guard; legacy columns are retained in 1.2.0 for safe downgrade and will be dropped in a future release
  • Star-rating selector replaces free-text number input in the log-watch dialog
  • Removed redundant date/language summary box from the movie detail header

Fixed

  • Edit form: rating/review/date changes now persist correctly even for movies without a prior watch row (previously silently dropped)

Tests

  • 73 JS tests, 69 PHP tests, 0 lint errors
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignaturezhR5gYHFnW4DQvbjaabhFfJoVCbw2xCpGDCzNmSHHNauQYQqsDweLrZpfHvADAHPuAvzv4OPDCXxngxRRvDTviwUnx+jmuvNpzSDazRNbQ18yZdGqrKF/T/ccCTMjpxtDqTnOJJIcPpAAASc4WWG6Vu44w3L2bzH7/4yC2AkXuAFoC9P+yAXnDNUvgpfHHGRj7CeYjBlqOZNwvOTfYacvw+kyJ0ozzWteH0sy5Y1+I4BNL0wtK3T7V7RD1BzALT889qCGyUtIph8D7XT57+uiVAntBZQQpTqoN3yGNu9fTPVzyC5b8frY45XOGX6pSQ/q0uQ7++BU4sKp8DuKiEZ9mwbHNp2Y4CnoY3rSE+IWi6CZpRAi+UY6UeL9dwcJ98Ts/1SHh9HYn/URPi02mAI1xmXkTfkQyfU+lLvASs5LfYrx69Cdi9O43tbYijo3SrtTANvy2TgicMj9maiMPP4eCtJ2fyN5T2vvYxJv3GYvKOmc4ZhBOG4OPhlOZtb1HnGbXFF+Vm/9oPpNax5KrbX3Ne7kSZs791ibk0hiXNPfHehdDZxBnXVTVhXvBknF8VyAQ09lXKlQ3GT9R9PKcZDVKXN4m/do4Lcs7XgeSQOEzmXS8LUY7ihwjHv7AIWK1e6To3MKLd5mT0RpJSbnTv6OFwhgv1psHfjOkkVQzVRkGs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Minimum Integer bits32
MovieDB 1.1.2
Release Details
UpdatedAug. 24, 2026, 6:27 p.m.
Changelog

Fixed

  • Prevent adding the same movie twice: POST /api/movies now returns 409 Conflict with the existing movie's id when a duplicate tmdbId is submitted, matching the existing watchlist behavior (#17)
  • Watchlist store now shows a specific "already in your watchlist" message on 409 instead of the generic "failed to add" toast

Added

  • Friendly duplicate-movie dialog in the Add Movie view offering "View existing entry" (routes to the existing movie's detail page) or "Cancel", instead of a plain error toast
  • New i18n strings for the duplicate-movie dialog in all 5 locales (de, es, fr, it, nl)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signature3svKAWeA1wnMKWjv6gguqWhW0hzWaovMs/B5VSy/vgo3j6zWKdUSnhPh18kL1STC4zCJ32lrpiMZzzeqMLUzDbVobV/8vY+fNpy02JV8doFOd+3UCf2kpxjY6Mt6AnfgSpoS7RDgykSZYmnX0qcVvH3GMJEfoZ1qCwSPZ5o2OPVQqv58e1jTYo+NVyOV6lkGZSoBt/qFxbupa4SZpSHp8Nx3h/fSeQdmRKewWjzHTJXhKXgpbMWUu0iCYx9wF/+uJO60OAGD4NFtVIPQmS7TEJ2CdYtQl+2DGquEPAx41RlxCWsjskwKpq5/BSq/uogwbM6Gz9pp3+G8viW6PDWC+nLlGdReXETOdVLCCMIGSGPfW5adYl2ZZb+gUcwb7ndKZ5Mm7vuoRh/HA5KNwxbSPwEXKCBY8WgkzcRRA/Ijc014G9run2px7yLA7E/j1Ym8ENkvOh3Kpk5V79lPjOya5ul4KcJw3idLmGSUFUDS2e4htJCmOyE3u3p+8t78ZU+PVvXOhxL43Aet9Bg3I+jW+WDqtdiRDv/9O4eiGCi1DiJBclroeKIYamOHcco5a3ZTEeqEe9LTS/iF1078BI7JTDhT/iAh1P+Fxpiarvr3gEh/tR6ae0OrwTH1/VWKQike1fkEzubcd81ArfoudJrylOxv+O/2W27j28DGpAI3DB4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Minimum Integer bits32
MovieDB 1.1.1
Release Details
UpdatedJuly 31, 2026, 10:10 a.m.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureoBoTuKwkslFX+XV2GPd7IYGCm/NvKhzIAawUt8qG9Gy4GCmIDGmPAtoiQa3ze9+2
MttRv3DMyuODHW1/Idr386cNa+L3witDP8hyiNv6uWLlJzQeh3Qo/etyKfhtdHGf
R4YAq/sIIQF02s9jtlsKaQ5dDLd+EpbP/1JD2/uWPu0vbQerL2HJTLIrPGn78kI4
nyK2nSUJCH0MtV4Elq4dG87Sg2jZCQvqkxZgle208FN9jx19EogjZSy1Dfyq49CI
NzdoKYX6+/EGcF1Vizl0ibtR+A+k+8E9c40qnUrs+XfbLNe+G+VBZ/Eo0AvEO79I
hiJWWaqorAwIUkt27vjik4Re6gsSjP0qo2b9btnsYn2Dj5s+dfza93QmygS6ExKL
ScGvTxSr/tANM6gAWIZqmzSu0plvp6uSA+1dRplhPkLGMk4KcJS0y1YvGdXEpbK+
caBHHdfkG6EAv9Y65+frFxCPxQdh9UloV4bYcVV8XTbhISC9J/rKPd2qlcmkaM2d
SsaC4+3F4Vbcw26CDEYi7mUl9SGW9BnBVqUmiEjZhbIAmuJssuwaVQQpn0nkUcxb
GE+k8b5+5W5J+EdMZISrZtChQz/uS7Ori+XSkxYuL7msRhlmUAWibZUl9LY66OxY
LEXNNteTYhC0n6PSBpIcsPNkFYGW5SLVsv21gyxc/Dg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Minimum Integer bits32
MovieDB 1.6.0-beta.1
Release Details
UpdatedSept. 29, 2026, 6:16 p.m.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureIVU+tpVoMJZkMAJEFNoTD1LzoPZH09lhaZ5hWZg2Z5XnvRvDLg2wcWwovsKTCKd5fkf7RjzjFYQhYl6MvRZvxeESq/xQzS8P9TBKtcyJX5rSipoAZOS30n4s5XcD/NbkHAnnf3nwrrtQroFgiKAZZfv1s83M8b3B1QFKfkQQmFclbZHTEkdf197ZGi1O1AGD52YuPmymPc4Bz/CbMaxqjllZw0elt04tdJzY1Ti1fiT5ukqB+3hVNoxwEj7NotYrntQoaOBwFLun4+1JD+lMkZH+x2kwqPienRwH5Uyf5RHdBIAG6kejtK6PIF4SdYhBLc9Ytjc2yBA9mdFIhIO70Y1i7PXynagRXG0haqFWXMYCRWhgh26XUkci/GFwZpsPtyqVdxN4UY7FxlvgQcqPVRKDKhba6DGVepoex5RS25A7YvJbUw4mEfdO2WFAOhJDXYEMkxy4N79u+1V9c3b2EhZ7zeMEbGfWxAnH7okaNOSqQHdu57OGr9ZwThQBFkWP+kEkAz1HZ5VMjguOM6oKMYYaMC2enhFsVIvKaR0gBEWP/eyHBdkU1YRCFI/WaV/5iv1fjAjQjOCUWJsCnew/ruuVbDqFkwfMPUNWZeVXDerxXYJjNCqIxIXZUw+RIuxkuGxq/x9WBfFtLIW6yTli8cmTjUf/1mIF4n+ak89tsBY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32

Nextcloud 32

MovieDB 1.6.1
Release Details
UpdatedOct. 7, 2026, 7:46 p.m.
Changelog

Changed

  • The App Store description now lists the library import / export feature from 1.6.0.

Fixed

  • On wide screens, the backdrop of a movie or TV show page no longer covers the navigation (#69).
  • In the add and edit forms, selects now line up with the date field next to them, and the "Mark as Favorite" checkbox lines up with its label (#70).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signature4NmLpgSqpBcuvJFv+Fa8/Rm3cZNLYo/1EJK3SQ6CB8EPuKxVbelPt+oImJ39cmEb
6lLoRV1ATjMe8BCtWTZHij272U7TUDL62dqnR6fhk95NoRG3+xWvZ4O/TQ3wbk7b
W+5r4sr0HGqiD5w9h8Fj387v0rvpBTTCVZrdeanbGsfycGO4/0ox/rCarC41y/W1
TR5UxF04WhsqdsPSQh2n+FVlCldKWB3gDojMCEJR3pBf0zZq3OEAtWBLk24Nr2pa
U/rPVdk8tI7RYDEGQCDlnlBv7hpDy3fkdeWSfKIK6VZmMx6wnJozIXYa3jitlILc
bZ9uWpeSG/gP7bItmONDQ+q6kuBCPwCr7yHLrvdJ+MN1jSqEdZbMLaViwLQVxYVw
n70rQdgkskgD+J51aumhYA5F2hStkgaDkkeEFf/1/zLjz9xFjUOteopM+qf3p1gk
IZ6NKxBZnI3A7XxxLTk3fGPMsFblt0BAwMtJC7oZF57aKW4uQbz/i4aMERKp6CtT
W/KV5B2CqL12jkXLPALEPxKks7q3O7n/eZxAFCJQ1BWT9t7VxSKHwt0FOrUlfJEj
66cI6PNKfSGw4W62zW66QhDey4K6hG80SQ89+/gFOPyEvzCksfhhYIuhtoMKJoBx
wXz20NfVyI1Ejw3LEwuxEZbKQdKPFcqPVA6boyaTPps=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.6.0
Release Details
UpdatedOct. 6, 2026, 6:22 p.m.
Changelog

Added

  • Export and import of a library as a single JSON file (Settings → Import / Export), for backups and for moving a collection to another Nextcloud instance (#62). It covers movies, TV shows with episode progress, rewatches, ratings, reviews, the watchlist and custom platforms, but not the TMDB API key. Import needs edit permission, skips titles that are already in the library, runs in one transaction and needs no TMDB requests. The uploaded file is validated field by field, and a confirmation dialog shows what will be imported, including the library and time the file was exported from. Export files are named moviedb-<library>-<YYYY-MM-DD_HH-mm>.json.
  • Settings "About" section now shows the app version and links to the source code, issue tracker, App Store page and license. info.xml gained a <website> entry.

Fixed

  • Saving settings showed the "Settings saved" message twice, and removing the API key showed both "Settings saved" and "API key removed". A failed save could also show an error followed by a success message. Each action now shows exactly one message matching the outcome.
  • Importing a file made of a huge number of tiny entries could exhaust the server's memory while the file was being read, even though it was below the 25 MB size limit. Such files are now rejected up front.
  • Control characters (such as a NUL byte) in an imported file are removed from text fields. PostgreSQL silently cut the text at a NUL byte, so a title could end up shortened.

Maintenance

  • Tests for the export (including an export → import round trip) and for the remaining import limits. The import and export were also tested on PostgreSQL.

Pre-release of 1.6.0 for testing the new export/import; its changes are listed under 1.6.0. It was only offered to servers that allow pre-releases.

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signatureg1tV4oIWUHNEku7x9Z7favhaUd8KtidITA6rPee8nOB6LrUeZXNWOuMCHAPh9yxoRtlmUHPQhM02//J39TeUWTOKuOPl2GvfIofEbNZPLO2j2LpSI4ucSeQIYcb9RkhC4IknVDENJ8EBNHKiJ96Kh3kI12hZrrHer4kjK29UOb0IiCZoCY0L1fpuQ7/YmwwGy1W33MS6k3X/Rt/jOKxaxNGDci5n709adR+FDEpsw6xWXx2P2hcDIot7eBN6Orc5ZRWcilkYnZux9CXdUapP4ZdB7eeJTefNjU5IMxvlTbrLG8ulkcJ/OWHuJ0BgjVKD0TesIr+kyt/4kMJo5DBLkGTtVqgGZtkdGc43CtnIOSVI/A11prrvB7Auawy3w9gFD+0ndDfg9LnS+tMPlMStjG3IF9RMXgeuDAsV2GGOu7QDjMWO71KWpFyNN8Xo10eqCL/zXNjQaDXsGwuYiuruNwQdvZYJ8vC+6w0S8FXewwosAq7GZgVA/D2wpIxpBhl76GlGcweZUJB2fV7zPjT2Kawi8moRh6oDUVuxBJT1fp3PN6W3UKpd93SMzIsXNE1C25wQe9DPqfCGKcZWYaPkwwWfsmygUowt796VRXpld8ee+klurhHxcg7bE/HxpYhaSMxaae+W7SFXHVjyrPbmZa4nry9/C/Zei593Yveb6S8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.5
Release Details
UpdatedSept. 28, 2026, 6:49 p.m.
Changelog

Added

  • An "About" section in Settings with the TMDB logo and the attribution notice required by TMDB's API terms, translated into all five locales. The same notice is now in the App Store description and the README.

Maintenance

  • Upgraded vitest and @vitest/coverage-v8 4 → 5 together, plus patch and minor bumps of webpack, eslint, jsdom and @typescript-eslint/*. No functional changes.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureyCWt1i5hurMVmbsvYoEIcAWrz8j37SE1hATcmGXhK7I1sX7LisRP8Y1AgicgzVVa
p2X59Iy/J3Gj020tPkB6QKsaRngdg6+lW50Hn5gZ08Fl9h8ODhl5H5JKjnSzbEkM
2GQizK+VyH+6tenpU5+UkjM0AuzFspqQlSP4eCLW4sVE8rev/q7F1hjo1Yt7lqpq
obpKvImzyoPlbVCThMFw4DW3mwrhmqAdD87yqlJ34g43ddErfM3vKmDRQWewtENA
AAVKkuC15hPqc3Z+Zs6LJLGq/DKFSu1rvW7MUqc6wNq8kt1HL887Kleem5+jHSEG
wpmF2gWX3rV4In+gHUVgM4INqfxPj8APAlcvrtLYs/DtXX9EW0btgrCDEhlJkEJA
FjvNAKHcci6av10CNg7UCNzmbnt2ok8ojOg3nrg8OnpHUHqRS3qBH+dZAhj9sAEl
1WCJLT3vUUXapYwREFpvNKDELIRxmg8D6OWh6NF9VLpXY6xyICUwS/dk4tiriItE
QtnlqyDagRjif2aItJZULRDOPC737oL2KzZvRmImm/8UFR9QFtbe/yU21x9ebl3n
160RufMVndfA1jGM/ss+SxvrpnO1gNkl/fSVFIuflx0gINHo6kcg2BsqB0jDwy8H
Y9W7g072frrtpVgVznCOZIDlG+SDZbFCsfTwaALgs3U=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.4
Release Details
UpdatedSept. 21, 2026, 7:59 a.m.
Changelog

Fixed

  • Several UI strings (search placeholders, "Enter movie/TV show title...", "Importing episodes...", "Write your thoughts...") had their trailing ... normalized to a proper ellipsis character (…) in an earlier change, but the translation files still keyed on the old three-dot strings. Non-English users were seeing raw English fallbacks for these. All five locales (de, es, fr, it, nl) are now back in sync.
  • Added the missing translation for "Failed to leave library. Please try again." across all locales.
  • Fixed a typo in the Spanish translation of that message ("abandonador" → "abandonar").

Thanks to @ba3r for reporting and fixing the translation drift (#47).

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureKoU6GVlNgvtWAC9hWlSkVvK1e4m0Y/0Hm54qQTDgucO86ZdlP3OkJu0TehQ5O0K5
xtVq3jNUvkeoU/rewdLnREnVclfkBsmjeE2WGBgEIp1oM9xivg1jun3kXdXp/FWy
H5vL5MZZkUOLLGztrUJ/wli+DNicZbeEYK636MSpG+WO9gFGMrJRgNFu/34/p+OA
CyTpmSRW/1o5JwamYxGW1eCXwrJcDng3nzvyaq9HcYanMLU4LJi5XF43ZZXyJEJS
iywTogu3BDPfS0cfZly9SG3n5aSROV3FGjYjgOi1abjXZthovKHBps/HCnqmeBB7
vvjsNT15+QgbHgMKJmBLa/2NSb2iRbHxWj7RemBnW5t0LYpaTM+GiubOoPEACDkR
U8ty8UhynqAK6SHT1mmYlc1tk6JCaNy+Dxr8EiqY7hBwt/FkgIh6d4a3ySxljpR9
ef3QFu1PKn/2gGoAxLJYqo29L8i/u1QMBSlnC4/+vFoIqJjZU+t8J7Xto50uGV5e
0UUdOlmfYRH2PfzRO0y/C/nLMIVNsdgthndN0E5qogcT5f7hYVnne1BN/tllc93C
2ypAmgn8NEaksRJPw+2CZF9HADe5s6hijyXScWZz90KDWdUu0eCC8KLSp/bTQuaz
hCfgEJ1r+VdIuKxcDvfRExeCcby8RelgGPIlHxA37Go=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.3
Release Details
UpdatedSept. 20, 2026, 8:51 p.m.
Changelog

Fixed

  • Fresh installs on Nextcloud 32 no longer fail during occ app:enable. Three boolean columns (episodes.watched, libraries.is_personal, library_members.permission_edit) were declared NOT NULL in a way NC 32's migration validator rejects, and the moviedb_library_members table name hit NC's identifier-length limit for an auto-generated primary key name. Existing installs (including upgrades) are unaffected.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureSM91S8OUY7ERDhmFmiIJXRNo6AZzurMLVq7lFZy0GYfMwT5arI2CYJa1XlO1tUxk
0hDrvIY570YgZ1z6wWak3fd+855YYvMEjvUjT4TEBmsa76ZWKogg3TLFSUuFlqaB
Ktw9gKw4VsGqce4jinvAiSi66ZmRcTFJZd6nltqUrFQmzhcSDlshJkYs2UCqmIQL
7j56ylMMxhLWx2/zfMn14InRqNyXZuHzamrgGLKY+65BW+y/mlHZvGS/Pf/ivOD7
8JOR9NbLhtk3rO/g/ymTJW6smRkl1XcXKzutRxjQMzwZBFc4GQhwmAHFDGWx8B3O
yTiyZGKhvO//UKIEDk/JPcYU8lNOLN7MAN9QJgPGStblMasS0Hvlj1AfryTQS+Uj
SWTLlfWd3FjPB8sPc7i+V3i/CohnKKCiEJ2XX+tviVErn5z2l3hVw1RzQHyHCKea
fOyfL6CpCZQOWgmJuRpFkdoeRiw2PeH03cMN+4FeBTnV5cktpL+qcMA3uDyfpxAD
ijRxYDvmSj81Ylb83Aa7HdO5W4NJPaimu+rzX2wagomBpLeab7VT3Z2lT76E/h7Q
89r/KbnnsjEZBzasOmTYZ8cSx8di785gJcdqoh7tlronUTRm1TJJDgPX1P3gBCkm
GUsmBDZmrZ75Ubl3Wz3LSKWz7DMNkncZaPMZNRAtH7k=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.2
Release Details
UpdatedSept. 20, 2026, 7:22 p.m.
Changelog

Fixed

  • "Watches by Year" on the Dashboard now groups by the year you actually watched a movie/show, not its release/air year. Matches the "year in review" convention used by Trakt/Letterboxd.
  • The "Watches by Year" chart no longer stretches to fill most of the screen when there are only a few bars (e.g. a small watch history).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signaturekai3DGfd2M037yLLMLcYqZWHi6lneYfEykTrNFtz+M4LA4eh0LS7NhfOCnOcf+Hn
otpQkbSb1+VtwlQba40wUBtoQn0CHrgZ+TfUsCX09I5NGSBDZiq+mtlCexIL8tWN
i9xD5jkfxocBn63s5Iw9tG6IXqBCEspaR9GIdJsRp+3tNV62uCederi+LWpfaErn
YYbNGMXMhlXyObkamiA0Y02bIGOg9r7iHURklVUdObG5NKMUnldG+b3iqfpU7Gz6
7otcc3I00Cq3KxSB+ZAypTml6DjrYpf54zp8JL0lMi63QfXBNjSY+dkwR00+ufqC
RGIwZN5v1azDVMOD0zHUQyS4Hk5425tpX2gzq4QneEQXc8pCKLPq4Nedf0ghEf9q
snHNMvJB3vgW5dsUlRMtvPEK2FzA9oQR7SASx6+DoO72/tba3adeAtpFfMKLjh97
WPkuR7JfKENrDSzONzZou13ylsWVmc6Qx/1WA2Y3mlxOZOndIbGZYVqXomKOgXGR
Cf1ECEBvQQrdNLaRVSl6/yma4UNVNOOHp8OoszZNV49NkIuprLbbDQruB5I6e+fN
lmzmIWOQOeaU8hcw6422L1E2e7/oPtwNVr1BDFWHIb5AhDvEgDijh//MgHXtyhtf
Sk0OYyQYmbrw5Nj8jqGrhV4Q3FXtLmvj5otumk0QDPM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.1
Release Details
UpdatedSept. 20, 2026, 6:30 p.m.
Changelog

Fixed

  • The v1.5.0 release tarball contained stray macOS AppleDouble (._*) files and extended-attribute metadata (from com.apple.provenance, newly applied to files by macOS 26/27), which broke the Nextcloud App Store installer's "exactly one top-level folder" check on some upgrades (Extracted app moviedb has more than 1 folder). This release is content-identical to 1.5.0, repackaged with COPYFILE_DISABLE=1 and explicit xattr/AppleDouble stripping.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureMNWzJHDY5k2lApRRKmevWNUpqhtY7kORwD4FBvXTTscE2boide8e2JzJMSw7qbW/
OddgepINDy5AHgUw6hLbSmREvG5r44+VAoj6GJFtcJiTL/k4RHfSEECbEzBUNIsE
+Qray3p5h2sZH5Cqykq96pcGL230tEj8+tz4G6XQNMoOeghb5SZrdVeUcwpQGeoj
5ojYPd5TkUY3B+biuJxe4LwolWJRrxhNrW4E5WIgoibzO5VDggwyHK5GUDsLIiTb
uot1f546sL0WxbcW07K8kXJ5nnKbA25eRDvEqtgHBxNs667wb2ArMCAcEdLwR822
oFungmHhkXN5qTouDg95dbdoCBddYOE7lrK/viiIsD5xYwJ45/pWGHd0NeMJiDcN
+2NHrLC4pPo1k3PQ3snp6SG0DSOF5Sc/90ygd0CdWR2QDEDvYLnxIaooB17VUzeZ
3CtIlNJLoPmgMNTu7/H9o6YpaL1Z4CHerTbsd1VdlXGMzmm4kZk5N4v7LQFrpb1K
eRh6/kNjomkns7u4yJErdTsYICC6mgrnbRKIAqEIn9bagmjyQl5nMH9Jpa7Jl+5O
hL7ZekiXjEzvWL4YvrRyupxUVKBZklGmxhNMGpoelHpT1/wm1GSXKCnkUA8TTjMe
NXTKWJrwNHe03RlOCEhPYtNcik/xF04KICtAMi74iII=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.5.0
Release Details
UpdatedSept. 20, 2026, 3:19 p.m.
Changelog

Added

  • Dashboard now includes "Watches by Year" and "Watches by Platform" charts, including TV show watches (previously excluded from these stats). Both charts share a new "Show" filter to view All / Movies / TV Shows only.
  • Watchlist pagination (page/limit params, matching Movie/Series), fixing the previously unbounded /api/watchlist response.

Changed

  • Visual polish pass: consistent card hover/shadow treatment across MovieCard/SeriesCard/Dashboard stat cards (shared radius/shadow/transition values), a subtle poster gradient scrim for badge legibility, per-stat accent colors on the Dashboard, and richer chart styling — gradient-filled bars with a grow-in animation on Watches by Year, gradient fills and a smoother track on Watches by Platform.

Fixed

  • Recently Watched and Top Rated cards on the Dashboard no longer collapse into unreadable narrow strips on mobile viewports.
  • The Dashboard chart filter control no longer overflows the screen on narrow viewports.
  • /api/watchlist, /api/movies, and /api/series no longer throw a division-by-zero error on limit=0, or accept a negative page/limit that produced a negative offset — all three now clamp to sane minimums. totalPages is now consistently returned as an integer.
  • The watchlist's media-type filter no longer silently returns zero results on an unrecognized mediaType value — invalid values are now treated as "no filter", matching the stats endpoints' existing behavior.
  • Changing sort order on the watchlist while on a later page no longer leaves the user on a now out-of-range page; sorting resets to page 1.
  • The Dashboard's media-type "Show" filter is now visibly grouped with both charts it affects (under one "Watch Statistics" section) instead of appearing to apply only to "Watches by Year".
  • Switching the active shared library no longer leaves stale watchlist pagination/filter state behind — a page number or type filter left over from a previous library (which may have far more or fewer items) could point past the end of the new library's results and show a false empty state. Movies/TV filters are reset the same way.
  • The sidebar's watchlist counter badge now always reflects the library's true total, not a search/media-type-filtered count — previously applying a filter on the Watchlist page made the badge appear to shrink until the filter was cleared.
  • Opening the Watchlist page no longer fires two competing API requests (one before the active library was known, one after) — the first could return data for the wrong library depending on response timing.
  • Rapidly switching the Dashboard's "Show" chart filter no longer risks displaying stale data if an earlier request resolves after a later one.

Changed

  • Extracted the duplicated mediaType query-param validation from StatsController/WatchlistController into a shared helper on AuthenticatedController.
  • Added a resetFilters() action to the watchlist store (mirroring Movies/Series) so sort/type-filter/pagination resets follow one consistent pattern across Watchlist.vue and the shared-library switcher.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signaturexlyj+iMssN5+P1t+mfcYmQON/vtzerlnfPfb8QSxeAxwBvZCluFiIJ0MO6YY2R1K
4mwFvG4Kd1wjQULGd4g4fN+VN7UwsS4Jdp4jolx+qKIc5Hm5YGtTjO0DgOe3AfmX
5NuQzUgbV2f8SEhb7mVKsMIC51HCez2r+AEq0AQOaNOVv6SETZ8FzsYofWHZwxUU
5YzsBD1fOGilOLQEx3oEwqxHLQaknCOnmrKR++jF7v0Qtz85zp8oC9cophzJD7ei
BayPpbB1q8oX73mt4t+yCfWbzgBZRGWrsxPuAuP4YUYAMm8v4ii8RSuE+zeGDwv1
yFwxbmvCqw3SvIvLo4XP/ep0RQcOjt1SKMS6lfilIKZKfx+2oA+JcC5tR9fUC9w7
8SfAxBcm8uunMGl3SCKMlFig9CRJU80q1S//vtTWi5zJOh8Jdvc5fLg4T2weamsE
MeqD0OYlniLRWuhVR05FNxUeFKLMnDtdYU2hHhgAn420sfpPxIIaax9rS+DgBMqu
m6l2oOxXe74Rj6BjyvoPquYEXg30DBGl3isNgxD7j+93CKrXFUgltL7wqE/mXFVb
pw2/ZzaRbnY2qwBpfYXmYRi0n1CYpKdKSJtMNCQw2rG7MGhAeeO4/UJvGhg/DRdb
O2URYsUTmQmu5gOP81hXZ0hsLYIunFdLqn8nSnTnO6M=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.4.1
Release Details
UpdatedSept. 13, 2026, 2:22 p.m.
Changelog

Fixed

  • Translation placeholders now render correctly in paginated movie lists.

Tests

  • Added regression coverage for translated placeholders and plural arguments.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignaturefW/4adHB/dpgcR8RMr/F6/964k5AHNAz9qD1DjFFnAh/tVFcjQpUrd7ZBR8+Sc1uSe9NE8oogHa/WZ6bGr81mR1tdzUPq2jAzS91oCz6EM5o0eH3zkx21JjMLdZWJGQ2aSlqa14s/EtjgYWtWUS1HOHRfIyCmPvbvJciWQIZPXyD0GUnr5EENxgzvOm2n4duZ510ATiozQ2g3+IvlY/Mnm7rdwzza44Uokre3SSnnwi5aCA/GBjZdq3Eyu7EWtPNqUCyiW3+8l32GF1IqInQC5X00eKrEKfao8A8Zyvt6+3omx92rw4MObORIZnr7VSvu5yd7S8mz5bR72dSbNVFz1omC2DkhZquLvTE1ETLE3sxHuqEAjD0DC7CmqMIUy+mnRcNBSDdkgnuae2TOklbJK14m2tXNovCBL6BtGqIt4kPHBNloxr+zeanzhjwR/8Qz/xPbGudy7P6rGGPrdVk8GzRm+tCbh6TvhtMmYSo+GDsaJN9zQ8Tocsul7Ja960NN1jVJjIQhtyWQtd5Ym+TlPZ5UjmIqEmWrbWyzRdwzXgfAT6J1IE6hXZvujWfxFZV3u0seVej2gowsJDGD69/iWjtC5WVliAAoGTNBcjgBewO11+TeIb4HMa2cQsg9VdDeYMF/Uegawce68Tc39qWFl7YFDnG/iYnT/61T8r4QtQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.4.0
Release Details
UpdatedSept. 1, 2026, 6:57 p.m.
Changelog

Added

  • Shared Libraries: create named libraries and share your movie/TV collection with other Nextcloud users — assign viewer or editor roles, manage members, and switch between libraries from a single account. Everything about a title (catalog, watchlist, episode progress, ratings, platform, review) is shared across all library members; user_id on catalog rows becomes legacy attribution only — library membership is the sole access gate
  • New DB tables moviedb_libraries and moviedb_library_members; all catalog tables gain a library_id NOT NULL column (Migrations V5 → V7)
  • V5 backfills every user's existing data into an auto-created personal library; V6 enforces the NOT NULL constraint; V7 heals any duplicate-membership edge cases left by a check-then-insert race in V5
  • Self-leave: members added to a shared library can leave it without needing the owner to remove them (Leave button + confirmation dialog in the Libraries view)
  • GET /api/libraries/sharees?search=... — user-search endpoint backed by OCP\Collaboration\Collaborators\ISearch, respecting Nextcloud's shareapi_restrict_user_enumeration and group-restriction admin settings
  • Viewer notice banners on Add Movie, Add TV Show, and Add to Watchlist pages when the active library is view-only

Changed

  • All catalog endpoints (/api/movies, /api/series, /api/watchlist, watches, stats) now accept an optional libraryId query/body param and scope reads/writes to that library; omitting it falls back to the user's personal library
  • LibraryService.resolveLibraryId (writes) throws on a denied explicit ID instead of silently falling back to personal, preventing cross-library write confusion
  • Member management restricted to owner only (editors can no longer add/remove members); viewers see the members list read-only
  • Library delete cascade wrapped in a DB transaction (episodes → watches → watchlist → series → movies → members → library)
  • Rename preserves the caller's owner role in the response (annotate() helper centralises role annotation for all library-returning endpoints)
  • GET /api/libraries/sharees requires at least 1 character to prevent zero-query full user enumeration
  • Dashboard "Recently Watched" now interleaves movies and TV shows sorted by watch date instead of showing movies-only followed by TV-only

Fixed

  • Library rename bug: editing the name field immediately after saving no longer reverts to the pre-save name due to a stale local binding

Tests

  • 121 PHP tests, 136 JS tests, 0 lint errors
  • New: LibraryServiceTest (21 PHP tests covering create, rename, member CRUD, self-leave, canAccess/canEdit, annotate)
  • New: libraries.spec.js (28 JS tests covering store state, getters, fetch, create/rename/remove, leaveLibrary, member actions)
  • All pre-existing tests updated for v1.4 API signatures (libraryId param added to MovieService, WatchlistService, SeriesService, MovieWatchService, StatsService)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureW/fG+iP7aiQ4JEqCs4ZaUYIW5HEfc+0t5YrUipKM8MEUvnJZh0N48oTjVhHI17TU
BcpmMBoE9/0TsaLEsK/F2sPUij5qhbEbnHIebiDI579YJxlSfNqj4ITcVFfMYiHh
6q2uSLsxyb7fQgL66RHbzaqq3PFRfRhdc5OmoJtB3Hq+xpvBDrkz516zKjD8hy01
CrI2kLhzYvqf4V8uqBCvfEh+SP0vlCuIGyzjYpqwIAw3YX6Y/2/3Ll7WCoAGAOEA
h6jCiGRhPFXP4tgD+Hj2hqGyRA9LjgkZWLbEGDSw/TclEee43pCAcT/b3p/Pv2wH
PokcYxn+cAAeOxqWG/v/JOk0SoDItx4gH1z4dKAVbnXz3emvAO6GjX/O5M80NZAv
ZWTzNjDHi0ErKAMb+WRRR3/aEvFt1UqIUsNGq4lFYPUX/lYePMEF/bY/aw3joHse
XgwhP4y2qVERPW48FX7GphVFgy7FdAmYXuCz6TapWJGx24bQyn6R7laNNAubGazE
0kvBi8day7u5iGib80rm0IBoCP6c9FEXFJKa1jlrCqfWdb3z7z0zn5Os2bx/sQ6X
rj0e+c/c75NtU48RBx61oCDGZM2RW9VoMfnf8IYVEpn391aNLFKxedFG6sdJvto2
tx+j5B8B7BH2wSLBeGPV9BnIw6ZCeMgB5r2mxq9YIBM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.3.1
Release Details
UpdatedAug. 29, 2026, 7:33 a.m.
Changelog

Fixed

  • PlatformService::findAllForUser now checks hasDefaults() before calling createDefaults(), avoiding an unnecessary DB write on every PHP process start
  • SeriesServiceTest: test mocks corrected from non-existent findByTmdbId to findByTmdbIdAndSeries; static $defaultsSeeded flag reset between test cases so platform-seeding tests run in isolation

Changed

  • App Store description updated to reflect TV show tracking and rewatch support added in 1.2.0 and 1.3.0
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureMBqLzKCQipMCqtf0gq6QFUqrK631nyx3olhG568t71yV/TOlV8kNQkntE1dQqNay
t6HB0DDREGQqfvGa8cg5MBmfg1aq3+8i/DWxVOAmavSD5vU9of2XnwjZivDfvJNu
/yOvUz6DnmK/GMCQ/FufzVZKanTCLPQ6d365qdnyHSpJcjXVp4hir8d7YbwGxqWo
DNSq6+g13CvCxMLo+tCaQK6AO3YZYKscYlSoo7YTO5vOfMErupZdv8TRHz0zj8YN
+kndD8NarfyOIEid0k8KTcA7rXdAIN13V8CjtQnwbjV4uk831MEfA6weKQkdaxt3
mnUBWi4lvCLcd2pqDlriHe0c/jqFLll2GQJNoXchfGH7nYwE5Lfn3+5lq6gha7Ke
KU6rsN8DlhEdKXl80ZIWfHwOGgewUhrVx5spgvaQ90Sjsq4J+ilX1osXQW+4YMyH
w6uKZfDFbR9t/NI55iBjDuAQNGkE6pIIVDcwOu48y5KSqC0bKiO65jwrA2dr5WSn
7Z8IsFbWR6rszgI47bbuhbV8Vfk+BteeC91LfyBvWljDuxgFNeOXQBhTeedsyx6B
y45vDccx0I5KaHm6lTlZ8eMeEGmADQ3qVaB1Vv/zmgt2cGJljO1EpbIBBJQsqn2S
eRw1V0S8qgctZTtCIdXc9jyIusM/cK+dHdR/hYKpvCU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.3.0
Release Details
UpdatedAug. 29, 2026, 6:50 a.m.
Changelog

Added

  • Episode-level TV show support (#15): track series, seasons, and individual episodes. Series get their own /tv section, list view, and detail page separate from movies
  • New moviedb_series and moviedb_episodes tables; series metadata and every episode (including specials) are imported from TMDB on add, one API call per season
  • Derived progress: season and series completion are computed from each episode's watched flag — never stored as a season/series-level percentage. Unaired episodes (air date in the future or unknown) are excluded from the denominator; specials (season 0) are stored and shown but excluded from progress
  • "Up next" card surfaces the first aired, unwatched episode
  • Mark whole season / whole series watched fan-out — idempotent, so re-clicking never re-flips; only aired, non-special episodes are affected
  • Series-owned watch metadata: a TV show carries its own rating, platform, language watched, and watch date — set on the Add TV Show and Edit TV Show forms, exactly like a movie — stored as a single series-level row in moviedb_movie_watches (nullable series_id/episode_id). Individual episodes are a plain watched/unwatched checkbox with no per-episode metadata
  • TMDB Movies/TV toggle in the search UI; localized TV genre list
  • Watchlist now supports TV shows as well as movies: a unified watchlist with a Movies/TV type toggle when adding, a Movie/TV badge on each entry, and an All/Movies/TV Shows type filter. Marking a show as watched imports the whole series (all seasons/episodes) and routes to its /tv detail page; marking a movie behaves as before
  • Dashboard tiles for TV shows watched and episodes watched; total runtime now includes episode runtime
  • Translations for all new strings (de, es, fr, it, nl)

Changed

  • Migration Version000003Date20260828 adds the series/episode tables (including a watched boolean on moviedb_episodes), relaxes moviedb_movie_watches.movie_id to nullable, and adds a media_type column to moviedb_watchlist (default movie; existing rows backfill to movie) — all add-only or NOT-NULL relaxation, safe for the SQLite fresh-install batch; no columns dropped
  • media_type is now populated on movies (default movie) for forward-compatibility
  • Year and platform charts remain movies-only in this release
  • Dashboard Avg Rating and Top Rated now include TV shows alongside movies — a show's rating lives on its single series-level watch row, so it counts toward the average and can appear in the Top Rated row. Movie and series cards now carry a small Movie/TV type badge

Fixed

  • Default streaming platforms are now seeded lazily on first read (PlatformService::findAllForUser) instead of relying solely on the migration's postSchemaChange hook, which Nextcloud does not reliably fire during occ app:enable. Fresh installs no longer show an empty platform picker; the seed is idempotent so it never duplicates existing defaults
  • Recently watched TV shows now appear on the dashboard alongside movies (the recent stats endpoint returns series with at least one watched episode, most-recently-watched first)
  • Episode watched state is stored as a boolean watched column on moviedb_episodes (toggled by the per-episode checkbox and the season/series "mark all watched" actions), and total runtime counts each watched episode's runtime. This replaces the earlier per-episode "log watch" dialog: episodes no longer carry their own date/platform/language/rating — that metadata belongs to the show as a whole (see Added)
  • Series import no longer fails when a show has a specials season: moviedb_episodes.season_number/episode_number now carry a DB default of 0 so episodes in season 0 (which match the entity's default and are thus omitted from the QBMapper INSERT) persist instead of hitting a NOT NULL constraint. Affected both direct series add and "mark watched" on a series watchlist item
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signatureo53wujykdigXdIMMC7OwGc4U1s5G5LWDUGFrsnyTbMe4zh9zLM/pb4KwuGJNbSWZ
lNAnrJg86s3Uj+tNdHMnEVzYkeAAqZ92TSdVN6UCbL+LMU+LbdJJOijXhEQho0xF
NF0x1U2+AzuW6fVDOC7eYmtIuCBAB/4xiGra/bqGVPGTpttmdYpkg6TEmF4NkhKs
TH0sNeoqbOKH0bvWU6q4d27Icqc8klNA+Eo61AGq4OOg4zY5I2CTdZHrGQW1uarV
esawGTxZpEf0B0+eg3dvMOXRq4f7ULLDGxvgbSZ8ulevAem0zHuO0ldeov1YJScb
5ko5nINoVV/AKJLqSgqkMX2XSduc12llo4uYD2aiSS4GqoIX60JwO2fFR59YfphM
1i4E5hVxGYWfXEOX9h38sOt2ea9yUS8/CUYLaXppP5Xr7gC1/gShFennJ4HEms8+
LAJXGgYaUwVR1OZzQ1IoydswGSeeHV++5Qs2cjD0no/Hy5FG1EFUPBJUuKmcwQSG
Q8YmI8/gxs+5M1O4vxCXWl4NaOnWbEkDoKKotQA5aOJVZfk0zIFUSjb0ZW87Q5NU
tBDZNi6ccg2DWNOxWdYgvpBwGDoLySpS5Z3csCKLkEmET6YGocEVTk3QdDW/XsYV
AXyD3J/SF1omJfWKZMJhLGxmdkDEdWg0/XSlbKgaUS4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32
MovieDB 1.2.0
Release Details
UpdatedAug. 25, 2026, 6:53 p.m.
Changelog

Added

  • Rewatch support: new moviedb_movie_watches table stores one row per viewing (date, rating, review, platform, language). Each movie can now have a full watch history (#19)
  • Log again button on the movie detail page with a star-rating selector for quick rewatch logging
  • Watch history section on movie detail listing all watches with per-entry delete (hidden when only one entry exists)
  • Watchlist "mark as watched" on an already-watched movie now appends a new watch entry instead of creating a duplicate movie record

Changed

  • Migration Version000002Date20260824 backfills all existing per-movie watch data into the new watches table with a verify-before-drop guard; legacy columns are retained in 1.2.0 for safe downgrade and will be dropped in a future release
  • Star-rating selector replaces free-text number input in the log-watch dialog
  • Removed redundant date/language summary box from the movie detail header

Fixed

  • Edit form: rating/review/date changes now persist correctly even for movies without a prior watch row (previously silently dropped)

Tests

  • 73 JS tests, 69 PHP tests, 0 lint errors
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignaturezhR5gYHFnW4DQvbjaabhFfJoVCbw2xCpGDCzNmSHHNauQYQqsDweLrZpfHvADAHPuAvzv4OPDCXxngxRRvDTviwUnx+jmuvNpzSDazRNbQ18yZdGqrKF/T/ccCTMjpxtDqTnOJJIcPpAAASc4WWG6Vu44w3L2bzH7/4yC2AkXuAFoC9P+yAXnDNUvgpfHHGRj7CeYjBlqOZNwvOTfYacvw+kyJ0ozzWteH0sy5Y1+I4BNL0wtK3T7V7RD1BzALT889qCGyUtIph8D7XT57+uiVAntBZQQpTqoN3yGNu9fTPVzyC5b8frY45XOGX6pSQ/q0uQ7++BU4sKp8DuKiEZ9mwbHNp2Y4CnoY3rSE+IWi6CZpRAi+UY6UeL9dwcJ98Ts/1SHh9HYn/URPi02mAI1xmXkTfkQyfU+lLvASs5LfYrx69Cdi9O43tbYijo3SrtTANvy2TgicMj9maiMPP4eCtJ2fyN5T2vvYxJv3GYvKOmc4ZhBOG4OPhlOZtb1HnGbXFF+Vm/9oPpNax5KrbX3Ne7kSZs791ibk0hiXNPfHehdDZxBnXVTVhXvBknF8VyAQ09lXKlQ3GT9R9PKcZDVKXN4m/do4Lcs7XgeSQOEzmXS8LUY7ihwjHv7AIWK1e6To3MKLd5mT0RpJSbnTv6OFwhgv1psHfjOkkVQzVRkGs=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Minimum Integer bits32
MovieDB 1.1.2
Release Details
UpdatedAug. 24, 2026, 6:27 p.m.
Changelog

Fixed

  • Prevent adding the same movie twice: POST /api/movies now returns 409 Conflict with the existing movie's id when a duplicate tmdbId is submitted, matching the existing watchlist behavior (#17)
  • Watchlist store now shows a specific "already in your watchlist" message on 409 instead of the generic "failed to add" toast

Added

  • Friendly duplicate-movie dialog in the Add Movie view offering "View existing entry" (routes to the existing movie's detail page) or "Cancel", instead of a plain error toast
  • New i18n strings for the duplicate-movie dialog in all 5 locales (de, es, fr, it, nl)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
Signature3svKAWeA1wnMKWjv6gguqWhW0hzWaovMs/B5VSy/vgo3j6zWKdUSnhPh18kL1STC4zCJ32lrpiMZzzeqMLUzDbVobV/8vY+fNpy02JV8doFOd+3UCf2kpxjY6Mt6AnfgSpoS7RDgykSZYmnX0qcVvH3GMJEfoZ1qCwSPZ5o2OPVQqv58e1jTYo+NVyOV6lkGZSoBt/qFxbupa4SZpSHp8Nx3h/fSeQdmRKewWjzHTJXhKXgpbMWUu0iCYx9wF/+uJO60OAGD4NFtVIPQmS7TEJ2CdYtQl+2DGquEPAx41RlxCWsjskwKpq5/BSq/uogwbM6Gz9pp3+G8viW6PDWC+nLlGdReXETOdVLCCMIGSGPfW5adYl2ZZb+gUcwb7ndKZ5Mm7vuoRh/HA5KNwxbSPwEXKCBY8WgkzcRRA/Ijc014G9run2px7yLA7E/j1Ym8ENkvOh3Kpk5V79lPjOya5ul4KcJw3idLmGSUFUDS2e4htJCmOyE3u3p+8t78ZU+PVvXOhxL43Aet9Bg3I+jW+WDqtdiRDv/9O4eiGCi1DiJBclroeKIYamOHcco5a3ZTEeqEe9LTS/iF1078BI7JTDhT/iAh1P+Fxpiarvr3gEh/tR6ae0OrwTH1/VWKQike1fkEzubcd81ArfoudJrylOxv+O/2W27j28DGpAI3DB4=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Minimum Integer bits32
MovieDB 1.1.1
Release Details
UpdatedJuly 31, 2026, 10:10 a.m.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureoBoTuKwkslFX+XV2GPd7IYGCm/NvKhzIAawUt8qG9Gy4GCmIDGmPAtoiQa3ze9+2
MttRv3DMyuODHW1/Idr386cNa+L3witDP8hyiNv6uWLlJzQeh3Qo/etyKfhtdHGf
R4YAq/sIIQF02s9jtlsKaQ5dDLd+EpbP/1JD2/uWPu0vbQerL2HJTLIrPGn78kI4
nyK2nSUJCH0MtV4Elq4dG87Sg2jZCQvqkxZgle208FN9jx19EogjZSy1Dfyq49CI
NzdoKYX6+/EGcF1Vizl0ibtR+A+k+8E9c40qnUrs+XfbLNe+G+VBZ/Eo0AvEO79I
hiJWWaqorAwIUkt27vjik4Re6gsSjP0qo2b9btnsYn2Dj5s+dfza93QmygS6ExKL
ScGvTxSr/tANM6gAWIZqmzSu0plvp6uSA+1dRplhPkLGMk4KcJS0y1YvGdXEpbK+
caBHHdfkG6EAv9Y65+frFxCPxQdh9UloV4bYcVV8XTbhISC9J/rKPd2qlcmkaM2d
SsaC4+3F4Vbcw26CDEYi7mUl9SGW9BnBVqUmiEjZhbIAmuJssuwaVQQpn0nkUcxb
GE+k8b5+5W5J+EdMZISrZtChQz/uS7Ori+XSkxYuL7msRhlmUAWibZUl9LY66OxY
LEXNNteTYhC0n6PSBpIcsPNkFYGW5SLVsv21gyxc/Dg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<35.0.0
Minimum Integer bits32
MovieDB 1.6.0-beta.1
Release Details
UpdatedSept. 29, 2026, 6:16 p.m.
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhMUMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzE3MTMyMTI5WhcNMzYwNjIyMTMyMTI5WjASMRAwDgYD
VQQDDAdtb3ZpZWRiMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6t01
0BBouRw8rCA2eTQU1HdZfNE4scCAg9UwsujvnjDJwMslqUV+Lue3+g8/pZOubxNA
GDDiaKku3iYbRSnVzQsmsSUa6oUZ7d49+RTJpWl0IkpJEz8i+J+aPkNj3eB7lXR8
db1Ke/b59ATZIUAhkq8skx4kMUqjfHnH6e3IkWxbvYbmqFGV+cnReiwODgPSA0Sf
Y+L3S2XnPg/O8xtPmvEpA6gvhYZnYsytlrqh/vkt1TaeSLrroOeXKtG6hEtffVXT
UNklss/84vbjOKwkQtQA4LpaT827y5MyrCi8nIcT6kcYeaNMlOMM/587WYg3HU75
suTKz7DGoOeIWrHuaz1ic8f0O5qZGNCNOku2vz4/GU0ZzQsefIXnrix+4jcj8EX3
3hRb3xsIV/bpP2yPobMGu2MRYHccMNqfnT11O6LNvSXzjOITh39WJdf43pb/mddj
8an3cS+wNmcYU09RzB6dGyk++fVwnZvZ7rFCaRiIRYNOZ69J1BtcAxhb6UenuK7b
bFcknbRQEZOxr0qy4IdRBPr2h27COv2vROEDbSMZF9YtO8KL1k/JleCyJgj7uFoY
jo+mgfyJsr/ytco0TZrEskgoZvUffRnzedqbbTyzTDLiX7CYMKT6Ks9aCDgHUb8k
iSe6+Uqr1rLqJlPg5cgiPY1+sd7WeQNom47qUhkCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEANsVS7rTvACg3I3Ncfo9d9VMGHnRsgXlEmGYg+KiAQ2OMoVxmpG/0rftp
wNDZV5Gyq8d6E5BO6YgmR+nCWnY7qwXt9t2r2wV0MZ3hVc1s6Hhrk/ZcXuCM3QE0
SGYSi4Th/IyNXN2JvY668aVigglsoD2Mq+cp/XZdMG/6UOyDZKdo/GEQYTv9+eHi
j/Ol1ayXhIK9JruEy2Y6NyB5qs3Y5CRzKne343UiSd8rPWX1GrRuBQ59diRTCL/v
F40EqVxaT7j/BFHmLr86J2+ycXNOPyd9tqzjn3ZSoSK/46zAethu31e2B95BcHCe
d9kofYWAJaLP98he/XqKJvQMGa4g9A==
-----END CERTIFICATE-----
SignatureIVU+tpVoMJZkMAJEFNoTD1LzoPZH09lhaZ5hWZg2Z5XnvRvDLg2wcWwovsKTCKd5fkf7RjzjFYQhYl6MvRZvxeESq/xQzS8P9TBKtcyJX5rSipoAZOS30n4s5XcD/NbkHAnnf3nwrrtQroFgiKAZZfv1s83M8b3B1QFKfkQQmFclbZHTEkdf197ZGi1O1AGD52YuPmymPc4Bz/CbMaxqjllZw0elt04tdJzY1Ti1fiT5ukqB+3hVNoxwEj7NotYrntQoaOBwFLun4+1JD+lMkZH+x2kwqPienRwH5Uyf5RHdBIAG6kejtK6PIF4SdYhBLc9Ytjc2yBA9mdFIhIO70Y1i7PXynagRXG0haqFWXMYCRWhgh26XUkci/GFwZpsPtyqVdxN4UY7FxlvgQcqPVRKDKhba6DGVepoex5RS25A7YvJbUw4mEfdO2WFAOhJDXYEMkxy4N79u+1V9c3b2EhZ7zeMEbGfWxAnH7okaNOSqQHdu57OGr9ZwThQBFkWP+kEkAz1HZ5VMjguOM6oKMYYaMC2enhFsVIvKaR0gBEWP/eyHBdkU1YRCFI/WaV/5iv1fjAjQjOCUWJsCnew/ruuVbDqFkwfMPUNWZeVXDerxXYJjNCqIxIXZUw+RIuxkuGxq/x9WBfFtLIW6yTli8cmTjUf/1mIF4n+ak89tsBY=
Signature digestsha512
Dependencies
Required Nextcloud versions >=32.0.0,<36.0.0
Minimum Integer bits32