Nextcloud 35.0.0beta1
server
- Revert "Do not do redirect handling when loggin out" (server#40407)
- Movie preview bug fix, in some case stream reading functions may block indefinitely (server#43226)
- Add rel attribute for fediverse link to make verification possible. (server#43364)
- Fix(argon2): respect max value for hashingThreads (server#45027)
- Fix(caldav): explicitly check from component types (server#48131)
- Feat(deps): Upgrade phpseclib to v3 (server#48183)
- Feat(occ): Better handling of disabled or unreacheable App store (server#49697)
- Feat: Run setup checks by category or class (server#49978)
- Fix(session): Update `last_seen` when user session is validated (server#50835)
- Fix: pass parent id to correctParentStorageMtime when known (server#53464)
- Chore: remove `always_populate_raw_post_data` (server#53583)
- Added parameter to disable web UI integration with local client (server#54191)
- Feat(theming): add option for reduce animation (server#55406)
- Fix(DirectEditing): expose already used methods on the public interface (server#55993)
- Fix(Dav): make absenceform textarea not overlap (server#56055)
- Fix(systemtags): remove duplicates, cleanup existing tags (server#56079)
- Fix(PublicPreview): Call getMimetype() on File objects (server#56196)
- Fix(l10n): Fix plural (server#56254)
- Show group display name when the group object is not loaded yet (server#56533)
- Added a exclude disabled option to last seen (server#57081)
- Feat (2fa): Add IStatelessProvider interface (server#57216)
- Fix: allow `occ maintenance:update:htaccess` to create .htaccess file in case it doesn't exist yet (server#57227)
- Implement token exchange from OCM (server#57234)
- Chore(files): drop unused list.php (server#57333)
- Move invite-accepted capability and implementation to contacts app. (server#57853)
- Feat: delay fetching the display name of a share recipient untill we need it (server#58335)
- Chore: remove redundant ext-json requirement (bundled since PHP 8.0) (server#58370)
- Feat: frankenphp (server#58541)
- Feat(lookup): search for local account only via lookupserver (server#58567)
- Refactor: Add new modern events for system tag lifecycle (server#58602)
- Fix: improve logging around failed chunked object store uploads (server#58608)
- Fix: don't return cache entries with null paths (server#58676)
- Refactor(admin_audit): migrate to IAppConfig (server#58750)
- Docs(config): clarify `remember_login_cookie_lifetime` behavior (server#58792)
- Docs(config): document `session_lifetime` semantics and interactions (server#58794)
- Test(ldap): align expectation for unset `ldapUserDisplayName2` with implementation to avoid PHP 8.5 warning (server#58813)
- Refactor(dbal): move from deprecated to modern calls (server#58891)
- Refactor(CapabilitiesManager): log slow capabilities in a single message (server#58971)
- Fix(lookup-server): accept self-signed lus on globalscale (server#58976)
- Remove usage of static vars or properties (server#59002)
- Fix: treat all WebKit iOS browseres the same (server#59168)
- Fix(sharing): icon color mismatch on download button in public share (server#59175)
- Enh(occ): make it possible to add an arbitrary number of users to a g… (server#59271)
- Fix(files_reminders): switch from DB-side `NOW()` to PHP-side generation (server#59358)
- Fix: folder tree selection after any action in main content (server#59359)
- Fix(SetupChecks): maintenance window length is 4h (not 6h) (server#59413)
- Fix(user_status): stabilise the user_status (server#59535)
- Fix(files_external): S3 folder mtime updated on every read-only access (server#59539)
- Feat(files_versions): allow to block version creation using WFE (server#59610)
- Fix(appconfig,userconfig): restore pre-migration fallback for ownCloud migration (server#59677)
- Feat: allow setting custom login-name for occ generated app password (server#59680)
- Refactor(share): DRY up expiration date validation and fix dispatchEvent() log message (server#59731)
- Fix(sharing): set STATUS_ACCEPTED when creating USERGROUP subshare on… (server#59813)
- Refactor: Cleanup files app bootstrap (server#59831)
- Fix: track time spent in recursive markOrRun calls (server#59857)
- Perf: remove needless check for changed storage id for mounts (server#59900)
- Perf: delay loading storage info in Cache untill needed (server#59901)
- Refactor(preview): remove deprecated `PreviewManager::registerProvider` API (server#59905)
- Fix(Files/Cache): align `MoveFromCacheTrait` fallback validation with `Cache::moveFromCache` (server#59916)
- Feat(settings): replace OnlyOffice with Euro-Office in office suite s… (server#59933)
- Add runtime operations in WFE (server#59966)
- Fix(repair): restrict unserialize() in RemoveBrokenProperties (server#59979)
- Docs(lock): clarify ILockManager API documentation (server#59984)
- Caldav party crasher (server#59988)
- Refactor(encryption): Migrate appconfig keys to typed bool IAppConfig with repair step (server#60002)
- Chore(i18n): Remove space in word1/word2 (server#60026)
- Chore(l10n): Plural needed to support multiplural languages (server#60027)
- Fix: missing early fail for basic auth without credentials (server#60029)
- Fix(encryption): Correctly report size for zero-byte encrypted files (server#60070)
- Fix rendering custom columns in file lists (server#60134)
- Feat(http-sig): Dual stack http-sig (server#60136)
- Fix(files_sharing): Hide incompatible actions in shares (server#60151)
- Let devs choose the handler for http requests (server#60167)
- Fix(files): only show template picker menu entries if possible (server#60187)
- Test: add playwright pipeline and start migrating Cypress to Playwright (server#60194)
- Fix: add proper ACLs for trashbin proxys (server#60211)
- Feat(settings): add shared Office admin section (server#60285)
- Fix(AppStore/Fetcher): catch GenericFileException when reading cache file in Fetcher (server#60286)
- Feat: make first login event webhook compatible (server#60305)
- Spelling fixes (server#60316)
- Fix(files_external): Move MountConfig to non-static services (server#60318)
- Fix(systemtags): Include leading slash in unified search tag link (server#60325)
- Fix(occ): set GID before UID to ensure success (server#60331)
- Fix(OC_Helper): properly calculate quota of shared storages (server#60341)
- Fix(encryption): Refactor EncryptionWrapper (server#60344)
- Fix(workflowengine): use proper contrast colors for operations (server#60347)
- Feat(appstore): show new column with groups the app is limited to (server#60355)
- Feat(core): app menu polish for NC34 (server#60358)
- Fix: Increase limit for share/unshare requests per hour (server#60359)
- Fix(appstore): do not offer rating apps not on appstore (server#60360)
- Fix(appstore): show reason why limit app to groups is not possible (server#60361)
- Fix error when creating mail shares if custom tokens are enabled (server#60378)
- Test(settings): reduce flakiness of authorized group integration assertions (server#60379)
- 🚀 Master is now 35 (server#60391)
- Fix(windmill): Fix baseUrl in background job (server#60449)
- Fix(dav): finalize upload metadata before post-write hooks (server#60453)
- Fix(appstore): fix reference to non-existing `forceEnableApp` function (server#60455)
- Fix(files_sharing): do not double escape special characters (server#60457)
- Refactor(NavigationManager): move navigation definitions into apps (server#60458)
- Fix(dav): Skip removal of classified activity when not generated anymore (server#60461)
- Test(carddav): refactor testSearch to use clearer assertions and unique UIDs (server#60463)
- Fix: update cached mounts when moving share in repair step (server#60465)
- Fix: properly mark CleanupShareTarget as expensive (server#60466)
- Test(filesdrop): fix duplicate scenario titles, indentation, and add clarifying comments (server#60467)
- Docs(templates): fully document ITemplateManager (server#60470)
- Refactor(legacy): simplify getTheme and clarify legacy theme docs (server#60481)
- Feat: implement isSelectableGroup function to filter out unselectable groups (server#60483)
- Fix(files_sharing): Use UnknownActivityException (server#60493)
- Add task processing streaming support (server#60500)
- Feat(openmetrics): export more resilient if exception happens (server#60501)
- Fix(settings): Show loading spinner while searching accounts (server#60504)
- Feat(users): Check assertion when enabling user (server#60505)
- Fix: remove too verbose error log line in AddExtraHeadersPlugin (server#60511)
- Fix(files): Chromium-based browsers drag-and-drop (server#60519)
- Fix(appstore): use alias for translations as `appstore` is taken by `apps.nextcloud.com` (server#60528)
- Fix(files): use displayname rather than basename to use progress (server#60541)
- Don't put hashed password in share api response (server#60542)
- Fix: only allow full admins to create 'token needed' webhooks (server#60543)
- Fix: improve check if external storage backend is local (server#60544)
- Fix: handle NAT64 addresses in isLocalAddress (server#60546)
- Fix: don't tell the remote their token is lower (server#60547)
- Fix: trim duplicate search results for external share (server#60587)
- Chore: cleanup useless files from repo (server#60590)
- Fix(settings): clear NcAppNavigation toggle overhang (server#60596)
- Chore(snowflake): add more randomness in server id fallback (server#60612)
- Fix(files): show proper information when a move will override the target (server#60631)
- Fix(caldav): grant sharee Acls to the delegate (server#60641)
- Refactor: Remove deprecated AutoCompleteEvent (server#60643)
- Fix(settings): confirm app-token revoke and preserve wipe state (server#60644)
- Fix: access shared and delegated trashbin objects (server#60648)
- Fix(http): avoid iconv for header ascii fallback (server#60649)
- Fix(config): add null coalescing fallback in getValueBool before strtolower (server#60654)
- Chore(psalm): forbid iconv (server#60655)
- Add fallback for Codespace environment variables (server#60663)
- Feat(core): Add centered search input to top bar (server#60665)
- Speedup share tests (server#60709)
- Fix(caldav-delegation): send notification to delegator (server#60712)
- Fix(files_reminders): keep batch alive on per-row failure (server#60713)
- Fix(federation): reset retainJob at start of run() (server#60714)
- Fix(MailPlugin): Stop applying the offset twice and the limit per wide/exact (server#60728)
- Fix: Add plural form for translations (server#60732)
- Fix(DB): Enforce foreign key constraints in SQLite (server#60733)
- Feat(UserManager): Add getters for avatar URLs (server#60734)
- Fix(security): don't propagate ValueError from Crypto::decrypt() fallback (server#60735)
- Perf(ci): cache npm dependencies in Cypress init job using buildjet cache (server#60738)
- Test(ci): enforce PHPUnit time limits with sensible timeout values (server#60739)
- Fix(encryption): recovery keys should be shown when user keys are used (server#60741)
- Test: replace checkbox assertions with real assertions or DoesNotPerformAssertions (server#60742)
- Test(db): call parent::tearDown() in DB test classes that skipped it (server#60744)
- Test: replace checkbox assertions with DoesNotPerformAssertions (middleware) (server#60748)
- Test(share20): replace addToAssertionCount checkbox tests in Share20 ManagerTest (server#60751)
- Test(user_ldap): speed up AbstractMappingTestCase chunking test (server#60756)
- Fix(core): Hide current-app label at narrower viewports (server#60757)
- Test(behat): reset per-scenario state in BasicStructure and Sharing (server#60763)
- Background jobs improvements (server#60765)
- Fix(caldav): Expand recurring events for principal calendar search (server#60766)
- Feat: Add office as shipped app (server#60776)
- Feat(jobs): allow workers to keep track of executed jobs (server#60778)
- Feat(jobs): add command to list executed background jobs (server#60779)
- Refactor: Remove most usages of IAppContainer and IServerContainer (server#60780)
- Docs(appframework): clarify PasswordConfirmationRequired behavior in docblocks (server#60783)
- Fix(Storage): use `proxyexclude` parameter in DAV client (server#60787)
- Chore(Cache): Remove deprecated insert and update events (server#60797)
- Fix(encryption): Fix endpoint /ajax/userSetRecovery to support boolean (server#60801)
- Fix(Share): Add missing optional parameter to IManager::shareApiAllowLinks() (server#60809)
- Feat(search): Subdue header search input placeholder (server#60813)
- Fix: actually register listener for updating stored external storage credentials (server#60817)
- Fix(files_sharing): clear the password after saving (server#60825)
- Fix(AppSearch): Always sort apps first for search (server#60827)
- Refactor: move release changelog workflow to releases repo (server#60829)
- Feat(db): add occ db:info, db:size, db:index-usage and db:locks (server#60840)
- Fix(files_versions): guard null path in event listeners (server#60842)
- Feat(file-search): add property to SearchQuery and check select fields to decide wheter to join extended cache (server#60844)
- Test(cache): avoid ordering assumptions in testExtended (server#60881)
- Fix(TaskProcessing): restrict allowed_classes in Manager cache deserialization (server#60884)
- Docs(IRequest): streamline duplicate docs + update for clarity and accuracy (server#60889)
- Chore(deps): Update flake to NixOS 26.05 (server#60896)
- Fix(core): restore app menu label, show "Settings" for sub-sections (server#60897)
- Fix: Make the IProvideUserSecretBackend usable (server#60898)
- Fix(previews): ffprobe hangs (server#60916)
- Docs: Add AI policy reference and starting point for agents.md (server#60922)
- Perf(user_ldap): chunk oracle queries for lower bind cost (server#60930)
- Fix(files): make sure nested changes are propagated to sidebar tabs (server#60943)
- Fix(user_ldap): allow editing profile fields not managed by LDAP (server#60948)
- Chore: Remove unused and long deprecated Remote components (server#60953)
- Chore: Deprecate IBroadcastEvent (server#60954)
- Refactor(server): Register alias when needed (server#60957)
- Fix: Files checker (server#60959)
- Refactor: Use new IQueryBuilder::MAX_IN_PARAMETERS (server#60960)
- Build: Dont include AGENTS.md and CLAUDE.md in release (server#60964)
- Job run history cleanup (server#60972)
- Fix: harden object store against copying a file to itself (server#60975)
- Fix(tests): remove integration tests that depend on deleted Remote API classes (server#60977)
- Fix(files_external): prevent dropdown entries from shrinking (server#60982)
- Fix(settings): add loading feedback to account create/edit dialogs (server#60986)
- Chore: fix SearchBinaryOperator constructor type hint (server#60988)
- Fix(menu): Fix icon colors on waffle menu (server#60989)
- Fix(theming): read cachebuster as int in manifest endpoint (server#61007)
- Fix(preview): First cleanup from filecache and then from preview table (server#61011)
- Fix: use card interface instead of object (server#61017)
- Fix(taskprocessing): claim tasks atomically so parallel workers don't duplicate (server#61053)
- Fix(NavigationManager): resolve entries only when needed (server#61055)
- Fix(dav): properly handle files metadata (server#61057)
- Ci(integration): drop stale remoteapi_features test matrix entry (server#61063)
- Refactor(settings): migrate Users form sub-components to script setup (server#61064)
- Fix: use correct permissions mask for non-home storage public links (server#61067)
- Add AI policy check (server#61068)
- Chore: fix smbclient setup in ci (server#61069)
- Test: cleanup users before userbackend test (server#61071)
- Fix(comments): load comments styles when the comments app is loaded (server#61073)
- Fix(settings): Fix appstore icon color in settings menu (server#61075)
- Fix(comments): Use capped memory cache for comments (server#61091)
- Fix(files_sharing): Use share id in file actions (server#61099)
- Fix: Correctly detect appid for dist css files (server#61100)
- Fix(core): keep app menu settings icon legible on light backgrounds (server#61109)
- Fix(NavigationManager): only resolve navigations of booted apps (server#61120)
- Fix(ocm): merge resource types by name in discovery (server#61126)
- Feat(TaskProcessing): add AudioToTextSubtitles TaskType (server#61127)
- Feat(OCP): Add Interaction API (server#61128)
- Build(deps): bump symfony/mailer from 6.4.31 to 6.4.40 (server#61132)
- Fix deprecations in tests (server#61140)
- Test: Warn about slow startup time for phpunit tests (server#61141)
- Chore(PHP): Drop 8.2 for Nextcloud 35 (server#61142)
- Docs(tests): Add some general documentation for PlayWright (server#61143)
- Chore(workflows): keep only lowest and highest supported versions of dbs (server#61144)
- Test(files): migrate favorites e2e from Cypress to Playwright (server#61145)
- Fix(mimetype): Add TSV support in mimetype aliases, mapping, and names (server#61147)
- Build(deps): bump symfony/dom-crawler from 6.4.32 to 7.4.12 (server#61149)
- Speedup tests execution (server#61150)
- Test(files): migrate files actions e2e from Cypress to Playwright (server#61152)
- Test(files): migrate recent-view and regression specs from Cypress to… (server#61153)
- Ci(PHP): Only test against highest and lowest supported PHP versions (server#61158)
- Fix(appstore): bring back "update all" button (server#61163)
- Test(files): migrate copy/move e2e from Cypress to Playwright (server#61165)
- Test(ci): Do not always run e2e tests (server#61167)
- Fix Memcached CI job (server#61168)
- Test: Add missing calls to the parent setUp method (server#61169)
- Test(systemtags): migrate from Cypress to PlayWright (server#61175)
- Fix: resolve PHP deprecation of `imagedestroy` (server#61176)
- Build(deps): bump phpseclib/phpseclib from 2.0.53 to 2.0.54 (server#61177)
- Chore: Run integration tests only on PRs as the other tests (server#61181)
- Fix: Fix alignment issues of app password form ( #53123 ) (server#61186)
- Feat(TaskProcessing): Update completionExpectedAt in Manager#setTaskProgress (server#61190)
- Chore: Fix reuse licence after #60840 (server#61194)
- Set preferStreaming default value to false for task processing tasks (server#61197)
- Add OCM Notification Received Event (server#61201)
- Fix: Psalm errors from #60840 (server#61208)
- Chore: apply code style (server#61214)
- Style(PHP): Fix (server#61216)
- Test(core): migrate end-to-end test to PlayWright (server#61217)
- Test(playwright): fix local test server config for SQLite runs (server#61218)
- Test(files): migrate files/trashbin e2e from Cypress to Playwright (server#61219)
- Test(files): migrate files selection e2e from Cypress to Playwright (server#61221)
- Test(files): migrate files download e2e from Cypress to Playwright (server#61223)
- Test(login): migrate end-to-end tests to PlayWright (server#61225)
- Fix: Fix PHP Warning foreach() argument must be of type array|object, null given (server#61245)
- Chore: bump MySQL to min 8.4 and support 9.7 (server#61247)
- Fix(theming): preserve uploaded favicon and touch icon (server#61253)
- Fix(files_versions): avoid version snapshot races during cross-storage renames (server#61254)
- Test(s3): fix flaky EOF check and remove PHP 8.5 skip (server#61275)
- Chore: Update AI-policy workflow (server#61280)
- Fix: Drop PHP 8.2 in Nextcloud 35 in 3rdparty/ (server#61281)
- Feat(oauth2): Add commands for adding and deleting clients (server#61289)
- Fix(twofactor_backupcodes): Add a clean helper to set code as used (server#61292)
- Fix(caldav): respect federation settings (server#61293)
- Fix(maintenance): allow AppAPI to serve requests during maintenance mode (server#61294)
- Fix: Use token expiration for ephemeral sessions (server#61295)
- Fix(files_sharing): remove leading slash from filename on unshare toast (server#61303)
- Fix(team-manager): ensure team resources are only retrived for members (server#61308)
- Fix(ocm-add-share): adjust domain validation (server#61310)
- Fix(files_external): Allow editing auth mechanism on saved mounts (server#61312)
- Fix(user_ldap): Escape filter part when searching for group members (server#61320)
- Fix: Do not set last-password-confirm for apptoken sessions (server#61322)
- Fix(files): Open the sidebar for the current folder, not a stale child (server#61330)
- Fix: ensure file names are string-typed (server#61332)
- Fix: prevent editing delegated admins (server#61368)
- Fix(OCM): Remove comment meant only for OCP APIs (server#61399)
- Fix(settings): show app menu current-app button on settings pages (server#61406)
- Chore: Sync codeowner with our internal organisation (server#61407)
- Fix(auth): log invalid token during password reset (server#61408)
- Fix: Use a CappedMemoryCache for UserConfig to avoid memory exhaustion (server#61413)
- Fix(migrations): Trigger recently added migrations (server#61428)
- Fix(files): remove leading slash from destination in copy/move toast (server#61435)
- Perf: Only sort wrappers when adding them (server#61438)
- Perf(View): don't sort twice the same array (server#61440)
- Fix(files_trashbin): create folder if missing when expiring trash (server#61442)
- Docs(config): clarify metadata and conversion file size limits (server#61478)
- Fix(dav): Always show example content section (server#61483)
- Fix(dav): Handle GenericFileException when reading default contact file (server#61485)
- Fix: Remove uses of deprecated service string names (server#61489)
- Fix: webhook payload for system tag events (server#61490)
- Feat: Make it possible to add a storage wrapper using public APIs (server#61493)
- Fix(ViewOnlyPlugin): Allow COPY and MOVE operations within the same storage (server#61497)
- Fix(onetime-qrcode): Remove password confirmation attribute (server#61501)
- Fix(settings): correct heading order in account management sidebar (server#61505)
- Fix(files): distinguish between files and folders for validation messages (server#61506)
- Perf: block more properties from using the custom properties backend (server#61509)
- Fix the ScanFiles job to not trigger scans of root directory for every single user (server#61511)
- Chore(tests): adjust PlayWright tests to follow ESLint rules (server#61513)
- Chore(comments): resolve ESLint warnings (server#61516)
- Fix: stop calling DI container in SharedStorage (server#61517)
- Feat: Add support for `NOT ILIKE` in query builder expressions (server#61521)
- Test(settings): migrate end-to-end tests from Cypress to PlayWright (server#61522)
- Perf: avoid DIing IRootFolder at every shared storage init (server#61530)
- Perf(log): normalize log data only when logging (server#61532)
- Fix(Collaborators): Fix matching emails to remote users if no remote results are present (server#61534)
- Chore(ISecureRandom): Deprecate generate() in favor of Randomizer::getBytesFromString() (server#61538)
- Refactor: Soft remove Emitter from IRootFolder interface (server#61539)
- Feat(share): add public share-review API under OCP\Share\ShareReview (server#61543)
- Refactor: Expose a public exception when no user is found (server#61544)
- Fix(db): add support for MariaDB 12.3 LTS and increase min. to 10.11 (server#61554)
- Fix(cache): make clear() redis cluster compatible (server#61559)
- Refactor: consolidate app loading logic in bootstrap process (server#61560)
- Feat(TaskProcessing): Add AudioToAudioTranslate TaskType (server#61564)
- Fix(psalm-strict): Fix lib exclusions (server#61565)
- Feat: mark legacy ai providers (server#61567)
- Fix(files_external): ignore deprecated backends (server#61568)
- Fix(files_external): properly apply default mount options (server#61573)
- Fix(updatenotification): use correct appstore route (server#61574)
- Fix(core): use proper API routes for recommended apps (server#61575)
- Fix(appstore): use proper app icon or adjust color if needed (server#61577)
- Fix(appstore): only show appstore entries if actual from appstore (server#61578)
- Fix(psalm): Set PHP version to 8.3 (server#61583)
- Fix(settings): display birthday correctly regardless of browsers timezone (server#61586)
- Fix(a11y): label account QR code button (server#61600)
- Fix(config): Decrypt sensitive appconfigs when requested (server#61608)
- Refactor(tests): cleanup PlayWright tests (server#61614)
- Fix(core): Throttle lost-password reset form when link is disabled (server#61615)
- Refactor(taskprocessing): mark built-in text task types as internal and deprecated if needed (server#61616)
- Fix(files_external/SMB): Use 'null' explicitly for no workgroup (server#61622)
- Fix(theming): allow to unselect a font theme (server#61627)
- Fix(core): reduce header height (server#61628)
- Refactor(preview): align provider lookup in PreviewManager checks (server#61629)
- Fix(files_sharing): reject custom share tokens longer than the db column (server#61630)
- Docs(preview): improve IPreview and IProviderV2 interface docs (server#61632)
- Fix(LoginForm): improve login throttle warning wording (server#61636)
- Fix(settings): in absence form avoid shifting dates to browsers timezone (server#61638)
- Fix(dav): Load ProfilerPlugin only when profiler is enabled (server#61639)
- Chore: Remove redundant assignment (server#61641)
- Fix(core): scope public share theme filter to the download icon (server#61648)
- Chore(jobs): write proper documentation for job:history (server#61657)
- Fix(files): proper accessible row name and title for overflow (server#61658)
- Fix(dav): return RFC 4791 no-uid-conflict on duplicate calendar UID (server#61659)
- Update script to latest (server#61660)
- Fix(core): resolve some edge cases with recommended apps (server#61663)
- Test(files_external): migrate end-to-end tests to PlayWright (server#61665)
- Fix(core): keep the header search input in document flow (server#61668)
- Sync ai-policy with org template (server#61669)
- Fix(rector): Don't use AddSeeTestAnnotationRector in rector strict (server#61670)
- Fix: hide scroll bar in unified search when not needed (server#61679)
- Fix(dav): Do not respond version/trashbin download requests with 404 due to ChunkingV2Plugin (server#61680)
- Feat(bruteforce): improve bruteforce protection command output (server#61682)
- Feat(TaskProcessing): add TextToTextImprove to improve or iterate on text (server#61683)
- Fix(bruteforce): Don't throttle requests with failing CSRF (server#61686)
- Fix: adjust file picker for background image to allow folder navigation (server#61688)
- Store taskprocessing output files with extension to ease mimtype guessing (server#61689)
- Feat: KV cache based on predis (server#61690)
- Build(deps): Composer audit updates (server#61696)
- Fix(db): align preview migration annotations with created tables (server#61705)
- Perf(db): drop redundant db-side migrations version sorting (server#61707)
- Docs(config): fix unbalanced inline literal in remember-me sample com… (server#61719)
- Ci: Add lables via rest api (server#61735)
- Docs(ratelimit): add missing @param documentation (server#61736)
- Docs(JS): fix typo in function name (server#61746)
- Test(files): migrate end-to-end tests to PlayWright (server#61751)
- Ci(dependabot): restore build/frontend dirs for stable33 npm updates (server#61806)
- Chore(deps): Bump postcss from 8.5.6 to 8.5.16 in /build/frontend-legacy (server#61823)
- Fix(jobs): resolve portability issues with background job cleanup (server#61830)
- Perf: Don't fetch full group object in AuthorizedGroupMapper (server#61838)
- Fix(Sharing): Don't break cache entry by setting path to null (server#61841)
- Fix(DeclarativeManager): Fix admin delegation (server#61845)
- Ci: Update policy check to org-latest (server#61847)
- Build(rector-strict): Bump PHP set to 8.3 (server#61848)
- Feat(core): header-anchored combobox shell for unified search (server#61849)
- Fix(metadata): bind chunked file ids (server#61857)
- Test: fix HEIC tests (server#61858)
- Fix(dav): release part-file lock when an upload fails (server#61863)
- Feat: Disable callable serialization in sabre/xml (server#61866)
- Fix(auth): confine OCM access token to the masked share endpoint (server#61870)
- Fix(jobs): compute memory usage after clean-up (server#61877)
- Fix(settings): missing end of html tag (server#61880)
- Fix(CalDav): Force trashbin deletion when re-creating item with same UID (server#61881)
- Test(installer): migrate end-to-end tests to PlayWright (server#61883)
- Perf: Replace more calls from getUserGroups to getUserGroupIds (server#61904)
- Fix(files_sharing): preserve unmasked permissions as scan_permissions (server#61905)
- Perf: Don't fetch all the trash items when deleting a single item (server#61906)
- Feat(files_sharing): schedule external share scan job when accepted (server#61908)
- Fix(s3): trim multiple spaces to single space in original path header (server#61914)
- Feat: Fetch groups in batch in getUserGroups (server#61916)
- Fix: Catch expected NotFoundException (server#61917)
- Fix(files_sharing): Fail on sharing file with create or delete permission before failing on increased permissions (server#61929)
- Fix(files): use proper translation templates (server#61931)
- Fix(files): do not let a failing move hook break the move or hide files (server#61937)
- Refactor(Interaction): Allow multiple resources and receivers in a single event (server#61938)
- Feat(core): add unified search loading controller (server#61941)
- Feat(login): clean remember me tokens (server#61944)
- Refactor: Centralize logic for checking if a share is password protected (server#61946)
- Ci: migrate from buildjet to cache action (server#61947)
- Fix(preview): Handle unique constraints violation exception (server#61950)
- Feat(occ): improve config:list help text/descriptions (server#61953)
- Perf(carddav): reduce disk usage of photocache (server#61957)
- Fix: Output shape validation will delete keys when there is a list of files (server#61962)
- Feat: Add MultimodalChatWithTools and MultimodalContextAgentInteraction (server#61963)
- Fix(systemtags): correct @since tag for sanitizeWordsAndEmojis (server#61966)
- Fix(UserPlugin): Don't return mail matches on user id search (server#61981)
- Fix(UserPlugin): Don't search for displayname when restricted (server#61982)
- Fix(UserPlugin): Don't return disabled users on user ID and mail match (server#61984)
- Fix(encryption): bind personal private key password inputs (server#62027)
- Chore(playwright): Wait for server response before checking sorting result (server#62032)
- Chore(playwright): Rewrite password confirmation handler to avoid race conditions (server#62033)
- Chore(tests): Fix broken rector run due to conflict with psalm (server#62034)
- Chore(tests): Fix flaky nodb tests due to `AlgorithmTest` (server#62035)
- Feat(ITeamManager): Add getTeam method (server#62038)
- Perf(workflow): Implement result cache for IP checks (server#62039)
- Fix(caldav): url-encode owner/user in activity event links (server#62063)
- Improve logout url generation (server#62081)
- Fix(FilesWidget): allow to resize widget vertically (server#62089)
- Rate limiting for creating federated shares (server#62091)
- Fix(files_sharing): Allow access to shares by disabled users if hide_disabled_user_shares is enabled (server#62092)
- Feat(core): drive the unified search modal from the search controller (server#62093)
- Fix(KeyValueCache): allow negative TTL for file locking (server#62114)
- Fix: Disable imagick preview providers (server#62145)
- Feat(core): keyboard navigation and focus shortcut for unified search (server#62157)
- Fix(preview): properly handle encoded content (server#62162)
- Fix(AmazonS3): pass S3 error messages through to the frontend (server#62163)
- Perf(dav): Stream PROPFIND output (server#62164)
- Chore: undeprecate the redis cache backend (server#62195)
- Fix(files_version): mtime confusion on milliseconds (server#62204)
- Occ file command enhancements (server#62207)
- Fix: don't die if we can't encode file metadata on upload (server#62208)
- Use stricter types on a few classes (server#62228)
- Feat(Dispatcher): Warn about open transaction after controller method was executed (server#62232)
- Fix(SetupChecks): Link to task processing worker docs (server#62240)
- Add Unified Sharing (server#62241)
- Fix(theming): mark background button text as English (server#62242)
- Fix(TaskProcessing): Claim tasks atomically in both SynchronousBackgr… (server#62243)
- Fix(dashboard): update scrollbar contrast on background (server#62244)
- Fix(files): properly handle folders without permissions (server#62254)
- Fix(files): preserve encryptedVersion when copying cache entries (server#62255)
- Fix(appstore): initialize the exApps store when enabled (server#62276)
- Test: mark installation tests as slow (server#62282)
- Test(users): prevent flaky tests with hardcoded values (server#62283)
- Test(files): wait for PUT before continue with tests (server#62284)
- Test(files): wait for actual requests when deleting files (server#62286)
- Test(TestCase): restore unregistered services correctly (server#62326)
- Test(files): make watcher propagation mtime regression test deterministic (server#62329)
- Fix(core): handle parameter limits in files metadata deletion (server#62331)
- Refactor: Add type annotations to middlewares (server#62334)
- Use constructor properties in Sharing (server#62335)
- Fix: Mark some parameters as sensitive (server#62336)
- Perf(ShareUser): Only fetch display name instead of user object (server#62341)
- Perf(user-display-name): Check memory cache before trying redis (server#62353)
- Fix(SharingBackend): Call ISharePropertyTypeModifyValue::modifyValueOnSave when saving default value (server#62354)
- Feat(files_sharing): fetch remote avatars for external shares (server#62355)
- Fix(sharing): Set REUSE annotations for l10n (server#62356)
- Feat(core): reveal unified search filters from the input (server#62359)
- Fix(PasswordSharePropertyType): Generate default password when passwords are required (server#62360)
- Fix(files): Prevent corruption of files when moving from encrypted to unencrypted folders within the same object storage (server#62364)
- Don't fill the pagination cache if there are no extra items (server#62365)
- Fix(TeamShareRecipientType): Defer getting CirclesManager class as it might not exist yet (server#62366)
- Fix: allow Enter on public share Download link (server#62367)
- Fix(files_sharing): skip unresolvable share recipients (server#62368)
- Fix(share): do not re-accept rejected shares (server#62373)
- Fix(search): Add end date for last 7 and last 30 days (server#62375)
- Perf(files_external): pipeline SFTP stream writes (server#62377)
- Fix(Sharing): Fix l10n interpolation (server#62393)
- Feat(Sharing): Fallback to guest avatar if recipient provides no icon (server#62397)
- Ci: update workflows from organization (server#62407)
- Fix(CleanupLoginTokens): Specify the table (server#62408)
- Fix: Don't add empty and broken ExternalShareScanJob on upgrade (server#62412)
- Test(files_versions): migrate end-to-end tests to PlayWright (server#62423)
- Fix(background-jobs): preserve Snowflake IDs as strings (server#62425)
- Fix: multimodal chatwithtools was not made internal (server#62426)
- Feat: allow specifying applicable users and groups in the files_external:create command (server#62431)
- Fix(Sharing): Use positional parameters in property validation error messages (server#62432)
- Fix(SharingManager): Skip interaction checks if checks are overridden (server#62444)
- Fix(onetime-qrcode): Fix onetime QR code with 2FA enable (server#62445)
- Fix(Sharing): Enable node download permission by default (server#62454)
- Fix(Sharing): Remove faulty check if required properties have a defaut value (server#62455)
- Fix(Sharing): Compute required, default and max expiration date based on recipients (server#62464)
- Fix(IRegistrationContext): Fix type hinting (server#62475)
- Feat: introduce a function to bind a teamfolder to a team (server#62476)
- Fix: Use PHP_AUTH_PW for strict password confirmation (server#62477)
- Feat(webauthn): Skip 2FA for user verified logins (server#62540)
- Http-sig: Update http message signatures for OCM after spec review (server#62543)
- Fix(rector-strict): Ignore wrong cases of RemoveReturnTagIncompatibleWithNativeTypeRector (server#62548)
- Feat(Sharing): Allow omitting existing recipients when searching for recipients (server#62550)
- Perf: Use hash map to check if path was already checked (server#62552)
- Chore(Sharing): Fix some typos (server#62556)
- Perf: Don't construct Config object twice (server#62559)
- Fix(imip): add context to imip log messages (server#62561)
- Optimize propagator (server#62562)
- Fix: correct spelling errors in comments (server#62564)
- Build(deps): bump guzzlehttp/guzzle to 7.15.2 (server#62585)
- Fix: throw better error message if a user doesn't have a key even though it should have (server#62586)
- Test: migrate remaining e2e tests to PlayWright (server#62592)
- More logging around partfile rename failures (server#62594)
- CI/Test fixes for unified sharing (server#62596)
- Fix(Sharing): Improve date error messages (server#62598)
- Add hints for password and expiration date if they are required (server#62599)
- Chore(previews): add file signature check before opening files (server#62600)
- Perf(preview): Optimize retriving all previews from oc_filecache (server#62601)
- Fix(Sharing): Pass ShareUser instead of IUser (server#62602)
- Feat(core): redesign unified search result presentation (server#62605)
- Test(version-check): Fix flaky test (server#62609)
- Feat: Add missing NoSubAdminRequired attribute (server#62610)
- Preparations for files_sharing legacy backend (server#62613)
- Migrate the dashboard app to Vue 3 (server#62624)
- Migrate weather status to vue3 (server#62625)
- Test: reduce flakyness of files version tests (server#62627)
- Refactor(Sharing): Move from OCP to NCU (server#62640)
- Feat: profile mobile view (server#62646)
- Fix(systemTags): setObjectIdsForTag() dispatches once (server#62647)
- Expend a bit OCP\GlobalScale\IConfig (server#62660)
- Fix(encryption): handle decryption exception with outdated passwords (server#62666)
- Fix(MemcachedFactory): Enable TCP_NODELAY and adjust default timeouts to be reasonable (server#62670)
- Chore: remove deprecated global aliases for OC functions (server#62674)
- Chore: remove deprecated global libraries (server#62677)
- Fix(dashboard): use non-deprecated functions + make tests work at night (server#62682)
- Feat(oauth2): Forward app tokens from primary to secondary in global scale (server#62687)
- Test: resolve potential flaky Playwright tests (server#62688)
- Fix(Database): Use real idle-timer to prevent `lastInsertId` being reset on MariaDB/MySQL (server#62697)
- Fix(console): write app command loading errors to stderr (server#62718)
- Fix(imip): don't report success when a calendar cannot process iMip (server#62722)
- Fix(share-api-controller): add sanity check on canAccessShare for circle share types (server#62724)
- Fix(setup): make sure CAN_INSTALL error page is shown (server#62765)
- Fix(provisioning_api): read newUser.sendEmail as a boolean (server#62776)
- Fix(dav): properly finalize with MOVE only (server#62786)
- Chore: Apply rector:strict ruleset (server#62794)
- Fix: improve logging when failing to get newly created user (server#62795)
- Test(net): Add more ip classifier test cases (server#62797)
- Fix: handle sftp private key as password (server#62805)
- Fix: clear key password after loading key (server#62806)
- Check free space in the proper folder when restoring from trash (server#62807)
- Fix: disable direct link if link shares are disabled (server#62809)
- Fix: require admin permissions for all systemtag updates (server#62810)
- Host/ip validator hardenings (server#62811)
- Hide personal settings of apps not enabled for the user (server#62852)
- Fix(direct editing): cleanup tokens on user deletion (server#62861)
- Feat(api): Add getOrCreateFolder also for SimpleFS module (server#62868)
- Feat: Allow to check user existence outside specific user backends (server#62870)
- Fix(sharing): properly handle verification of copy/move actions (server#62871)
- Fix(share): Prevent type error caused by non-existing user (server#62872)
- Fix(theming): Speed up slow animations (server#62879)
- Feat: Add setting to bypass password confirmation on a selected ip ranges (server#62884)
- Fix: Port away from removed oc_default (server#62886)
- Perf(PasswordConfirmationMiddleware): Reuse reflection object (server#62887)
- Test(sharing): sort recipients before asserting in testGetShareWithPublicSecret (server#62902)
- Feat: keep a classname mapping instead of always storing the full name for shares (server#62904)
- Fix(ObjectStore): reset multipart upload byte counter on retry (server#62919)
- Fix(trashbin): properly show deleted by for federated shares (server#62925)
- Fix(core): improve app icon contrast in the app menu (server#62931)
- Fix(setup): de-duplicate host parsing allowing IPv6 connections (server#62932)
- Command API in OCP (server#62942)
- Style(icons): use filled variants for user, comment, share, password (server#62947)
- Refactor: use DateTimeImmutable in unified sharing api instead of timestamp (server#62957)
- Chore: Bump symfony/console (server#62962)
- App menu visual polishing (server#62963)
- Refactor: use IUser for IShareSourceType::getSourceInteractionResource instead of user id string (server#62972)
- Chore: Bump symfony components to v7 (server#62974)
- Fix: Handle 2fa enforcement earlier (server#62982)
- Fetch share source metadata in bulk (server#62987)
- Fix: improve type hinting for unified share listing methods (server#62989)
- Fix(core): prevent unified search placeholder from clipping (server#62999)
- Fix(CalDAV): Check for user status before serving public calendars (server#63004)
- Chore: Apply rector strict config again (server#63007)
- Revert "Merge pull request #62947 from nextcloud/fix/noid/filled-core… (server#63012)
- Add DBAL Schema wrapper in OCP (server#63013)
- Chore(deps): update 3rdparty dependencies (server#63018)
- Chore(deps): update `cweagans/composer-patches` to v2.0.0 (server#63023)
- Chore(deps): update `fusonic/opengraph` to v3.1.0 (server#63025)
- Chore(deps): update `php-opencloud/openstack` to v3.17.0 (server#63027)
- Build(deps): bump aws/aws-sdk-php from 3.376.2 to 3.390.1 (server#63030)
- Fix(files_trashbin): misleading trashbin:expire output when expiration is disabled (server#63040)
- Update CODEOWNERS to modify maintainers (server#63041)
- Chore: cleanup getting time for formatting logs (server#63043)
- Fix(files_trashbin): cleanup trash metadata after failed cross-user moves (server#63070)
- Feat(federation): Add accept/decline mechanism for federated calendars (server#63112)
- Fix errors from 32bits CI (server#63114)
- Backports ldap fixes (server#63124)
- Refactor: add PHP 8.3 types to BC-safe class constants (server#63133)
- Fix(files_versions): pass missing fileInfo properties to Viewer.compare (server#63149)
- Feat(dbal): Add missing stuff in DBAL wrapper (server#63152)
3rdparty
- Chore: add firebase/php-jwt and gapple/structured-field as dependencies (3rdparty#2413)
- Ci(dependabot): Update stable34 (3rdparty#2419)
- Ci(workflows): Create update-stable-titles.yml (3rdparty#2460)
- Fix: Drop PHP 8.2 in Nextcloud 35 (3rdparty#2477)
- Fix: remove useless polyfills and block installing them (3rdparty#2478)
- Feat: add predis as a dependency for Valkey cluster support (3rdparty#2496)
- Build(deps): Composer audit updates (3rdparty#2497)
- Feat: Disable callable serialization in sabre/xml (3rdparty#2511)
- Feat: Provide symfony polyfill php86 (3rdparty#2549)
- Chore: Bump symfony console (3rdparty#2550)
- Chore: Bump symfony components (3rdparty#2551)
activity
- Fix(notifications): Require absolute links for support of desktop and mobile clients (activity#2514)
- Fix(bulkReceive): honour admin email toggle and ISetting notification defaults (activity#2562)
- Fix(MailQueueHandler): check enable_email toggle before sending queued emails (activity#2563)
- Refactor: flatten nesting in shareNotificationForOriginalOwners with early return (activity#2566)
- Refactor(types): add native parameter and return types to UserSettings (activity#2572)
- Feat(deps): Add Nextcloud 35 support on master (activity#2593)
- Chore(deps): Bump nextcloud-vue from 9.7.0 to 9.8.0 (activity#2601)
- Refactor(tests): migrate e2e test suite from Cypress to Playwright (activity#2603)
- Fix(NotificationGenerator): catch InvalidArgumentException from notification setters in prepare() (activity#2604)
- Feat: adding an option to exclude users from the acitivity log (activity#2626)
- Fix(ActivityAppNavigation): use correct icon filter for NC34+ active nav items (activity#2627)
- Improve activity feed design (activity#2634)
- Perf(mailqueue): cover `amq_latest_send` in the affecteduser index (activity#2635)
- Fix(expire): delete conditions for activity_expire_exclude_users (activity#2655)
- Perf(files): compute move/rename activity settings once (activity#2656)
- Feat: make amount of items sent on email configurable via occ (activity#2673)
- Fix: Remove user memoization (activity#2674)
- Chore: update workflows and PHP version (activity#2675)
- Chore: switch npm and GitHub Actions dependency updates to Renovate (activity#2677)
- Fix(renovate): remove expandCodeOwnersGroups (paid-tier feature) (activity#2704)
- Fix(psalm): update psalm baseline (activity#2705)
- Fix: Fix psalm (activity#2711)
- Ci(renovate): update dependencies on maintained stable branches (activity#2721)
- Chore: lower cooldown to 4 days and remove monthly schedule for tooling (activity#2779)
- Fix: do not fail moves when the old location cannot be resolved (activity#2784)
- Fix(listener): Catch when trying to set up a settings that doesn't exists (activity#2791)
- Fix: stop using deprecated IAppContainer::getServer() (activity#2804)
- Fix(files): roll back activity transaction when activity publishing f… (activity#2812)
- Fix(mail): always reset current user after sending activity emails (activity#2814)
- Feat(stream): add search, date range and account filters to the stream (activity#2836)
- Feat(stream): add an activity heatmap that drives the date filter (activity#2839)
- Fix(tests): Fix migration tests (activity#2856)
app_api
- Feat(deps): Add Nextcloud 35 support on main (app_api#872)
- Fix: proxy route leading slash (app_api#874)
- Feat(deps): Add Nextcloud 35 support on main (app_api#880)
- Fix: normalize missing bruteforce_protection and headers_to_exclude on ExApp routes (app_api#882)
- Feat: validate ExApp routes at registration and reject malformed data (app_api#885)
- Feat: add default_action field to files-actions-menu registration (app_api#887)
- Feat(config): store ExApp config & preferences in the server's app/user config (app_api#889)
- Fix(fetcher): catch GenericFileException when reading the appstore cache file (app_api#891)
- Ci: use INFO loglevel in the Redis deploy jobs (app_api#893)
- Fix(maintenance-mode): keep only HaRP and ExApp survival routes available in maintenance mode (app_api#898)
- Ci: replace PHP 8.2 with PHP 8.4 in the PHPUnit matrix (app_api#899)
- Feat(openapi): add OpenAPI specification generation (app_api#905)
- Feat(setup-checks): let ExApps surface setup checks in the admin overview (app_api#908)
- Docs: Add an AGENTS.md guide for installing, operating and developing AppAPI (app_api#911)
- Ci(dependabot): add npm updates for stable branches (app_api#914)
- Feat: add release relay and npm audit fix workflows (app_api#921)
- Ci: Add terser-webpack-plugin to the dev dependency definition (app_api#928)
- Fix(notifications): do not translate empty ExApp strings, which throws on Nextcloud 35 (app_api#953)
- Ci(tests-deploy): wait until Nextcloud is installed before enabling AppAPI (app_api#954)
- Fix(deprecation): stop using OC_App and non-public AppManager methods (app_api#960)
- Move the agent guides to the nextcloud-skills repository (app_api#968)
- Do not deploy ExApp environment variables with an empty default as the literal string Array (app_api#970)
bruteforcesettings
- Feat(deps): Add Nextcloud 35 support on master (bruteforcesettings#1099)
- Fix: fix toggle the allow list option (bruteforcesettings#1103)
- Chore(deps): update dependencies (bruteforcesettings#1145)
- Ci(php): Require PHP 8.3 in all tooling (bruteforcesettings#1146)
circles
- Feat: Add the possibility to create invitation links to circles (circles#2254)
- Feat(mount-provider): implement IPartialMountProvider (circles#2378)
- Feat: add support for setting preview avatar for circle (circles#2438)
- Feat(deps): Add Nextcloud 35 support on master (circles#2475)
- Feat(deps): Add Nextcloud 35 support on master (circles#2479)
- Feat: Add role-based filtering for circle member queries (circles#2482)
- Update rector, fix configuration and run it (circles#2484)
- Chore(actions): add sync-workflow-templates github action (circles#2493)
- [master] build: add .nextcloudignore for release builds (circles#2508)
- Chore: getBasedOn() is nullable (circles#2519)
- Chore: Minimum php version is 8.3 (circles#2520)
- Adjust local controller to better handle permission checks (circles#2522)
- Fix(local-controller): dont show full config int of circle for non-members (circles#2523)
- Fix(local-controller): validate params set on team creation (circles#2524)
- Test(admin-controller): add unit tests covering all controller endpoints (circles#2544)
- Fix(local-controller): include CFG_OPEN in config mask for visible circles (circles#2545)
- Feat: add pull request template (circles#2558)
- Feat(teams): in-app Teams page (circles#2561)
- Test: scaffold front-end testing with Vitest and Playwright (circles#2562)
- Fix(permission): get permissions for user from inherited when not direct member (circles#2572)
- Chore(i18n): Rename all occurrences of "circles" to "teams" (circles#2573)
- Ci(dependabot): add npm updates for stable branches (circles#2583)
- Fix(workflow): switch from node.yml to npm-build.yml (circles#2603)
- Feat(admin-controller): add route to fetch all circles (circles#2614)
- Fix: refresh user mounts when removed from a group or circle that has associated team folders (circles#2615)
- Fix(url): Make team link absolute URL (circles#2630)
- Fix(l10n): ignore compiled js files (circles#2631)
- Feat: Add filter by role and username (circles#2659)
- Feat: add release-relay.yml workflow (circles#2666)
- Fix(maintenance-service): remove redundant empty check on getDisplayName (circles#2667)
- Fix(reuse): add entry for .l10nignore (circles#2668)
- Fix: avoid attempting to fetch protected resources when user is not a member (circles#2673)
- Feat: implement scim and oidc integration (circles#2674)
- Fix(types): declare vite/modulepreload-polyfill virtual module (circles#2676)
- Avoid duplicate purge on inheritance (circles#2687)
- Fix(local-controller): validate when trying adding member of type contact (circles#2696)
- Fix: Use global members limit as default for circle (circles#2697)
- Fix: add promoteToOwner method (circles#2711)
- Fix(circles): preserve group display names when creating circles (circles#2722)
files_downloadlimit
- Feat(deps): Add Nextcloud 35 support on master (files_downloadlimit#804)
- Chore: clean up old CSS files (files_downloadlimit#851)
- Fix: allow higher download limits than 500 (files_downloadlimit#906)
files_lock
- Perf: cache negative results in LockSerivice::getLockForNodeIds (files_lock#1057)
- Feat(config): switch to config lexicon (files_lock#1060)
- Feat(deps): Add Nextcloud 35 support on main (files_lock#1081)
- Fix(LockWrapper): gracefully handle null user in copyFromStorage() (files_lock#1097)
- Perf: Avoir calling Server::get for each share mounts (files_lock#1113)
- Refactor: Use modern events instead of old hooks (files_lock#1125)
- Use SPDX license identifier (files_lock#1130)
- Ci(tools): Update dev dependencies (files_lock#1131)
- Ci(dependabot): add composer updates for stable branches (files_lock#1150)
- Enh: allow file owner to unlock TYPE_TOKEN locks (files_lock#1168)
- Refactor: Remove CoreQueryBuilder and co (files_lock#1193)
- Feat: add release-relay.yml workflow (files_lock#1197)
- Docs(readme): restructure, expand, and revise locking documentation (files_lock#1198)
- Fix(webdav): align lock editor property responses (files_lock#1199)
- Test: clean up all lock feature test fixtures (files_lock#1200)
- Test(lock): access shared file as recipient in app lock test (files_lock#1206)
- Fix(command): clarify files:lock usage and unlock feedback (files_lock#1207)
files_pdfviewer
- Chore(performance): make the viewer component async (files_pdfviewer#1434)
- Feat(deps): Add Nextcloud 35 support on master (files_pdfviewer#1441)
- Feat(deps): Add Nextcloud 35 support on master (files_pdfviewer#1442)
- Fix: 1451 stop spinner once the document loaded (files_pdfviewer#1454)
- Chore(deps): Bump PDF.js from 4.0.189 to 4.10.38 (files_pdfviewer#1474)
- Chore: Bump PHP version to 8.3 (files_pdfviewer#1488)
- Chore: Add workflow to sync workflow templates (files_pdfviewer#1489)
- Fix: Add explicit dependency for vue-loader@legacy (files_pdfviewer#1496)
- Chore: Add explicit dependency for terser-webpack-plugin (files_pdfviewer#1502)
firstrunwizard
- Feat(deps): Add Nextcloud 35 support on master (firstrunwizard#2073)
- Feat(deps): Add Nextcloud 35 support on master (firstrunwizard#2074)
- Use SPDX license identifier (firstrunwizard#2128)
logreader
- Feat: Remove unnecessary whitespaces (logreader#1835)
- Feat(deps): Add Nextcloud 35 support on master (logreader#2019)
- Chore: bump PHP version to 8.3 (logreader#2064)
- Ci(dependabot): add npm updates for stable branches (logreader#2094)
- Chore: add update-stable-titles worfklow, exclude IDE dirs with .gitignore (logreader#2111)
- Fix(build): extract license information from .map files (logreader#2176)
nextcloud_announcements
- Feat(deps): Add Nextcloud 35 support on master (nextcloud_announcements#625)
- Use SPDX license identifier (nextcloud_announcements#662)
- Fix(crawler): Fix phpseclib3 compatibility (nextcloud_announcements#679)
notifications
- Feat(deps): Add Nextcloud 35 support on master (notifications#3007)
- Fix(webpush): recover gracefully from corrupted or mismatched VAPID keys (notifications#3031)
- Chore: extend testing of `encryptAndSign` and make the methods discoverable by psalm (notifications#3050)
- Fix(push): Use OAEP padding by default in Nextcloud 35+ (notifications#3068)
- Docs(webpush): Document knowledge and trust models of webpush flow (notifications#3075)
- Fix(email): Correctly initialize next_send_time field (notifications#3078)
- Fix(webpush): Don't reuse query object for second query (notifications#3088)
- Test: Push notification payload (notifications#3144)
- Use SPDX license identifier (notifications#3149)
- Fix(Makefile): Add missing composer setup for dev-setups and building… (notifications#3159)
- Ci(dependabot): add composer updates for stable branches (notifications#3175)
- Fix(push): Fix undefined index when accessing token age (notifications#3224)
- Perf(push): Send push notifications async to proxies (notifications#3234)
- Build(deps): Bump guzzlehttp/guzzle (notifications#3239)
- Fix(webpush): Skip browsers when disabled (notifications#3245)
office
- Newly added in this release
password_policy
- Feat(deps): Add Nextcloud 35 support on master (password_policy#938)
- Feat: Add login output when password policy fails (password_policy#958)
- Chore(deps): drops support for PHP 8.2 (password_policy#972)
photos
- Refactor: Port to newer system tag events (photos#3437)
- Fix(metadata): exif_read_data() supports JPEG/TIFF (photos#3461)
- Feat(deps): Add Nextcloud 35 support on master (photos#3518)
- Feat(deps): Autoupdate rector (photos#3536)
- Chore: Bump @nc/vue to v8.35.0 (photos#3550)
- Fix handling of directory names with special characters (photos#3552)
- Feat: display video duration (photos#3553)
- Fix: faces actions and add recognize e2e tests (photos#3573)
- Build(deps): Unblock dependency updates by allowing to update vite again (photos#3586)
- Ci(dependabot): add composer updates for stable branches (photos#3630)
- Fix: Bust full preview cache by etag (photos#3695)
- Fix(dav): properly handle metadata (photos#3705)
- Chore(ai): add AGENTS.md (photos#3728)
privacy
- Feat(deps): Add Nextcloud 35 support on master (privacy#1339)
- Use SPDX license identifier (privacy#1380)
- Fix(ci): unblock CI — enforce PHP 8.3 in psalm.xml + sync PHP workflow templates (privacy#1381)
recommendations
- Refactor: migrate components to Composition API (Vue 3 prep) (recommendations#1029)
- Feat(deps): Add Nextcloud 35 support on master (recommendations#1037)
- Refactor: Port away from deprecated APIs (recommendations#1045)
- Chore: set Psalm PHP version to 8.3 (recommendations#1055)
- Ci(renovate): update dependencies on maintained stable branches (recommendations#1065)
- Ci(renovate): ignore workflows managed by the org template repo (recommendations#1124)
- Ci: add workflow sync workflow (recommendations#1125)
- Ci: configure coderabbitai (recommendations#1126)
- Build: migrate from webpack to vite (recommendations#1131)
- Refactor: migrate state management from Vuex to Pinia (recommendations#1136)
- Refactor: migrate to Vue 3 (recommendations#1141)
- Chore: update composer platform to PHP8.3 (recommendations#1151)
related_resources
- Ci: Create update-nextcloud-ocp-approve-merge.yml (related_resources#1037)
- Ci: Create sync-workflow-templates.yml (related_resources#1038)
- Ci(psalm): Fix required PHP version (related_resources#1039)
- Ci(psalm): Fix nextcloud/ocp update (related_resources#1048)
- Chore: add release-relay.yml workflow (related_resources#1073)
- Feat(deps): Add Nextcloud 35 support on master (related_resources#970)
- Refactor: Simplify request builder (related_resources#999)
serverinfo
- Vue (serverinfo#1007)
- Ci(actions): Update workflows (serverinfo#1013)
- Chore: Require PHP 8.3 (serverinfo#1019)
- Ci(actions): Automate workflow updates (serverinfo#1027)
- Use a parameterized translation for CPU thread count (serverinfo#1032)
- Ci(actions): Add workflow to lint info.xml (serverinfo#1037)
- Ci: Disable npm-audit-fix on stable34 (serverinfo#1044)
- Fix(disk): do not divide by zero on a filesystem with no capacity (serverinfo#1062)
- Fix(disk): stop dropping filesystems whose mount point has unusual ch… (serverinfo#1063)
- Fix(disk): stop the disk card text overflowing and tidy up the chart (serverinfo#1068)
- Fix(layout): let info tables wrap and give PHP extensions the full width (serverinfo#1069)
- Fix(l10n): Ignore compiled js/ (serverinfo#1071)
- Ci: Add assisted-by workflow (serverinfo#1076)
- Background jobs (serverinfo#1084)
- Fix: Mark update storage stats as time insensitive (serverinfo#1085)
- Fix(background-jobs): adjust width for when column (serverinfo#1088)
- Feat(deps): Add Nextcloud 35 support on master (serverinfo#996)
survey_client
- Fix(report): Fix sending huge reports (survey_client#394)
- Feat(deps): Add Nextcloud 35 support on master (survey_client#417)
- Use SPDX license identifier (survey_client#450)
suspicious_login
- Feat(deps): Add Nextcloud 35 support on master (suspicious_login#1112)
- Fix(notifier): Fix label length limited to 32 characters (suspicious_login#1114)
- Fix(autoload): load rubix free functions despite Composer files dedupe (suspicious_login#1118)
- Chore: update Psalm PHP to 8.3 (suspicious_login#1119)
- Chore: make David the primary maintainer (suspicious_login#1128)
text
- Chore(test): add test for 4480 (text#7777)
- Fix(code): don't apply inline code CSS rules to code blocks (text#8587)
- Test(playwright): await `setO(n|ff)line` in autosave tests (text#8588)
- Feat(deps): Add Nextcloud 35 support on main (text#8590)
- Chore(ci): add stable34 to branches that receive updates (text#8593)
- Fix: allow dots in markdown link text (text#8596)
- Fix(ActionInsertLink): allow to get title from link picker (text#8615)
- Fix(folderDescription): fix max height in unfocused mode (text#8616)
- Chore: add AI checkboxes to PR template (text#8617)
- Chore/upgrade vue 3 (text#8619)
- Chore: remove codecov (text#8625)
- Fix: several table button design fixes (text#8627)
- Fix(translate): use assistant app dialog (text#8628)
- Fix: Rename mobile editing file creator name to leave out "New" prefix (text#8634)
- Fix: disable open link button for unsafe link (text#8651)
- Fix(folderDescription): always use 'Readme.md' as filename (text#8652)
- Fix(headings): skip headings in details in table of contents (text#8653)
- Test(playwright): add summary job so we can add it to merge rules (text#8656)
- Fix(Editor): emit modified fileNode size on save (text#8686)
- Fix(mediaHandler): strip relevant bidi chars in filenames (text#8687)
- Add a "question" bloc in addition of Danger, Info, Positive, Warn (text#8698)
- Chore(github): update workflows (text#8713)
- Preserve Markdown reference links (text#8717)
- Fix(math): fix lost content after math node (text#8718)
- Fix(editorApi): allow to disable image lazy-loading (text#8719)
- Fix(autofocus): persist cursor positions in localStorage (text#8723)
- Fix(markdown): preserve horizontal rule markup (text#8725)
- Fix permission change in text doc (text#8746)
- Chore(psalm): bump phpVersion to 8.3 (text#8752)
- Fix: show Assistant icon if only translation provider available (text#8753)
- Performance: Only check permissions when changing content (text#8754)
- Chore(psalm): throw directly to make types more obvious (text#8756)
- Ci: remove compile command, as it happens after merge. Then, also run reuse (text#8761)
- Chore(ci): continue playwright jobs if one fails (text#8763)
- Bump php version and update baseline (text#8776)
- Fix(SessionService): sanitize displayName to utf8 encoding (text#8779)
- Fix(editor): preserve leading newlines in plain text editor (text#8787)
- Chore(cleanup): deprecated secureRandom->generate (text#8789)
- Fix(table): replace alert() with showWarning() for nested table paste (text#8795)
- Fix(Table): allow changing list indention inside tables (text#8812)
- Fix(ImageView): use `a` element for clickable items (text#8813)
- Fix/vue3 followup (text#8822)
- Chore(refactor): aviod extending serializer options (text#8823)
- Add footnotes support (text#8840)
- Ci(playwright): fix installing pinned NPM version (text#8844)
- Fix(BulletList): remove `preserveWhitespace: true` parseHTML override (text#8856)
- Fix(links): scroll to anchor links directly (text#8857)
- Chore(playwright): use `list` reporter when run locally (text#8859)
- Fix(FloatingButtons): in headings, leave space for the anchor icon (text#8860)
- Two small footnotes follow-up fixes (text#8874)
- Fix(filepicker): hide menu (text#8875)
- Chore(refactor): loop over possible footnotes once (text#8876)
- Fix(share): detect if documentId is outside of share early (text#8879)
- Upgrade/typescript v6 (text#8884)
- Fix: Pasting from excel inserts an image instead of a formatted table (text#8897)
- Feat: inline comments (text#8901)
- Fix: add file-access check (text#8903)
- Fix/autosave timer (text#8917)
- Chore(npm): allow scripts of known NPM dependencies (text#8922)
- Fix(collaboration): ellipsise user caret labels (text#8923)
- Fix: update ShowImageModal to use fullUrl for show original image ins… (text#8924)
- Fix(DirectEditing): check if user is enabled (text#8951)
- Fix(editor): fix viewer header overlaying page content on mobile (text#8952)
- Fix(editor): set `translate=yes` for read-only editor (text#8962)
- Fix(sync): reset #sending flag when no active connection on sendStepsNow (text#8963)
- Fix(attachments): check documentId matches (text#8966)
- Test(playwright): don't set `webServer.url` parameter (text#8968)
- Chore(test): direct editing permissions (text#8969)
- Fix(embed): guard unavailable search commands (text#8970)
- Fix(lists): no margin-bottom for nested lists to prevent ugly gap (text#9004)
- Fix(LinkPicker): improve suggestions order and rename 'Files' (text#9020)
- Fix(viewer): align content of old version in viewer version comparison (text#9029)
- Fix(dbal): Adapt to new DBAL wrapper (text#9030)
- Feat(php): install and configure PHP rector (text#9031)
twofactor_nextcloud_notification
- Feat(deps): Add Nextcloud 35 support on main (twofactor_nextcloud_notification#1324)
- Use SPDX license identifier (twofactor_nextcloud_notification#1395)
twofactor_totp
- Fix: handle potentially null return value of preg_replace (twofactor_totp#1762)
- Feat(deps): Add Nextcloud 35 support on master (twofactor_totp#1768)
- Fix(migration): preserve state=2 secrets when cleaning up unverified … (twofactor_totp#1771)
- Chore: add an agents file (twofactor_totp#1772)
- Chore: migrate issue templates to issue forms and simplify bug reports (twofactor_totp#1773)
- Feat: allow admins to configure TOTP algorithm and secret length (twofactor_totp#1778)
- Feat(totp): embed favicon URL in otpauth QR code (twofactor_totp#1779)
- Fix: add and apply nextcloud/rector (twofactor_totp#1782)
- Ci(renovate): update dependencies on maintained stable branches (twofactor_totp#1795)
- Ci: drop unused app publish workflow (twofactor_totp#1835)
- Chore(deps): bump phpunit from v11 to v12 (twofactor_totp#1843)
updater
- Chore(tests): master is now 35 (updater#755)
- Chore: Fix linting supported PHP versions (updater#756)
- Feat(build): introduce reproducible builds (updater#757)
- Chore(deps): upgrade Rector and use Nextcloud rules (updater#758)
- Fix: Fix explode calls for path parsing (updater#760)
- Docs(README): Fix typo (overview) (updater#774)
viewer
- Fix: adjust z-index for color picker modals (viewer#3175)
- Feat(deps): Add Nextcloud 35 support on master (viewer#3182)
- Feat(deps): Add Nextcloud 35 support on master (viewer#3183)
- Fix(plyr): the speed selection should not go out of the viewport (viewer#3192)
- Fix(plyr): the speed settings button should not be cut (viewer#3193)
- Fix(plyr): add l10n to components (viewer#3194)
- Fix(plyr): add l10n to speed selections (viewer#3195)
- Don't download file if file path is not defined (viewer#3200)
- Fix(files): don't expose WebDAV XML-attribute artifacts as DOM attributes (viewer#3225)
- [master] fix(composer): Remove trailing comma breaking composer.json parsing (viewer#3271)
- Test: migrate e2e tests from Cypress to Playwright (viewer#3272)
- Fix: urlencode file source based on resource url (viewer#3320)