Immich Integration - Releases

← App details

Nextcloud 33

Immich Integration 1.0.9
Release Details
UpdatedMarch 27, 2026, 7:57 a.m.
Changelog

Fixed

  • Map view: OpenStreetMap tiles were blocked because Nextcloud sets Referrer-Policy: no-referrer page-wide, stripping the Referer header OSM requires — added referrerPolicy: no-referrer-when-downgrade directly on the tile layer so the browser sends the origin as referer for tile requests (fixes #26)

Dependencies

  • vue 3.5.30 → 3.5.31
  • vue-router 5.0.3 → 5.0.4
  • @nextcloud/vue 9.5.0 → 9.6.0
  • flatted 3.3.3 → 3.4.2 (security: prototype pollution fix)
  • picomatch 4.0.3 → 4.0.4 (security: ReDoS fix)
  • yaml 2.8.2 → 2.8.3 (security: stack overflow fix)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureUAawulU8GCmTrdoei2Lx4pJ4/SkhJPRhPINwCULIRFQx6D8bKyAHYB8ilmSbuSzR96FB7JXAaN7/nzE/PkkZfn69LLjb7EgsOeL4rbTBRm5cOSoqiscX8NFDJTob5JsttofE+/K14kjuw6CcmGsYgmFFydtO6njAwXSvJeVWCbYyoK+YvjnWRra0BrkNB2ROW7wBTUB0+Ud7Q61N78EcxTepzLORlXnyQbTLsPvgWifTrm6vbOa63QbWD42nZBJpEtNnmvAaYytceCEPn4B+0FYQtFHrWGF3tU8zpYYQcaGGtI5CaG8KHNUZXvOvBxMIsLCMRsP8QCp9xd1F6w0A3ci+jrZWTDO5n2/d5sRyZffpGZUPXNNDDyxmsfzkJ0iQxCwoke1YSnkyVCaK3AB8aimUX8SiqeNlTWhj37AZ9F0blA4+00qz61ix61/sl5qMoIi5NiTvvfxd6dzkqRv3bfPgyrzkarx9ttlEzoaVS3v9Zf2l/QTINcZJN0Ln3rwzlfIHzaoArtOyI72JTmIv1aG2DwQ1c0w76eb7plKtcd68PrBRU2vcz1jGWk2n1qmIu7pbfunE+Lf4jv0wEyumrvwldQW0OXsjxh+1j7zVMZDWS4PV67WKhn92XNB5vQshR/q28kb0QKVGQoMvnuMVNB8I+w2h3qKGwUJuPSX1DzI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.8
Release Details
UpdatedMarch 13, 2026, 12:42 p.m.
Changelog

Fixed

  • Map view: OpenStreetMap tile images were blocked by Nextcloud's Content Security Policy — added a CspListener that extends img-src to allow https://*.tile.openstreetmap.org (fixes #18)
  • Photo hover date tooltip was displayed in German (de-DE) regardless of user language — now uses browser locale
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureYig70GbWdqwyJj7Pgt5H4OMZtLMLrRnnuUG8i4DJZYwNh7M2Vf9uXjh6ImeqEz4Omov9e2QVucDVXGeLd1zN3s7S0FWBnf3vBSpDhrrLjhXrB1bGDEHqA4jeQyLd31Qt8UeB2Qeo0MTxWs61ZmaLmPVwsl/DF2EsmP8C6ZwMT9KBmbDE79CE0KxdMGo9PAXN0QwL2xqzbXWqP4pGAXVPGY8jZxvBoAMZJmYhneh0PX2LfIKps3q2sfreLlnR+iGqHAOuL9pXpt3R6OpNie8XRUL4DlBEoT3SZ6OccbPIiYes1uIrOQ/cT+pGkrqqJlpNWAwxp1wiHAESlXBE9eRUWB2MIm2xrI4WFrsHewBcp78FG9ymZ17lk2IwYg2zqtZQM7lo2iyp7T7wcDzW9y5WyGUNyH/wU3+Z22aThZ7SkCaoVu7w2Iqz5bQYlHAHth+OeDQ4pOpVb1kAEAXX3obcwKbPCIi700eGtd6buAQ61bbB05Db3InTBv+KNjCc2ETIxTetYdad2+ZdNE30lfr3m1KEqzV0Zr0eqaJcaG19H4ROJ46KJxyVSoDUSqUuBlJT/WFhJVc/9ZlunHPzbNLL/A/wnh5ynuiSS+whlEJ8H68CVP8V5w3GDhN0oo9IS7ymdU4RmL/YfhKK0jcZkY9BBFnbwojuXxHvNBBjsOwm9po=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.7
Release Details
UpdatedMarch 10, 2026, 10:05 p.m.
Changelog

Added

  • French (fr), Spanish (es-ES), Dutch (nl) and Portuguese (pt) translations via l10n.dev (closes #19)
  • build-l10n.mjs — automatically generates l10n/*.js from l10n/*.json at build time; adding a new language only requires a single JSON file
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
Signaturekz+Ar4X1UQgW+o1+M6G+lRcYtNsnJvD1aYT3zRd3sE4UG1OhKlLydqlVyyWX+tkdF+o4a8fNJr1BOiNsUXYrFD5M8dF/DRWSUcOJmojAe/ieNR65ocNtHUvkUZ6gugO85A7pr+pQtv+FuS7KeBQAAHMRU7I4dMw4tP2JXm6/D8+2nMU2UvEXbdipGoX1rEV8Ygj3Zlizhv01yHTfIxg6YhPkIAUP2aMnEskKinMogrd3XjPPHWl3/pJwpMGjp7BwvgSDE+Rxhm9JWAWIOtzVXX3c5UAXmY7ofVSYqnOpCRd1/s/G8Hv9tl/QRJucQQySd2eVP3hfsg1TT1NeS/2EC0AW+0BccIzG2vf8nfNj5U/gIIyTC/r5DVXSM9scG+x8mapkhfPlt+wry5AAU4hlBXh18vBuoOYIbPh2Kl0CcJTAmFIfTivt0ApSWNvSlYvlu5+xbAeKWYm4KlDkiddznW0dYlZsZ5SZCxLVKswGvDXcWoUTljaCOmPKeaJdLpQZB2WrLv7/iYSfo7hRD3dvSsQ8O2hxSKX6hgl2zYaLv80IwNt7E5AvM8zx3TiJwqpob+BDkomEqem5N5sEi5cAHjOInDTYW2kTnQ0wA0NbeGIL7Jlq2VhfxroDRJKUVIA6/omEIdKBnF6wnwvMljOI/K5Acsf8BVbJxHDKP1IwVkg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.6
Release Details
UpdatedMarch 10, 2026, 8:21 a.m.
Changelog

Fixed

  • When the Immich server URL points to a private/local IP and Nextcloud's SSRF protection blocks the request, the settings page now shows the exact cause and the occ command to resolve it, instead of a generic "Connection failed" message (refs #12)
  • Connection test errors now show the actual error detail from the server instead of a generic message
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignaturegsDGIK+QGTnAxtT/VIIoykUJEruz0c/IoeUvEvjbStocgcnGEw+25WRmA8RyAE11Dc8wW0dyz4LgbAivTFL2GU9IFND4PO6ifFNIhDt4DLFPHS4jdgVaJAaIifppyBtkkrDFmnw240nfEGsBGDKEoJ13RNpT5bHbHcCq3856bme9QdzU3TBIvRotFobW4yAA2tisxjBpE+/sgqL5Tyjja+YXAYv6ut97OYaJe/TwYV1TrC8QGbN97+CSi8I5S1ynCiO1ZZ7Oa2OgXTj4WJN+UvCoco3ril6oGsi/FdpLhP94LlcZ6IenU92w2WOyqT4FDG6FhDx09cLcvD/xCfkD6mpJtLlFW2USqutX6okR11DL2wg+rqcXD/WFV/yLlJO+5oWbXivcSnjh9ilIPL6S1iicx2jlLhY7JTXr0MxuzH1GfplJ0m+Uy60rLwgTceo6iYo0UWIz3rcMprTxm5sBOatlqSM4E9ueBgd0T5O9iTEgKeLiUUeIScLEPTJuswfEJBnCD/hNDW2uwFrkr3MsIBl02aXDsyOppAESTKq8otLXAARI4pwHnAPCv3AsJ5zdwgMUUZPAErOpGH4rwnFKDxkElRjr+grODjeVpo5N4TMQlxG/XPmF+VwqiIAg3Tye5+C5GLwHzqYrk0pJeBdxqggBRdtjJK/OSIXOEZfOjXw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.5
Release Details
UpdatedMarch 10, 2026, 8:05 a.m.
Changelog

Fixed

  • All hardcoded German UI strings in LightboxView.vue and TimelineView.vue replaced with t() i18n calls — tooltips and labels now follow the Nextcloud user language setting instead of always displaying in German (fixes #15)
  • Date formatting in lightbox now uses browser locale instead of hardcoded de-DE
  • Added missing German (de) translations for all newly i18n-wrapped strings
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureQMNrnON0nts1bLhJhWiIEsXrtqZ2Ll6rZUqrzcAtmErxieGuPmO7W2a+Hg6/VGDlIbN/FJLr6LbjzIu9Dn7IyRa63fD5WqkqYSCP6z+OX336rUpHBWB2uoqx0RHzruYgCfW5eUZ06tkpD9qmKqvIJmCZsO4JwD9El0zOuGE7K6PzVxKKx6m8TAq+tvE5vAIoPFD3zTaQod3ZrUlln5hSkkArNXGMrdisRkfevWOzfHeR+uvMZiSFtDvGdzi3I6Z++kpvoG9lonyqXSuMBVlSsAc2rGQRZbiO9zXI6K3wAZzgp71aOH9fHabr8xM0/Q3aTRQLVTG8DwwwkP7HUgpXbzWBP7ZNeoJGfcGGGKJKd+IhdDVTjeRCd9kG0TH/QoUM3UdZsl+1mzzVAo1XXcNBdpWBa5tNGp4isMue0F3N64MVDA71kSHSAWLRlcs2rtTHRriJzqF8t6HQOiM/OPFzNqobLoRtugIc5INWpbkDyVdv84MfVHBqQ0fL/t6VvmU2NmOa8c6OJT2aETRocmJeFO8qf54ZORWVr6Yf6mAzbJ0OxTDX+zx7390zzEx3SBwwNZwl4IGsV/dFy0IvlWtBrzDjyArxzqyyUb3pk93va+rJZrxC5dIGIub4tx6AIc2g1DsXjNek+sna2Hr3kVgXjut+vvySvgym6rlGR2dhvB8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.4
Release Details
UpdatedMarch 9, 2026, 4:48 p.m.
Changelog

Fixed

  • Missing use OCP\AppFramework\Http\Attribute\NoAdminRequired; import in ConfigController — the attribute was present but PHP silently ignored it without the import, causing Nextcloud to treat both config endpoints as admin-only and returning 403 Forbidden for regular users
  • Added #[NoAdminRequired] to getConfig() so regular users can also read their own saved settings

Documentation

  • Added required Immich API key permissions table to README

Dependencies

  • vue 3.5.29 → 3.5.30 (bug fixes: reactivity, SSR, custom elements)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureJiks0DqUf1nht/Mfl/00nESbsENimbGrG2JqPc5N8YvSD5arEAmzwrAjcsLiDbdNQT4FG2B84MHbBNDTJjuhUupktOl71mM0BjLYYnZu/SpYfUsoj0BKMi4qeEjCL/wLFvRCMkazH+CVO0aML2p7kz6D6SGeEO7pLnpTSOj20cBb73c6T20F4q0W32a6Ld7Bz0EBNva8sBeujWj9WX8i1NZNfMgv/CxQsUXRjuVszLVqhMi90+osdVTHPrXTFIfbV2AyvHSqpHzZecQsYoShZC4dFJoeljfSWil1yPPASgB99lajJwVesoHRdtviRU19B+COFMMfcurIxW4kWxQbuDYA8Fs42+EqB59yDiwChez/D1Hp0AQcGf2KeRubN20UAs7MZ2dxKpAVyB/2wUvhViip+HLWdcmGJSm0v2rWqT29rDSVp9O92LReg7DXP1e/HBmOtocRhmh0AhcIl66HO+K/sGzUw3BwMcfjjEcAAmpflemoNMVYoE9vBKLWfQlV/Xey8S7M47naKh/ofquxWKNGzSjjazoXzPvCfNrj2/jwL0IenmF70I8zf+PVimq1Rb6XDdeYwOC3AoWGJTVNFeRvDY3tQArz3E+PvFLBv3YPpvYmL6KWb8AEYMYDP4XVTQPYMRPobGn8IuZPe8JWl1OteWEu1W0JfxXiqjPFEeM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.3
Release Details
UpdatedMarch 5, 2026, 9:33 p.m.
Changelog

Fixed

  • File upload to Immich now streams the file content instead of loading it fully into PHP memory — prevents OOM crashes for large files
  • userId null-guard added in upload and save-to-Nextcloud flows to return 401 instead of crashing
  • setConfig() now correctly ignores validate=false strings (PHP truthy-check bug)
  • #[NoAdminRequired] added to setConfig() so regular users can save their own settings

Refactored

  • UUID validation regex extracted to ImmichService::UUID_PATTERN — eliminates 18 duplicated inline patterns across all controllers
  • getUniqueFileName() loop replaced with bounded for-loop and uniqid() fallback to prevent infinite loops
  • getPersonAssets() capped at 24 monthly buckets (~2 years) to prevent unbounded sequential HTTP requests
  • uploadAsset() response null-guard: invalid JSON from Immich no longer returns null to the frontend
  • API key decrypt failures now logged as warning with hint to re-save the key

Security

  • dompurify updated to 3.3.2 — fixes XSS bypass and prototype pollution
  • immutable updated to 5.1.5 — fixes prototype pollution in mergeDeep/toJS
  • minimatch updated to 3.1.5 — fixes ReDoS vulnerability

Dependencies

  • pinia 2 → 3
  • vue → 3.5.29, vue-router 4 → 5
  • eslint-webpack-plugin 4 → 5
  • actions/checkout v4 → v6, actions/setup-node v4 → v6
  • terser-webpack-plugin → 5.3.17, fast-xml-parser → 4.5.4
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
Signaturen3I15745dCxPzAtI5CG3DIrSLLzbq7uTF+xxBnuFjWjKblusSD6EZrN/YEgUVTTfgSrI2omiwaWFqxtsyCvIVUWwl3BEn1CebthBHlbn1EGnRrTBGan+qQYH4OE6yoepvFRB9QYdBRFRBe80wkphE7yJyhmUrzlQNlIABRo1Jss21hBzkMgJaE7533WPhciqLQVH/Lh/5+uAXE4tD2IcH4eR3kJzYM6l7L2hrgQ9T5BbVjtG+wa+x4khlSmlMCLDRSriLgM7wdJUx35ekh8w3GpQ7r+uZNlEF4aeJS3qjBYdwHoeA5HdgvD5c56B8L3xJeQLckiA88KLfik4rpgd9Z/sck+Wik/fD5ETZ1IDViFJ20bDonxMlBxReWxPDC9uOhUOO4DBwMzG7GO2Zhn2QLhyaYqU80DMZMk3kMiuHze3DJcijxlByjyz36g86cp2+cQjzC+uG5drKI7dBt8Pl/ltNZvC8ru4AyDWNgFE5fPYvnYKErXKDizs8cMlvpfo/nvCz8iFSpncosEiRhXkwEL/sJAY/79QfScAuGzQDZ8hprEXWinSyJBqnqsYvxq+cFmUyM+KGrjstFKZtMPrk/PV510uBj0CzV1yeEokBm+nWipJ4rc1dEWUlXtZLrJGeogjXIh7EtEU0Z4VdjG/ckOf1n/g5IclI6tSp03+AEA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.2
Release Details
UpdatedMarch 4, 2026, 8:11 a.m.
Changelog

Fixed

  • NC26–32 compatibility: "Add to Immich" file action was not visible on Nextcloud 26–32 due to a registry scoping change in @nextcloud/files v4 (only compatible with NC33+). A separate webpack bundle using @nextcloud/files v3 is now built and loaded automatically for Nextcloud versions below 33. Minimum supported version is now NC27.

Security

  • API key encryption: The Immich API key is now encrypted at rest using Nextcloud's OCP\Security\ICrypto before being written to oc_preferences. On read, the value is transparently decrypted; a plaintext fallback handles keys stored by older versions.
  • Input validation: All controllers now validate and sanitize incoming parameters (album IDs, asset IDs, paths, URLs) and return proper HTTP error codes (400, 500) instead of leaking raw error messages to the client.
  • Error handling: ImmichService catches exceptions internally and surfaces structured error responses, preventing stack traces from reaching the frontend.

Changed

  • Bootstrap: Migrated from boot() + addListener() to register() + registerEventListener() for proper lazy-loading of the file-action event listener (recommended pattern since NC26).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureWTWAAXSRRNWqf0SjHARlHR9/kTe10CE5FvA2fajgWDV3T6FMTDz6tFeVxZv8S1Qfy3jRCfJP3kfJ8Wc3m1xMEW3tS7h74BPptwXnHTh0y42toNgdZh0YGiXRIHW0GFdjixUDsFpCiM/RD5/dlGHOVwtcGaoKHF0T9B3WFm4X2fSNxR/IKwVoKEQGGYioiE2msXYNrvUccXO9ewCFvRFiCrxIEk31zZ9qBCRtANB8Ug7r8l4E17fE59L7c2q4OB77PgKyHuj91QFPgMJE8t6ajyte3NYF+k5XdX6TOnnV1BjDA1TDjc/2AoJWzUgd+12l39TI2a0MqLF4HMJ83DxPUKdQ8qZg+TkVnAXP+SZm2gdflWSKbylg/m8IY7NTCh+YEBvvSBicUxWjpGbvSkfayHRaALs+Beg0cvyC4GwKUA7VAGkoiqxxBGnxbAESlYI0ts3jNSzbsUqKT3LjSm7YUMonip2Ig+vM8G6ymp5y0WizOM64L0OWFeQ19hBVFwtUSjKZJ9navhDIwQB6GwlusaARRSw1B5EIkbNII+wL4zGrDsH4Z262rh8R8xc9k6/oT01aSsLx9OGzbIBBSO5mDDCXhfzlanqge/MWKF6+0hVD67j8DNt1QN8nRZ2NGcAT4spy60fCNgYcJ3yJDZQ0No0i5zOF2R66G6Y7qrTNdqo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.1
Release Details
UpdatedMarch 3, 2026, 8:26 p.m.
Changelog

Fixed

  • Release ZIP now sets correct Unix permissions (755 for directories, 644 for files) so that lib/ is traversable after unzip on Linux without a manual chmod
  • Fixed autoloader not being executed due to a UTF-8 BOM in composer/autoload.php that caused a PHP fatal error (strict_types must be the first statement)
  • Timeline: fast scrollbar jumps no longer leave the view blank — in-flight HTTP requests for buckets that are no longer visible are now cancelled via AbortController and stale entries are purged from the load queue immediately
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureEjPdvqhRuEAFPHA3qFV92sLBVyjVxrY5pJ3A7AGT2g5MHyORmqvb3enOnq6L+DYDj+5a6uI+5ynIiN/gBkpadRce8GwwlRjD/n/ryWBGNAB5acstfFdgxVEaMF/aIGRWxz/F3aaFHsnDJFGrpZv2k8J+7Er2a2IVpz+ae/JWW9JxEYv2C1Wfsle7YTuUrbaPxzPeeY/AshQZXIu+msLgkC77pUEXgXTJNQHbikxySktl75O1Yi/UXf7K88NmEbEwfJptB6l5fU0n+f85+KD+lAb4Q1q4vmEjNBXV/3PTwVeS6gWUcE0pL7bo/ZLj+ThJwrRx+/2EufhsvIEsRuHCIvhF1dsn/l6xeWybJPI5NpJFh6eIb2IG6IpFMu3KcdgL0vj/la8HrYVhcM8qaYRwuNAqzxJPX72FSZ+dEExwwMB+dV7xp/meF08OuoiGmdbrWzVoV7BAW+W4QlOwdyhnNc3P6YzO3chs2fSO82+ljfL1KuOZVWLnzJOtTzqbJH6UuxbzzS5IL0B4x5q4U/kxZk0lNy44XNNtWfaf38Wv4xQlOzn1gIEcQxz3s5k33qGKOKF3t85FO35bzEXQpAfnojb76oya4j9hUTggdQT9x4nYq8kvOSJ96woI5+3uz1teoq7EPGeIyBswEXi9iffv4rqch7IdUt8UgzMQ+8nUQdc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 32

Immich Integration 1.0.9
Release Details
UpdatedMarch 27, 2026, 7:57 a.m.
Changelog

Fixed

  • Map view: OpenStreetMap tiles were blocked because Nextcloud sets Referrer-Policy: no-referrer page-wide, stripping the Referer header OSM requires — added referrerPolicy: no-referrer-when-downgrade directly on the tile layer so the browser sends the origin as referer for tile requests (fixes #26)

Dependencies

  • vue 3.5.30 → 3.5.31
  • vue-router 5.0.3 → 5.0.4
  • @nextcloud/vue 9.5.0 → 9.6.0
  • flatted 3.3.3 → 3.4.2 (security: prototype pollution fix)
  • picomatch 4.0.3 → 4.0.4 (security: ReDoS fix)
  • yaml 2.8.2 → 2.8.3 (security: stack overflow fix)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureUAawulU8GCmTrdoei2Lx4pJ4/SkhJPRhPINwCULIRFQx6D8bKyAHYB8ilmSbuSzR96FB7JXAaN7/nzE/PkkZfn69LLjb7EgsOeL4rbTBRm5cOSoqiscX8NFDJTob5JsttofE+/K14kjuw6CcmGsYgmFFydtO6njAwXSvJeVWCbYyoK+YvjnWRra0BrkNB2ROW7wBTUB0+Ud7Q61N78EcxTepzLORlXnyQbTLsPvgWifTrm6vbOa63QbWD42nZBJpEtNnmvAaYytceCEPn4B+0FYQtFHrWGF3tU8zpYYQcaGGtI5CaG8KHNUZXvOvBxMIsLCMRsP8QCp9xd1F6w0A3ci+jrZWTDO5n2/d5sRyZffpGZUPXNNDDyxmsfzkJ0iQxCwoke1YSnkyVCaK3AB8aimUX8SiqeNlTWhj37AZ9F0blA4+00qz61ix61/sl5qMoIi5NiTvvfxd6dzkqRv3bfPgyrzkarx9ttlEzoaVS3v9Zf2l/QTINcZJN0Ln3rwzlfIHzaoArtOyI72JTmIv1aG2DwQ1c0w76eb7plKtcd68PrBRU2vcz1jGWk2n1qmIu7pbfunE+Lf4jv0wEyumrvwldQW0OXsjxh+1j7zVMZDWS4PV67WKhn92XNB5vQshR/q28kb0QKVGQoMvnuMVNB8I+w2h3qKGwUJuPSX1DzI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.8
Release Details
UpdatedMarch 13, 2026, 12:42 p.m.
Changelog

Fixed

  • Map view: OpenStreetMap tile images were blocked by Nextcloud's Content Security Policy — added a CspListener that extends img-src to allow https://*.tile.openstreetmap.org (fixes #18)
  • Photo hover date tooltip was displayed in German (de-DE) regardless of user language — now uses browser locale
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureYig70GbWdqwyJj7Pgt5H4OMZtLMLrRnnuUG8i4DJZYwNh7M2Vf9uXjh6ImeqEz4Omov9e2QVucDVXGeLd1zN3s7S0FWBnf3vBSpDhrrLjhXrB1bGDEHqA4jeQyLd31Qt8UeB2Qeo0MTxWs61ZmaLmPVwsl/DF2EsmP8C6ZwMT9KBmbDE79CE0KxdMGo9PAXN0QwL2xqzbXWqP4pGAXVPGY8jZxvBoAMZJmYhneh0PX2LfIKps3q2sfreLlnR+iGqHAOuL9pXpt3R6OpNie8XRUL4DlBEoT3SZ6OccbPIiYes1uIrOQ/cT+pGkrqqJlpNWAwxp1wiHAESlXBE9eRUWB2MIm2xrI4WFrsHewBcp78FG9ymZ17lk2IwYg2zqtZQM7lo2iyp7T7wcDzW9y5WyGUNyH/wU3+Z22aThZ7SkCaoVu7w2Iqz5bQYlHAHth+OeDQ4pOpVb1kAEAXX3obcwKbPCIi700eGtd6buAQ61bbB05Db3InTBv+KNjCc2ETIxTetYdad2+ZdNE30lfr3m1KEqzV0Zr0eqaJcaG19H4ROJ46KJxyVSoDUSqUuBlJT/WFhJVc/9ZlunHPzbNLL/A/wnh5ynuiSS+whlEJ8H68CVP8V5w3GDhN0oo9IS7ymdU4RmL/YfhKK0jcZkY9BBFnbwojuXxHvNBBjsOwm9po=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.7
Release Details
UpdatedMarch 10, 2026, 10:05 p.m.
Changelog

Added

  • French (fr), Spanish (es-ES), Dutch (nl) and Portuguese (pt) translations via l10n.dev (closes #19)
  • build-l10n.mjs — automatically generates l10n/*.js from l10n/*.json at build time; adding a new language only requires a single JSON file
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
Signaturekz+Ar4X1UQgW+o1+M6G+lRcYtNsnJvD1aYT3zRd3sE4UG1OhKlLydqlVyyWX+tkdF+o4a8fNJr1BOiNsUXYrFD5M8dF/DRWSUcOJmojAe/ieNR65ocNtHUvkUZ6gugO85A7pr+pQtv+FuS7KeBQAAHMRU7I4dMw4tP2JXm6/D8+2nMU2UvEXbdipGoX1rEV8Ygj3Zlizhv01yHTfIxg6YhPkIAUP2aMnEskKinMogrd3XjPPHWl3/pJwpMGjp7BwvgSDE+Rxhm9JWAWIOtzVXX3c5UAXmY7ofVSYqnOpCRd1/s/G8Hv9tl/QRJucQQySd2eVP3hfsg1TT1NeS/2EC0AW+0BccIzG2vf8nfNj5U/gIIyTC/r5DVXSM9scG+x8mapkhfPlt+wry5AAU4hlBXh18vBuoOYIbPh2Kl0CcJTAmFIfTivt0ApSWNvSlYvlu5+xbAeKWYm4KlDkiddznW0dYlZsZ5SZCxLVKswGvDXcWoUTljaCOmPKeaJdLpQZB2WrLv7/iYSfo7hRD3dvSsQ8O2hxSKX6hgl2zYaLv80IwNt7E5AvM8zx3TiJwqpob+BDkomEqem5N5sEi5cAHjOInDTYW2kTnQ0wA0NbeGIL7Jlq2VhfxroDRJKUVIA6/omEIdKBnF6wnwvMljOI/K5Acsf8BVbJxHDKP1IwVkg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.6
Release Details
UpdatedMarch 10, 2026, 8:21 a.m.
Changelog

Fixed

  • When the Immich server URL points to a private/local IP and Nextcloud's SSRF protection blocks the request, the settings page now shows the exact cause and the occ command to resolve it, instead of a generic "Connection failed" message (refs #12)
  • Connection test errors now show the actual error detail from the server instead of a generic message
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignaturegsDGIK+QGTnAxtT/VIIoykUJEruz0c/IoeUvEvjbStocgcnGEw+25WRmA8RyAE11Dc8wW0dyz4LgbAivTFL2GU9IFND4PO6ifFNIhDt4DLFPHS4jdgVaJAaIifppyBtkkrDFmnw240nfEGsBGDKEoJ13RNpT5bHbHcCq3856bme9QdzU3TBIvRotFobW4yAA2tisxjBpE+/sgqL5Tyjja+YXAYv6ut97OYaJe/TwYV1TrC8QGbN97+CSi8I5S1ynCiO1ZZ7Oa2OgXTj4WJN+UvCoco3ril6oGsi/FdpLhP94LlcZ6IenU92w2WOyqT4FDG6FhDx09cLcvD/xCfkD6mpJtLlFW2USqutX6okR11DL2wg+rqcXD/WFV/yLlJO+5oWbXivcSnjh9ilIPL6S1iicx2jlLhY7JTXr0MxuzH1GfplJ0m+Uy60rLwgTceo6iYo0UWIz3rcMprTxm5sBOatlqSM4E9ueBgd0T5O9iTEgKeLiUUeIScLEPTJuswfEJBnCD/hNDW2uwFrkr3MsIBl02aXDsyOppAESTKq8otLXAARI4pwHnAPCv3AsJ5zdwgMUUZPAErOpGH4rwnFKDxkElRjr+grODjeVpo5N4TMQlxG/XPmF+VwqiIAg3Tye5+C5GLwHzqYrk0pJeBdxqggBRdtjJK/OSIXOEZfOjXw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.5
Release Details
UpdatedMarch 10, 2026, 8:05 a.m.
Changelog

Fixed

  • All hardcoded German UI strings in LightboxView.vue and TimelineView.vue replaced with t() i18n calls — tooltips and labels now follow the Nextcloud user language setting instead of always displaying in German (fixes #15)
  • Date formatting in lightbox now uses browser locale instead of hardcoded de-DE
  • Added missing German (de) translations for all newly i18n-wrapped strings
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureQMNrnON0nts1bLhJhWiIEsXrtqZ2Ll6rZUqrzcAtmErxieGuPmO7W2a+Hg6/VGDlIbN/FJLr6LbjzIu9Dn7IyRa63fD5WqkqYSCP6z+OX336rUpHBWB2uoqx0RHzruYgCfW5eUZ06tkpD9qmKqvIJmCZsO4JwD9El0zOuGE7K6PzVxKKx6m8TAq+tvE5vAIoPFD3zTaQod3ZrUlln5hSkkArNXGMrdisRkfevWOzfHeR+uvMZiSFtDvGdzi3I6Z++kpvoG9lonyqXSuMBVlSsAc2rGQRZbiO9zXI6K3wAZzgp71aOH9fHabr8xM0/Q3aTRQLVTG8DwwwkP7HUgpXbzWBP7ZNeoJGfcGGGKJKd+IhdDVTjeRCd9kG0TH/QoUM3UdZsl+1mzzVAo1XXcNBdpWBa5tNGp4isMue0F3N64MVDA71kSHSAWLRlcs2rtTHRriJzqF8t6HQOiM/OPFzNqobLoRtugIc5INWpbkDyVdv84MfVHBqQ0fL/t6VvmU2NmOa8c6OJT2aETRocmJeFO8qf54ZORWVr6Yf6mAzbJ0OxTDX+zx7390zzEx3SBwwNZwl4IGsV/dFy0IvlWtBrzDjyArxzqyyUb3pk93va+rJZrxC5dIGIub4tx6AIc2g1DsXjNek+sna2Hr3kVgXjut+vvySvgym6rlGR2dhvB8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.4
Release Details
UpdatedMarch 9, 2026, 4:48 p.m.
Changelog

Fixed

  • Missing use OCP\AppFramework\Http\Attribute\NoAdminRequired; import in ConfigController — the attribute was present but PHP silently ignored it without the import, causing Nextcloud to treat both config endpoints as admin-only and returning 403 Forbidden for regular users
  • Added #[NoAdminRequired] to getConfig() so regular users can also read their own saved settings

Documentation

  • Added required Immich API key permissions table to README

Dependencies

  • vue 3.5.29 → 3.5.30 (bug fixes: reactivity, SSR, custom elements)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureJiks0DqUf1nht/Mfl/00nESbsENimbGrG2JqPc5N8YvSD5arEAmzwrAjcsLiDbdNQT4FG2B84MHbBNDTJjuhUupktOl71mM0BjLYYnZu/SpYfUsoj0BKMi4qeEjCL/wLFvRCMkazH+CVO0aML2p7kz6D6SGeEO7pLnpTSOj20cBb73c6T20F4q0W32a6Ld7Bz0EBNva8sBeujWj9WX8i1NZNfMgv/CxQsUXRjuVszLVqhMi90+osdVTHPrXTFIfbV2AyvHSqpHzZecQsYoShZC4dFJoeljfSWil1yPPASgB99lajJwVesoHRdtviRU19B+COFMMfcurIxW4kWxQbuDYA8Fs42+EqB59yDiwChez/D1Hp0AQcGf2KeRubN20UAs7MZ2dxKpAVyB/2wUvhViip+HLWdcmGJSm0v2rWqT29rDSVp9O92LReg7DXP1e/HBmOtocRhmh0AhcIl66HO+K/sGzUw3BwMcfjjEcAAmpflemoNMVYoE9vBKLWfQlV/Xey8S7M47naKh/ofquxWKNGzSjjazoXzPvCfNrj2/jwL0IenmF70I8zf+PVimq1Rb6XDdeYwOC3AoWGJTVNFeRvDY3tQArz3E+PvFLBv3YPpvYmL6KWb8AEYMYDP4XVTQPYMRPobGn8IuZPe8JWl1OteWEu1W0JfxXiqjPFEeM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.3
Release Details
UpdatedMarch 5, 2026, 9:33 p.m.
Changelog

Fixed

  • File upload to Immich now streams the file content instead of loading it fully into PHP memory — prevents OOM crashes for large files
  • userId null-guard added in upload and save-to-Nextcloud flows to return 401 instead of crashing
  • setConfig() now correctly ignores validate=false strings (PHP truthy-check bug)
  • #[NoAdminRequired] added to setConfig() so regular users can save their own settings

Refactored

  • UUID validation regex extracted to ImmichService::UUID_PATTERN — eliminates 18 duplicated inline patterns across all controllers
  • getUniqueFileName() loop replaced with bounded for-loop and uniqid() fallback to prevent infinite loops
  • getPersonAssets() capped at 24 monthly buckets (~2 years) to prevent unbounded sequential HTTP requests
  • uploadAsset() response null-guard: invalid JSON from Immich no longer returns null to the frontend
  • API key decrypt failures now logged as warning with hint to re-save the key

Security

  • dompurify updated to 3.3.2 — fixes XSS bypass and prototype pollution
  • immutable updated to 5.1.5 — fixes prototype pollution in mergeDeep/toJS
  • minimatch updated to 3.1.5 — fixes ReDoS vulnerability

Dependencies

  • pinia 2 → 3
  • vue → 3.5.29, vue-router 4 → 5
  • eslint-webpack-plugin 4 → 5
  • actions/checkout v4 → v6, actions/setup-node v4 → v6
  • terser-webpack-plugin → 5.3.17, fast-xml-parser → 4.5.4
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
Signaturen3I15745dCxPzAtI5CG3DIrSLLzbq7uTF+xxBnuFjWjKblusSD6EZrN/YEgUVTTfgSrI2omiwaWFqxtsyCvIVUWwl3BEn1CebthBHlbn1EGnRrTBGan+qQYH4OE6yoepvFRB9QYdBRFRBe80wkphE7yJyhmUrzlQNlIABRo1Jss21hBzkMgJaE7533WPhciqLQVH/Lh/5+uAXE4tD2IcH4eR3kJzYM6l7L2hrgQ9T5BbVjtG+wa+x4khlSmlMCLDRSriLgM7wdJUx35ekh8w3GpQ7r+uZNlEF4aeJS3qjBYdwHoeA5HdgvD5c56B8L3xJeQLckiA88KLfik4rpgd9Z/sck+Wik/fD5ETZ1IDViFJ20bDonxMlBxReWxPDC9uOhUOO4DBwMzG7GO2Zhn2QLhyaYqU80DMZMk3kMiuHze3DJcijxlByjyz36g86cp2+cQjzC+uG5drKI7dBt8Pl/ltNZvC8ru4AyDWNgFE5fPYvnYKErXKDizs8cMlvpfo/nvCz8iFSpncosEiRhXkwEL/sJAY/79QfScAuGzQDZ8hprEXWinSyJBqnqsYvxq+cFmUyM+KGrjstFKZtMPrk/PV510uBj0CzV1yeEokBm+nWipJ4rc1dEWUlXtZLrJGeogjXIh7EtEU0Z4VdjG/ckOf1n/g5IclI6tSp03+AEA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.2
Release Details
UpdatedMarch 4, 2026, 8:11 a.m.
Changelog

Fixed

  • NC26–32 compatibility: "Add to Immich" file action was not visible on Nextcloud 26–32 due to a registry scoping change in @nextcloud/files v4 (only compatible with NC33+). A separate webpack bundle using @nextcloud/files v3 is now built and loaded automatically for Nextcloud versions below 33. Minimum supported version is now NC27.

Security

  • API key encryption: The Immich API key is now encrypted at rest using Nextcloud's OCP\Security\ICrypto before being written to oc_preferences. On read, the value is transparently decrypted; a plaintext fallback handles keys stored by older versions.
  • Input validation: All controllers now validate and sanitize incoming parameters (album IDs, asset IDs, paths, URLs) and return proper HTTP error codes (400, 500) instead of leaking raw error messages to the client.
  • Error handling: ImmichService catches exceptions internally and surfaces structured error responses, preventing stack traces from reaching the frontend.

Changed

  • Bootstrap: Migrated from boot() + addListener() to register() + registerEventListener() for proper lazy-loading of the file-action event listener (recommended pattern since NC26).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureWTWAAXSRRNWqf0SjHARlHR9/kTe10CE5FvA2fajgWDV3T6FMTDz6tFeVxZv8S1Qfy3jRCfJP3kfJ8Wc3m1xMEW3tS7h74BPptwXnHTh0y42toNgdZh0YGiXRIHW0GFdjixUDsFpCiM/RD5/dlGHOVwtcGaoKHF0T9B3WFm4X2fSNxR/IKwVoKEQGGYioiE2msXYNrvUccXO9ewCFvRFiCrxIEk31zZ9qBCRtANB8Ug7r8l4E17fE59L7c2q4OB77PgKyHuj91QFPgMJE8t6ajyte3NYF+k5XdX6TOnnV1BjDA1TDjc/2AoJWzUgd+12l39TI2a0MqLF4HMJ83DxPUKdQ8qZg+TkVnAXP+SZm2gdflWSKbylg/m8IY7NTCh+YEBvvSBicUxWjpGbvSkfayHRaALs+Beg0cvyC4GwKUA7VAGkoiqxxBGnxbAESlYI0ts3jNSzbsUqKT3LjSm7YUMonip2Ig+vM8G6ymp5y0WizOM64L0OWFeQ19hBVFwtUSjKZJ9navhDIwQB6GwlusaARRSw1B5EIkbNII+wL4zGrDsH4Z262rh8R8xc9k6/oT01aSsLx9OGzbIBBSO5mDDCXhfzlanqge/MWKF6+0hVD67j8DNt1QN8nRZ2NGcAT4spy60fCNgYcJ3yJDZQ0No0i5zOF2R66G6Y7qrTNdqo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.1
Release Details
UpdatedMarch 3, 2026, 8:26 p.m.
Changelog

Fixed

  • Release ZIP now sets correct Unix permissions (755 for directories, 644 for files) so that lib/ is traversable after unzip on Linux without a manual chmod
  • Fixed autoloader not being executed due to a UTF-8 BOM in composer/autoload.php that caused a PHP fatal error (strict_types must be the first statement)
  • Timeline: fast scrollbar jumps no longer leave the view blank — in-flight HTTP requests for buckets that are no longer visible are now cancelled via AbortController and stale entries are purged from the load queue immediately
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureEjPdvqhRuEAFPHA3qFV92sLBVyjVxrY5pJ3A7AGT2g5MHyORmqvb3enOnq6L+DYDj+5a6uI+5ynIiN/gBkpadRce8GwwlRjD/n/ryWBGNAB5acstfFdgxVEaMF/aIGRWxz/F3aaFHsnDJFGrpZv2k8J+7Er2a2IVpz+ae/JWW9JxEYv2C1Wfsle7YTuUrbaPxzPeeY/AshQZXIu+msLgkC77pUEXgXTJNQHbikxySktl75O1Yi/UXf7K88NmEbEwfJptB6l5fU0n+f85+KD+lAb4Q1q4vmEjNBXV/3PTwVeS6gWUcE0pL7bo/ZLj+ThJwrRx+/2EufhsvIEsRuHCIvhF1dsn/l6xeWybJPI5NpJFh6eIb2IG6IpFMu3KcdgL0vj/la8HrYVhcM8qaYRwuNAqzxJPX72FSZ+dEExwwMB+dV7xp/meF08OuoiGmdbrWzVoV7BAW+W4QlOwdyhnNc3P6YzO3chs2fSO82+ljfL1KuOZVWLnzJOtTzqbJH6UuxbzzS5IL0B4x5q4U/kxZk0lNy44XNNtWfaf38Wv4xQlOzn1gIEcQxz3s5k33qGKOKF3t85FO35bzEXQpAfnojb76oya4j9hUTggdQT9x4nYq8kvOSJ96woI5+3uz1teoq7EPGeIyBswEXi9iffv4rqch7IdUt8UgzMQ+8nUQdc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 31

Immich Integration 1.0.9
Release Details
UpdatedMarch 27, 2026, 7:57 a.m.
Changelog

Fixed

  • Map view: OpenStreetMap tiles were blocked because Nextcloud sets Referrer-Policy: no-referrer page-wide, stripping the Referer header OSM requires — added referrerPolicy: no-referrer-when-downgrade directly on the tile layer so the browser sends the origin as referer for tile requests (fixes #26)

Dependencies

  • vue 3.5.30 → 3.5.31
  • vue-router 5.0.3 → 5.0.4
  • @nextcloud/vue 9.5.0 → 9.6.0
  • flatted 3.3.3 → 3.4.2 (security: prototype pollution fix)
  • picomatch 4.0.3 → 4.0.4 (security: ReDoS fix)
  • yaml 2.8.2 → 2.8.3 (security: stack overflow fix)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureUAawulU8GCmTrdoei2Lx4pJ4/SkhJPRhPINwCULIRFQx6D8bKyAHYB8ilmSbuSzR96FB7JXAaN7/nzE/PkkZfn69LLjb7EgsOeL4rbTBRm5cOSoqiscX8NFDJTob5JsttofE+/K14kjuw6CcmGsYgmFFydtO6njAwXSvJeVWCbYyoK+YvjnWRra0BrkNB2ROW7wBTUB0+Ud7Q61N78EcxTepzLORlXnyQbTLsPvgWifTrm6vbOa63QbWD42nZBJpEtNnmvAaYytceCEPn4B+0FYQtFHrWGF3tU8zpYYQcaGGtI5CaG8KHNUZXvOvBxMIsLCMRsP8QCp9xd1F6w0A3ci+jrZWTDO5n2/d5sRyZffpGZUPXNNDDyxmsfzkJ0iQxCwoke1YSnkyVCaK3AB8aimUX8SiqeNlTWhj37AZ9F0blA4+00qz61ix61/sl5qMoIi5NiTvvfxd6dzkqRv3bfPgyrzkarx9ttlEzoaVS3v9Zf2l/QTINcZJN0Ln3rwzlfIHzaoArtOyI72JTmIv1aG2DwQ1c0w76eb7plKtcd68PrBRU2vcz1jGWk2n1qmIu7pbfunE+Lf4jv0wEyumrvwldQW0OXsjxh+1j7zVMZDWS4PV67WKhn92XNB5vQshR/q28kb0QKVGQoMvnuMVNB8I+w2h3qKGwUJuPSX1DzI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.8
Release Details
UpdatedMarch 13, 2026, 12:42 p.m.
Changelog

Fixed

  • Map view: OpenStreetMap tile images were blocked by Nextcloud's Content Security Policy — added a CspListener that extends img-src to allow https://*.tile.openstreetmap.org (fixes #18)
  • Photo hover date tooltip was displayed in German (de-DE) regardless of user language — now uses browser locale
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureYig70GbWdqwyJj7Pgt5H4OMZtLMLrRnnuUG8i4DJZYwNh7M2Vf9uXjh6ImeqEz4Omov9e2QVucDVXGeLd1zN3s7S0FWBnf3vBSpDhrrLjhXrB1bGDEHqA4jeQyLd31Qt8UeB2Qeo0MTxWs61ZmaLmPVwsl/DF2EsmP8C6ZwMT9KBmbDE79CE0KxdMGo9PAXN0QwL2xqzbXWqP4pGAXVPGY8jZxvBoAMZJmYhneh0PX2LfIKps3q2sfreLlnR+iGqHAOuL9pXpt3R6OpNie8XRUL4DlBEoT3SZ6OccbPIiYes1uIrOQ/cT+pGkrqqJlpNWAwxp1wiHAESlXBE9eRUWB2MIm2xrI4WFrsHewBcp78FG9ymZ17lk2IwYg2zqtZQM7lo2iyp7T7wcDzW9y5WyGUNyH/wU3+Z22aThZ7SkCaoVu7w2Iqz5bQYlHAHth+OeDQ4pOpVb1kAEAXX3obcwKbPCIi700eGtd6buAQ61bbB05Db3InTBv+KNjCc2ETIxTetYdad2+ZdNE30lfr3m1KEqzV0Zr0eqaJcaG19H4ROJ46KJxyVSoDUSqUuBlJT/WFhJVc/9ZlunHPzbNLL/A/wnh5ynuiSS+whlEJ8H68CVP8V5w3GDhN0oo9IS7ymdU4RmL/YfhKK0jcZkY9BBFnbwojuXxHvNBBjsOwm9po=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.7
Release Details
UpdatedMarch 10, 2026, 10:05 p.m.
Changelog

Added

  • French (fr), Spanish (es-ES), Dutch (nl) and Portuguese (pt) translations via l10n.dev (closes #19)
  • build-l10n.mjs — automatically generates l10n/*.js from l10n/*.json at build time; adding a new language only requires a single JSON file
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
Signaturekz+Ar4X1UQgW+o1+M6G+lRcYtNsnJvD1aYT3zRd3sE4UG1OhKlLydqlVyyWX+tkdF+o4a8fNJr1BOiNsUXYrFD5M8dF/DRWSUcOJmojAe/ieNR65ocNtHUvkUZ6gugO85A7pr+pQtv+FuS7KeBQAAHMRU7I4dMw4tP2JXm6/D8+2nMU2UvEXbdipGoX1rEV8Ygj3Zlizhv01yHTfIxg6YhPkIAUP2aMnEskKinMogrd3XjPPHWl3/pJwpMGjp7BwvgSDE+Rxhm9JWAWIOtzVXX3c5UAXmY7ofVSYqnOpCRd1/s/G8Hv9tl/QRJucQQySd2eVP3hfsg1TT1NeS/2EC0AW+0BccIzG2vf8nfNj5U/gIIyTC/r5DVXSM9scG+x8mapkhfPlt+wry5AAU4hlBXh18vBuoOYIbPh2Kl0CcJTAmFIfTivt0ApSWNvSlYvlu5+xbAeKWYm4KlDkiddznW0dYlZsZ5SZCxLVKswGvDXcWoUTljaCOmPKeaJdLpQZB2WrLv7/iYSfo7hRD3dvSsQ8O2hxSKX6hgl2zYaLv80IwNt7E5AvM8zx3TiJwqpob+BDkomEqem5N5sEi5cAHjOInDTYW2kTnQ0wA0NbeGIL7Jlq2VhfxroDRJKUVIA6/omEIdKBnF6wnwvMljOI/K5Acsf8BVbJxHDKP1IwVkg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.6
Release Details
UpdatedMarch 10, 2026, 8:21 a.m.
Changelog

Fixed

  • When the Immich server URL points to a private/local IP and Nextcloud's SSRF protection blocks the request, the settings page now shows the exact cause and the occ command to resolve it, instead of a generic "Connection failed" message (refs #12)
  • Connection test errors now show the actual error detail from the server instead of a generic message
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignaturegsDGIK+QGTnAxtT/VIIoykUJEruz0c/IoeUvEvjbStocgcnGEw+25WRmA8RyAE11Dc8wW0dyz4LgbAivTFL2GU9IFND4PO6ifFNIhDt4DLFPHS4jdgVaJAaIifppyBtkkrDFmnw240nfEGsBGDKEoJ13RNpT5bHbHcCq3856bme9QdzU3TBIvRotFobW4yAA2tisxjBpE+/sgqL5Tyjja+YXAYv6ut97OYaJe/TwYV1TrC8QGbN97+CSi8I5S1ynCiO1ZZ7Oa2OgXTj4WJN+UvCoco3ril6oGsi/FdpLhP94LlcZ6IenU92w2WOyqT4FDG6FhDx09cLcvD/xCfkD6mpJtLlFW2USqutX6okR11DL2wg+rqcXD/WFV/yLlJO+5oWbXivcSnjh9ilIPL6S1iicx2jlLhY7JTXr0MxuzH1GfplJ0m+Uy60rLwgTceo6iYo0UWIz3rcMprTxm5sBOatlqSM4E9ueBgd0T5O9iTEgKeLiUUeIScLEPTJuswfEJBnCD/hNDW2uwFrkr3MsIBl02aXDsyOppAESTKq8otLXAARI4pwHnAPCv3AsJ5zdwgMUUZPAErOpGH4rwnFKDxkElRjr+grODjeVpo5N4TMQlxG/XPmF+VwqiIAg3Tye5+C5GLwHzqYrk0pJeBdxqggBRdtjJK/OSIXOEZfOjXw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.5
Release Details
UpdatedMarch 10, 2026, 8:05 a.m.
Changelog

Fixed

  • All hardcoded German UI strings in LightboxView.vue and TimelineView.vue replaced with t() i18n calls — tooltips and labels now follow the Nextcloud user language setting instead of always displaying in German (fixes #15)
  • Date formatting in lightbox now uses browser locale instead of hardcoded de-DE
  • Added missing German (de) translations for all newly i18n-wrapped strings
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureQMNrnON0nts1bLhJhWiIEsXrtqZ2Ll6rZUqrzcAtmErxieGuPmO7W2a+Hg6/VGDlIbN/FJLr6LbjzIu9Dn7IyRa63fD5WqkqYSCP6z+OX336rUpHBWB2uoqx0RHzruYgCfW5eUZ06tkpD9qmKqvIJmCZsO4JwD9El0zOuGE7K6PzVxKKx6m8TAq+tvE5vAIoPFD3zTaQod3ZrUlln5hSkkArNXGMrdisRkfevWOzfHeR+uvMZiSFtDvGdzi3I6Z++kpvoG9lonyqXSuMBVlSsAc2rGQRZbiO9zXI6K3wAZzgp71aOH9fHabr8xM0/Q3aTRQLVTG8DwwwkP7HUgpXbzWBP7ZNeoJGfcGGGKJKd+IhdDVTjeRCd9kG0TH/QoUM3UdZsl+1mzzVAo1XXcNBdpWBa5tNGp4isMue0F3N64MVDA71kSHSAWLRlcs2rtTHRriJzqF8t6HQOiM/OPFzNqobLoRtugIc5INWpbkDyVdv84MfVHBqQ0fL/t6VvmU2NmOa8c6OJT2aETRocmJeFO8qf54ZORWVr6Yf6mAzbJ0OxTDX+zx7390zzEx3SBwwNZwl4IGsV/dFy0IvlWtBrzDjyArxzqyyUb3pk93va+rJZrxC5dIGIub4tx6AIc2g1DsXjNek+sna2Hr3kVgXjut+vvySvgym6rlGR2dhvB8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.4
Release Details
UpdatedMarch 9, 2026, 4:48 p.m.
Changelog

Fixed

  • Missing use OCP\AppFramework\Http\Attribute\NoAdminRequired; import in ConfigController — the attribute was present but PHP silently ignored it without the import, causing Nextcloud to treat both config endpoints as admin-only and returning 403 Forbidden for regular users
  • Added #[NoAdminRequired] to getConfig() so regular users can also read their own saved settings

Documentation

  • Added required Immich API key permissions table to README

Dependencies

  • vue 3.5.29 → 3.5.30 (bug fixes: reactivity, SSR, custom elements)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureJiks0DqUf1nht/Mfl/00nESbsENimbGrG2JqPc5N8YvSD5arEAmzwrAjcsLiDbdNQT4FG2B84MHbBNDTJjuhUupktOl71mM0BjLYYnZu/SpYfUsoj0BKMi4qeEjCL/wLFvRCMkazH+CVO0aML2p7kz6D6SGeEO7pLnpTSOj20cBb73c6T20F4q0W32a6Ld7Bz0EBNva8sBeujWj9WX8i1NZNfMgv/CxQsUXRjuVszLVqhMi90+osdVTHPrXTFIfbV2AyvHSqpHzZecQsYoShZC4dFJoeljfSWil1yPPASgB99lajJwVesoHRdtviRU19B+COFMMfcurIxW4kWxQbuDYA8Fs42+EqB59yDiwChez/D1Hp0AQcGf2KeRubN20UAs7MZ2dxKpAVyB/2wUvhViip+HLWdcmGJSm0v2rWqT29rDSVp9O92LReg7DXP1e/HBmOtocRhmh0AhcIl66HO+K/sGzUw3BwMcfjjEcAAmpflemoNMVYoE9vBKLWfQlV/Xey8S7M47naKh/ofquxWKNGzSjjazoXzPvCfNrj2/jwL0IenmF70I8zf+PVimq1Rb6XDdeYwOC3AoWGJTVNFeRvDY3tQArz3E+PvFLBv3YPpvYmL6KWb8AEYMYDP4XVTQPYMRPobGn8IuZPe8JWl1OteWEu1W0JfxXiqjPFEeM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.3
Release Details
UpdatedMarch 5, 2026, 9:33 p.m.
Changelog

Fixed

  • File upload to Immich now streams the file content instead of loading it fully into PHP memory — prevents OOM crashes for large files
  • userId null-guard added in upload and save-to-Nextcloud flows to return 401 instead of crashing
  • setConfig() now correctly ignores validate=false strings (PHP truthy-check bug)
  • #[NoAdminRequired] added to setConfig() so regular users can save their own settings

Refactored

  • UUID validation regex extracted to ImmichService::UUID_PATTERN — eliminates 18 duplicated inline patterns across all controllers
  • getUniqueFileName() loop replaced with bounded for-loop and uniqid() fallback to prevent infinite loops
  • getPersonAssets() capped at 24 monthly buckets (~2 years) to prevent unbounded sequential HTTP requests
  • uploadAsset() response null-guard: invalid JSON from Immich no longer returns null to the frontend
  • API key decrypt failures now logged as warning with hint to re-save the key

Security

  • dompurify updated to 3.3.2 — fixes XSS bypass and prototype pollution
  • immutable updated to 5.1.5 — fixes prototype pollution in mergeDeep/toJS
  • minimatch updated to 3.1.5 — fixes ReDoS vulnerability

Dependencies

  • pinia 2 → 3
  • vue → 3.5.29, vue-router 4 → 5
  • eslint-webpack-plugin 4 → 5
  • actions/checkout v4 → v6, actions/setup-node v4 → v6
  • terser-webpack-plugin → 5.3.17, fast-xml-parser → 4.5.4
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
Signaturen3I15745dCxPzAtI5CG3DIrSLLzbq7uTF+xxBnuFjWjKblusSD6EZrN/YEgUVTTfgSrI2omiwaWFqxtsyCvIVUWwl3BEn1CebthBHlbn1EGnRrTBGan+qQYH4OE6yoepvFRB9QYdBRFRBe80wkphE7yJyhmUrzlQNlIABRo1Jss21hBzkMgJaE7533WPhciqLQVH/Lh/5+uAXE4tD2IcH4eR3kJzYM6l7L2hrgQ9T5BbVjtG+wa+x4khlSmlMCLDRSriLgM7wdJUx35ekh8w3GpQ7r+uZNlEF4aeJS3qjBYdwHoeA5HdgvD5c56B8L3xJeQLckiA88KLfik4rpgd9Z/sck+Wik/fD5ETZ1IDViFJ20bDonxMlBxReWxPDC9uOhUOO4DBwMzG7GO2Zhn2QLhyaYqU80DMZMk3kMiuHze3DJcijxlByjyz36g86cp2+cQjzC+uG5drKI7dBt8Pl/ltNZvC8ru4AyDWNgFE5fPYvnYKErXKDizs8cMlvpfo/nvCz8iFSpncosEiRhXkwEL/sJAY/79QfScAuGzQDZ8hprEXWinSyJBqnqsYvxq+cFmUyM+KGrjstFKZtMPrk/PV510uBj0CzV1yeEokBm+nWipJ4rc1dEWUlXtZLrJGeogjXIh7EtEU0Z4VdjG/ckOf1n/g5IclI6tSp03+AEA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.2
Release Details
UpdatedMarch 4, 2026, 8:11 a.m.
Changelog

Fixed

  • NC26–32 compatibility: "Add to Immich" file action was not visible on Nextcloud 26–32 due to a registry scoping change in @nextcloud/files v4 (only compatible with NC33+). A separate webpack bundle using @nextcloud/files v3 is now built and loaded automatically for Nextcloud versions below 33. Minimum supported version is now NC27.

Security

  • API key encryption: The Immich API key is now encrypted at rest using Nextcloud's OCP\Security\ICrypto before being written to oc_preferences. On read, the value is transparently decrypted; a plaintext fallback handles keys stored by older versions.
  • Input validation: All controllers now validate and sanitize incoming parameters (album IDs, asset IDs, paths, URLs) and return proper HTTP error codes (400, 500) instead of leaking raw error messages to the client.
  • Error handling: ImmichService catches exceptions internally and surfaces structured error responses, preventing stack traces from reaching the frontend.

Changed

  • Bootstrap: Migrated from boot() + addListener() to register() + registerEventListener() for proper lazy-loading of the file-action event listener (recommended pattern since NC26).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureWTWAAXSRRNWqf0SjHARlHR9/kTe10CE5FvA2fajgWDV3T6FMTDz6tFeVxZv8S1Qfy3jRCfJP3kfJ8Wc3m1xMEW3tS7h74BPptwXnHTh0y42toNgdZh0YGiXRIHW0GFdjixUDsFpCiM/RD5/dlGHOVwtcGaoKHF0T9B3WFm4X2fSNxR/IKwVoKEQGGYioiE2msXYNrvUccXO9ewCFvRFiCrxIEk31zZ9qBCRtANB8Ug7r8l4E17fE59L7c2q4OB77PgKyHuj91QFPgMJE8t6ajyte3NYF+k5XdX6TOnnV1BjDA1TDjc/2AoJWzUgd+12l39TI2a0MqLF4HMJ83DxPUKdQ8qZg+TkVnAXP+SZm2gdflWSKbylg/m8IY7NTCh+YEBvvSBicUxWjpGbvSkfayHRaALs+Beg0cvyC4GwKUA7VAGkoiqxxBGnxbAESlYI0ts3jNSzbsUqKT3LjSm7YUMonip2Ig+vM8G6ymp5y0WizOM64L0OWFeQ19hBVFwtUSjKZJ9navhDIwQB6GwlusaARRSw1B5EIkbNII+wL4zGrDsH4Z262rh8R8xc9k6/oT01aSsLx9OGzbIBBSO5mDDCXhfzlanqge/MWKF6+0hVD67j8DNt1QN8nRZ2NGcAT4spy60fCNgYcJ3yJDZQ0No0i5zOF2R66G6Y7qrTNdqo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.1
Release Details
UpdatedMarch 3, 2026, 8:26 p.m.
Changelog

Fixed

  • Release ZIP now sets correct Unix permissions (755 for directories, 644 for files) so that lib/ is traversable after unzip on Linux without a manual chmod
  • Fixed autoloader not being executed due to a UTF-8 BOM in composer/autoload.php that caused a PHP fatal error (strict_types must be the first statement)
  • Timeline: fast scrollbar jumps no longer leave the view blank — in-flight HTTP requests for buckets that are no longer visible are now cancelled via AbortController and stale entries are purged from the load queue immediately
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureEjPdvqhRuEAFPHA3qFV92sLBVyjVxrY5pJ3A7AGT2g5MHyORmqvb3enOnq6L+DYDj+5a6uI+5ynIiN/gBkpadRce8GwwlRjD/n/ryWBGNAB5acstfFdgxVEaMF/aIGRWxz/F3aaFHsnDJFGrpZv2k8J+7Er2a2IVpz+ae/JWW9JxEYv2C1Wfsle7YTuUrbaPxzPeeY/AshQZXIu+msLgkC77pUEXgXTJNQHbikxySktl75O1Yi/UXf7K88NmEbEwfJptB6l5fU0n+f85+KD+lAb4Q1q4vmEjNBXV/3PTwVeS6gWUcE0pL7bo/ZLj+ThJwrRx+/2EufhsvIEsRuHCIvhF1dsn/l6xeWybJPI5NpJFh6eIb2IG6IpFMu3KcdgL0vj/la8HrYVhcM8qaYRwuNAqzxJPX72FSZ+dEExwwMB+dV7xp/meF08OuoiGmdbrWzVoV7BAW+W4QlOwdyhnNc3P6YzO3chs2fSO82+ljfL1KuOZVWLnzJOtTzqbJH6UuxbzzS5IL0B4x5q4U/kxZk0lNy44XNNtWfaf38Wv4xQlOzn1gIEcQxz3s5k33qGKOKF3t85FO35bzEXQpAfnojb76oya4j9hUTggdQT9x4nYq8kvOSJ96woI5+3uz1teoq7EPGeIyBswEXi9iffv4rqch7IdUt8UgzMQ+8nUQdc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 30

Immich Integration 1.0.9
Release Details
UpdatedMarch 27, 2026, 7:57 a.m.
Changelog

Fixed

  • Map view: OpenStreetMap tiles were blocked because Nextcloud sets Referrer-Policy: no-referrer page-wide, stripping the Referer header OSM requires — added referrerPolicy: no-referrer-when-downgrade directly on the tile layer so the browser sends the origin as referer for tile requests (fixes #26)

Dependencies

  • vue 3.5.30 → 3.5.31
  • vue-router 5.0.3 → 5.0.4
  • @nextcloud/vue 9.5.0 → 9.6.0
  • flatted 3.3.3 → 3.4.2 (security: prototype pollution fix)
  • picomatch 4.0.3 → 4.0.4 (security: ReDoS fix)
  • yaml 2.8.2 → 2.8.3 (security: stack overflow fix)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureUAawulU8GCmTrdoei2Lx4pJ4/SkhJPRhPINwCULIRFQx6D8bKyAHYB8ilmSbuSzR96FB7JXAaN7/nzE/PkkZfn69LLjb7EgsOeL4rbTBRm5cOSoqiscX8NFDJTob5JsttofE+/K14kjuw6CcmGsYgmFFydtO6njAwXSvJeVWCbYyoK+YvjnWRra0BrkNB2ROW7wBTUB0+Ud7Q61N78EcxTepzLORlXnyQbTLsPvgWifTrm6vbOa63QbWD42nZBJpEtNnmvAaYytceCEPn4B+0FYQtFHrWGF3tU8zpYYQcaGGtI5CaG8KHNUZXvOvBxMIsLCMRsP8QCp9xd1F6w0A3ci+jrZWTDO5n2/d5sRyZffpGZUPXNNDDyxmsfzkJ0iQxCwoke1YSnkyVCaK3AB8aimUX8SiqeNlTWhj37AZ9F0blA4+00qz61ix61/sl5qMoIi5NiTvvfxd6dzkqRv3bfPgyrzkarx9ttlEzoaVS3v9Zf2l/QTINcZJN0Ln3rwzlfIHzaoArtOyI72JTmIv1aG2DwQ1c0w76eb7plKtcd68PrBRU2vcz1jGWk2n1qmIu7pbfunE+Lf4jv0wEyumrvwldQW0OXsjxh+1j7zVMZDWS4PV67WKhn92XNB5vQshR/q28kb0QKVGQoMvnuMVNB8I+w2h3qKGwUJuPSX1DzI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.8
Release Details
UpdatedMarch 13, 2026, 12:42 p.m.
Changelog

Fixed

  • Map view: OpenStreetMap tile images were blocked by Nextcloud's Content Security Policy — added a CspListener that extends img-src to allow https://*.tile.openstreetmap.org (fixes #18)
  • Photo hover date tooltip was displayed in German (de-DE) regardless of user language — now uses browser locale
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureYig70GbWdqwyJj7Pgt5H4OMZtLMLrRnnuUG8i4DJZYwNh7M2Vf9uXjh6ImeqEz4Omov9e2QVucDVXGeLd1zN3s7S0FWBnf3vBSpDhrrLjhXrB1bGDEHqA4jeQyLd31Qt8UeB2Qeo0MTxWs61ZmaLmPVwsl/DF2EsmP8C6ZwMT9KBmbDE79CE0KxdMGo9PAXN0QwL2xqzbXWqP4pGAXVPGY8jZxvBoAMZJmYhneh0PX2LfIKps3q2sfreLlnR+iGqHAOuL9pXpt3R6OpNie8XRUL4DlBEoT3SZ6OccbPIiYes1uIrOQ/cT+pGkrqqJlpNWAwxp1wiHAESlXBE9eRUWB2MIm2xrI4WFrsHewBcp78FG9ymZ17lk2IwYg2zqtZQM7lo2iyp7T7wcDzW9y5WyGUNyH/wU3+Z22aThZ7SkCaoVu7w2Iqz5bQYlHAHth+OeDQ4pOpVb1kAEAXX3obcwKbPCIi700eGtd6buAQ61bbB05Db3InTBv+KNjCc2ETIxTetYdad2+ZdNE30lfr3m1KEqzV0Zr0eqaJcaG19H4ROJ46KJxyVSoDUSqUuBlJT/WFhJVc/9ZlunHPzbNLL/A/wnh5ynuiSS+whlEJ8H68CVP8V5w3GDhN0oo9IS7ymdU4RmL/YfhKK0jcZkY9BBFnbwojuXxHvNBBjsOwm9po=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.7
Release Details
UpdatedMarch 10, 2026, 10:05 p.m.
Changelog

Added

  • French (fr), Spanish (es-ES), Dutch (nl) and Portuguese (pt) translations via l10n.dev (closes #19)
  • build-l10n.mjs — automatically generates l10n/*.js from l10n/*.json at build time; adding a new language only requires a single JSON file
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
Signaturekz+Ar4X1UQgW+o1+M6G+lRcYtNsnJvD1aYT3zRd3sE4UG1OhKlLydqlVyyWX+tkdF+o4a8fNJr1BOiNsUXYrFD5M8dF/DRWSUcOJmojAe/ieNR65ocNtHUvkUZ6gugO85A7pr+pQtv+FuS7KeBQAAHMRU7I4dMw4tP2JXm6/D8+2nMU2UvEXbdipGoX1rEV8Ygj3Zlizhv01yHTfIxg6YhPkIAUP2aMnEskKinMogrd3XjPPHWl3/pJwpMGjp7BwvgSDE+Rxhm9JWAWIOtzVXX3c5UAXmY7ofVSYqnOpCRd1/s/G8Hv9tl/QRJucQQySd2eVP3hfsg1TT1NeS/2EC0AW+0BccIzG2vf8nfNj5U/gIIyTC/r5DVXSM9scG+x8mapkhfPlt+wry5AAU4hlBXh18vBuoOYIbPh2Kl0CcJTAmFIfTivt0ApSWNvSlYvlu5+xbAeKWYm4KlDkiddznW0dYlZsZ5SZCxLVKswGvDXcWoUTljaCOmPKeaJdLpQZB2WrLv7/iYSfo7hRD3dvSsQ8O2hxSKX6hgl2zYaLv80IwNt7E5AvM8zx3TiJwqpob+BDkomEqem5N5sEi5cAHjOInDTYW2kTnQ0wA0NbeGIL7Jlq2VhfxroDRJKUVIA6/omEIdKBnF6wnwvMljOI/K5Acsf8BVbJxHDKP1IwVkg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.6
Release Details
UpdatedMarch 10, 2026, 8:21 a.m.
Changelog

Fixed

  • When the Immich server URL points to a private/local IP and Nextcloud's SSRF protection blocks the request, the settings page now shows the exact cause and the occ command to resolve it, instead of a generic "Connection failed" message (refs #12)
  • Connection test errors now show the actual error detail from the server instead of a generic message
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignaturegsDGIK+QGTnAxtT/VIIoykUJEruz0c/IoeUvEvjbStocgcnGEw+25WRmA8RyAE11Dc8wW0dyz4LgbAivTFL2GU9IFND4PO6ifFNIhDt4DLFPHS4jdgVaJAaIifppyBtkkrDFmnw240nfEGsBGDKEoJ13RNpT5bHbHcCq3856bme9QdzU3TBIvRotFobW4yAA2tisxjBpE+/sgqL5Tyjja+YXAYv6ut97OYaJe/TwYV1TrC8QGbN97+CSi8I5S1ynCiO1ZZ7Oa2OgXTj4WJN+UvCoco3ril6oGsi/FdpLhP94LlcZ6IenU92w2WOyqT4FDG6FhDx09cLcvD/xCfkD6mpJtLlFW2USqutX6okR11DL2wg+rqcXD/WFV/yLlJO+5oWbXivcSnjh9ilIPL6S1iicx2jlLhY7JTXr0MxuzH1GfplJ0m+Uy60rLwgTceo6iYo0UWIz3rcMprTxm5sBOatlqSM4E9ueBgd0T5O9iTEgKeLiUUeIScLEPTJuswfEJBnCD/hNDW2uwFrkr3MsIBl02aXDsyOppAESTKq8otLXAARI4pwHnAPCv3AsJ5zdwgMUUZPAErOpGH4rwnFKDxkElRjr+grODjeVpo5N4TMQlxG/XPmF+VwqiIAg3Tye5+C5GLwHzqYrk0pJeBdxqggBRdtjJK/OSIXOEZfOjXw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.5
Release Details
UpdatedMarch 10, 2026, 8:05 a.m.
Changelog

Fixed

  • All hardcoded German UI strings in LightboxView.vue and TimelineView.vue replaced with t() i18n calls — tooltips and labels now follow the Nextcloud user language setting instead of always displaying in German (fixes #15)
  • Date formatting in lightbox now uses browser locale instead of hardcoded de-DE
  • Added missing German (de) translations for all newly i18n-wrapped strings
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureQMNrnON0nts1bLhJhWiIEsXrtqZ2Ll6rZUqrzcAtmErxieGuPmO7W2a+Hg6/VGDlIbN/FJLr6LbjzIu9Dn7IyRa63fD5WqkqYSCP6z+OX336rUpHBWB2uoqx0RHzruYgCfW5eUZ06tkpD9qmKqvIJmCZsO4JwD9El0zOuGE7K6PzVxKKx6m8TAq+tvE5vAIoPFD3zTaQod3ZrUlln5hSkkArNXGMrdisRkfevWOzfHeR+uvMZiSFtDvGdzi3I6Z++kpvoG9lonyqXSuMBVlSsAc2rGQRZbiO9zXI6K3wAZzgp71aOH9fHabr8xM0/Q3aTRQLVTG8DwwwkP7HUgpXbzWBP7ZNeoJGfcGGGKJKd+IhdDVTjeRCd9kG0TH/QoUM3UdZsl+1mzzVAo1XXcNBdpWBa5tNGp4isMue0F3N64MVDA71kSHSAWLRlcs2rtTHRriJzqF8t6HQOiM/OPFzNqobLoRtugIc5INWpbkDyVdv84MfVHBqQ0fL/t6VvmU2NmOa8c6OJT2aETRocmJeFO8qf54ZORWVr6Yf6mAzbJ0OxTDX+zx7390zzEx3SBwwNZwl4IGsV/dFy0IvlWtBrzDjyArxzqyyUb3pk93va+rJZrxC5dIGIub4tx6AIc2g1DsXjNek+sna2Hr3kVgXjut+vvySvgym6rlGR2dhvB8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.4
Release Details
UpdatedMarch 9, 2026, 4:48 p.m.
Changelog

Fixed

  • Missing use OCP\AppFramework\Http\Attribute\NoAdminRequired; import in ConfigController — the attribute was present but PHP silently ignored it without the import, causing Nextcloud to treat both config endpoints as admin-only and returning 403 Forbidden for regular users
  • Added #[NoAdminRequired] to getConfig() so regular users can also read their own saved settings

Documentation

  • Added required Immich API key permissions table to README

Dependencies

  • vue 3.5.29 → 3.5.30 (bug fixes: reactivity, SSR, custom elements)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureJiks0DqUf1nht/Mfl/00nESbsENimbGrG2JqPc5N8YvSD5arEAmzwrAjcsLiDbdNQT4FG2B84MHbBNDTJjuhUupktOl71mM0BjLYYnZu/SpYfUsoj0BKMi4qeEjCL/wLFvRCMkazH+CVO0aML2p7kz6D6SGeEO7pLnpTSOj20cBb73c6T20F4q0W32a6Ld7Bz0EBNva8sBeujWj9WX8i1NZNfMgv/CxQsUXRjuVszLVqhMi90+osdVTHPrXTFIfbV2AyvHSqpHzZecQsYoShZC4dFJoeljfSWil1yPPASgB99lajJwVesoHRdtviRU19B+COFMMfcurIxW4kWxQbuDYA8Fs42+EqB59yDiwChez/D1Hp0AQcGf2KeRubN20UAs7MZ2dxKpAVyB/2wUvhViip+HLWdcmGJSm0v2rWqT29rDSVp9O92LReg7DXP1e/HBmOtocRhmh0AhcIl66HO+K/sGzUw3BwMcfjjEcAAmpflemoNMVYoE9vBKLWfQlV/Xey8S7M47naKh/ofquxWKNGzSjjazoXzPvCfNrj2/jwL0IenmF70I8zf+PVimq1Rb6XDdeYwOC3AoWGJTVNFeRvDY3tQArz3E+PvFLBv3YPpvYmL6KWb8AEYMYDP4XVTQPYMRPobGn8IuZPe8JWl1OteWEu1W0JfxXiqjPFEeM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.3
Release Details
UpdatedMarch 5, 2026, 9:33 p.m.
Changelog

Fixed

  • File upload to Immich now streams the file content instead of loading it fully into PHP memory — prevents OOM crashes for large files
  • userId null-guard added in upload and save-to-Nextcloud flows to return 401 instead of crashing
  • setConfig() now correctly ignores validate=false strings (PHP truthy-check bug)
  • #[NoAdminRequired] added to setConfig() so regular users can save their own settings

Refactored

  • UUID validation regex extracted to ImmichService::UUID_PATTERN — eliminates 18 duplicated inline patterns across all controllers
  • getUniqueFileName() loop replaced with bounded for-loop and uniqid() fallback to prevent infinite loops
  • getPersonAssets() capped at 24 monthly buckets (~2 years) to prevent unbounded sequential HTTP requests
  • uploadAsset() response null-guard: invalid JSON from Immich no longer returns null to the frontend
  • API key decrypt failures now logged as warning with hint to re-save the key

Security

  • dompurify updated to 3.3.2 — fixes XSS bypass and prototype pollution
  • immutable updated to 5.1.5 — fixes prototype pollution in mergeDeep/toJS
  • minimatch updated to 3.1.5 — fixes ReDoS vulnerability

Dependencies

  • pinia 2 → 3
  • vue → 3.5.29, vue-router 4 → 5
  • eslint-webpack-plugin 4 → 5
  • actions/checkout v4 → v6, actions/setup-node v4 → v6
  • terser-webpack-plugin → 5.3.17, fast-xml-parser → 4.5.4
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
Signaturen3I15745dCxPzAtI5CG3DIrSLLzbq7uTF+xxBnuFjWjKblusSD6EZrN/YEgUVTTfgSrI2omiwaWFqxtsyCvIVUWwl3BEn1CebthBHlbn1EGnRrTBGan+qQYH4OE6yoepvFRB9QYdBRFRBe80wkphE7yJyhmUrzlQNlIABRo1Jss21hBzkMgJaE7533WPhciqLQVH/Lh/5+uAXE4tD2IcH4eR3kJzYM6l7L2hrgQ9T5BbVjtG+wa+x4khlSmlMCLDRSriLgM7wdJUx35ekh8w3GpQ7r+uZNlEF4aeJS3qjBYdwHoeA5HdgvD5c56B8L3xJeQLckiA88KLfik4rpgd9Z/sck+Wik/fD5ETZ1IDViFJ20bDonxMlBxReWxPDC9uOhUOO4DBwMzG7GO2Zhn2QLhyaYqU80DMZMk3kMiuHze3DJcijxlByjyz36g86cp2+cQjzC+uG5drKI7dBt8Pl/ltNZvC8ru4AyDWNgFE5fPYvnYKErXKDizs8cMlvpfo/nvCz8iFSpncosEiRhXkwEL/sJAY/79QfScAuGzQDZ8hprEXWinSyJBqnqsYvxq+cFmUyM+KGrjstFKZtMPrk/PV510uBj0CzV1yeEokBm+nWipJ4rc1dEWUlXtZLrJGeogjXIh7EtEU0Z4VdjG/ckOf1n/g5IclI6tSp03+AEA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.2
Release Details
UpdatedMarch 4, 2026, 8:11 a.m.
Changelog

Fixed

  • NC26–32 compatibility: "Add to Immich" file action was not visible on Nextcloud 26–32 due to a registry scoping change in @nextcloud/files v4 (only compatible with NC33+). A separate webpack bundle using @nextcloud/files v3 is now built and loaded automatically for Nextcloud versions below 33. Minimum supported version is now NC27.

Security

  • API key encryption: The Immich API key is now encrypted at rest using Nextcloud's OCP\Security\ICrypto before being written to oc_preferences. On read, the value is transparently decrypted; a plaintext fallback handles keys stored by older versions.
  • Input validation: All controllers now validate and sanitize incoming parameters (album IDs, asset IDs, paths, URLs) and return proper HTTP error codes (400, 500) instead of leaking raw error messages to the client.
  • Error handling: ImmichService catches exceptions internally and surfaces structured error responses, preventing stack traces from reaching the frontend.

Changed

  • Bootstrap: Migrated from boot() + addListener() to register() + registerEventListener() for proper lazy-loading of the file-action event listener (recommended pattern since NC26).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureWTWAAXSRRNWqf0SjHARlHR9/kTe10CE5FvA2fajgWDV3T6FMTDz6tFeVxZv8S1Qfy3jRCfJP3kfJ8Wc3m1xMEW3tS7h74BPptwXnHTh0y42toNgdZh0YGiXRIHW0GFdjixUDsFpCiM/RD5/dlGHOVwtcGaoKHF0T9B3WFm4X2fSNxR/IKwVoKEQGGYioiE2msXYNrvUccXO9ewCFvRFiCrxIEk31zZ9qBCRtANB8Ug7r8l4E17fE59L7c2q4OB77PgKyHuj91QFPgMJE8t6ajyte3NYF+k5XdX6TOnnV1BjDA1TDjc/2AoJWzUgd+12l39TI2a0MqLF4HMJ83DxPUKdQ8qZg+TkVnAXP+SZm2gdflWSKbylg/m8IY7NTCh+YEBvvSBicUxWjpGbvSkfayHRaALs+Beg0cvyC4GwKUA7VAGkoiqxxBGnxbAESlYI0ts3jNSzbsUqKT3LjSm7YUMonip2Ig+vM8G6ymp5y0WizOM64L0OWFeQ19hBVFwtUSjKZJ9navhDIwQB6GwlusaARRSw1B5EIkbNII+wL4zGrDsH4Z262rh8R8xc9k6/oT01aSsLx9OGzbIBBSO5mDDCXhfzlanqge/MWKF6+0hVD67j8DNt1QN8nRZ2NGcAT4spy60fCNgYcJ3yJDZQ0No0i5zOF2R66G6Y7qrTNdqo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.1
Release Details
UpdatedMarch 3, 2026, 8:26 p.m.
Changelog

Fixed

  • Release ZIP now sets correct Unix permissions (755 for directories, 644 for files) so that lib/ is traversable after unzip on Linux without a manual chmod
  • Fixed autoloader not being executed due to a UTF-8 BOM in composer/autoload.php that caused a PHP fatal error (strict_types must be the first statement)
  • Timeline: fast scrollbar jumps no longer leave the view blank — in-flight HTTP requests for buckets that are no longer visible are now cancelled via AbortController and stale entries are purged from the load queue immediately
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureEjPdvqhRuEAFPHA3qFV92sLBVyjVxrY5pJ3A7AGT2g5MHyORmqvb3enOnq6L+DYDj+5a6uI+5ynIiN/gBkpadRce8GwwlRjD/n/ryWBGNAB5acstfFdgxVEaMF/aIGRWxz/F3aaFHsnDJFGrpZv2k8J+7Er2a2IVpz+ae/JWW9JxEYv2C1Wfsle7YTuUrbaPxzPeeY/AshQZXIu+msLgkC77pUEXgXTJNQHbikxySktl75O1Yi/UXf7K88NmEbEwfJptB6l5fU0n+f85+KD+lAb4Q1q4vmEjNBXV/3PTwVeS6gWUcE0pL7bo/ZLj+ThJwrRx+/2EufhsvIEsRuHCIvhF1dsn/l6xeWybJPI5NpJFh6eIb2IG6IpFMu3KcdgL0vj/la8HrYVhcM8qaYRwuNAqzxJPX72FSZ+dEExwwMB+dV7xp/meF08OuoiGmdbrWzVoV7BAW+W4QlOwdyhnNc3P6YzO3chs2fSO82+ljfL1KuOZVWLnzJOtTzqbJH6UuxbzzS5IL0B4x5q4U/kxZk0lNy44XNNtWfaf38Wv4xQlOzn1gIEcQxz3s5k33qGKOKF3t85FO35bzEXQpAfnojb76oya4j9hUTggdQT9x4nYq8kvOSJ96woI5+3uz1teoq7EPGeIyBswEXi9iffv4rqch7IdUt8UgzMQ+8nUQdc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 29

Immich Integration 1.0.9
Release Details
UpdatedMarch 27, 2026, 7:57 a.m.
Changelog

Fixed

  • Map view: OpenStreetMap tiles were blocked because Nextcloud sets Referrer-Policy: no-referrer page-wide, stripping the Referer header OSM requires — added referrerPolicy: no-referrer-when-downgrade directly on the tile layer so the browser sends the origin as referer for tile requests (fixes #26)

Dependencies

  • vue 3.5.30 → 3.5.31
  • vue-router 5.0.3 → 5.0.4
  • @nextcloud/vue 9.5.0 → 9.6.0
  • flatted 3.3.3 → 3.4.2 (security: prototype pollution fix)
  • picomatch 4.0.3 → 4.0.4 (security: ReDoS fix)
  • yaml 2.8.2 → 2.8.3 (security: stack overflow fix)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureUAawulU8GCmTrdoei2Lx4pJ4/SkhJPRhPINwCULIRFQx6D8bKyAHYB8ilmSbuSzR96FB7JXAaN7/nzE/PkkZfn69LLjb7EgsOeL4rbTBRm5cOSoqiscX8NFDJTob5JsttofE+/K14kjuw6CcmGsYgmFFydtO6njAwXSvJeVWCbYyoK+YvjnWRra0BrkNB2ROW7wBTUB0+Ud7Q61N78EcxTepzLORlXnyQbTLsPvgWifTrm6vbOa63QbWD42nZBJpEtNnmvAaYytceCEPn4B+0FYQtFHrWGF3tU8zpYYQcaGGtI5CaG8KHNUZXvOvBxMIsLCMRsP8QCp9xd1F6w0A3ci+jrZWTDO5n2/d5sRyZffpGZUPXNNDDyxmsfzkJ0iQxCwoke1YSnkyVCaK3AB8aimUX8SiqeNlTWhj37AZ9F0blA4+00qz61ix61/sl5qMoIi5NiTvvfxd6dzkqRv3bfPgyrzkarx9ttlEzoaVS3v9Zf2l/QTINcZJN0Ln3rwzlfIHzaoArtOyI72JTmIv1aG2DwQ1c0w76eb7plKtcd68PrBRU2vcz1jGWk2n1qmIu7pbfunE+Lf4jv0wEyumrvwldQW0OXsjxh+1j7zVMZDWS4PV67WKhn92XNB5vQshR/q28kb0QKVGQoMvnuMVNB8I+w2h3qKGwUJuPSX1DzI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.8
Release Details
UpdatedMarch 13, 2026, 12:42 p.m.
Changelog

Fixed

  • Map view: OpenStreetMap tile images were blocked by Nextcloud's Content Security Policy — added a CspListener that extends img-src to allow https://*.tile.openstreetmap.org (fixes #18)
  • Photo hover date tooltip was displayed in German (de-DE) regardless of user language — now uses browser locale
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureYig70GbWdqwyJj7Pgt5H4OMZtLMLrRnnuUG8i4DJZYwNh7M2Vf9uXjh6ImeqEz4Omov9e2QVucDVXGeLd1zN3s7S0FWBnf3vBSpDhrrLjhXrB1bGDEHqA4jeQyLd31Qt8UeB2Qeo0MTxWs61ZmaLmPVwsl/DF2EsmP8C6ZwMT9KBmbDE79CE0KxdMGo9PAXN0QwL2xqzbXWqP4pGAXVPGY8jZxvBoAMZJmYhneh0PX2LfIKps3q2sfreLlnR+iGqHAOuL9pXpt3R6OpNie8XRUL4DlBEoT3SZ6OccbPIiYes1uIrOQ/cT+pGkrqqJlpNWAwxp1wiHAESlXBE9eRUWB2MIm2xrI4WFrsHewBcp78FG9ymZ17lk2IwYg2zqtZQM7lo2iyp7T7wcDzW9y5WyGUNyH/wU3+Z22aThZ7SkCaoVu7w2Iqz5bQYlHAHth+OeDQ4pOpVb1kAEAXX3obcwKbPCIi700eGtd6buAQ61bbB05Db3InTBv+KNjCc2ETIxTetYdad2+ZdNE30lfr3m1KEqzV0Zr0eqaJcaG19H4ROJ46KJxyVSoDUSqUuBlJT/WFhJVc/9ZlunHPzbNLL/A/wnh5ynuiSS+whlEJ8H68CVP8V5w3GDhN0oo9IS7ymdU4RmL/YfhKK0jcZkY9BBFnbwojuXxHvNBBjsOwm9po=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.7
Release Details
UpdatedMarch 10, 2026, 10:05 p.m.
Changelog

Added

  • French (fr), Spanish (es-ES), Dutch (nl) and Portuguese (pt) translations via l10n.dev (closes #19)
  • build-l10n.mjs — automatically generates l10n/*.js from l10n/*.json at build time; adding a new language only requires a single JSON file
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
Signaturekz+Ar4X1UQgW+o1+M6G+lRcYtNsnJvD1aYT3zRd3sE4UG1OhKlLydqlVyyWX+tkdF+o4a8fNJr1BOiNsUXYrFD5M8dF/DRWSUcOJmojAe/ieNR65ocNtHUvkUZ6gugO85A7pr+pQtv+FuS7KeBQAAHMRU7I4dMw4tP2JXm6/D8+2nMU2UvEXbdipGoX1rEV8Ygj3Zlizhv01yHTfIxg6YhPkIAUP2aMnEskKinMogrd3XjPPHWl3/pJwpMGjp7BwvgSDE+Rxhm9JWAWIOtzVXX3c5UAXmY7ofVSYqnOpCRd1/s/G8Hv9tl/QRJucQQySd2eVP3hfsg1TT1NeS/2EC0AW+0BccIzG2vf8nfNj5U/gIIyTC/r5DVXSM9scG+x8mapkhfPlt+wry5AAU4hlBXh18vBuoOYIbPh2Kl0CcJTAmFIfTivt0ApSWNvSlYvlu5+xbAeKWYm4KlDkiddznW0dYlZsZ5SZCxLVKswGvDXcWoUTljaCOmPKeaJdLpQZB2WrLv7/iYSfo7hRD3dvSsQ8O2hxSKX6hgl2zYaLv80IwNt7E5AvM8zx3TiJwqpob+BDkomEqem5N5sEi5cAHjOInDTYW2kTnQ0wA0NbeGIL7Jlq2VhfxroDRJKUVIA6/omEIdKBnF6wnwvMljOI/K5Acsf8BVbJxHDKP1IwVkg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.6
Release Details
UpdatedMarch 10, 2026, 8:21 a.m.
Changelog

Fixed

  • When the Immich server URL points to a private/local IP and Nextcloud's SSRF protection blocks the request, the settings page now shows the exact cause and the occ command to resolve it, instead of a generic "Connection failed" message (refs #12)
  • Connection test errors now show the actual error detail from the server instead of a generic message
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignaturegsDGIK+QGTnAxtT/VIIoykUJEruz0c/IoeUvEvjbStocgcnGEw+25WRmA8RyAE11Dc8wW0dyz4LgbAivTFL2GU9IFND4PO6ifFNIhDt4DLFPHS4jdgVaJAaIifppyBtkkrDFmnw240nfEGsBGDKEoJ13RNpT5bHbHcCq3856bme9QdzU3TBIvRotFobW4yAA2tisxjBpE+/sgqL5Tyjja+YXAYv6ut97OYaJe/TwYV1TrC8QGbN97+CSi8I5S1ynCiO1ZZ7Oa2OgXTj4WJN+UvCoco3ril6oGsi/FdpLhP94LlcZ6IenU92w2WOyqT4FDG6FhDx09cLcvD/xCfkD6mpJtLlFW2USqutX6okR11DL2wg+rqcXD/WFV/yLlJO+5oWbXivcSnjh9ilIPL6S1iicx2jlLhY7JTXr0MxuzH1GfplJ0m+Uy60rLwgTceo6iYo0UWIz3rcMprTxm5sBOatlqSM4E9ueBgd0T5O9iTEgKeLiUUeIScLEPTJuswfEJBnCD/hNDW2uwFrkr3MsIBl02aXDsyOppAESTKq8otLXAARI4pwHnAPCv3AsJ5zdwgMUUZPAErOpGH4rwnFKDxkElRjr+grODjeVpo5N4TMQlxG/XPmF+VwqiIAg3Tye5+C5GLwHzqYrk0pJeBdxqggBRdtjJK/OSIXOEZfOjXw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.5
Release Details
UpdatedMarch 10, 2026, 8:05 a.m.
Changelog

Fixed

  • All hardcoded German UI strings in LightboxView.vue and TimelineView.vue replaced with t() i18n calls — tooltips and labels now follow the Nextcloud user language setting instead of always displaying in German (fixes #15)
  • Date formatting in lightbox now uses browser locale instead of hardcoded de-DE
  • Added missing German (de) translations for all newly i18n-wrapped strings
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureQMNrnON0nts1bLhJhWiIEsXrtqZ2Ll6rZUqrzcAtmErxieGuPmO7W2a+Hg6/VGDlIbN/FJLr6LbjzIu9Dn7IyRa63fD5WqkqYSCP6z+OX336rUpHBWB2uoqx0RHzruYgCfW5eUZ06tkpD9qmKqvIJmCZsO4JwD9El0zOuGE7K6PzVxKKx6m8TAq+tvE5vAIoPFD3zTaQod3ZrUlln5hSkkArNXGMrdisRkfevWOzfHeR+uvMZiSFtDvGdzi3I6Z++kpvoG9lonyqXSuMBVlSsAc2rGQRZbiO9zXI6K3wAZzgp71aOH9fHabr8xM0/Q3aTRQLVTG8DwwwkP7HUgpXbzWBP7ZNeoJGfcGGGKJKd+IhdDVTjeRCd9kG0TH/QoUM3UdZsl+1mzzVAo1XXcNBdpWBa5tNGp4isMue0F3N64MVDA71kSHSAWLRlcs2rtTHRriJzqF8t6HQOiM/OPFzNqobLoRtugIc5INWpbkDyVdv84MfVHBqQ0fL/t6VvmU2NmOa8c6OJT2aETRocmJeFO8qf54ZORWVr6Yf6mAzbJ0OxTDX+zx7390zzEx3SBwwNZwl4IGsV/dFy0IvlWtBrzDjyArxzqyyUb3pk93va+rJZrxC5dIGIub4tx6AIc2g1DsXjNek+sna2Hr3kVgXjut+vvySvgym6rlGR2dhvB8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.4
Release Details
UpdatedMarch 9, 2026, 4:48 p.m.
Changelog

Fixed

  • Missing use OCP\AppFramework\Http\Attribute\NoAdminRequired; import in ConfigController — the attribute was present but PHP silently ignored it without the import, causing Nextcloud to treat both config endpoints as admin-only and returning 403 Forbidden for regular users
  • Added #[NoAdminRequired] to getConfig() so regular users can also read their own saved settings

Documentation

  • Added required Immich API key permissions table to README

Dependencies

  • vue 3.5.29 → 3.5.30 (bug fixes: reactivity, SSR, custom elements)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureJiks0DqUf1nht/Mfl/00nESbsENimbGrG2JqPc5N8YvSD5arEAmzwrAjcsLiDbdNQT4FG2B84MHbBNDTJjuhUupktOl71mM0BjLYYnZu/SpYfUsoj0BKMi4qeEjCL/wLFvRCMkazH+CVO0aML2p7kz6D6SGeEO7pLnpTSOj20cBb73c6T20F4q0W32a6Ld7Bz0EBNva8sBeujWj9WX8i1NZNfMgv/CxQsUXRjuVszLVqhMi90+osdVTHPrXTFIfbV2AyvHSqpHzZecQsYoShZC4dFJoeljfSWil1yPPASgB99lajJwVesoHRdtviRU19B+COFMMfcurIxW4kWxQbuDYA8Fs42+EqB59yDiwChez/D1Hp0AQcGf2KeRubN20UAs7MZ2dxKpAVyB/2wUvhViip+HLWdcmGJSm0v2rWqT29rDSVp9O92LReg7DXP1e/HBmOtocRhmh0AhcIl66HO+K/sGzUw3BwMcfjjEcAAmpflemoNMVYoE9vBKLWfQlV/Xey8S7M47naKh/ofquxWKNGzSjjazoXzPvCfNrj2/jwL0IenmF70I8zf+PVimq1Rb6XDdeYwOC3AoWGJTVNFeRvDY3tQArz3E+PvFLBv3YPpvYmL6KWb8AEYMYDP4XVTQPYMRPobGn8IuZPe8JWl1OteWEu1W0JfxXiqjPFEeM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.3
Release Details
UpdatedMarch 5, 2026, 9:33 p.m.
Changelog

Fixed

  • File upload to Immich now streams the file content instead of loading it fully into PHP memory — prevents OOM crashes for large files
  • userId null-guard added in upload and save-to-Nextcloud flows to return 401 instead of crashing
  • setConfig() now correctly ignores validate=false strings (PHP truthy-check bug)
  • #[NoAdminRequired] added to setConfig() so regular users can save their own settings

Refactored

  • UUID validation regex extracted to ImmichService::UUID_PATTERN — eliminates 18 duplicated inline patterns across all controllers
  • getUniqueFileName() loop replaced with bounded for-loop and uniqid() fallback to prevent infinite loops
  • getPersonAssets() capped at 24 monthly buckets (~2 years) to prevent unbounded sequential HTTP requests
  • uploadAsset() response null-guard: invalid JSON from Immich no longer returns null to the frontend
  • API key decrypt failures now logged as warning with hint to re-save the key

Security

  • dompurify updated to 3.3.2 — fixes XSS bypass and prototype pollution
  • immutable updated to 5.1.5 — fixes prototype pollution in mergeDeep/toJS
  • minimatch updated to 3.1.5 — fixes ReDoS vulnerability

Dependencies

  • pinia 2 → 3
  • vue → 3.5.29, vue-router 4 → 5
  • eslint-webpack-plugin 4 → 5
  • actions/checkout v4 → v6, actions/setup-node v4 → v6
  • terser-webpack-plugin → 5.3.17, fast-xml-parser → 4.5.4
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
Signaturen3I15745dCxPzAtI5CG3DIrSLLzbq7uTF+xxBnuFjWjKblusSD6EZrN/YEgUVTTfgSrI2omiwaWFqxtsyCvIVUWwl3BEn1CebthBHlbn1EGnRrTBGan+qQYH4OE6yoepvFRB9QYdBRFRBe80wkphE7yJyhmUrzlQNlIABRo1Jss21hBzkMgJaE7533WPhciqLQVH/Lh/5+uAXE4tD2IcH4eR3kJzYM6l7L2hrgQ9T5BbVjtG+wa+x4khlSmlMCLDRSriLgM7wdJUx35ekh8w3GpQ7r+uZNlEF4aeJS3qjBYdwHoeA5HdgvD5c56B8L3xJeQLckiA88KLfik4rpgd9Z/sck+Wik/fD5ETZ1IDViFJ20bDonxMlBxReWxPDC9uOhUOO4DBwMzG7GO2Zhn2QLhyaYqU80DMZMk3kMiuHze3DJcijxlByjyz36g86cp2+cQjzC+uG5drKI7dBt8Pl/ltNZvC8ru4AyDWNgFE5fPYvnYKErXKDizs8cMlvpfo/nvCz8iFSpncosEiRhXkwEL/sJAY/79QfScAuGzQDZ8hprEXWinSyJBqnqsYvxq+cFmUyM+KGrjstFKZtMPrk/PV510uBj0CzV1yeEokBm+nWipJ4rc1dEWUlXtZLrJGeogjXIh7EtEU0Z4VdjG/ckOf1n/g5IclI6tSp03+AEA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.2
Release Details
UpdatedMarch 4, 2026, 8:11 a.m.
Changelog

Fixed

  • NC26–32 compatibility: "Add to Immich" file action was not visible on Nextcloud 26–32 due to a registry scoping change in @nextcloud/files v4 (only compatible with NC33+). A separate webpack bundle using @nextcloud/files v3 is now built and loaded automatically for Nextcloud versions below 33. Minimum supported version is now NC27.

Security

  • API key encryption: The Immich API key is now encrypted at rest using Nextcloud's OCP\Security\ICrypto before being written to oc_preferences. On read, the value is transparently decrypted; a plaintext fallback handles keys stored by older versions.
  • Input validation: All controllers now validate and sanitize incoming parameters (album IDs, asset IDs, paths, URLs) and return proper HTTP error codes (400, 500) instead of leaking raw error messages to the client.
  • Error handling: ImmichService catches exceptions internally and surfaces structured error responses, preventing stack traces from reaching the frontend.

Changed

  • Bootstrap: Migrated from boot() + addListener() to register() + registerEventListener() for proper lazy-loading of the file-action event listener (recommended pattern since NC26).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureWTWAAXSRRNWqf0SjHARlHR9/kTe10CE5FvA2fajgWDV3T6FMTDz6tFeVxZv8S1Qfy3jRCfJP3kfJ8Wc3m1xMEW3tS7h74BPptwXnHTh0y42toNgdZh0YGiXRIHW0GFdjixUDsFpCiM/RD5/dlGHOVwtcGaoKHF0T9B3WFm4X2fSNxR/IKwVoKEQGGYioiE2msXYNrvUccXO9ewCFvRFiCrxIEk31zZ9qBCRtANB8Ug7r8l4E17fE59L7c2q4OB77PgKyHuj91QFPgMJE8t6ajyte3NYF+k5XdX6TOnnV1BjDA1TDjc/2AoJWzUgd+12l39TI2a0MqLF4HMJ83DxPUKdQ8qZg+TkVnAXP+SZm2gdflWSKbylg/m8IY7NTCh+YEBvvSBicUxWjpGbvSkfayHRaALs+Beg0cvyC4GwKUA7VAGkoiqxxBGnxbAESlYI0ts3jNSzbsUqKT3LjSm7YUMonip2Ig+vM8G6ymp5y0WizOM64L0OWFeQ19hBVFwtUSjKZJ9navhDIwQB6GwlusaARRSw1B5EIkbNII+wL4zGrDsH4Z262rh8R8xc9k6/oT01aSsLx9OGzbIBBSO5mDDCXhfzlanqge/MWKF6+0hVD67j8DNt1QN8nRZ2NGcAT4spy60fCNgYcJ3yJDZQ0No0i5zOF2R66G6Y7qrTNdqo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 28

Immich Integration 1.0.9
Release Details
UpdatedMarch 27, 2026, 7:57 a.m.
Changelog

Fixed

  • Map view: OpenStreetMap tiles were blocked because Nextcloud sets Referrer-Policy: no-referrer page-wide, stripping the Referer header OSM requires — added referrerPolicy: no-referrer-when-downgrade directly on the tile layer so the browser sends the origin as referer for tile requests (fixes #26)

Dependencies

  • vue 3.5.30 → 3.5.31
  • vue-router 5.0.3 → 5.0.4
  • @nextcloud/vue 9.5.0 → 9.6.0
  • flatted 3.3.3 → 3.4.2 (security: prototype pollution fix)
  • picomatch 4.0.3 → 4.0.4 (security: ReDoS fix)
  • yaml 2.8.2 → 2.8.3 (security: stack overflow fix)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureUAawulU8GCmTrdoei2Lx4pJ4/SkhJPRhPINwCULIRFQx6D8bKyAHYB8ilmSbuSzR96FB7JXAaN7/nzE/PkkZfn69LLjb7EgsOeL4rbTBRm5cOSoqiscX8NFDJTob5JsttofE+/K14kjuw6CcmGsYgmFFydtO6njAwXSvJeVWCbYyoK+YvjnWRra0BrkNB2ROW7wBTUB0+Ud7Q61N78EcxTepzLORlXnyQbTLsPvgWifTrm6vbOa63QbWD42nZBJpEtNnmvAaYytceCEPn4B+0FYQtFHrWGF3tU8zpYYQcaGGtI5CaG8KHNUZXvOvBxMIsLCMRsP8QCp9xd1F6w0A3ci+jrZWTDO5n2/d5sRyZffpGZUPXNNDDyxmsfzkJ0iQxCwoke1YSnkyVCaK3AB8aimUX8SiqeNlTWhj37AZ9F0blA4+00qz61ix61/sl5qMoIi5NiTvvfxd6dzkqRv3bfPgyrzkarx9ttlEzoaVS3v9Zf2l/QTINcZJN0Ln3rwzlfIHzaoArtOyI72JTmIv1aG2DwQ1c0w76eb7plKtcd68PrBRU2vcz1jGWk2n1qmIu7pbfunE+Lf4jv0wEyumrvwldQW0OXsjxh+1j7zVMZDWS4PV67WKhn92XNB5vQshR/q28kb0QKVGQoMvnuMVNB8I+w2h3qKGwUJuPSX1DzI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.8
Release Details
UpdatedMarch 13, 2026, 12:42 p.m.
Changelog

Fixed

  • Map view: OpenStreetMap tile images were blocked by Nextcloud's Content Security Policy — added a CspListener that extends img-src to allow https://*.tile.openstreetmap.org (fixes #18)
  • Photo hover date tooltip was displayed in German (de-DE) regardless of user language — now uses browser locale
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureYig70GbWdqwyJj7Pgt5H4OMZtLMLrRnnuUG8i4DJZYwNh7M2Vf9uXjh6ImeqEz4Omov9e2QVucDVXGeLd1zN3s7S0FWBnf3vBSpDhrrLjhXrB1bGDEHqA4jeQyLd31Qt8UeB2Qeo0MTxWs61ZmaLmPVwsl/DF2EsmP8C6ZwMT9KBmbDE79CE0KxdMGo9PAXN0QwL2xqzbXWqP4pGAXVPGY8jZxvBoAMZJmYhneh0PX2LfIKps3q2sfreLlnR+iGqHAOuL9pXpt3R6OpNie8XRUL4DlBEoT3SZ6OccbPIiYes1uIrOQ/cT+pGkrqqJlpNWAwxp1wiHAESlXBE9eRUWB2MIm2xrI4WFrsHewBcp78FG9ymZ17lk2IwYg2zqtZQM7lo2iyp7T7wcDzW9y5WyGUNyH/wU3+Z22aThZ7SkCaoVu7w2Iqz5bQYlHAHth+OeDQ4pOpVb1kAEAXX3obcwKbPCIi700eGtd6buAQ61bbB05Db3InTBv+KNjCc2ETIxTetYdad2+ZdNE30lfr3m1KEqzV0Zr0eqaJcaG19H4ROJ46KJxyVSoDUSqUuBlJT/WFhJVc/9ZlunHPzbNLL/A/wnh5ynuiSS+whlEJ8H68CVP8V5w3GDhN0oo9IS7ymdU4RmL/YfhKK0jcZkY9BBFnbwojuXxHvNBBjsOwm9po=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.7
Release Details
UpdatedMarch 10, 2026, 10:05 p.m.
Changelog

Added

  • French (fr), Spanish (es-ES), Dutch (nl) and Portuguese (pt) translations via l10n.dev (closes #19)
  • build-l10n.mjs — automatically generates l10n/*.js from l10n/*.json at build time; adding a new language only requires a single JSON file
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
Signaturekz+Ar4X1UQgW+o1+M6G+lRcYtNsnJvD1aYT3zRd3sE4UG1OhKlLydqlVyyWX+tkdF+o4a8fNJr1BOiNsUXYrFD5M8dF/DRWSUcOJmojAe/ieNR65ocNtHUvkUZ6gugO85A7pr+pQtv+FuS7KeBQAAHMRU7I4dMw4tP2JXm6/D8+2nMU2UvEXbdipGoX1rEV8Ygj3Zlizhv01yHTfIxg6YhPkIAUP2aMnEskKinMogrd3XjPPHWl3/pJwpMGjp7BwvgSDE+Rxhm9JWAWIOtzVXX3c5UAXmY7ofVSYqnOpCRd1/s/G8Hv9tl/QRJucQQySd2eVP3hfsg1TT1NeS/2EC0AW+0BccIzG2vf8nfNj5U/gIIyTC/r5DVXSM9scG+x8mapkhfPlt+wry5AAU4hlBXh18vBuoOYIbPh2Kl0CcJTAmFIfTivt0ApSWNvSlYvlu5+xbAeKWYm4KlDkiddznW0dYlZsZ5SZCxLVKswGvDXcWoUTljaCOmPKeaJdLpQZB2WrLv7/iYSfo7hRD3dvSsQ8O2hxSKX6hgl2zYaLv80IwNt7E5AvM8zx3TiJwqpob+BDkomEqem5N5sEi5cAHjOInDTYW2kTnQ0wA0NbeGIL7Jlq2VhfxroDRJKUVIA6/omEIdKBnF6wnwvMljOI/K5Acsf8BVbJxHDKP1IwVkg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.6
Release Details
UpdatedMarch 10, 2026, 8:21 a.m.
Changelog

Fixed

  • When the Immich server URL points to a private/local IP and Nextcloud's SSRF protection blocks the request, the settings page now shows the exact cause and the occ command to resolve it, instead of a generic "Connection failed" message (refs #12)
  • Connection test errors now show the actual error detail from the server instead of a generic message
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignaturegsDGIK+QGTnAxtT/VIIoykUJEruz0c/IoeUvEvjbStocgcnGEw+25WRmA8RyAE11Dc8wW0dyz4LgbAivTFL2GU9IFND4PO6ifFNIhDt4DLFPHS4jdgVaJAaIifppyBtkkrDFmnw240nfEGsBGDKEoJ13RNpT5bHbHcCq3856bme9QdzU3TBIvRotFobW4yAA2tisxjBpE+/sgqL5Tyjja+YXAYv6ut97OYaJe/TwYV1TrC8QGbN97+CSi8I5S1ynCiO1ZZ7Oa2OgXTj4WJN+UvCoco3ril6oGsi/FdpLhP94LlcZ6IenU92w2WOyqT4FDG6FhDx09cLcvD/xCfkD6mpJtLlFW2USqutX6okR11DL2wg+rqcXD/WFV/yLlJO+5oWbXivcSnjh9ilIPL6S1iicx2jlLhY7JTXr0MxuzH1GfplJ0m+Uy60rLwgTceo6iYo0UWIz3rcMprTxm5sBOatlqSM4E9ueBgd0T5O9iTEgKeLiUUeIScLEPTJuswfEJBnCD/hNDW2uwFrkr3MsIBl02aXDsyOppAESTKq8otLXAARI4pwHnAPCv3AsJ5zdwgMUUZPAErOpGH4rwnFKDxkElRjr+grODjeVpo5N4TMQlxG/XPmF+VwqiIAg3Tye5+C5GLwHzqYrk0pJeBdxqggBRdtjJK/OSIXOEZfOjXw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.5
Release Details
UpdatedMarch 10, 2026, 8:05 a.m.
Changelog

Fixed

  • All hardcoded German UI strings in LightboxView.vue and TimelineView.vue replaced with t() i18n calls — tooltips and labels now follow the Nextcloud user language setting instead of always displaying in German (fixes #15)
  • Date formatting in lightbox now uses browser locale instead of hardcoded de-DE
  • Added missing German (de) translations for all newly i18n-wrapped strings
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureQMNrnON0nts1bLhJhWiIEsXrtqZ2Ll6rZUqrzcAtmErxieGuPmO7W2a+Hg6/VGDlIbN/FJLr6LbjzIu9Dn7IyRa63fD5WqkqYSCP6z+OX336rUpHBWB2uoqx0RHzruYgCfW5eUZ06tkpD9qmKqvIJmCZsO4JwD9El0zOuGE7K6PzVxKKx6m8TAq+tvE5vAIoPFD3zTaQod3ZrUlln5hSkkArNXGMrdisRkfevWOzfHeR+uvMZiSFtDvGdzi3I6Z++kpvoG9lonyqXSuMBVlSsAc2rGQRZbiO9zXI6K3wAZzgp71aOH9fHabr8xM0/Q3aTRQLVTG8DwwwkP7HUgpXbzWBP7ZNeoJGfcGGGKJKd+IhdDVTjeRCd9kG0TH/QoUM3UdZsl+1mzzVAo1XXcNBdpWBa5tNGp4isMue0F3N64MVDA71kSHSAWLRlcs2rtTHRriJzqF8t6HQOiM/OPFzNqobLoRtugIc5INWpbkDyVdv84MfVHBqQ0fL/t6VvmU2NmOa8c6OJT2aETRocmJeFO8qf54ZORWVr6Yf6mAzbJ0OxTDX+zx7390zzEx3SBwwNZwl4IGsV/dFy0IvlWtBrzDjyArxzqyyUb3pk93va+rJZrxC5dIGIub4tx6AIc2g1DsXjNek+sna2Hr3kVgXjut+vvySvgym6rlGR2dhvB8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.4
Release Details
UpdatedMarch 9, 2026, 4:48 p.m.
Changelog

Fixed

  • Missing use OCP\AppFramework\Http\Attribute\NoAdminRequired; import in ConfigController — the attribute was present but PHP silently ignored it without the import, causing Nextcloud to treat both config endpoints as admin-only and returning 403 Forbidden for regular users
  • Added #[NoAdminRequired] to getConfig() so regular users can also read their own saved settings

Documentation

  • Added required Immich API key permissions table to README

Dependencies

  • vue 3.5.29 → 3.5.30 (bug fixes: reactivity, SSR, custom elements)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureJiks0DqUf1nht/Mfl/00nESbsENimbGrG2JqPc5N8YvSD5arEAmzwrAjcsLiDbdNQT4FG2B84MHbBNDTJjuhUupktOl71mM0BjLYYnZu/SpYfUsoj0BKMi4qeEjCL/wLFvRCMkazH+CVO0aML2p7kz6D6SGeEO7pLnpTSOj20cBb73c6T20F4q0W32a6Ld7Bz0EBNva8sBeujWj9WX8i1NZNfMgv/CxQsUXRjuVszLVqhMi90+osdVTHPrXTFIfbV2AyvHSqpHzZecQsYoShZC4dFJoeljfSWil1yPPASgB99lajJwVesoHRdtviRU19B+COFMMfcurIxW4kWxQbuDYA8Fs42+EqB59yDiwChez/D1Hp0AQcGf2KeRubN20UAs7MZ2dxKpAVyB/2wUvhViip+HLWdcmGJSm0v2rWqT29rDSVp9O92LReg7DXP1e/HBmOtocRhmh0AhcIl66HO+K/sGzUw3BwMcfjjEcAAmpflemoNMVYoE9vBKLWfQlV/Xey8S7M47naKh/ofquxWKNGzSjjazoXzPvCfNrj2/jwL0IenmF70I8zf+PVimq1Rb6XDdeYwOC3AoWGJTVNFeRvDY3tQArz3E+PvFLBv3YPpvYmL6KWb8AEYMYDP4XVTQPYMRPobGn8IuZPe8JWl1OteWEu1W0JfxXiqjPFEeM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.3
Release Details
UpdatedMarch 5, 2026, 9:33 p.m.
Changelog

Fixed

  • File upload to Immich now streams the file content instead of loading it fully into PHP memory — prevents OOM crashes for large files
  • userId null-guard added in upload and save-to-Nextcloud flows to return 401 instead of crashing
  • setConfig() now correctly ignores validate=false strings (PHP truthy-check bug)
  • #[NoAdminRequired] added to setConfig() so regular users can save their own settings

Refactored

  • UUID validation regex extracted to ImmichService::UUID_PATTERN — eliminates 18 duplicated inline patterns across all controllers
  • getUniqueFileName() loop replaced with bounded for-loop and uniqid() fallback to prevent infinite loops
  • getPersonAssets() capped at 24 monthly buckets (~2 years) to prevent unbounded sequential HTTP requests
  • uploadAsset() response null-guard: invalid JSON from Immich no longer returns null to the frontend
  • API key decrypt failures now logged as warning with hint to re-save the key

Security

  • dompurify updated to 3.3.2 — fixes XSS bypass and prototype pollution
  • immutable updated to 5.1.5 — fixes prototype pollution in mergeDeep/toJS
  • minimatch updated to 3.1.5 — fixes ReDoS vulnerability

Dependencies

  • pinia 2 → 3
  • vue → 3.5.29, vue-router 4 → 5
  • eslint-webpack-plugin 4 → 5
  • actions/checkout v4 → v6, actions/setup-node v4 → v6
  • terser-webpack-plugin → 5.3.17, fast-xml-parser → 4.5.4
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
Signaturen3I15745dCxPzAtI5CG3DIrSLLzbq7uTF+xxBnuFjWjKblusSD6EZrN/YEgUVTTfgSrI2omiwaWFqxtsyCvIVUWwl3BEn1CebthBHlbn1EGnRrTBGan+qQYH4OE6yoepvFRB9QYdBRFRBe80wkphE7yJyhmUrzlQNlIABRo1Jss21hBzkMgJaE7533WPhciqLQVH/Lh/5+uAXE4tD2IcH4eR3kJzYM6l7L2hrgQ9T5BbVjtG+wa+x4khlSmlMCLDRSriLgM7wdJUx35ekh8w3GpQ7r+uZNlEF4aeJS3qjBYdwHoeA5HdgvD5c56B8L3xJeQLckiA88KLfik4rpgd9Z/sck+Wik/fD5ETZ1IDViFJ20bDonxMlBxReWxPDC9uOhUOO4DBwMzG7GO2Zhn2QLhyaYqU80DMZMk3kMiuHze3DJcijxlByjyz36g86cp2+cQjzC+uG5drKI7dBt8Pl/ltNZvC8ru4AyDWNgFE5fPYvnYKErXKDizs8cMlvpfo/nvCz8iFSpncosEiRhXkwEL/sJAY/79QfScAuGzQDZ8hprEXWinSyJBqnqsYvxq+cFmUyM+KGrjstFKZtMPrk/PV510uBj0CzV1yeEokBm+nWipJ4rc1dEWUlXtZLrJGeogjXIh7EtEU0Z4VdjG/ckOf1n/g5IclI6tSp03+AEA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.2
Release Details
UpdatedMarch 4, 2026, 8:11 a.m.
Changelog

Fixed

  • NC26–32 compatibility: "Add to Immich" file action was not visible on Nextcloud 26–32 due to a registry scoping change in @nextcloud/files v4 (only compatible with NC33+). A separate webpack bundle using @nextcloud/files v3 is now built and loaded automatically for Nextcloud versions below 33. Minimum supported version is now NC27.

Security

  • API key encryption: The Immich API key is now encrypted at rest using Nextcloud's OCP\Security\ICrypto before being written to oc_preferences. On read, the value is transparently decrypted; a plaintext fallback handles keys stored by older versions.
  • Input validation: All controllers now validate and sanitize incoming parameters (album IDs, asset IDs, paths, URLs) and return proper HTTP error codes (400, 500) instead of leaking raw error messages to the client.
  • Error handling: ImmichService catches exceptions internally and surfaces structured error responses, preventing stack traces from reaching the frontend.

Changed

  • Bootstrap: Migrated from boot() + addListener() to register() + registerEventListener() for proper lazy-loading of the file-action event listener (recommended pattern since NC26).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureWTWAAXSRRNWqf0SjHARlHR9/kTe10CE5FvA2fajgWDV3T6FMTDz6tFeVxZv8S1Qfy3jRCfJP3kfJ8Wc3m1xMEW3tS7h74BPptwXnHTh0y42toNgdZh0YGiXRIHW0GFdjixUDsFpCiM/RD5/dlGHOVwtcGaoKHF0T9B3WFm4X2fSNxR/IKwVoKEQGGYioiE2msXYNrvUccXO9ewCFvRFiCrxIEk31zZ9qBCRtANB8Ug7r8l4E17fE59L7c2q4OB77PgKyHuj91QFPgMJE8t6ajyte3NYF+k5XdX6TOnnV1BjDA1TDjc/2AoJWzUgd+12l39TI2a0MqLF4HMJ83DxPUKdQ8qZg+TkVnAXP+SZm2gdflWSKbylg/m8IY7NTCh+YEBvvSBicUxWjpGbvSkfayHRaALs+Beg0cvyC4GwKUA7VAGkoiqxxBGnxbAESlYI0ts3jNSzbsUqKT3LjSm7YUMonip2Ig+vM8G6ymp5y0WizOM64L0OWFeQ19hBVFwtUSjKZJ9navhDIwQB6GwlusaARRSw1B5EIkbNII+wL4zGrDsH4Z262rh8R8xc9k6/oT01aSsLx9OGzbIBBSO5mDDCXhfzlanqge/MWKF6+0hVD67j8DNt1QN8nRZ2NGcAT4spy60fCNgYcJ3yJDZQ0No0i5zOF2R66G6Y7qrTNdqo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 27

Immich Integration 1.0.9
Release Details
UpdatedMarch 27, 2026, 7:57 a.m.
Changelog

Fixed

  • Map view: OpenStreetMap tiles were blocked because Nextcloud sets Referrer-Policy: no-referrer page-wide, stripping the Referer header OSM requires — added referrerPolicy: no-referrer-when-downgrade directly on the tile layer so the browser sends the origin as referer for tile requests (fixes #26)

Dependencies

  • vue 3.5.30 → 3.5.31
  • vue-router 5.0.3 → 5.0.4
  • @nextcloud/vue 9.5.0 → 9.6.0
  • flatted 3.3.3 → 3.4.2 (security: prototype pollution fix)
  • picomatch 4.0.3 → 4.0.4 (security: ReDoS fix)
  • yaml 2.8.2 → 2.8.3 (security: stack overflow fix)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureUAawulU8GCmTrdoei2Lx4pJ4/SkhJPRhPINwCULIRFQx6D8bKyAHYB8ilmSbuSzR96FB7JXAaN7/nzE/PkkZfn69LLjb7EgsOeL4rbTBRm5cOSoqiscX8NFDJTob5JsttofE+/K14kjuw6CcmGsYgmFFydtO6njAwXSvJeVWCbYyoK+YvjnWRra0BrkNB2ROW7wBTUB0+Ud7Q61N78EcxTepzLORlXnyQbTLsPvgWifTrm6vbOa63QbWD42nZBJpEtNnmvAaYytceCEPn4B+0FYQtFHrWGF3tU8zpYYQcaGGtI5CaG8KHNUZXvOvBxMIsLCMRsP8QCp9xd1F6w0A3ci+jrZWTDO5n2/d5sRyZffpGZUPXNNDDyxmsfzkJ0iQxCwoke1YSnkyVCaK3AB8aimUX8SiqeNlTWhj37AZ9F0blA4+00qz61ix61/sl5qMoIi5NiTvvfxd6dzkqRv3bfPgyrzkarx9ttlEzoaVS3v9Zf2l/QTINcZJN0Ln3rwzlfIHzaoArtOyI72JTmIv1aG2DwQ1c0w76eb7plKtcd68PrBRU2vcz1jGWk2n1qmIu7pbfunE+Lf4jv0wEyumrvwldQW0OXsjxh+1j7zVMZDWS4PV67WKhn92XNB5vQshR/q28kb0QKVGQoMvnuMVNB8I+w2h3qKGwUJuPSX1DzI=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.8
Release Details
UpdatedMarch 13, 2026, 12:42 p.m.
Changelog

Fixed

  • Map view: OpenStreetMap tile images were blocked by Nextcloud's Content Security Policy — added a CspListener that extends img-src to allow https://*.tile.openstreetmap.org (fixes #18)
  • Photo hover date tooltip was displayed in German (de-DE) regardless of user language — now uses browser locale
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureYig70GbWdqwyJj7Pgt5H4OMZtLMLrRnnuUG8i4DJZYwNh7M2Vf9uXjh6ImeqEz4Omov9e2QVucDVXGeLd1zN3s7S0FWBnf3vBSpDhrrLjhXrB1bGDEHqA4jeQyLd31Qt8UeB2Qeo0MTxWs61ZmaLmPVwsl/DF2EsmP8C6ZwMT9KBmbDE79CE0KxdMGo9PAXN0QwL2xqzbXWqP4pGAXVPGY8jZxvBoAMZJmYhneh0PX2LfIKps3q2sfreLlnR+iGqHAOuL9pXpt3R6OpNie8XRUL4DlBEoT3SZ6OccbPIiYes1uIrOQ/cT+pGkrqqJlpNWAwxp1wiHAESlXBE9eRUWB2MIm2xrI4WFrsHewBcp78FG9ymZ17lk2IwYg2zqtZQM7lo2iyp7T7wcDzW9y5WyGUNyH/wU3+Z22aThZ7SkCaoVu7w2Iqz5bQYlHAHth+OeDQ4pOpVb1kAEAXX3obcwKbPCIi700eGtd6buAQ61bbB05Db3InTBv+KNjCc2ETIxTetYdad2+ZdNE30lfr3m1KEqzV0Zr0eqaJcaG19H4ROJ46KJxyVSoDUSqUuBlJT/WFhJVc/9ZlunHPzbNLL/A/wnh5ynuiSS+whlEJ8H68CVP8V5w3GDhN0oo9IS7ymdU4RmL/YfhKK0jcZkY9BBFnbwojuXxHvNBBjsOwm9po=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.7
Release Details
UpdatedMarch 10, 2026, 10:05 p.m.
Changelog

Added

  • French (fr), Spanish (es-ES), Dutch (nl) and Portuguese (pt) translations via l10n.dev (closes #19)
  • build-l10n.mjs — automatically generates l10n/*.js from l10n/*.json at build time; adding a new language only requires a single JSON file
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
Signaturekz+Ar4X1UQgW+o1+M6G+lRcYtNsnJvD1aYT3zRd3sE4UG1OhKlLydqlVyyWX+tkdF+o4a8fNJr1BOiNsUXYrFD5M8dF/DRWSUcOJmojAe/ieNR65ocNtHUvkUZ6gugO85A7pr+pQtv+FuS7KeBQAAHMRU7I4dMw4tP2JXm6/D8+2nMU2UvEXbdipGoX1rEV8Ygj3Zlizhv01yHTfIxg6YhPkIAUP2aMnEskKinMogrd3XjPPHWl3/pJwpMGjp7BwvgSDE+Rxhm9JWAWIOtzVXX3c5UAXmY7ofVSYqnOpCRd1/s/G8Hv9tl/QRJucQQySd2eVP3hfsg1TT1NeS/2EC0AW+0BccIzG2vf8nfNj5U/gIIyTC/r5DVXSM9scG+x8mapkhfPlt+wry5AAU4hlBXh18vBuoOYIbPh2Kl0CcJTAmFIfTivt0ApSWNvSlYvlu5+xbAeKWYm4KlDkiddznW0dYlZsZ5SZCxLVKswGvDXcWoUTljaCOmPKeaJdLpQZB2WrLv7/iYSfo7hRD3dvSsQ8O2hxSKX6hgl2zYaLv80IwNt7E5AvM8zx3TiJwqpob+BDkomEqem5N5sEi5cAHjOInDTYW2kTnQ0wA0NbeGIL7Jlq2VhfxroDRJKUVIA6/omEIdKBnF6wnwvMljOI/K5Acsf8BVbJxHDKP1IwVkg=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.6
Release Details
UpdatedMarch 10, 2026, 8:21 a.m.
Changelog

Fixed

  • When the Immich server URL points to a private/local IP and Nextcloud's SSRF protection blocks the request, the settings page now shows the exact cause and the occ command to resolve it, instead of a generic "Connection failed" message (refs #12)
  • Connection test errors now show the actual error detail from the server instead of a generic message
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignaturegsDGIK+QGTnAxtT/VIIoykUJEruz0c/IoeUvEvjbStocgcnGEw+25WRmA8RyAE11Dc8wW0dyz4LgbAivTFL2GU9IFND4PO6ifFNIhDt4DLFPHS4jdgVaJAaIifppyBtkkrDFmnw240nfEGsBGDKEoJ13RNpT5bHbHcCq3856bme9QdzU3TBIvRotFobW4yAA2tisxjBpE+/sgqL5Tyjja+YXAYv6ut97OYaJe/TwYV1TrC8QGbN97+CSi8I5S1ynCiO1ZZ7Oa2OgXTj4WJN+UvCoco3ril6oGsi/FdpLhP94LlcZ6IenU92w2WOyqT4FDG6FhDx09cLcvD/xCfkD6mpJtLlFW2USqutX6okR11DL2wg+rqcXD/WFV/yLlJO+5oWbXivcSnjh9ilIPL6S1iicx2jlLhY7JTXr0MxuzH1GfplJ0m+Uy60rLwgTceo6iYo0UWIz3rcMprTxm5sBOatlqSM4E9ueBgd0T5O9iTEgKeLiUUeIScLEPTJuswfEJBnCD/hNDW2uwFrkr3MsIBl02aXDsyOppAESTKq8otLXAARI4pwHnAPCv3AsJ5zdwgMUUZPAErOpGH4rwnFKDxkElRjr+grODjeVpo5N4TMQlxG/XPmF+VwqiIAg3Tye5+C5GLwHzqYrk0pJeBdxqggBRdtjJK/OSIXOEZfOjXw=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.5
Release Details
UpdatedMarch 10, 2026, 8:05 a.m.
Changelog

Fixed

  • All hardcoded German UI strings in LightboxView.vue and TimelineView.vue replaced with t() i18n calls — tooltips and labels now follow the Nextcloud user language setting instead of always displaying in German (fixes #15)
  • Date formatting in lightbox now uses browser locale instead of hardcoded de-DE
  • Added missing German (de) translations for all newly i18n-wrapped strings
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureQMNrnON0nts1bLhJhWiIEsXrtqZ2Ll6rZUqrzcAtmErxieGuPmO7W2a+Hg6/VGDlIbN/FJLr6LbjzIu9Dn7IyRa63fD5WqkqYSCP6z+OX336rUpHBWB2uoqx0RHzruYgCfW5eUZ06tkpD9qmKqvIJmCZsO4JwD9El0zOuGE7K6PzVxKKx6m8TAq+tvE5vAIoPFD3zTaQod3ZrUlln5hSkkArNXGMrdisRkfevWOzfHeR+uvMZiSFtDvGdzi3I6Z++kpvoG9lonyqXSuMBVlSsAc2rGQRZbiO9zXI6K3wAZzgp71aOH9fHabr8xM0/Q3aTRQLVTG8DwwwkP7HUgpXbzWBP7ZNeoJGfcGGGKJKd+IhdDVTjeRCd9kG0TH/QoUM3UdZsl+1mzzVAo1XXcNBdpWBa5tNGp4isMue0F3N64MVDA71kSHSAWLRlcs2rtTHRriJzqF8t6HQOiM/OPFzNqobLoRtugIc5INWpbkDyVdv84MfVHBqQ0fL/t6VvmU2NmOa8c6OJT2aETRocmJeFO8qf54ZORWVr6Yf6mAzbJ0OxTDX+zx7390zzEx3SBwwNZwl4IGsV/dFy0IvlWtBrzDjyArxzqyyUb3pk93va+rJZrxC5dIGIub4tx6AIc2g1DsXjNek+sna2Hr3kVgXjut+vvySvgym6rlGR2dhvB8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.4
Release Details
UpdatedMarch 9, 2026, 4:48 p.m.
Changelog

Fixed

  • Missing use OCP\AppFramework\Http\Attribute\NoAdminRequired; import in ConfigController — the attribute was present but PHP silently ignored it without the import, causing Nextcloud to treat both config endpoints as admin-only and returning 403 Forbidden for regular users
  • Added #[NoAdminRequired] to getConfig() so regular users can also read their own saved settings

Documentation

  • Added required Immich API key permissions table to README

Dependencies

  • vue 3.5.29 → 3.5.30 (bug fixes: reactivity, SSR, custom elements)
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureJiks0DqUf1nht/Mfl/00nESbsENimbGrG2JqPc5N8YvSD5arEAmzwrAjcsLiDbdNQT4FG2B84MHbBNDTJjuhUupktOl71mM0BjLYYnZu/SpYfUsoj0BKMi4qeEjCL/wLFvRCMkazH+CVO0aML2p7kz6D6SGeEO7pLnpTSOj20cBb73c6T20F4q0W32a6Ld7Bz0EBNva8sBeujWj9WX8i1NZNfMgv/CxQsUXRjuVszLVqhMi90+osdVTHPrXTFIfbV2AyvHSqpHzZecQsYoShZC4dFJoeljfSWil1yPPASgB99lajJwVesoHRdtviRU19B+COFMMfcurIxW4kWxQbuDYA8Fs42+EqB59yDiwChez/D1Hp0AQcGf2KeRubN20UAs7MZ2dxKpAVyB/2wUvhViip+HLWdcmGJSm0v2rWqT29rDSVp9O92LReg7DXP1e/HBmOtocRhmh0AhcIl66HO+K/sGzUw3BwMcfjjEcAAmpflemoNMVYoE9vBKLWfQlV/Xey8S7M47naKh/ofquxWKNGzSjjazoXzPvCfNrj2/jwL0IenmF70I8zf+PVimq1Rb6XDdeYwOC3AoWGJTVNFeRvDY3tQArz3E+PvFLBv3YPpvYmL6KWb8AEYMYDP4XVTQPYMRPobGn8IuZPe8JWl1OteWEu1W0JfxXiqjPFEeM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.3
Release Details
UpdatedMarch 5, 2026, 9:33 p.m.
Changelog

Fixed

  • File upload to Immich now streams the file content instead of loading it fully into PHP memory — prevents OOM crashes for large files
  • userId null-guard added in upload and save-to-Nextcloud flows to return 401 instead of crashing
  • setConfig() now correctly ignores validate=false strings (PHP truthy-check bug)
  • #[NoAdminRequired] added to setConfig() so regular users can save their own settings

Refactored

  • UUID validation regex extracted to ImmichService::UUID_PATTERN — eliminates 18 duplicated inline patterns across all controllers
  • getUniqueFileName() loop replaced with bounded for-loop and uniqid() fallback to prevent infinite loops
  • getPersonAssets() capped at 24 monthly buckets (~2 years) to prevent unbounded sequential HTTP requests
  • uploadAsset() response null-guard: invalid JSON from Immich no longer returns null to the frontend
  • API key decrypt failures now logged as warning with hint to re-save the key

Security

  • dompurify updated to 3.3.2 — fixes XSS bypass and prototype pollution
  • immutable updated to 5.1.5 — fixes prototype pollution in mergeDeep/toJS
  • minimatch updated to 3.1.5 — fixes ReDoS vulnerability

Dependencies

  • pinia 2 → 3
  • vue → 3.5.29, vue-router 4 → 5
  • eslint-webpack-plugin 4 → 5
  • actions/checkout v4 → v6, actions/setup-node v4 → v6
  • terser-webpack-plugin → 5.3.17, fast-xml-parser → 4.5.4
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
Signaturen3I15745dCxPzAtI5CG3DIrSLLzbq7uTF+xxBnuFjWjKblusSD6EZrN/YEgUVTTfgSrI2omiwaWFqxtsyCvIVUWwl3BEn1CebthBHlbn1EGnRrTBGan+qQYH4OE6yoepvFRB9QYdBRFRBe80wkphE7yJyhmUrzlQNlIABRo1Jss21hBzkMgJaE7533WPhciqLQVH/Lh/5+uAXE4tD2IcH4eR3kJzYM6l7L2hrgQ9T5BbVjtG+wa+x4khlSmlMCLDRSriLgM7wdJUx35ekh8w3GpQ7r+uZNlEF4aeJS3qjBYdwHoeA5HdgvD5c56B8L3xJeQLckiA88KLfik4rpgd9Z/sck+Wik/fD5ETZ1IDViFJ20bDonxMlBxReWxPDC9uOhUOO4DBwMzG7GO2Zhn2QLhyaYqU80DMZMk3kMiuHze3DJcijxlByjyz36g86cp2+cQjzC+uG5drKI7dBt8Pl/ltNZvC8ru4AyDWNgFE5fPYvnYKErXKDizs8cMlvpfo/nvCz8iFSpncosEiRhXkwEL/sJAY/79QfScAuGzQDZ8hprEXWinSyJBqnqsYvxq+cFmUyM+KGrjstFKZtMPrk/PV510uBj0CzV1yeEokBm+nWipJ4rc1dEWUlXtZLrJGeogjXIh7EtEU0Z4VdjG/ckOf1n/g5IclI6tSp03+AEA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0
Immich Integration 1.0.2
Release Details
UpdatedMarch 4, 2026, 8:11 a.m.
Changelog

Fixed

  • NC26–32 compatibility: "Add to Immich" file action was not visible on Nextcloud 26–32 due to a registry scoping change in @nextcloud/files v4 (only compatible with NC33+). A separate webpack bundle using @nextcloud/files v3 is now built and loaded automatically for Nextcloud versions below 33. Minimum supported version is now NC27.

Security

  • API key encryption: The Immich API key is now encrypted at rest using Nextcloud's OCP\Security\ICrypto before being written to oc_preferences. On read, the value is transparently decrypted; a plaintext fallback handles keys stored by older versions.
  • Input validation: All controllers now validate and sanitize incoming parameters (album IDs, asset IDs, paths, URLs) and return proper HTTP error codes (400, 500) instead of leaking raw error messages to the client.
  • Error handling: ImmichService catches exceptions internally and surfaces structured error responses, preventing stack traces from reaching the frontend.

Changed

  • Bootstrap: Migrated from boot() + addListener() to register() + registerEventListener() for proper lazy-loading of the file-action event listener (recommended pattern since NC26).
Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDTCCAvUCAhL/MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwMzAzMDgwNjU3WhcNMzYwNjA4MDgwNjU3WjAdMRswGQYD
VQQDDBJpbnRlZ3JhdGlvbl9pbW1pY2gwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
ggIKAoICAQDuzv/eJfxXpudAswh65T+3nNwMV0RsV99cpC38On1k0W95vEyR1G0f
PRgy8ezXp73efLBiCggQFc3VqswoiBjCOPRHPZz1DVVNjUTXAQ9zGkBpaCYKrsc8
VNiuS+riXopifaiQZe494x8vig8omm90Ezw16kmkFAeein/OdoqmPBVwGNIlOmVY
0Au/TwOAcdPcUj7aB9RluDkHUuPOt0tbYI2SQwYnpK6tGCEr67lunCVTt/LONqWc
5DF0XLxdCp0pDGvBcoqGF4nVv+IUMwD9DfjBall2G/VAugGW2Et5p6/ruxa1bTBf
r3aQY15M13O+a4WX2E+i1xISuXRGI/seN6TMAczb45BHt/mUjzzbNiHnB2Yuk5tF
kUewKJhrxIbcwysPprpvtDbfQUAxbADc0rp5S3Btjq2B5b7Qi/kvx+Drixz2gTyW
+lsLrso6QPV3FDylzAdr+ZKKlTZpqZyQ9KKXhXhZ/yazcsKq8ntpFiN/QKtshcE3
1vVbzos7ipHzqDV3Io0LP9d6HXW/bK7HrkT5RQjokGiED9+o+T7uC+j+vklozzIe
G0LDBrtR5CaTXDvrSFnMUJbGgwZch2W00pAubBcq9rvLb1Di/E7tnm23cgOTgOyr
iH3vRsNqjrEqqkR25XD3ee7GcOkWowWs5nJ2nSslelDyw9bhLgWh/QIDAQABMA0G
CSqGSIb3DQEBCwUAA4IBAQAjZwan2CUOCsXlpcJ1SKRYiyvJ1dxV8QntzFmR6RyO
5SQqnorEI0LffrHEpZ+KcIqh2qdjdNBCsyRxKAD6pTwijnC8lbP/6KK6RWXEnNpz
eqO5cZMRDr64VA2kPCjrgwUXueu4KqD+yGETI0BZc9oz3DpscfBpnHt5a3Bt3Wc/
/0dxEYnurmzDQ37LEpCg/whx/ecU026I/he9XbfMfJGqQ+xYbt5DQ1H6bIK2HmCl
yH3shTrI/rxL0263ZlHQd4FT9RydK+bq3SIcMihjTlkj/LjdEFejBgnMZqrTXP0x
PvOhihvpkrcB4A7uON1KhksYRW/vce8J/5pWSMHWn/8a
-----END CERTIFICATE-----
SignatureWTWAAXSRRNWqf0SjHARlHR9/kTe10CE5FvA2fajgWDV3T6FMTDz6tFeVxZv8S1Qfy3jRCfJP3kfJ8Wc3m1xMEW3tS7h74BPptwXnHTh0y42toNgdZh0YGiXRIHW0GFdjixUDsFpCiM/RD5/dlGHOVwtcGaoKHF0T9B3WFm4X2fSNxR/IKwVoKEQGGYioiE2msXYNrvUccXO9ewCFvRFiCrxIEk31zZ9qBCRtANB8Ug7r8l4E17fE59L7c2q4OB77PgKyHuj91QFPgMJE8t6ajyte3NYF+k5XdX6TOnnV1BjDA1TDjc/2AoJWzUgd+12l39TI2a0MqLF4HMJ83DxPUKdQ8qZg+TkVnAXP+SZm2gdflWSKbylg/m8IY7NTCh+YEBvvSBicUxWjpGbvSkfayHRaALs+Beg0cvyC4GwKUA7VAGkoiqxxBGnxbAESlYI0ts3jNSzbsUqKT3LjSm7YUMonip2Ig+vM8G6ymp5y0WizOM64L0OWFeQ19hBVFwtUSjKZJ9navhDIwQB6GwlusaARRSw1B5EIkbNII+wL4zGrDsH4Z262rh8R8xc9k6/oT01aSsLx9OGzbIBBSO5mDDCXhfzlanqge/MWKF6+0hVD67j8DNt1QN8nRZ2NGcAT4spy60fCNgYcJ3yJDZQ0No0i5zOF2R66G6Y7qrTNdqo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=27.0.0,<34.0.0
Minimum Integer bits32
PHP>=8.2.0