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_regex
is deprecated now useforbidden_filenames
insteadforbidden_filename_characters
was added to provide a list of characters not allowed within filenamesforbidden_filename_extensions
was 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 --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/vue
current 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/vue
library regressions if they’re not reported already in their list;Fix regression in your app (only the ones that are unrelated to the
@nextcloud/vue
components);
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-small
was added for smaller elements like chips.--border-radius-container
was added for smaller containers like action menus.--border-radius-container-large
was added for larger containers like body or modals.--border-radius-element
was added for interactive elements such as buttons, input, navigation and list items.
Deprecated
--border-radius
is deprecated now in favor of--border-radius-small
.--border-radius-large
is deprecated now in favor of--border-radius-element
.--border-radius-pill
is deprecated now in favor of--border-radius-element
.--border-radius-rounded
is 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
getCSPNonce
from the@nextcloud/auth
package, 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_regex
is deprecated now, use thefiles
capabilities insteadOC.config.forbidden_filename_characters
is deprecated now, use thefiles
capabilities insteadOC.dialogs.fileexists
was already deprecated in Nextcloud 29, but is now also marked as such. UseopenConflictPicker
from @nextcloud/upload instead.Most
OC.dialogs
API is now deprecated and will be removed in the future. For generic dialogs use theDialogBuilder
from the @nextcloud/dialogs. A list of the now deprecated methods:OC.dialogs.alert
OC.dialogs.info
OC.dialogs.confirm
OC.dialogs.confirmDestructive
OC.dialogs.confirmHtml
OC.dialogs.prompt
OC.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.xml
has a dependency specification for PHP, increase themin-version
to 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.json
and 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\FilterNotFoundException
is thrown byOCP\Activity\IManager::getFilterById()
when no filter with the given identifier registeredOCP\Activity\Exceptions\IncompleteActivityException
is thrown byOCP\Activity\IManager::publish()
when not all required fields have been set on theOCP\Activity\IEvent
objectOCP\Activity\Exceptions\InvalidValueException
is thrown byOCP\Activity\IEvent::set*()
when the value did not match the required criteriaOCP\Activity\Exceptions\SettingNotFoundException
is thrown byOCP\Activity\IManager::getSettingById()
when no setting with the given identifier registeredOCP\Activity\Exceptions\UnknownActivityException
should 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 aGenerator
without loading all of them into memory.OCP\Authentication\Token\IToken::SCOPE_FILESYSTEM
andOCP\Authentication\Token\IToken::SCOPE_SKIP_PASSWORD_VALIDATION
constants were introduced as constants for token scopes. Previously, the value ofSCOPE_FILESYSTEM
was hardcoded.OCP\Notification\IncompleteNotificationException
is thrown byOCP\Notification\IManager::notify()
when not all required fields have been set on theOCP\Notification\INotification
objectOCP\Notification\IncompleteParsedNotificationException
is thrown byOCP\Notification\IManager::prepare()
when noOCP\Notification\INotifier
handled theOCP\Notification\INotification
objectOCP\Notification\InvalidValueException
is thrown byOCP\Notification\IAction::set*()
andOCP\Notification\INotification::set*()
when the value did not match the required criteriaOCP\Notification\UnknownNotificationException
should 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_APP
attribute for scoping APIs only to be used by ExApps.OCP\AppFramework\Http\Attribute\ExAppRequired
attribute for restricting controller methods to be only accessible by ExApps.OCP\Collaboration\Reference\IPublicReferenceProvider
added for reference providers that support reference lookups from public shares.OCP\Files\IFilenameValidator
was 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_CALDAV
was 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_BIRTHDATE
was 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\ReservedOptions
was added and contains constants for options reserved for occ core features.--debug-log
and--debug-log-level
are 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_encode
flags, see https://www.php.net/manual/en/function.json-encode.php for details
Changed APIs
OCP\Activity\IEvent::set*()
(all setters) throwOCP\Activity\Exceptions\InvalidValueException
instead of\InvalidArgumentException
when the value does not match the required criteria.Calling
OCP\Activity\IEvent::setIcon()
with a relative URL is deprecated and will throwOCP\Activity\Exceptions\InvalidValueException
in a future version.Calling
OCP\Activity\IEvent::setLink()
with a relative URL is deprecated and will throwOCP\Activity\Exceptions\InvalidValueException
in a future version.OCP\Activity\IManager::publish()
throwsOCP\Activity\Exceptions\IncompleteActivityException
instead of\InvalidArgumentException
when a required field is not set before publishing.OCP\Activity\IProvider::parse()
should no longer throw\InvalidArgumentException
.OCP\Activity\Exceptions\UnknownNotificationException
should be thrown when the provider does not want to handle the event.\InvalidArgumentException
are logged as debug for now and will be logged as error in the future to help developers find issues from code that unintentionally threw\InvalidArgumentException
OCP\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 replaceregisterLockProvider
and allows to register a lock provider that is only loaded when needed.OCP\Notification\IAction::set*()
(all setters) throwOCP\Notification\InvalidValueException
instead of\InvalidArgumentException
when the value does not match the required criteria.Calling
OCP\Notification\IAction::setLink()
with a relative URL is deprecated and will throwOCP\Notification\InvalidValueException
in a future version.OCP\Notification\IApp::notify()
throwsOCP\Notification\IncompleteNotificationException
instead of\InvalidArgumentException
when a required field is not set before notifying.OCP\Notification\IManager::prepare()
throwsOCP\Notification\IncompleteParsedNotificationException
instead of\InvalidArgumentException
when a required field is not set after preparing a notification.OCP\Notification\INotification::set*()
(all setters) throwOCP\Notification\InvalidValueException
instead of\InvalidArgumentException
when the value does not match the required criteria.Calling
OCP\Notification\INotification::setLink()
with a relative URL is deprecated and will throwOCP\Notification\InvalidValueException
in a future version.Calling
OCP\Notification\INotification::setIcon()
with a relative URL is deprecated and will throwOCP\Notification\InvalidValueException
in a future version.OCP\Notification\INotifier::prepare()
should no longer throw\InvalidArgumentException
.OCP\Notification\UnknownNotificationException
should be thrown when the notifier does not want to handle the notification.\InvalidArgumentException
are logged as debug for now and will be logged as error in the future to help developers find issues from code that unintentionally threw\InvalidArgumentException
OCP\IGroupManager::isAdmin()
should be used instead of checking is current user is part of admin group manually.IAttributes
enabled
key have bee renamed tovalue
and supports more than boolean.OCP\DB\Exception
uses the reason codeREASON_LOCK_WAIT_TIMEOUT
now, instead ofREASON_SERVER
for 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 thenoExpirationDate
flag.
Deprecated APIs
Using the
@PasswordConfirmationRequired
annotation is deprecated and the#[OCP\AppFramework\Http\Attribute\PasswordConfirmationRequired]
attribute should be used instead.Using the
@CORS
annotation is deprecated and the#[OCP\AppFramework\Http\Attribute\CORS]
attribute should be used instead.Using the
@PublicPage
annotation is deprecated and the#[OCP\AppFramework\Http\Attribute\PublicPage]
attribute should be used instead.Using the
@ExAppRequired
annotation is deprecated and the#[OCP\AppFramework\Http\Attribute\ExAppRequired]
attribute should be used instead.Using the
@AuthorizedAdminSetting
annotation is deprecated and the#[OCP\AppFramework\Http\Attribute\AuthorizedAdminSetting]
attribute should be used instead.Using the
@SubAdminRequired
annotation is deprecated and the#[OCP\AppFramework\Http\Attribute\SubAdminRequired]
attribute should be used instead.Using the
@NoAdminRequired
annotation is deprecated and the#[OCP\AppFramework\Http\Attribute\NoAdminRequired]
attribute should be used instead.Using the
@StrictCookieRequired
annotation is deprecated and the#[OCP\AppFramework\Http\Attribute\StrictCookiesRequired]
attribute should be used instead.Using the
@NoCSRFRequired
annotation is deprecated and the#[OCP\AppFramework\Http\Attribute\NoCSRFRequired]
attribute should be used instead.Using the
OCP\Group\Backend\ICreateGroupBackend
interface is now deprecated and theOCP\Group\Backend\ICreateNamedGroupBackend
interface 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$alias
is 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$alias
is 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\Translation
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing).Using
OCP\Translation\CouldNotTranslateException
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing).Using
OCP\Translation\IDetectLanguageProvider
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing).Using
OCP\Translation\ITranslationManager
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing).Using
OCP\Translation\ITranslationProvider
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing).Using
OCP\Translation\ITranslationProviderWithId
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing).Using
OCP\Translation\ITranslationProviderWithUserId
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing).Using
OCP\Translation\LanguageTuple
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing).Using
OCP\SpeechToText
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingSpeechToText
providers will continue to work with the TaskProcessing API until then.Using
OCP\SpeechToText\Events\AbstractTranscriptionEvent
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingSpeechToText
providers will continue to work with the TaskProcessing API until then.Using
OCP\SpeechToText\Events\TranscriptionFailedEvent
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingSpeechToText
providers will continue to work with the TaskProcessing API until then.Using
OCP\SpeechToText\Events\TranscriptionSuccessfulEvent
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingSpeechToText
providers will continue to work with the TaskProcessing API until then.Using
OCP\SpeechToText\ISpeechToTextManager
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingSpeechToText
providers will continue to work with the TaskProcessing API until then.Using
OCP\SpeechToText\ISpeechToTextProvider
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingSpeechToText
providers will continue to work with the TaskProcessing API until then.Using
OCP\SpeechToText\ISpeechToTextProviderWithId
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingSpeechToText
providers will continue to work with the TaskProcessing API until then.Using
OCP\SpeechToText\ISpeechToTextProviderWithUserId
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingSpeechToText
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextToImage
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\Task
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextToImage
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\IProviderWithUserId
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextToImage
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\IProvider
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextToImage
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\IManager
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextToImage
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\Exception\TextToImageException
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextToImage
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\Exception\TaskNotFoundException
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextToImage
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\Exception\TaskFailureException
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextToImage
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\Events\TaskSuccessfulEvent
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextToImage
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\Events\TaskFailedEvent
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextToImage
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextToImage\Events\AbstractTextToImageEvent
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextToImage
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\Events\AbstractTextProcessingEvent
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\Events\TaskFailedEvent
is deprecated and will be removed in the future.UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\Events\TaskSuccessfulEvent
is deprecated and will be removed in the future.UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\Exception\TaskFailureException
is deprecated and will be removed in the future.UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\FreePromptTaskType
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\HeadlineTaskType
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\IManager
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\IProvider
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\IProviderWithExpectedRuntime
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\IProviderWithId
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\IProviderWithUserId
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\ITaskType
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\SummaryTaskType
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\Task
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.Using
OCP\TextProcessing\TopicsTaskType
is deprecated and will be removed in the future. UseOCP\TaskProcessing
instead (see Task Processing). ExistingTextProcessing
providers will continue to work with the TaskProcessing API until then.
Removed APIs
OCP\Util::isValidFileName
was deprecated in 8.1.0 and is now removed, use eitherOCP\Files\Storage\IStorage::verifyPath
or the newOCP\Files\IFilenameValidator
.OCP\Util::getForbiddenFileNameChars
was removed, use eitherOCP\Files\Storage\IStorage::verifyPath
or the newOCP\Files\IFilenameValidator
for filename validation.