Commit graph

17195 commits

Author SHA1 Message Date
Kate
452efda021
Merge pull request #61538 from nextcloud/refactor/isecurerandom/use-randomizer
chore(ISecureRandom): Deprecate generate() in favor of Randomizer::getBytesFromString()
2026-06-24 16:12:12 +02:00
Kate
d19f8d53fe
Merge pull request #61534 from nextcloud/fix/collaborators/search-without-remote
fix(Collaborators): Fix matching emails to remote users if no remote results are present
2026-06-24 15:31:43 +02:00
Julien Veyssier
0ade15d9fe
Merge pull request #61127 from nextcloud/feat/noid/subtitles-task
feat(TaskProcessing): add AudioToTextSubtitles TaskType
2026-06-24 11:57:24 +02:00
provokateurin
7e96a52a18
refactor(SecureRandom): Use Randomizer::getBytesFromString()
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-06-24 11:04:54 +02:00
Ferdinand Thiessen
2afb18ba20
Merge pull request #61532 from nextcloud/fix/logger-normalize-later
perf(log): normalize log data only when logging
2026-06-23 22:30:01 +02:00
Andy Scherzinger
20dbecde69
Merge pull request #61539 from nextcloud/carl/soft-remove-emitter
refactor: Soft remove Emitter from IRootFolder interface
2026-06-23 17:07:06 +02:00
Carl Schwan
5b1de7556e
Merge pull request #58602 from nextcloud/carl/systemtag-lifecycle-event
refactor: Add new modern events for system tag lifecycle
2026-06-23 16:17:06 +02:00
Carl Schwan
0b9e592796
refactor: Soft remove Emitter from IRootFolder interface
Move this to the private implementation in OC, so that using IRootFolder
in apps doesn't require dummy stubs.

This will create a new psalm warnings for users of this method but
considering that this is deprecated for a long time and that it still
works at runtime, this shouldn't cause any issue.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-06-23 16:11:23 +02:00
Carl Schwan
e76d290b67
Merge pull request #61440 from nextcloud/carl/findIn-mount-point
perf(View):  don't sort twice the same array
2026-06-23 14:00:21 +02:00
provokateurin
562124f0b7
fix(Collaborators): Fix matching emails to remote users if no remote results are present
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-06-23 13:30:57 +02:00
Carl Schwan
e6b5f763a4
perf: Avoid sorting an already sorted array
Improve performance a bit as this is in the hotpath and take ~2s in
prod.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-06-23 13:11:42 +02:00
Salvatore Martire
3eab7b8e82 perf(log): normalize log data only when logging
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-06-23 11:14:07 +02:00
Carl Schwan
a213e6bb1d
Merge pull request #61011 from nextcloud/carl/cleanup-preview
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
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(preview): First cleanup from filecache and then from preview table
2026-06-23 11:08:57 +02:00
Carl Schwan
b42ebea5fc
refactor: Add new modern events for system tag lifecycle
The old one was deprecated in 22.0.0 but didn't had a replacement.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-06-23 10:57:41 +02:00
Andy Scherzinger
143e72ddf6
Merge pull request #61294 from nextcloud/fix/noid/appapi-maintenance-mode
fix(maintenance): allow AppAPI to serve requests during maintenance mode
2026-06-23 10:10:39 +02:00
Kate
26df031675
Merge pull request #61489 from nextcloud/fix/remove-uses-of-deprecated-aliases
fix: Remove uses of deprecated service string names
2026-06-22 14:15:49 +02:00
Côme Chilliet
32f8ff2445
fix: Remove uses of deprecated service string names
Use the class/interface name instead to avoid logging.
This was breaking in some cases as logging would trigger a deprecation
 warning, resulting in an infinite loop.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-22 11:19:00 +02:00
Ferdinand Thiessen
43dc92df52
fix: add handling for MD5 on new MySQL and deprecate MD5 SQL function
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-06-21 22:26:00 +02:00
Josh
cd4c60ff37
chore(DirectEditing): add override attribute to Token::getToken
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-06-20 11:54:51 -04:00
Josh
3003e3899e
chore(DirectEditing): add override attribute to Manager::open
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-06-20 11:54:08 -04:00
Micke Nordin
a88fdcbed5
Merge pull request #57234 from enriquepablo/master
Implement token exchange from OCM
2026-06-18 11:33:24 +02:00
Edward Ly
2d01dd6327
feat(TaskProcessing): add AudioToTextSubtitles TaskType
Signed-off-by: Edward Ly <contact@edward.ly>
2026-06-17 08:13:55 -07:00
Benjamin Gaussorgues
3048d95615
Merge pull request #61368 from nextcloud/chore/prevent_subadmin_edit
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
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: prevent editing delegated admins
2026-06-17 16:02:11 +02:00
Robin Appelman
61037332f0
Merge pull request #60988 from nextcloud/search-operator-params
chore: fix SearchBinaryOperator constructor type hint
2026-06-17 13:16:24 +02:00
Micke Nordin
4d5841761f
fix(cloud_federation_api): accept multi-protocol share envelopes
Shares using the OCM multi-protocol envelope (name multi, with the secret carried in a sibling protocol entry such as webdav) were rejected with Missing sharedSecret in protocol. Scan every protocol entry for the shared secret during validation, resolve the secret from the matching entry, and let the files provider serve the webdav entry of a multi envelope. Covers the file and folder resource types.

