What's Changed
- chore(cypress): Migrate access-level tests from Behat to Cypress by @susnux in #41137
- fix(theming): Make sure the footer is hidden if no content is rendered by @susnux in #40597
- fix(cypress): Add timeout for waiting on Nextcloud server by @susnux in #41250
- feat(dependencyinjection): Allow optional (nullable) services by @ChristophWurst in #41265
- fix(TextToImage): Consistently use the right method to get the preferred providers by @marcelklehr in #41211
- add descriptions for background pictures by @szaimen in #41256
- fix semaphore unguarding by @szaimen in #41263
- optimize cache jail creation by @icewind1991 in #40995
- chore(deps-dev): Bump cypress from 13.3.0 to 13.4.0 by @dependabot in #41280
- chore(deps): Bump cypress-io/github-action from 6.5.0 to 6.6.0 by @dependabot in #41283
- chore(deps): Bump vue and vue-template-compiler by @dependabot in #41281
- chore(deps): Bump pinia from 2.1.6 to 2.1.7 by @dependabot in #41282
- chore(deps): Bump focus-trap from 7.5.2 to 7.5.4 by @dependabot in #41275
- chore(deps): Bump @nextcloud/upload from 1.0.0-beta.18 to 1.0.0-beta.19 by @dependabot in #41279
- chore(deps): Bump @nextcloud/moment from 1.2.1 to 1.2.2 by @dependabot in #41277
- chore(deps): Bump marked from 9.0.3 to 9.1.5 by @dependabot in #41276
- fix(theming): Correctly expose user and admin theming by @provokateurin in #41059
- fix: Delete ghost versions of non-existing files by @solracsf in #41173
- Update openapi extractor by @provokateurin in #41078
- chore(cypress): Migrate header contacts menu tests from Behat to Cypress by @susnux in #41190
- fix(dav): Add ID / label to timezone picker in availablility settings by @susnux in #41285
- Add a command to run the setup checks from CLI by @come-nc in #41081
- fix: Only highlight profile entry when viewing own profile by @Pytal in #41251
- fix(scheduling): don't send iMIP emails to rooms / resources by @miaulalala in #40876
- Update README.md by @SYK-08 in #40809
- fix(files_sharing): fix sharing tab translations by @ShGKme in #41301
- Add OpenAPI attribute to allow multiple scopes by @nickvergessen in #41175
- fix(install): Make installing more verbose by @nickvergessen in #41214
- Improve setup checks naming and improve database version check by @come-nc in #41083
- Fix styles for input fields on focus state by @JuliaKirschenheuter in #41270
- Update supported versions on issue template by @solracsf in #41294
- Migrate checks to new SetupCheck API by @come-nc in #41134
- fix description of sharing toggle by @szaimen in #41298
- Improve setup checks API by @come-nc in #41311
- IFilesMetadata by @ArtificialOwl in #40761
- chore(cypress): Migrate apps acceptance tests to Cypress by @susnux in #41303
- fix(files): Do not encode the path twice (and do not use undefined method) by @susnux in #41329
- Refactors /Metadata, /Migration, and /Net namespaces in /lib/private/ by @fsamapoor in #39109
- Refactors lib/private/SystemTag by @fsamapoor in #38995
- Fix styles for input field and textarea on focus, hover and active state by @JuliaKirschenheuter in #41328
- feat(dav): implement personal absence settings by @st3iny in #40767
- feat(files): support nested actions by @skjnldsv in #41010
- fix(files): add missing
Overwrite: F
header in renaming by @skjnldsv in #41331 - reuse sharing disabled state when listing folder content by @icewind1991 in #40996
- fix: Show error message when CSRF check fails at login by @ChristophWurst in #40799
- Support dynamic metadata request on PROPFIND requests by @artonge in #40964
- get children from dav node when preloading system tags by @icewind1991 in #41054
- optimize builtin storage wrappers by @icewind1991 in #41119
- feat(contactsmenu): Sort by user status by @ChristophWurst in #41266
- fix(migration): Fix files metadata migration by @nickvergessen in #41351
- fix(settings): Pass user object to user row actions by @susnux in #41349
- Update
calendar-availability-vue
to^2.0.0
by @JuliaKirschenheuter in #41348 - fix(JobList#hasReservedJob): Break tie when multiple jobs are reserved by @marcelklehr in #41295
- Add two more translations for
CalendarAvailability
by @JuliaKirschenheuter in #41339 - Simplify IP address normalizer with IP masks by @Altahrim in #39582
- chore: Update nextcloud dependencies to stable version by @susnux in #41355
- feat: Add out-of-office message API by @ChristophWurst in #40653
- feat(user status): automate user status for events by @miaulalala in #40615
- fix(LDAP): prevent incomplete displaynames… by @blizzz in #41333
- fix(events): Make sure all
\OCP\Files::…
events are emitted with th… by @nickvergessen in #41365 - Customize rendering for live photos by @artonge in #41308
- fix: Validate that we have a proper distributed cache configured by @juliushaertl in #41354
- Advanced search: backend allows multiples terms to search by @Altahrim in #40618
- New UI global search by @Fenn-CS in #40823
- 28.0.0 beta 2 by @blizzz in #41314
New Contributors
Full Changelog: v28.0.0beta1...v28.0.0beta2