Commit graph

26486 commits

Author SHA1 Message Date
Benjamin Gaussorgues
aba8a7ff86
Merge pull request #57549 from nextcloud/carl/optimize-getdirectory-content 2026-01-16 14:09:14 +01:00
Andy Scherzinger
a7ea180317
Merge pull request #57576 from nextcloud/missing-cache-entry-data
fix: dont error on missing path_hash/checksum CacheEntry fields
2026-01-16 14:04:46 +01:00
Carl Schwan
eadcd1cc84
refactor: Use str_starts_with
Co-authored-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
2026-01-16 10:58:16 +01:00
Stephan Orbaugh
3a9173015c
Merge pull request #57525 from nextcloud/carl/usermountcache-loop-optimization
perf(UserMountCache): Optimize loop
2026-01-16 10:50:27 +01:00
Louis
2716b0f6a6
Merge pull request #57292 from nextcloud/feature/54562/files-sharing-authoritative
feat(files_sharing): implement partial mount providers
2026-01-16 10:37:36 +01:00
Louis Chmn
b6e90acdb6 fix(DefaultSHareProvider): Specify join alias when accessing columns
Signed-off-by: Louis Chmn <louis@chmn.me>
2026-01-16 08:32:14 +01:00
Louis Chmn
7c9c74f4f0 feat(files_sharing): Implement partial mount providers
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
Signed-off-by: Louis Chmn <louis@chmn.me>
2026-01-16 08:32:14 +01:00
Ferdinand Thiessen
f7dad729e4
refactor(core): migrate web updater to Vue
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-16 00:29:19 +01:00
SebastianKrupinski
16198d2b37 feat: automated appointment creation
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2026-01-15 13:31:44 -05:00
Robin Appelman
a79bf069a3 fix: dont error on missing path_hash/checksum cacheentry fields
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-15 18:02:41 +01:00
Benjamin Gaussorgues
0ff8b35578
Merge pull request #57550 from nextcloud/setup-path-not-found-fallback
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run
2026-01-15 16:12:23 +01:00
Kate
3c498275e5
Merge pull request #57504 from nextcloud/implementCacheChunkGcTtl 2026-01-15 15:39:13 +01:00
Benjamin Gaussorgues
8f8b4411cd
Merge pull request #57553 from nextcloud/getMountsForPath-args 2026-01-15 14:35:51 +01:00
Louis
b9e670d1b4
Merge pull request #57552 from nextcloud/artonge/debt/files_sharing_unify_methods
debt(files_sharing): Unify `getSharedWithByPath` and `getSharedWith`
2026-01-15 14:21:26 +01:00
Andy Scherzinger
06b064e5f2
Merge pull request #57514 from nextcloud/carl/optimize-cacheentry
perf(files): Optimize CacheEntry creation
2026-01-15 12:57:42 +01:00
Carl Schwan
06827970a8
fix(cache): Handle groupfolder specific entries in cacheEntryFromData
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-15 11:47:59 +01:00
Carl Schwan
0b8eae7789
perf(files): Optimize CacheEntry creation
Avoid many copy on writes and create array only once.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-15 11:47:41 +01:00
Robin Appelman
53b160ce9b fix: add some extra checks for getMountsForPath arguments
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-15 11:31:54 +01:00
Robin Appelman
83ac1c6030 fix: clearify meaning of getMountsForPath arguments
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-15 11:31:54 +01:00
Louis Chmn
bba8e90c62 fix(files_sharing): Unify getSharedWithByPath and getSharedWith
Follow-up of https://github.com/nextcloud/server/pull/57285

This ensure that the behavior is the same and reduce code duplication.

Salvatore's version seems to be more optimized, but I prefer those change to be done separately and for both methods.