Signed-off-by: Micke Nordin <kano@sunet.se>
2026-06-17 11:01:19 +02:00
Enrique Pérez Arnaud
3616212ba2
feat(files_sharing): store and refresh OCM access tokens for external shares
Co-authored-by: Micke Nordin <kano@sunet.se>
Signed-off-by: Micke Nordin <kano@sunet.se>
Signed-off-by: Enrique Pérez Arnaud <enrique@cazalla.net>
2026-06-17 11:01:16 +02:00
Enrique Pérez Arnaud
4d56c74ba7
feat(ocm): advertise exchange-token capability and token endpoint
Co-authored-by: Micke Nordin <kano@sunet.se>
Signed-off-by: Micke Nordin <kano@sunet.se>
Signed-off-by: Enrique Pérez Arnaud <enrique@cazalla.net>
2026-06-17 11:01:14 +02:00
Enrique Pérez Arnaud
ac2f9816a6
feat(auth): support permanent OCM refresh tokens and bearer login
Co-authored-by: Micke Nordin <kano@sunet.se>
Signed-off-by: Micke Nordin <kano@sunet.se>
Signed-off-by: Enrique Pérez Arnaud <enrique@cazalla.net>
2026-06-17 10:44:51 +02:00
Andy Scherzinger
9af6fe9500
Merge pull request #61053 from bygadd/fix/taskprocessing-worker-atomic-claim
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
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(taskprocessing): claim tasks atomically so parallel workers don't duplicate
2026-06-17 10:21:33 +02:00
Benjamin Gaussorgues
ab29b132e5
fix: prevent editing delegated admins
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-06-17 10:18:54 +02:00
Andy Scherzinger
f985b90a77
Merge pull request #61332 from nextcloud/fix/string-expected-int-given
fix: ensure file names are string-typed
2026-06-17 07:25:09 +02:00
Andy Scherzinger
d6086c2325
Merge pull request #61308 from nextcloud/fix/noid/team-manager-resources
fix(team-manager): ensure team resources are only retrived for members
2026-06-16 20:33:49 +02:00
Andy Scherzinger
c409abfc63
Merge pull request #61322 from nextcloud/fix/improve-password-confirmation-middleware
fix: Do not set last-password-confirm for apptoken sessions
2026-06-16 19:49:28 +02:00
Stephan Orbaugh
03077b52f9
Merge pull request #60587 from nextcloud/fix/99281/lookup-duplicates
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
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: trim duplicate search results for external share
2026-06-16 16:10:49 +02:00
Arthur Schiwon
437952bd70
fix: ensure file names are string-typed
- `$child` was used as an array key earlier. If they are numeric, they
  are automatically converted to ints, leading to type issues later.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2026-06-16 13:13:38 +02:00
Oleksander Piskun
1701f1770b fix(maintenance): allow AppAPI to serve requests during maintenance mode
Signed-off-by: Oleksander Piskun <oleksandr2088@icloud.com>
2026-06-16 13:42:19 +03:00
Côme Chilliet
f7f9a47ceb
fix: Do not set last-password-confirm for apptoken sessions
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-16 11:59:13 +02:00
Micke Nordin
41e9022100 fix(ocm): merge resource types by name in discovery
Current code blindy adds any resources to the ocm disocvery, this makes
it so that different cloud federation providers can not add different
protocols for the same resourceType without the resourceType being
duplicated, something that OCM does not allow:

```
REQUIRED: resourceTypes (array) - A list of all resource types this
server supports in both the Sending Server role and the Receiving
Server role, with their access protocols. Each item in this list MUST
itself be an object containing the following fields:

name (string) - A supported resource type (file, calendar, contact, ...).
Implementations MUST offer support for at least one resource type, where
file is the commonly supported one. Each resource type is identified by
its name: the list MUST NOT contain more than one resource type object
per given name.

...
```

https://datatracker.ietf.org/doc/html/draft-ietf-ocm-open-cloud-mesh-04#name-fields

This patch changes this behaviour from this example result:
```
   {
      "name": "folder",
      "shareTypes": [
        "user"
      ],
      "protocols": {
        "webapp": {}
      }
    },
    {
      "name": "folder",
      "shareTypes": [
        "user"
      ],
      "protocols": {
        "webapp-receive": {
          "targets": [
            "blank",
            "iframe"
          ]
        }
      }
```

to:

