Skip to content

Upstream sync: 232 new commit(s) from nextcloud/server - #3

Merged
xeniacloud merged 232 commits into
masterfrom
upstream-sync/master
Sep 20, 2026
Merged

xeniacloud merged 232 commits into
masterfrom
upstream-sync/master

Conversation

@xeniacloud

@xeniacloud xeniacloud commented Sep 20, 2026

Copy link
Copy Markdown

Automated one-time catch-up sync of nextcloud/server master into this fork.

Scale note: this fork was 231 commits behind upstream at the time of this sync. This is a large, wide-ranging catch-up (not a routine weekly sync) — please review carefully rather than merging quickly.

The merge completed cleanly, with no conflicts.

This PR is not auto-merged. Review before merging.

Upstream commits (first 50 of 231, newest first)

...and 181 more

🤖 Generated with Claude Code

veryCrunchy and others added 30 commits September 3, 2026 10:54
Assisted-by: Codex:GPT-5
Signed-off-by: veryCrunchy <me@verycrunchy.dev>
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Signed-off-by: Enjeck C. <patrathewhiz@gmail.com>
This was a feature available to allow transfering all files in one go.
It was dropped by acciendent in Nextcloud 34.

Bringing back the feature as well as adding e2e tests (regression tests)
for the overall ownership transfer.

AI assisted for the tests part:

Assisted-by: ClaudeCode:claude-opus-5
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Assisted-by: ClaudeCode:claude-sonnet-5
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
This use a private trait to have a consistent behavior

Assisted-by: ClaudeCode:claude-sonnet-5
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
…thods

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Unfortunately static has return type didn't fix it but it is still more
correct.

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
And use it in LoginController

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
wires suggestedValues into both the legacy stecman _completion hook and
Symfony's native _complete/completion path, supporting static lists and
dynamic (static or instance-method) callables

Assisted-by: Claude:claude-sonnet-5
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Including with auto-completion

Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Assisted-by: ClaudeCode:claude-sonnet-5
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
For large operations the cache infinitly grows and invalid entries were
never invalidated.
So memory cap the cache and remove outdated entries.

Assisted-by: ClaudeCode:claude-opus-5
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
clear() no longer dispatches removal events for every entry of the
storage. With admin_audit enabled that wrote one log line per file of a
deleted user. It now removes the filecache_extended and file metadata
rows batch by batch, before deleting the filecache rows themselves.

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Signed-off-by: kristian-zendato <kristian.zendato@nextcloud.com>
cleanByMountId() deleted the filecache rows of an unmounted storage but
left their filecache_extended and file metadata rows behind. It now goes
through Storage::removeFileCacheEntries(), the same path clear() uses.

files:cleanup also removes filecache_extended, files_metadata and
files_metadata_index rows whose file is no longer in the filecache, so
rows orphaned before this fix are cleaned up too.

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
… holds

Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
Signed-off-by: Robin Appelman <robin@icewind.nl>
Signed-off-by: Robin Appelman <robin@icewind.nl>
come-nc and others added 29 commits September 19, 2026 22:44
…-value-ordering

fix(SetupChecks): accept order-independent X-Robots-Tag directives
…ify-expiration-date-hook

chore(sharing): drop the unused \OC\Share verifyExpirationDate hook
…m-teardown

chore(Filesystem): Deprecate tearDown()
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
NcSelectTags only lists five options by default, so the tag editor in the
admin settings, the tag field in the files sidebar and the tag check of the
workflow engine each stopped at five tags.

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
A copy re-encrypts the target, so the signature of its blocks is keyed on
the version of the target - the version of the file it overwrites plus one -
and not on the version of the source. Two writers overwrite that value after
the stream recorded it: updateEncryptedVersion() resets it to 1 for every
copy, and Cache::copyFromCache() then puts the source's version on the
target. Reading the copy back fails with "Bad Signature" whenever those
differ, which is the case for every copy of a file that was written more
than once and for every copy onto an existing file.

Take the version the stream recorded for the target instead of resetting it,
and let it win over the source's version when the cache entry of the copy is
written.

Assisted-by: ClaudeCode:claude-opus-5
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
The `files-main` and `files-sidebar` bundles both contain the sidebar
modules, because the Webpack build only shares modules from `node_modules`
between entry points. The data provider registered by the files app was
therefore invisible to `initializeSidebar()` in the `files-sidebar` bundle,
which rendered a second, standalone sidebar next to the one the files app
already renders - so `#app-sidebar-vue` existed twice.

Keep the data provider, the standalone provider and the mounted instance on
`OCA.Files.Sidebar._sharedState` instead, so every entry point sees the same
state - the same approach `getPinia()` already uses for the pinia instance.

Assisted-by: ClaudeCode:claude-opus-5
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Also:
- Restart on failures
- Move the worker config to the franken directive

Signed-off-by: Louis Chmn <louis@chmn.me>
…red-storage-init

perf: use findById for worst case only when resolving SharedMount storage
…yfile-site-address

feat(frankenphp): Make host name configurable
feat(files): bring back the Sidebar API
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
…-encrypted-version

fix(encryption): keep the encrypted version the copy was written with
…ct-all-tags

fix(systemtags): offer every tag in the tag selects
…-to-di

feat: Add IUserFolder to dependency injection container
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
Signed-off-by: GitHub <noreply@github.com>
…s without href links

When the account menu entry doesn't have an href property (for instance the entry added by First Run
Wizard), the ID is duplicated between the list item and the <a> tag it contains

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
The size of an encrypted file lives in `unencrypted_size`, and both
CacheEntry::getUnencryptedSize() and FileInfo::getSize() prefer it over
`size`. Cache::copyFromCache() copied the `encrypted` mark without it, so
the copy of an encrypted file was marked encrypted with an unencrypted size
of 0 and reported as empty - in the web UI, to clients and for quota - until
something rescanned it.

Copy the unencrypted size alongside the encrypted version, and reset it when
the mark is dropped for a target that is not encrypted, where the size is
read from `size`.

Assisted-by: ClaudeCode:claude-opus-5
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
…-unencrypted-size

fix(files): carry the unencrypted size over when copying a cache entry
…ated-legacy-helper

chore: Remove unused long-deprecated methods from OC_Helper
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
…controller

chore: Add missing error route in error controller
…-account-menu-entry

fix(account menu): avoid having duplicate IDs for account menu entries without href links
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
@xeniacloud
xeniacloud merged commit a79c4ba into master Sep 20, 2026
7 of 29 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.