Upgrade to Nextcloud 30
General
A new dependency type backend was added to info.xml.
If your app requires or makes use of the CalDAV backend in server, please add the backend
caldav to the dependencies of your app.
<dependencies>
<backend>caldav</backend>
</dependencies>
If no app is requiring the CalDAV backend, the CalDAV section in the admin settings will be hidden. Currently, there is no other effect but that might change in the future.
Capabilities
files
blacklist_files_regexis deprecated now useforbidden_filenamesinsteadforbidden_filename_characterswas added to provide a list of characters not allowed within filenamesforbidden_filename_extensionswas added to provide a list of extensions (suffixes) not allowed for filenames
Front-end changes
The overall design was changed to be less round and more compact, as a part of this some CSS variables were added and other deprecated with Nextcloud 30, see CSS variables.
Clickable area
The size of the CSS variable --default-clickable-area variable has shrunk from 44px to 34px.
This will result in several regressions and paper-cuts in your app that will need to be manually fixed.
It’s recommended to:
Link the
@nextcloud/vuecurrent master to your app (pull often cause fixes are getting in there too);Do a codebase-wide search of 44px and replace with the variable –default-clickable-area if appropriate;
Check for regressions and visual bugs;
Report the regression of your app in this issue (you can create a heading with the name of your own app);
Also report
@nextlcoud/vuelibrary regressions if they’re not reported already in their list;Fix regression in your app (only the ones that are unrelated to the
@nextcloud/vuecomponents);
Moreover for different use cases also two new variables were added:
--clickable-area-largefor main UI elements.--clickable-area-smallrepresenting the smallest possible size of interactive elements, used by tertiary actions like filter chips.
Line height
The --default-line-height variable has changed from 24px` to 1.5 for the --default-font-size this
means that the actual value in pixel will go from 24 to 22.5. Although this is a slight change, it’s recommended
to check for visual regressions in your app.
Font sizes
Nextcloud now provides meaningful default styles for heading elements. This can cause visual regressions if your code does not explicitly set font size and weight. If you need to use heading elements outside of text content, you might need to adjust their styles.
Border radius
The border radius CSS variables have been refactored:
Added
--border-radius-smallwas added for smaller elements like chips.--border-radius-containerwas added for smaller containers like action menus.--border-radius-container-largewas added for larger containers like body or modals.--border-radius-elementwas added for interactive elements such as buttons, input, navigation and list items.
Deprecated
--border-radiusis deprecated now in favor of--border-radius-small.--border-radius-largeis deprecated now in favor of--border-radius-element.--border-radius-pillis deprecated now in favor of--border-radius-element.--border-radius-roundedis deprecated now in favor of--border-radius-container.
CSP Nonce
A bug was fixed that prevented Nextcloud form using the CSP_NONCE environment variable,
this now means that the CSP nonce for JavaScript assets is no longer (guaranteed to be) based on the CSRF token.
Instead administrators can choose to use a differently generated token.
When using JavaScript modules this does not make a difference, as they are imported and the nonce has only to be set on the root module (done by Nextcloud),
but if you are using Webpack or otherwise dynamically load scripts, you now need adjust the CSP nonce handling.
Get the CSP nonce:
Either use
getCSPNoncefrom the@nextcloud/authpackage, which is also backwards compatible.Or directly read the nonce from the
<meta name="csp-nonce" />tag.
When using Webpack:
- import { getRequestToken } from '@nextcloud/auth'
- __webpack_nonce__ = btoa(getRequestToken())
+ import { getCSPNonce } from '@nextcloud/auth'
+ __webpack_nonce__ = getCSPNonce()
Deprecated APIs
OC.config.blacklist_files_regexis deprecated now, use thefilescapabilities insteadOC.config.forbidden_filename_charactersis deprecated now, use thefilescapabilities insteadOC.dialogs.fileexistswas already deprecated in Nextcloud 29, but is now also marked as such. UseopenConflictPickerfrom @nextcloud/upload instead.Most
OC.dialogsAPI is now deprecated and will be removed in the future. For generic dialogs use theDialogBuilderfrom the @nextcloud/dialogs. A list of the now deprecated methods:OC.dialogs.alertOC.dialogs.infoOC.dialogs.confirmOC.dialogs.confirmDestructiveOC.dialogs.confirmHtmlOC.dialogs.promptOC.dialogs.message
Back-end changes
Support for PHP 8.0 removed
In this release support for PHP 8.0 was removed. Follow the steps below to make your app compatible.
If
appinfo/info.xmlhas a dependency specification for PHP, increase themin-versionto 8.1.
<dependencies>
<php min-version="8.1" max-version="8.3" />
<nextcloud min-version="27" max-version="30" />
</dependencies>
If your app has a
composer.jsonand the file contains the PHP restrictions frominfo.xml, adjust it as well.
{
"require": {
"php": ">=8.1 <=8.3"
}
}
If you have continuous integration set up, remove PHP 8.0 from the matrices of tests and linters.
Added APIs
OCP\Activity\Exceptions\FilterNotFoundExceptionis thrown byOCP\Activity\IManager::getFilterById()when no filter with the given identifier registeredOCP\Activity\Exceptions\IncompleteActivityExceptionis thrown byOCP\Activity\IManager::publish()when not all required fields have been set on theOCP\Activity\IEventobjectOCP\Activity\Exceptions\InvalidValueExceptionis thrown byOCP\Activity\IEvent::set*()when the value did not match the required criteriaOCP\Activity\Exceptions\SettingNotFoundExceptionis thrown byOCP\Activity\IManager::getSettingById()when no setting with the given identifier registeredOCP\Activity\Exceptions\UnknownActivityExceptionshould be thrown byOCP\Activity\IProvider::parse()when they didn’t handle the eventOCP\AppFramework\Db\QbMapper::yieldEntities()was added to allow iterating over entities by returning aGeneratorwithout loading all of them into memory.OCP\Authentication\Token\IToken::SCOPE_FILESYSTEMandOCP\Authentication\Token\IToken::SCOPE_SKIP_PASSWORD_VALIDATIONconstants were introduced as constants for token scopes. Previously, the value ofSCOPE_FILESYSTEMwas hardcoded.OCP\Notification\IncompleteNotificationExceptionis thrown byOCP\Notification\IManager::notify()when not all required fields have been set on theOCP\Notification\INotificationobjectOCP\Notification\IncompleteParsedNotificationExceptionis thrown byOCP\Notification\IManager::prepare()when noOCP\Notification\INotifierhandled theOCP\Notification\INotificationobjectOCP\Notification\InvalidValueExceptionis thrown byOCP\Notification\IAction::set*()andOCP\Notification\INotification::set*()when the value did not match the required criteriaOCP\Notification\UnknownNotificationExceptionshould be thrown byOCP\Notification\INotifier::prepare()when they didn’t handle the notificationOCA\Files_Trashbin\Trash\ITrashItem::getDeletedBy()should return the user who deleted the item or null if unknownOCP\IUser::getPasswordHash()should return the password hash of the userOCP\IUser::setPasswordHash()should set the password hash of the userOCP\AppFramework\Http\Attribute\OpenAPI::SCOPE_EX_APPattribute for scoping APIs only to be used by ExApps.OCP\AppFramework\Http\Attribute\ExAppRequiredattribute for restricting controller methods to be only accessible by ExApps.OCP\Collaboration\Reference\IPublicReferenceProvideradded for reference providers that support reference lookups from public shares.OCP\Files\IFilenameValidatorwas added to allow storage independent filename validation.OCP\Files\Storage\IStorage::setOwner()was added to allow setting the owner of a storage so it can be handled independently from the current session user. This is especially useful for storages that have a shared ownership like groupfolders, external storages where the storage owner needs to be set to the user that is initializing the storage through their personal mountpoint.ShareAPIController::sendShareEmail()was added and is accessible via ocs/api/v1/shares/{shareId}/send-email. See send-email documentation.OCP\Calendar\Room\IManager::update()was added to update all rooms from all backends right now.OCP\Calendar\Resource\IManager::update()was added to update all resources from all backends right now.OCP\App\IAppManager::BACKEND_CALDAVwas added to represent the caldav backend dependency forisBackendRequired().OCP\App\IAppManager::isBackendRequired()was added to check if at least one app requires a specific backend (currently onlycaldav).OCP\Accounts\IAccountManager::PROPERTY_BIRTHDATEwas added to allow users to configure their date of birth in their profiles.OCP\TaskProcessing`was added to unify task processing of AI tasks and other types of tasks. See Task ProcessingOCP\AppFramework\Bootstrap\IRegistrationContext::registerTaskProcessingProvider()was added to allow registering task processing providersOCP\AppFramework\Bootstrap\IRegistrationContext::registerTaskProcessingTaskType()was added to allow registering task processing task typesOCP\Files\IRootFolder::getAppDataDirectoryName()was added to allow getting the name of the app data directoryOCP\Console\ReservedOptionswas added and contains constants for options reserved for occ core features.--debug-logand--debug-log-levelare now reserved by occ as they allow to show debug information to the output on any occ command.OCP\Security\IHasher::validate()should return true if the passed string is a valid hash generated byOCP\Security\IHasher::hash()OCP\AppFramework\Http\JSONResponse()constructor now supports passing additionaljson_encodeflags, see https://www.php.net/manual/en/function.json-encode.php for detailsOCP\EventDispatcher\IWebhookCompatibleEventis a new interface for events compatible with webhooks (see webhook_listeners documentation).OCP\EventDispatcher\JsonSerializeris a new public helper for serializing users and fileinfos to json (ie for webhook events)
Changed APIs
OCP\Activity\IEvent::set*()(all setters) throwOCP\Activity\Exceptions\InvalidValueExceptioninstead of\InvalidArgumentExceptionwhen the value does not match the required criteria.Calling
OCP\Activity\IEvent::setIcon()with a relative URL is deprecated and will throwOCP\Activity\Exceptions\InvalidValueExceptionin a future version.Calling
OCP\Activity\IEvent::setLink()with a relative URL is deprecated and will throwOCP\Activity\Exceptions\InvalidValueExceptionin a future version.OCP\Activity\IManager::publish()throwsOCP\Activity\Exceptions\IncompleteActivityExceptioninstead of\InvalidArgumentExceptionwhen a required field is not set before publishing.OCP\Activity\IProvider::parse()should no longer throw\InvalidArgumentException.OCP\Activity\Exceptions\UnknownActivityExceptionshould be thrown when the provider does not want to handle the event.\InvalidArgumentExceptionare logged as debug for now and will be logged as error in the future to help developers find issues from code that unintentionally threw\InvalidArgumentExceptionOCP\Dashboard\IIconWidget::getIconUrl()clarification: The URL must be an absolute URL. The served icon should be dark. The icon will be inverted automatically in mobile clients and when using dark mode.OCP\Dashboard\IWidget::getId()clarification: Implementations should only returna-z,0-9,-and_based strings starting with a letter, as the identifier is used in CSS classes and that is otherwise invalidOCP\Dashboard\IWidget::getIconClass()clarification: The returned CSS class should render a dark icon. The icon will be inverted automatically in mobile clients and when using dark mode. Therefore, it is NOT recommended to use a css class that sets the background withvar(--icon-…)`as those will adapt to dark/bright mode in the web and still be inverted resulting in a dark icon on dark background.OCP\Files\Lock\ILockManager::registerLazyLockProvider()was added to replaceregisterLockProviderand allows to register a lock provider that is only loaded when needed.OCP\Notification\IAction::set*()(all setters) throwOCP\Notification\InvalidValueExceptioninstead of\InvalidArgumentExceptionwhen the value does not match the required criteria.Calling
OCP\Notification\IAction::setLink()with a relative URL is deprecated and will throwOCP\Notification\InvalidValueExceptionin a future version.OCP\Notification\IApp::notify()throwsOCP\Notification\IncompleteNotificationExceptioninstead of\InvalidArgumentExceptionwhen a required field is not set before notifying.OCP\Notification\IManager::prepare()throwsOCP\Notification\IncompleteParsedNotificationExceptioninstead of\InvalidArgumentExceptionwhen a required field is not set after preparing a notification.OCP\Notification\INotification::set*()(all setters) throwOCP\Notification\InvalidValueExceptioninstead of\InvalidArgumentExceptionwhen the value does not match the required criteria.Calling
OCP\Notification\INotification::setLink()with a relative URL is deprecated and will throwOCP\Notification\InvalidValueExceptionin a future version.Calling
OCP\Notification\INotification::setIcon()with a relative URL is deprecated and will throwOCP\Notification\InvalidValueExceptionin a future version.OCP\Notification\INotifier::prepare()should no longer throw\InvalidArgumentException.OCP\Notification\UnknownNotificationExceptionshould be thrown when the notifier does not want to handle the notification.\InvalidArgumentExceptionare logged as debug for now and will be logged as error in the future to help developers find issues from code that unintentionally threw\InvalidArgumentExceptionOCP\IGroupManager::isAdmin()should be used instead of checking is current user is part of admin group manually.IAttributesenabledkey have bee renamed tovalueand supports more than boolean.OCP\DB\Exceptionuses the reason codeREASON_LOCK_WAIT_TIMEOUTnow, instead ofREASON_SERVERfor a LockWaitTimeoutException.OCP\Share\IShare::setNoExpirationDate()now sets an overwrite flag for falsy expiry date values, this flag is used to determine whether the system should overwrite falsy expiry date values before creating a share.OCP\Share\IShare::getNoExpirationDate()retrieves the value of thenoExpirationDateflag.OCP\IUserManager::getDisabledUsersnow has a third parameter for a search string.OCP\User\Backend\IProvideEnabledStateBackend::getDisabledUserListnow has a third parameter for a search string.Legacy class
OC_EventSourcewas moved toOCnamespace with theOC_prefix. It should not change anything if you already correctly use theOCP\IEventSourceFactoryto create these objects.OCP\Files\Events\Node\AbstractNodeEventandOCP\Files\Events\Node\AbstractNodesEventnow implementsOCP\EventDispatcher\IWebhookCompatibleEventso that all file/folder related events are available for webhooks (see webhook_listeners documentation).
Deprecated APIs
Using the
@PasswordConfirmationRequiredannotation is deprecated and the#[OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired]attribute should be used instead.Using the
@CORSannotation is deprecated and the#[OCP\AppFramework\Http\Attribute\CORS]attribute should be used instead.Using the
@PublicPageannotation is deprecated and the#[OCP\AppFramework\Http\Attribute\PublicPage]attribute should be used instead.Using the
@ExAppRequiredannotation is deprecated and the#[OCP\AppFramework\Http\Attribute\ExAppRequired]attribute should be used instead.Using the
@AuthorizedAdminSettingannotation is deprecated and the#[OCP\AppFramework\Http\Attribute\AuthorizedAdminSetting]attribute should be used instead.Using the
@SubAdminRequiredannotation is deprecated and the#[OCP\AppFramework\Http\Attribute\SubAdminRequired]attribute should be used instead.Using the
@NoAdminRequiredannotation is deprecated and the#[OCP\AppFramework\Http\Attribute\NoAdminRequired]attribute should be used instead.Using the
@StrictCookieRequiredannotation is deprecated and the#[OCP\AppFramework\Http\Attribute\StrictCookiesRequired]attribute should be used instead.Using the
@NoCSRFRequiredannotation is deprecated and the#[OCP\AppFramework\Http\Attribute\NoCSRFRequired]attribute should be used instead.Using the
OCP\Group\Backend\ICreateGroupBackendinterface is now deprecated and theOCP\Group\Backend\ICreateNamedGroupBackendinterface should be used instead.Calling
OCP\DB\QueryBuilder\IExpressionBuilder::andX()without arguments is deprecated and will throw an exception in a future version as the underlying library is removing the functionality.Calling
OCP\DB\QueryBuilder\IExpressionBuilder::orX()without arguments is deprecated and will throw an exception in a future version as the underlying library is removing the functionality.Calling
OCP\DB\QueryBuilder\IQueryBuilder::delete()with$aliasis deprecated and will throw an exception in a future version as the underlying library is removing the functionality.Calling
OCP\DB\QueryBuilder\IQueryBuilder::getQueryPart()is deprecated and will throw an exception in a future version as the underlying library is removing the functionality.Calling
OCP\DB\QueryBuilder\IQueryBuilder::getQueryParts()is deprecated and will throw an exception in a future version as the underlying library is removing the functionality.Calling
OCP\DB\QueryBuilder\IQueryBuilder::getState()is deprecated and will throw an exception in a future version as the underlying library is removing the functionality.Calling
OCP\DB\QueryBuilder\IQueryBuilder::resetQueryPart()is deprecated and will throw an exception in a future version as the underlying library is removing the functionality. Create a new query builder object instead.Calling
OCP\DB\QueryBuilder\IQueryBuilder::resetQueryParts()is deprecated and will throw an exception in a future version as the underlying library is removing the functionality. Create a new query builder object instead.Calling
OCP\DB\QueryBuilder\IQueryBuilder::update()with$aliasis deprecated and will throw an exception in a future version as the underlying library is removing the functionality.Calling
OCP\IDBConnection::getDatabasePlatform()is deprecated and will throw an exception in a future version as the underlying library is renaming and removing platforms which breaks the backwards-compatibility. UsegetDatabaseProvider()instead.Calling
OCP\Files\Lock\ILockManager::registerLockProvider()is deprecated and will be removed in the future. UseregisterLazyLockProvider()instead.Using
OCP\Translationis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing).Using
OCP\Translation\CouldNotTranslateExceptionis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing).Using
OCP\Translation\IDetectLanguageProvideris deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing).Using
OCP\Translation\ITranslationManageris deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing).Using
OCP\Translation\ITranslationProvideris deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing).Using
OCP\Translation\ITranslationProviderWithIdis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing).Using
OCP\Translation\ITranslationProviderWithUserIdis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing).Using
OCP\Translation\LanguageTupleis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing).Using
OCP\SpeechToTextis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingSpeechToTextproviders will continue to work with the TaskProcessing API until then.Using
OCP\SpeechToText\Events\AbstractTranscriptionEventis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingSpeechToTextproviders will continue to work with the TaskProcessing API until then.Using
OCP\SpeechToText\Events\TranscriptionFailedEventis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingSpeechToTextproviders will continue to work with the TaskProcessing API until then.Using
OCP\SpeechToText\Events\TranscriptionSuccessfulEventis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingSpeechToTextproviders will continue to work with the TaskProcessing API until then.Using
OCP\SpeechToText\ISpeechToTextManageris deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingSpeechToTextproviders will continue to work with the TaskProcessing API until then.Using
OCP\SpeechToText\ISpeechToTextProvideris deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingSpeechToTextproviders will continue to work with the TaskProcessing API until then.Using
OCP\SpeechToText\ISpeechToTextProviderWithIdis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingSpeechToTextproviders will continue to work with the TaskProcessing API until then.Using
OCP\SpeechToText\ISpeechToTextProviderWithUserIdis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingSpeechToTextproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextToImageis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextToImageproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\Taskis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextToImageproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\IProviderWithUserIdis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextToImageproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\IProvideris deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextToImageproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\IManageris deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextToImageproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\Exception\TextToImageExceptionis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextToImageproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\Exception\TaskNotFoundExceptionis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextToImageproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\Exception\TaskFailureExceptionis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextToImageproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\Events\TaskSuccessfulEventis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextToImageproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\Events\TaskFailedEventis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextToImageproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\Events\AbstractTextToImageEventis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextToImageproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessingis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\Events\AbstractTextProcessingEventis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\Events\TaskFailedEventis deprecated and will be removed in the future.UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\Events\TaskSuccessfulEventis deprecated and will be removed in the future.UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\Exception\TaskFailureExceptionis deprecated and will be removed in the future.UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\FreePromptTaskTypeis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\HeadlineTaskTypeis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\IManageris deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\IProvideris deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\IProviderWithExpectedRuntimeis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\IProviderWithIdis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\IProviderWithUserIdis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\ITaskTypeis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\SummaryTaskTypeis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\Taskis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\TopicsTaskTypeis deprecated and will be removed in the future. UseOCP\TaskProcessinginstead (see Task Processing). ExistingTextProcessingproviders will continue to work with the TaskProcessing API until then.Using
OCP\Group\Backend\ICreateGroupBackendinterface is deprecated and will be removed in the future. UseOCP\Group\Backend\ICreateNamedGroupBackendinstead.
Removed APIs
OCP\Util::isValidFileNamewas deprecated in 8.1.0 and is now removed, use eitherOCP\Files\Storage\IStorage::verifyPathor the newOCP\Files\IFilenameValidator.OCP\Util::getForbiddenFileNameCharswas removed, use eitherOCP\Files\Storage\IStorage::verifyPathor the newOCP\Files\IFilenameValidatorfor filename validation.