diff --git a/CHANGELOG.md b/CHANGELOG.md
index fa16f1d1..c8cda680 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,17 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
## [Unreleased]
+## [4.1.0] - 2026-08-04
+
+### New
+
+- Add support for nc 35
+
+### Fixed
+
+- Update dependencies
+- Update translations from Transifex
+
## [4.0.4] - 2026-05-26
### Fixed
diff --git a/appinfo/info.xml b/appinfo/info.xml
index 09fffded..b7c4ae41 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -5,7 +5,7 @@
Integration of Zammad user support/ticketing solution
- 4.0.4
+ 4.1.0
agpl
Julien Veyssier
Zammad
@@ -18,7 +18,7 @@
https://github.com/nextcloud/integration_zammad/issues
https://github.com/nextcloud/integration_zammad/raw/main/img/screenshot1.jpg
-
+
OCA\Zammad\BackgroundJob\CheckOpenTickets
diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php
index 59cc9200..a4babaaf 100644
--- a/lib/AppInfo/Application.php
+++ b/lib/AppInfo/Application.php
@@ -19,13 +19,11 @@
use OCP\AppFramework\App;
use OCP\AppFramework\Bootstrap\IBootContext;
use OCP\AppFramework\Bootstrap\IBootstrap;
-
use OCP\AppFramework\Bootstrap\IRegistrationContext;
use OCP\Collaboration\Reference\RenderReferenceEvent;
use OCP\Config\IUserConfig;
use OCP\IL10N;
use OCP\INavigationManager;
-
use OCP\IURLGenerator;
use OCP\IUserSession;
use OCP\Notification\IManager as INotificationManager;
diff --git a/lib/BackgroundJob/CheckOpenTickets.php b/lib/BackgroundJob/CheckOpenTickets.php
index 153705d7..98b71ba2 100644
--- a/lib/BackgroundJob/CheckOpenTickets.php
+++ b/lib/BackgroundJob/CheckOpenTickets.php
@@ -26,7 +26,6 @@
use OCA\Zammad\Service\ZammadAPIService;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\TimedJob;
-
use Psr\Log\LoggerInterface;
class CheckOpenTickets extends TimedJob {
diff --git a/lib/Controller/ConfigController.php b/lib/Controller/ConfigController.php
index b3708a62..bebe7fbf 100644
--- a/lib/Controller/ConfigController.php
+++ b/lib/Controller/ConfigController.php
@@ -27,7 +27,6 @@
use OCP\IAppConfig;
use OCP\IL10N;
use OCP\IRequest;
-
use OCP\IURLGenerator;
use OCP\PreConditionNotMetException;
use OCP\Security\ICrypto;
@@ -191,8 +190,8 @@ public function oauthRedirect(string $code = '', string $state = ''): RedirectRe
// get user info
$this->storeUserInfo();
return new RedirectResponse(
- $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'connected-accounts']) .
- '?zammadToken=success'
+ $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'connected-accounts'])
+ . '?zammadToken=success'
);
}
$result = $this->l->t('Error getting OAuth access token.') . ' ' . $result['error'];
@@ -200,8 +199,8 @@ public function oauthRedirect(string $code = '', string $state = ''): RedirectRe
$result = $this->l->t('Error during OAuth exchanges');
}
return new RedirectResponse(
- $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'connected-accounts']) .
- '?zammadToken=error&message=' . urlencode($result)
+ $this->urlGenerator->linkToRoute('settings.PersonalSettings.index', ['section' => 'connected-accounts'])
+ . '?zammadToken=error&message=' . urlencode($result)
);
}
diff --git a/lib/Controller/ZammadAPIController.php b/lib/Controller/ZammadAPIController.php
index 60d7c934..ad9c6227 100644
--- a/lib/Controller/ZammadAPIController.php
+++ b/lib/Controller/ZammadAPIController.php
@@ -20,7 +20,6 @@
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\DataDisplayResponse;
use OCP\AppFramework\Http\DataResponse;
-
use OCP\Config\IUserConfig;
use OCP\IRequest;
use OCP\PreConditionNotMetException;
diff --git a/lib/Dashboard/ZammadWidget.php b/lib/Dashboard/ZammadWidget.php
index a4ae8042..6dcac822 100644
--- a/lib/Dashboard/ZammadWidget.php
+++ b/lib/Dashboard/ZammadWidget.php
@@ -28,7 +28,6 @@
use OCP\Dashboard\IWidget;
use OCP\IL10N;
use OCP\IURLGenerator;
-
use OCP\Util;
class ZammadWidget implements IWidget {
diff --git a/lib/Migration/Version030000Date20241003141518.php b/lib/Migration/Version030000Date20241003141518.php
index 35021442..29da3409 100644
--- a/lib/Migration/Version030000Date20241003141518.php
+++ b/lib/Migration/Version030000Date20241003141518.php
@@ -6,6 +6,7 @@
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
+
namespace OCA\Zammad\Migration;
use Closure;
diff --git a/lib/Migration/Version030200Date20251230225956.php b/lib/Migration/Version030200Date20251230225956.php
index 04a5d4bd..1e49c92a 100644
--- a/lib/Migration/Version030200Date20251230225956.php
+++ b/lib/Migration/Version030200Date20251230225956.php
@@ -6,6 +6,7 @@
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
+
namespace OCA\Zammad\Migration;
use Closure;
diff --git a/lib/Migration/Version040000Date20260129225956.php b/lib/Migration/Version040000Date20260129225956.php
index 40df0406..1c57a308 100644
--- a/lib/Migration/Version040000Date20260129225956.php
+++ b/lib/Migration/Version040000Date20260129225956.php
@@ -6,6 +6,7 @@
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
+
namespace OCA\Zammad\Migration;
use Closure;
diff --git a/lib/Notification/Notifier.php b/lib/Notification/Notifier.php
index ac65b742..d5b355d1 100644
--- a/lib/Notification/Notifier.php
+++ b/lib/Notification/Notifier.php
@@ -85,7 +85,6 @@ public function prepare(INotification $notification, string $languageCode): INot
);
//->setIcon($this->url->getAbsoluteURL($iconUrl));
return $notification;
-
default:
// Unknown subject => Unknown notification => throw
throw new UnknownNotificationException();
diff --git a/lib/Reference/ZammadReferenceProvider.php b/lib/Reference/ZammadReferenceProvider.php
index 6fa83e1b..e803671b 100644
--- a/lib/Reference/ZammadReferenceProvider.php
+++ b/lib/Reference/ZammadReferenceProvider.php
@@ -93,7 +93,6 @@ public function getSupportedSearchProviderIds(): array {
return $ids;
}
return ['zammad-search'];
-
}
private function isMatching(string $referenceText, string $url): bool {
diff --git a/lib/Search/ZammadSearchProvider.php b/lib/Search/ZammadSearchProvider.php
index e5a379b2..22709829 100644
--- a/lib/Search/ZammadSearchProvider.php
+++ b/lib/Search/ZammadSearchProvider.php
@@ -22,6 +22,7 @@
* along with this program. If not, see
*
*/
+
namespace OCA\Zammad\Search;
use DateTime;
diff --git a/lib/Search/ZammadSearchResultEntry.php b/lib/Search/ZammadSearchResultEntry.php
index 6eca4de2..ed56ecc2 100644
--- a/lib/Search/ZammadSearchResultEntry.php
+++ b/lib/Search/ZammadSearchResultEntry.php
@@ -22,6 +22,7 @@
* along with this program. If not, see
*
*/
+
namespace OCA\Zammad\Search;
use OCP\Search\SearchResultEntry;
diff --git a/lib/Service/ZammadAPIService.php b/lib/Service/ZammadAPIService.php
index 77cd6ab7..1658da0a 100644
--- a/lib/Service/ZammadAPIService.php
+++ b/lib/Service/ZammadAPIService.php
@@ -30,7 +30,6 @@
use OCP\IUserManager;
use OCP\Notification\IManager as INotificationManager;
use OCP\PreConditionNotMetException;
-
use OCP\Security\ICrypto;
use Psr\Log\LoggerInterface;
diff --git a/lib/Settings/Admin.php b/lib/Settings/Admin.php
index e3577e9c..f4b0c22b 100644
--- a/lib/Settings/Admin.php
+++ b/lib/Settings/Admin.php
@@ -6,7 +6,6 @@
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState;
use OCP\IAppConfig;
-
use OCP\Settings\ISettings;
class Admin implements ISettings {
diff --git a/lib/Settings/Personal.php b/lib/Settings/Personal.php
index afd9c9bf..fbb9df01 100644
--- a/lib/Settings/Personal.php
+++ b/lib/Settings/Personal.php
@@ -7,7 +7,6 @@
use OCP\AppFramework\Services\IInitialState;
use OCP\Config\IUserConfig;
use OCP\IAppConfig;
-
use OCP\Security\ICrypto;
use OCP\Settings\ISettings;
diff --git a/package.json b/package.json
index 5e544a61..59a2b844 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "integration_zammad",
- "version": "4.0.4",
+ "version": "4.1.0",
"description": "Zammad integration",
"main": "index.js",
"directories": {