```
{
      "name": "folder",
      "shareTypes": [
        "user"
      ],
      "protocols": {
        "webapp": {},
        "webapp-receive": {
          "targets": [
            "blank",
            "iframe"
          ]
        }
      }
```

which is the correct behaviour according to OCM.

Signed-off-by: Micke Nordin <kano@sunet.se>
2026-06-16 11:30:24 +02:00
Marcel Klehr
eda0de0c14
Merge pull request #61190 from nextcloud/feat/taskprocessing-update-completionexpected
feat(TaskProcessing): Update completionExpectedAt in Manager#setTaskProgress
2026-06-16 11:19:08 +02:00
Cristian Scheid
74849c99e3 fix(team-manager): ensure team resources are only retrived for members
Signed-off-by: Cristian Scheid <cristianscheid@gmail.com>
2026-06-15 14:12:58 -03:00
Simon L.
3881d9b1fa refactor(CapabilitiesManager): log slow capabilities in a single message
Instead of logging one message per slow capability (and only in debug
mode), collect all slow capabilities and emit a single log entry with
all timings, using the highest applicable log level.

Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-06-15 18:42:47 +02:00
Simon L.
3e6d2dc794 fix(CapabilitiesManager): only check execution time if debug mode is enabled
Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-Authored-By: Anna <anna@nextcloud.com>
2026-06-15 18:37:11 +02:00
niv
26526ec134 fix: trim duplicate search results for external share
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2026-06-15 16:57:51 +02:00
Yoan Bozhilov
df2368896f docs(taskprocessing): document lockTask semantic change
Per review feedback: note in the lockTask docblock that the guard changed from
`status != RUNNING` to `status = SCHEDULED`, and that callers must now treat a
0 return as "the task is no longer claimable" rather than assuming success.

Signed-off-by: Yoan Bozhilov <bygadd@gmail.com>
Assisted-by: Claude Code:claude-opus-4-8
2026-06-15 16:37:34 +02:00
Yoan Bozhilov
022531b997 fix(taskprocessing): guard lockTask on scheduled, record started_at, Oracle fallback
Address review feedback (@marcelklehr, Copilot):
- lockTask claims only SCHEDULED tasks (was status != RUNNING) and stamps
  started_at in the same atomic UPDATE, so a finished task cannot be re-claimed
  and the external-provider claim path records started_at as well.
- claimWithBoundedRetry re-reads after lockTask instead of a follow-up UPDATE.
- Oracle joins SQLite on the bounded-retry fallback: Oracle cannot combine a
  row-limiting clause with FOR UPDATE (ORA-02014), which failed the claim tests
  on Oracle CI.
- Reword the worker docblock/comments to "prefer oldest available" (parallel
  SKIP LOCKED does not guarantee a strict global order).
- Add a regression test that lockTask does not resurrect a finished task.

Signed-off-by: Yoan Bozhilov <bygadd@gmail.com>
Assisted-by: Claude Code:claude-opus-4-8
2026-06-15 16:37:34 +02:00
Marcel Klehr
66826df860 fix: Address review comments
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-06-15 16:37:34 +02:00
Yoan Bozhilov
0799454a1f fix(taskprocessing): claim tasks atomically with SKIP LOCKED + composite index
Replace the worker retry/ignore-list claim-loop with a single atomic
SELECT ... FOR UPDATE SKIP LOCKED claim (SQLite bounded-retry fallback),
preserving the no-duplicate guarantee while removing the thundering-herd
contention that throttled backlog draining. Add a (status,type,last_updated)
index via the table-creating migration + db:add-missing-indices listener.

Signed-off-by: Yoan Bozhilov <bygadd@gmail.com>
Assisted-by: Claude Code:claude-opus-4-8
2026-06-15 16:37:34 +02:00
Côme Chilliet
802bce0a77
fix: Use token expiration for ephemeral sessions
This simplifies the code a lot.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-06-15 15:28:38 +02:00
Marcel Klehr
041013bb58 fix(TaskProcessing): Check $progress value is in (0,1) in setTaskProgress
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-06-15 10:02:34 +02:00
Côme Chilliet
1ac195d01e
Merge pull request #61245 from nextcloud/fix/fix-php-warning-in-sharehelper
Some checks failed
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Psalm static code analysis / changes (push) Has been cancelled
Psalm static code analysis / static-code-analysis (push) Has been cancelled
Psalm static code analysis / static-code-analysis-security (push) Has been cancelled
Psalm static code analysis / static-code-analysis-ocp (push) Has been cancelled
Psalm static code analysis / static-code-analysis-ncu (push) Has been cancelled
Psalm static code analysis / static-code-analysis-strict (push) Has been cancelled
Psalm static code analysis / static-code-analysis-summary (push) Has been cancelled
fix: Fix PHP Warning foreach() argument must be of type array|object, null given
2026-06-12 18:38:28 +02:00