Signed-off-by: Louis Chmn <louis@chmn.me>
2026-01-15 10:22:44 +01:00
Nextcloud bot
c9ac8cfd54
fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-15 00:14:00 +00:00
Robin Appelman
68cdd1b1ef fix: fallback to full user setup if we cant find the expected mount root
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-14 18:04:13 +01:00
Carl Schwan
27339601f6
perf(View): Optimize getDirectoryContent hot-loop
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-14 18:03:51 +01:00
Andy Scherzinger
abe5499e14
Merge pull request #57498 from nextcloud/carl/rename-imountproviderargs
refactor(files): Rename IMountProviderArgs
2026-01-14 17:50:43 +01:00
Robin Appelman
62d7165124
Merge pull request #57370 from nextcloud/authoritative-mount-setup
Some checks are pending
CodeQL Advanced / Analyze (actions) (push) Waiting to run
CodeQL Advanced / Analyze (javascript-typescript) (push) Waiting to run
Integration sqlite / changes (push) Waiting to run
Integration sqlite / integration-sqlite (master, 8.4, main, --tags ~@large files_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, capabilities_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, collaboration_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, comments_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, dav_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, federation_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, file_conversions) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, files_reminders) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, filesdrop_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, ldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, openldap_numerical_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, remoteapi_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, routing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, setup_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharees_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, sharing_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, theming_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite (master, 8.4, main, videoverification_features) (push) Blocked by required conditions
Integration sqlite / integration-sqlite-summary (push) Blocked by required conditions
Psalm static code analysis / static-code-analysis (push) Waiting to run
Psalm static code analysis / static-code-analysis-security (push) Waiting to run
Psalm static code analysis / static-code-analysis-ocp (push) Waiting to run
Psalm static code analysis / static-code-analysis-ncu (push) Waiting to run
Authoritative mount setup
2026-01-14 14:19:03 +01:00
Robin Appelman
47530ef95f feat: add a debug config option to disable authoritative mount optimizations
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-14 13:03:01 +01:00
Robin Appelman
e5497c7731 fix: protect against infinite loops in setup
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-14 11:21:27 +01:00
Robin Appelman
6eb8e8d6fd
Merge pull request #57519 from nextcloud/get-existing-api
feat: add api to get a user object without verifying they exist
2026-01-14 11:15:42 +01:00
Nextcloud bot
a8369cdbee
fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-14 00:13:54 +00:00
Carl Schwan
94dd919b88
perf(UserMountCache): Optimize loop
These loops since to be called around 60 000 times in one trace I saw.
So it makes sense to use the faster foreach construct.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-13 18:37:51 +01:00
Robin Appelman
467487ecd8 feat: dont reload authoritative mount providers when doing by-path setup
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-13 16:42:48 +01:00
Robin Appelman
ae74dbef2b
Merge pull request #56499 from nextcloud/authoritative-mount-provider-files_external
Add api for authoritative mount providers and implement it for files_external
2026-01-13 16:36:33 +01:00
Robin Appelman
5924a2e3ec feat: add api to get a user object without verifying they exist
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-13 15:59:07 +01:00
Côme Chilliet
3c80b7f2b3
fix: Use strict array comparisons in lib/
To avoid surprises with corner cases.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-01-13 11:48:04 +01:00
Joas Schilling
408f9e8256
Merge pull request #57491 from nextcloud/fix/taskprocessing-userfacingerrormessage-responsedef
fix(TaskProcessing): Expose userFacingErrorMessage on ResponseDefinitions#CoreTaskProcessingTask
2026-01-13 10:27:01 +01:00
Git'Fellow
df018cf994 fix(gc): Implement cache_chunk_gc_ttl
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2026-01-13 09:00:32 +01:00
Ferdinand Thiessen
5f33fee58f
Merge pull request #56941 from nextcloud/fix/importmaps
fix(template): add import map for JS module entry points
2026-01-12 20:38:58 +01:00
Kate
258b30606f
Merge pull request #57357 from Freiheitswolke/fix/NavigationManager/Remove-break-to-return-all-defaultEntryIds 2026-01-12 19:29:18 +01:00
Marcel Klehr
a45978789b fix(TaskProcessing): Expose userFacingErrorMessage on ResponseDefinitions#CoreTaskProcessingTask
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2026-01-12 18:32:33 +01:00
Carl Schwan
7b05c8f797
refactor(files): Rename IMountProviderArgs
It's not an interface so the I-prefix is inadequate.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-12 17:33:52 +01:00
Joas Schilling
6bdda55733
Merge pull request #57453 from nextcloud/feat/noid/qr-code-in-account-menu
Improve usability of QR code login
2026-01-12 14:01:10 +01:00
Ferdinand Thiessen
f0e020f97d fix(template): add import map for JS module entry points
Currently apps are broken if they have exports in the JS entry point,
because they then will import from the entry point but because they do
not know about the Nextcloud cache buster they will import without cache
buster.

This results in two problem:
1. The module might be outdated (old cached)
2. The module is duplicated, so the module will be loaded twice and will
   have two different - out of sync - states. This also means it will
   re-run sideeffects of the entry point.

To fix this we generate an import map which basically maps the plain
entry point script to the script with cache buster added.

(Some background: Bundler will try to minimize chunks (reduce page
loading time) so they can inline modules into entry points and thus
extend the entry point exports and then this issue would be caused).

For example:
```js
// entry.mjs
console.error('called')

async function onClick() {
  await import('./chunk.mjs')
}

export const name = 'foo'

// chunk.mjs
import { name } from './entry.mjs'

console.error(name)
```

When calling `onClick` without this fix the output will be:
> called
> called
> foo

With this fix:
> called
> foo

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-12 13:34:11 +01:00
Joas Schilling
8b4491ae1c
fix: Add translation for temporary app password names
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-12 11:58:45 +01:00
Joas Schilling
f4acd8a7ab
fix: Adjust and add new tests
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-12 11:07:44 +01:00
Benjamin Gaussorgues
bd90e7c122
Merge pull request #57442 from nextcloud/carl/entity-id-type 2026-01-12 11:03:33 +01:00
Benjamin Gaussorgues
e0e5cdf3e1
Merge pull request #57449 from nextcloud/feat/unstable/moving-out-of-unstable-signature 2026-01-12 09:39:21 +01:00
Raphael Gradenwitz
7c526b4de3
Merge branch 'master' into ernolf/enh/http2-brotli-client 2026-01-10 00:00:47 +01:00
Maxence Lange
327d691c23 feat(signed-request): moving out of unstable
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2026-01-09 20:16:24 -01:00
Joas Schilling
927bea2b4d fix(psalm): Satisfy psalm
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-09 19:07:07 +01:00
Joas Schilling
6c20e3e103 fix(onetime): Allow longer duration via app config
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-09 19:07:07 +01:00