Benjamin Frueh
76b5121c4a
fix: only skip template initialization when both skeletondirectory and templatedirectory are empty
...
Signed-off-by: Benjamin Frueh <benjamin.frueh@gmail.com>
2026-06-03 13:56:19 -04:00
Anna Larch
07c068b042
fix(comments): dismiss mention notifications and clear unread badge when viewed in activity sidebar
...
Backport of #60617 for stable31.
When comments are loaded via the Activity sidebar integration, call
markCommentsAsRead() so the file-row unread comment bubble clears after
viewing. Also add a DELETE /notifications/{id} endpoint and call it for
each comment that mentions the current user so the notification bell
clears without navigating via the notification link.
Fixes : nextcloud/activity#2531
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-05-25 15:41:37 +02:00
Stephan Orbaugh
9cdb6d1d17
Merge pull request #60576 from nextcloud/backport/60547/stable31
...
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Has been cancelled
Psalm static code analysis / static-code-analysis-security (push) Has been cancelled
Psalm static code analysis / static-code-analysis-ocp (push) Has been cancelled
Psalm static code analysis / static-code-analysis-ncu (push) Has been cancelled
[stable31] fix: don't tell the remote their token is lower
2026-05-20 20:26:36 +02:00
Stephan Orbaugh
b70b80a5ce
Merge pull request #60561 from nextcloud/backport/60558/stable31
...
[stable31] fix: improve check if external storage backend is local
2026-05-20 17:05:37 +02:00
Robin Appelman
d14d8a41f0
test: adjust tests
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-20 16:38:29 +02:00
Stephan Orbaugh
48c6f419eb
Merge pull request #60557 from nextcloud/backport/60543/stable31
...
[stable31] fix: only allow full admins to create 'token needed' webhooks
2026-05-20 16:38:07 +02:00
Stephan Orbaugh
2805d546a6
Merge pull request #60551 from nextcloud/backport/60542/stable31
...
[stable31] don't put hashed password in share api response
2026-05-20 16:11:54 +02:00
Robin Appelman
d80a2a88e5
test: adjust tests for updated local backend check
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-19 21:17:41 +02:00
Robin Appelman
686cb2740c
fix: don't tell the remote their token is lower
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-19 15:47:46 +00:00
Robin Appelman
620b5c3347
fix: improve check if external storage backend is local
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-19 17:27:18 +02:00
Robin Appelman
7fac3ae9c9
fix: remove duplicate 'allow creating local storage' check
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-19 17:27:13 +02:00
Robin Appelman
a808152f61
fix: only allow full admins to create 'token needed' webhooks
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-19 15:18:33 +00:00
Robin Appelman
e6421cb406
test: adjust tests redacted password field
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-19 15:16:13 +00:00
Robin Appelman
af559d1b0a
fix: don't put hashed password in share api response
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-19 15:16:13 +00:00
Joas Schilling
dab6507e27
fix(comments): Add an action to comment notification that dismisses it
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-05-19 09:36:10 +00:00
Stephan Orbaugh
4a0961d4f9
Merge pull request #59982 from nextcloud/backport/59312/stable31
...
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Has been cancelled
Psalm static code analysis / static-code-analysis-security (push) Has been cancelled
Psalm static code analysis / static-code-analysis-ocp (push) Has been cancelled
Psalm static code analysis / static-code-analysis-ncu (push) Has been cancelled
[stable31] Fix removed address book items not being synced between federated instances
2026-05-04 15:12:38 +02:00
Benjamin Gaussorgues
181f34c38f
Merge pull request #59761 from nextcloud/backport/59693/stable31
2026-04-30 15:32:15 +02:00
Benjamin Gaussorgues
911c79f076
Merge pull request #59827 from nextcloud/backport/59597/stable31
2026-04-29 16:34:45 +02:00
Robin Appelman
146ebef567
fix: fix initial addressbook sync skipping items due to ordering
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-28 19:14:09 +02:00
Robin Appelman
e164139c57
test: update tests to new full sync
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-28 19:14:05 +02:00
Robin Appelman
e87645a78a
fix: fix full addressbook sync with truncated results
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-28 19:13:55 +02:00
Robin Appelman
af0069c00e
test: adjust tests to full address book sync
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-28 19:13:18 +02:00
Robin Appelman
be81390ee3
feat: add option to perform a full addressbook sync instead of a delta sync
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-28 19:13:11 +02:00
Robin Appelman
ea92bded98
fix: send deleted addressbook items in caldav sync
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-28 19:12:04 +02:00
Hamza
d0547b39c5
fix: add ACLs for calender delegation
...
Signed-off-by: Hamza <hamzamahjoubi221@gmail.com>
2026-04-28 13:28:33 +02:00
Stephan Orbaugh
5b741f6f4f
Merge pull request #59856 from nextcloud/backport/59780/stable31
...
[stable31] fix(dav): do not list intermediate files
2026-04-28 09:13:44 +02:00
Stephan Orbaugh
4ffb28dc38
Merge pull request #59812 from nextcloud/backport/59788/stable31
...
[stable31] fix: Add missing PasswordConfirmationRequired attributes
2026-04-27 15:09:03 +02:00
Jana Peper
c957c0639f
fix(files): internal drag and drop
...
Signed-off-by: Jana Peper <jana.peper@nextcloud.com>
2026-04-24 19:33:15 +02:00
Benjamin Gaussorgues
f98eeccd2f
Merge pull request #59877 from nextcloud/backport/59767/stable31
Integration sqlite / changes (push) Has been cancelled
Psalm static code analysis / static-code-analysis (push) Has been cancelled
Psalm static code analysis / static-code-analysis-security (push) Has been cancelled
Psalm static code analysis / static-code-analysis-ocp (push) Has been cancelled
Psalm static code analysis / static-code-analysis-ncu (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, --tags ~@large files_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, capabilities_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, collaboration_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, comments_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, dav_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, federation_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, file_conversions) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, files_reminders) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, filesdrop_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, ldap_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, openldap_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, openldap_numerical_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, remoteapi_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, setup_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, sharees_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, sharing_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, theming_features) (push) Has been cancelled
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, videoverification_features) (push) Has been cancelled
Integration sqlite / integration-sqlite-summary (push) Has been cancelled
2026-04-24 11:29:49 +02:00
nfebe
b8cb3c2a73
fix(files_sharing): Restore password guard return for new public shares
...
fix(files_sharing): Restore password guard return for new public shares
Creating a new public share without a password silently succeeded: the
password error was shown but execution continued, and the share was
created without a password. Users had to save a second time for the
password to apply.
The password guard now blocks the save when a new public share is
missing a password. Non-public shares (user/group) are never blocked
by this guard, so they remain unaffected.
Tests invoke the real saveShare method against a stubbed context and
cover the save-twice symptom and the non-public-share regression.
Signed-off-by: nfebe <fenn25.fn@gmail.com>
[skip ci]
2026-04-23 19:08:04 +00:00
Julien Veyssier
adb69101c2
fix(oauth): align stable31 oauth tests with rotateToken backport
...
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2026-04-23 17:27:51 +02:00
Julien Veyssier
dbc976b56b
fix(oauth): rotate the auth token only if the access token rotation was successful
...
fix(oauth): rotate the auth token only if the access token rotation was successful
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
[skip ci]
2026-04-23 17:27:51 +02:00
Julien Veyssier
2c78a352d2
fix(oauth): make the throttling reason more specific
...
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2026-04-23 17:27:51 +02:00
Julien Veyssier
1015650db0
fix(oauth): wrap token rotation in a transaction, only rotate if the token hasn't been modified since we have read it
...
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2026-04-23 17:27:51 +02:00
Peter Ringelmann
058a60774e
fix(frontend): add strict password confirmation for sensitive admin actions
...
Register axios password confirmation interceptors in the apps
management, admin delegation, admin security, and OAuth2 settings
bundles, and pass PwdConfirmationMode.Strict on requests to endpoints
protected with #[PasswordConfirmationRequired(strict: true)], so that
the user password is verified via Basic auth on the request itself
rather than relying on the session timestamp.
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-04-23 11:27:15 +02:00
Côme Chilliet
07e0555c73
fix: Add missing PasswordConfirmationRequired attributes
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-04-23 11:25:20 +02:00
Arthur Schiwon
b49b344a2b
Merge pull request #59845 from nextcloud/backport/59830/stable31
...
[stable31] fix(ImipService): Refactor `IMipService` to improve performance
2026-04-22 21:38:11 +02:00
Ferdinand Thiessen
0b67a0f95b
fix(dav): do not list intermediate upload folders
...
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-04-22 20:30:12 +02:00
Ferdinand Thiessen
7adeca3c5a
fix(dav): do not read intermediate uploads
...
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-04-22 20:28:52 +02:00
David Dreschner
bf32367a1e
fix(ImipService): Make sure non-html fields are escaped and html fields are not
...
Signed-off-by: David Dreschner <david.dreschner@nextcloud.com>
2026-04-22 17:54:31 +02:00
Kent Delante
981b1c14c7
fix(s3): ignore prefixes with repeating delimiters
...
Signed-off-by: Kent Delante <kent@delante.me>
Amazon's hosted S3 service allows repeating delimiters in keys
(e.g. 'path/to//file.txt' or 'path/to///file.txt') and we get
repeating directories in the filecache as a result (based on the
previous examples we get 'path/to/to/file.txt' or
'path/to/to/to/file.txt'). This ignores it and its contents for S3 external storage.
2026-04-22 09:31:05 +00:00
Robin Appelman
6767e5a187
chore: update openapi
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-21 22:06:00 +02:00
Robin Appelman
d0a61c6bc2
chore: psalm fixes
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-21 22:05:39 +02:00
Robin Appelman
aa8e95134d
fix: redact share token if share has more permissions than the current user
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-04-21 15:58:00 +00:00
Côme Chilliet
f25bb40dd0
fix(oauth2): Add missing urlencode for failure redirection
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-04-21 09:04:43 +00:00
Benjamin Gaussorgues
a8a46aa576
Merge pull request #59153 from nextcloud/backport/59079/stable31
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run
2026-04-21 10:15:17 +02:00
Stephan Orbaugh
25e44e17fa
Merge pull request #59668 from nextcloud/backport/58908/stable31
...
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (stable31, 8.1, stable31, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run
[stable31] feat(recent-files): allow configuring image grouping
2026-04-20 14:13:43 +02:00
Stephan Orbaugh
ca05a9ac5c
Merge pull request #58901 from nextcloud/backport/58689/stable31
...
[stable31] Fix federated reshares
2026-04-20 11:52:13 +02:00
Cristian Scheid
ef9d5a940d
feat(files): add configurations for file grouping
...
Signed-off-by: Cristian Scheid <cristianscheid@gmail.com>
2026-04-16 08:35:08 -03:00
Ferdinand Thiessen
21f88b319d
fix(files): properly handle dropped files on subfolders
...
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-04-14 16:57:23 +02:00