Josh
93c0b9c541
test(s3): drop unnecessarily added fclose
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-06-16 15:15:51 +02:00
Josh
8528a2095d
test(s3): make testFileSizes EOF assertion more robust
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-06-16 15:15:34 +02:00
Andy Scherzinger
9882418ba8
Merge pull request #61249 from nextcloud/backport/60972/stable34
...
[stable34] Job run history cleanup
2026-06-16 13:11:25 +02:00
Côme Chilliet
d29d978900
chore: Fix CreateSessionTokenCommandTest and add test for ephemeral session
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-15 16:48:13 +02:00
Benjamin Gaussorgues
a570d6dc5d
feat(snowflake): allows to generate Snowflake IDs matching a timestamp
...
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-06-12 19:40:16 +02:00
Benjamin Gaussorgues
368c4ae515
feat(utils): add getter for serverid with proper default
...
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-06-12 19:40:16 +02:00
Joas Schilling
fa23d8ea77
fix(settings): Fix appstore icon color in settings menu
...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-06-09 14:57:59 +02:00
John Molakvoæ
677044db61
Revert "[stable34] refactor(NavigationManager): move navigation definitions into apps"
2026-06-05 10:39:22 +02:00
Ferdinand Thiessen
e5297a1d04
refactor(NavigationManager): move navigation definitions into apps
...
The manager itself does not need to know what hardcoded-things an app provides,
instead the apps itself should handle this.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-06-03 20:09:48 +02:00
Andy Scherzinger
8a84c44882
Merge pull request #60921 from nextcloud/backport/60728/stable34
...
[stable34] fix(MailPlugin): Stop applying the offset twice and the limit per wide/exact
2026-06-03 08:42:59 +02:00
Andy Scherzinger
132929bd61
Merge pull request #60924 from nextcloud/backport/59813/stable34
...
[stable34] fix(sharing): set STATUS_ACCEPTED when creating USERGROUP subshare on…
2026-06-03 08:42:07 +02:00
Josh
5d86468ca8
test(cache): avoid ordering assumptions in testExtended
...
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-06-02 11:56:50 +00:00
Anna Larch
9af4a2bb5a
fix(sharing): restore STATUS_ACCEPTED for OC-migrated group share subshares
...
When an ownCloud-migrated group share (which has no per-user USERGROUP
subshare) is renamed for the first time, DefaultShareProvider::move()
inserted a new USERGROUP row without setting `accepted`. The column
defaulted to 0 (STATUS_PENDING), causing MountProvider to skip the
share on the next login — the shared file disappeared for the recipient.
Fix: set accepted = STATUS_ACCEPTED explicitly on the INSERT in
DefaultShareProvider::move() for the TYPE_GROUP branch.
Secondary fix: SharedMount::moveMount() silently returned true when
updateFileTarget() threw (e.g. group no longer exists on an OC-migrated
instance). Set $result = false in the catch block so View::rename()
propagates the failure instead of silently corrupting VFS state.
An opt-in occ command (sharing:fix-owncloud-group-shares) with --dry-run
support is included to repair existing broken instances. It targets only
TYPE_USERGROUP subshares with accepted=STATUS_PENDING and permissions!=0
(shares that were accepted but broken by the missing column default),
leaving explicitly declined shares (permissions=0) untouched.
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-06-02 09:14:34 +00:00
provokateurin
f603358186
fix(MailPlugin): Stop applying the offset twice and the limit per wide/exact
...
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-06-02 08:21:45 +02:00
provokateurin
2e9f3b3c63
perf(MailPlugin): Optimize checking group memberships
...
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-06-02 08:19:54 +02:00
provokateurin
b2ccbd389b
fix(MailPlugin): Use correct type for exact id match
...
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-06-02 08:19:54 +02:00
Andy Scherzinger
92034d8288
Merge pull request #60812 from nextcloud/backport/60751/stable34
...
[stable34] test(share20): replace addToAssertionCount checkbox tests in Share20 ManagerTest
2026-06-02 00:30:23 +02:00
Andy Scherzinger
a11567ef0e
Merge pull request #60762 from nextcloud/backport/60744/stable34
...
[stable34] test(db): call parent::tearDown() in DB test classes that skipped it
2026-06-01 23:29:28 +02:00
Anna Larch
5c0e7ae9c7
test(share20): replace addToAssertionCount checkbox tests in Share20 ManagerTest
...
Signed-off-by: Anna Larch <anna@nextcloud.com>
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 23:21:28 +02:00
Andy Scherzinger
865f079415
Merge pull request #60820 from nextcloud/backport/59677/stable34
...
[stable34] fix(appconfig,userconfig): restore pre-migration fallback for ownCloud migration
2026-06-01 22:33:38 +02:00
Benjamin Gaussorgues
e612661d71
feat(jobs): add command to list executed background jobs
...
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-05-29 13:10:15 +00:00
Anna Larch
148c79734d
fix(appconfig,userconfig): restore pre-migration fallback for ownCloud migration
...
AppConfig and UserConfig unconditionally queried NC-only columns (type,
lazy, flags, indexed) that don't exist in ownCloud's database schema,
breaking ownCloud → Nextcloud upgrades entirely before the schema
migration steps could run.
Restore the fallback pattern in both classes: on first loadConfig() call,
if a DBException with REASON_INVALID_FIELD_NAME is thrown, set
$migrationCompleted = false and retry selecting only the columns present
in ownCloud's schema. INSERT and UPDATE statements also omit NC-only
columns when $migrationCompleted is false.
The catch block also guards against infinite recursion: if $migrationCompleted
is already false when the exception fires, the exception is re-thrown
instead of triggering another recursive call.
Fixes: https://github.com/nextcloud/server/issues/57340
Signed-off-by: Anna Larch <anna@nextcloud.com>
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 18:43:14 +00:00
Benjamin Gaussorgues
f936e54b8d
feat(jobs): allow to keep track of job executions
...
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-05-28 10:20:07 +00:00
Benjamin Gaussorgues
9269ac210f
feat(jobs): introduce background job classes registry
...
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-05-28 10:20:06 +00:00
Anna Larch
c2c5805e96
test(db): call parent::tearDown() in DB test classes that skipped it
...
Eight test classes overrode tearDown() for custom DB cleanup but never
called parent::tearDown(). TestCase::tearDown() does three things these
tests were silently skipping after every test method:
- ILockingProvider::releaseAll() — unreleased locks bleed into subsequent
tests and can cause deadlocks or unexpected NotFoundException
- Storage::getGlobalCache()->clearCache() — stale filecache entries from
share/storage tests cause unrelated ObjectStore tests to receive false
from fopen() (fseek() then fails with "Argument must be of type resource")
- UserMountCache::flush() — stale mount cache causes share lookups in
later tests to fail with ShareNotFound
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-05-27 17:52:52 +02:00
Andy Scherzinger
01fe7cb4e5
Merge pull request #60593 from nextcloud/backport/60286/stable34
...
[stable34] fix(AppStore/Fetcher): catch GenericFileException when reading cache file in Fetcher
2026-05-22 09:03:00 +02:00
Anna Larch
adcd78ae16
fix(appstore): address review comments on GenericFileException handling
...
- Attempt delete before logging the warning, so the warning only fires
when we know recovery will succeed
- Log an error (not silently return) when delete itself fails
- Use catch (\Exception) without variable (PHP 8)
- Replace willReturnArgument(1) with explicit willReturn(true) in test
- Add blank lines between logical blocks in test for readability
Signed-off-by: Anna Larch <anna@nextcloud.com>
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 11:21:22 +02:00
Anna Larch
53b72bdf9d
fix(appstore): catch GenericFileException when reading cache file in Fetcher
...
When the appstore cache file exists but getContent() throws a
GenericFileException (I/O error or OS-level permission failure), explicitly
delete the file and recreate it before writing fresh data — mirroring the
NotFoundException recovery path. If deletion itself fails, return [] cleanly.
Previously, the unhandled exception caused the entire apps settings page to
crash. The new test covers both the recovery path and deletion failure.
Signed-off-by: Anna Larch <anna@nextcloud.com>
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-20 11:21:22 +02:00
Robin Appelman
3274518b6d
fix: handle NAT64 addresses in isLocalAddress
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-19 15:37:20 +00:00
Benjamin Gaussorgues
91a4172e35
Merge pull request #60225 from nextcloud/remove-cache-order
...
perf: remove unneeded sort in getFolderContentsById
2026-05-13 16:49:24 +02:00
Carl Schwan
fcb956b5ab
Merge pull request #59753 from nextcloud/work/carl/remove-orderById
...
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, main, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, guests_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / changes (push) Waiting to run
Psalm static code analysis / static-code-analysis (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-security (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-ocp (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-ncu (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-strict (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-summary (push) Blocked by required conditions
perf(share): Remove useless order by id
2026-05-13 12:21:48 +02:00
Ferdinand Thiessen
2b2b9840b8
test(appstore): add test cases for appinfo.xml
...
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-05-12 23:11:24 +02:00
Ferdinand Thiessen
e3783b88e6
fix(AppManager): properly type AppInfo type based on XSD
...
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-05-12 22:52:32 +02:00
Robin Appelman
c91f8b0e2c
test: adjust tests to unsorted folder listing
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-12 19:30:24 +02:00
Carl Schwan
c5c3525a6e
fix: Allow sanitizeHTML to accept null
...
Used like this in many places
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-05-12 18:24:12 +02:00
Carl Schwan
279bface8e
refactor: Delete deprecated code from OC_Util
...
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-05-12 18:24:12 +02:00
Carl Schwan
32bc6f54d3
refactor: Replace old Utils::callRegister with new API
...
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-05-12 18:24:12 +02:00
Benjamin Gaussorgues
b438b345b5
Merge pull request #60317 from nextcloud/fix/snowflake_server_id_doc
...
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, main, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, guests_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / changes (push) Waiting to run
Psalm static code analysis / static-code-analysis (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-security (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-ocp (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-ncu (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-strict (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-summary (push) Blocked by required conditions
fix(snowflake): fix wrong documentation about serverId
2026-05-12 14:16:31 +02:00
Carl Schwan
3dbefe89fd
Merge branch 'master' into work/carl/remove-orderById
2026-05-12 13:59:15 +02:00
Benjamin Gaussorgues
9e36754429
fix(snowflake): fix wrong documentation about serverId
...
Maximum value of a server ID is 511 (9 bits) and not 1023.
Also adjust SetupCheck
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-05-12 10:47:44 +02:00
John Molakvoæ (skjnldsv)
c26b1e4b07
fix(s3): add Content-MD5 header for DeleteObjects to fix AWS SDK v3.339.0+ compatibility
...
AWS SDK PHP v3.339.0+ introduced a breaking change requiring the Content-MD5
header for DeleteObjects operations. This causes 'MissingContentMD5' errors when
using S3-compatible services like MinIO.
Add middleware to automatically calculate and inject the Content-MD5 header on
all DeleteObjects requests. This is applied universally at the S3ConnectionTrait
level, fixing both external storage (AmazonS3) and core ObjectStore (S3) classes.
Fixes: https://github.com/aws/aws-sdk-php/issues/3068
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2026-05-12 09:07:20 +02:00
Kate
ac15544703
Merge pull request #60299 from nextcloud/fix/remove-iservercontainer-from-core-apps
...
Chore: Remove references to deprecated interface IServerContainer
2026-05-12 07:48:58 +02:00
Kate
94c25e210d
Merge pull request #60262 from nextcloud/ernolf/fix/brotli-detection
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, main, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, guests_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, main, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / changes (push) Waiting to run
Psalm static code analysis / static-code-analysis (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-security (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-ocp (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-ncu (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-strict (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis-summary (push) Blocked by required conditions
2026-05-11 20:34:09 +02:00
Côme Chilliet
9680004b58
chore: Remove almost all uses of deprecated IServerContainer in lib/private
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-05-11 16:22:22 +02:00
Côme Chilliet
6664f62a6c
fix: Fix debug mode and tests mocking IAppManager
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-05-11 14:53:29 +02:00
Côme Chilliet
bdfe8ed77e
fix: Add proper methods in IAppManager for namespace handling
...
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-05-11 14:53:29 +02:00
ernolf
04bd872fd2
style(http-client): use explicit bitmask comparison for CURL_VERSION_BROTLI
...
Signed-off-by: ernolf <raphael.gradenwitz@googlemail.com>
2026-05-11 14:06:57 +02:00
ernolf
c1cd4de1cd
fix(http-client): detect brotli support via libcurl, not PHP extension
...
- Fixes a regression introduced in #55433 .
Signed-off-by: ernolf <raphael.gradenwitz@googlemail.com>
2026-05-09 03:23:27 +02:00
Robin Appelman
d307557c56
test: adjust tests to unsorted share listing
...
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-05-08 18:05:06 +02:00
Anna Larch
0681ced203
fix(previews): use createParameter/setParameter to reuse query in chunk loop
...
AI-Assisted-By: claude-sonnet-4-6 <noreply@anthropic.com>
Signed-off-by: Anna Larch <anna@nextcloud.com>
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 10:32:54 +02:00