Commit graph

849 commits

Author SHA1 Message Date
Peter Ringelmann
bc04903ce6 fix(core): app menu icon contrast in dark mode
-e
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-05-11 14:50:49 +02:00
Peter Ringelmann
490c6e7c06 test(core): align AppMenu mock with new icon helper
-e
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-05-11 14:50:49 +02:00
Peter Ringelmann
0b97e4f585 fix(core): app menu launcher tile icon, dark mode, and hyphenation
-e
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-05-11 14:50:49 +02:00
Peter Ringelmann
fa201206bb fix: unit test
-e
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-05-07 19:25:15 +02:00
Peter Ringelmann
55f9a872af fix: minor styling issues
-e
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-05-07 19:25:15 +02:00
Peter Ringelmann
041dd9f70b refactor(AppItem): drop redundant boolean prop defaults
-e
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-05-07 19:25:15 +02:00
Peter Ringelmann
f895e77ab4 feat: only app store link opens in new tab
-e
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-05-07 19:25:15 +02:00
Peter Ringelmann
8e5d02be2d feat: add app store link for non-admins
-e
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-05-07 19:25:15 +02:00
Peter Ringelmann
7ec7eb86bf fix: remove new tab links
-e
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-05-07 19:25:15 +02:00
Peter Ringelmann
78e98bba29 fix: stylelint issue
-e
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-05-07 19:25:15 +02:00
Peter Ringelmann
4cd0ddbf66 feat(core): app menu waffle launcher
- Popover grid replaces the old hamburger overlay
- Roving tabindex keyboard nav (arrow keys, Home/End, Enter/Space)
- Focus returns to whichever trigger opened the popover
- RTL-aware horizontal alignment
- Admin-only "More apps" tile
- Unit + Cypress coverage

Resolves: #59888
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-05-07 19:25:15 +02:00
Peter Ringelmann
82fb2e1bb3 fix(core): prompt for password once when installing recommended apps
Wire the password-confirmation interceptors into the recommendedapps
entry point and switch the installer to a single bulk enable call so
the strict password confirmation on enableApps is satisfied.

Fixes #60068
-e
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-05-06 13:25:52 +02:00
Ferdinand Thiessen
b0d364388a
refactor(appstore): handle in-app-search of appstore
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-05-05 22:16:01 +02:00
Anna Larch
ef0db44d01 test(core): add unit tests for RedirectUnsupportedBrowsers
Covers the main logic paths: supported browser (no redirect), unsupported
browser (redirect with btoa-encoded URL), already on the warning page
(no double redirect), and a no-throw guard that would have caught the
window.Buffer regression.

AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anna Larch <anna@nextcloud.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-05-04 20:35:59 +02:00
Anna Larch
2aa944a80f fix(core): use btoa() instead of window.Buffer.from() for base64 encoding
window.Buffer is a Node.js API that is not natively available in browsers.
It was apparently polyfilled in the webpack bundle by a dependency, but
the polyfill is absent in environments like headless Electron (Cypress).

This went undetected because browserslist-useragent-regexp < 4.1.4 had a
bug where an empty browser set produced /(?:)/ (matches everything). Electron
matched as "supported" and the redirect code was never reached.

browserslist-useragent-regexp 4.1.4 fixed that bug (PR #1583: faithfully
match an empty set of browsers), generating /[]/ instead. Electron 118 no
longer matches as supported, the redirect path is now exercised, and
window.Buffer.from() throws:

  TypeError: Cannot read properties of undefined (reading 'from')

The fix replaces window.Buffer.from(str).toString('base64') with the
native browser btoa(str), which has been universally available since
before our minimum browser support baseline and requires no polyfill.

Fixes: #57920

Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-05-04 19:48:19 +02:00
Côme Chilliet
ab2df86b78
chore: Fix lint error in PasswordLessLoginForm.vue
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-04-30 14:07:00 +02:00
Ferdinand Thiessen
c4e2159284
Merge pull request #58576 from nextcloud/carl/updater-controller
refactor(updater): Move updater to a Controller
2026-04-30 01:19:45 +02:00
Carl Schwan
b53d9a7259
refactor(updater): Move updater to a Controller
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-04-29 22:58:15 +02:00
Côme Chilliet
6ced1ce9d8 chore: Fix npm lint issues in PasswordLessLoginForm.vue
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-04-28 10:00:19 +02:00
Côme Chilliet
19c7ac9194 fix: Always redirect to an absolute URL
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2026-04-28 10:00:19 +02:00
Ferdinand Thiessen
a4132d73cc chore!(core): remove deprecated Handlebars globals
Global Handlebars have been deprecated since Nextcloud 19.
We do not use them anymore and all integrations were removed with
Nextcloud 34. So its time to also remove the globals and thus the
dependency.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-04-24 07:46:38 +02:00
Peter Ringelmann
ea6e031e04 fix(core): skip unified-search Ctrl+F on pages with their own handler
-e
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
2026-04-23 09:53:22 +02:00
Ferdinand Thiessen
0dc7add400
chore: fix ESLint issues reported because of config update
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-04-20 22:13:24 +02:00
Ferdinand Thiessen
6db75dca92
chore: fix ESLint issues for rules added in ESLint v10
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-04-20 22:13:24 +02:00
Ferdinand Thiessen
c96099183e fix(sharing): show common confirmation on password reset
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-04-09 16:59:19 +02:00
Josh
1c1bd469b8
chore(EventSource): drop client-side fallback
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-03-21 09:14:35 -04:00
provokateurin
e8feef1c9c fix(core): Allow external sharing to plain http://localhost
Signed-off-by: provokateurin <kate@provokateurin.de>
2026-02-23 10:59:02 +00:00
Ferdinand Thiessen
b0df06d533
chore!(core): remove deprecated jQuery and jQuery UI
"jQuery is deprecated and will be removed with Nextcloud 19"
Well... At least it is removed now 😉

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-02-17 12:51:42 +01:00
Ferdinand Thiessen
00a5c028a4
chore!(core): remove legacy Backbone
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-02-17 12:50:49 +01:00
Ferdinand Thiessen
a32168b01e
chore!(core): remove legacy OC.Files.Client
Use the DAV client from `@nextcloud/files/dav` instead.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-02-17 12:50:49 +01:00
Ferdinand Thiessen
fd5108b68b
chore!(core): remove global snapper.js handling
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-02-17 12:50:49 +01:00
Ferdinand Thiessen
c89939fbd6
chore!(core): remove handling of .live-relative-timestamp use @nextcloud/vue/components/NcDateTime instead
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-02-17 12:50:49 +01:00
Ferdinand Thiessen
503fad2b16
chore!(core): remove legacy OC.registerMenu and other menu helpers
Instead use Vue components.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-02-17 12:50:49 +01:00
Ferdinand Thiessen
e14d97b95a
chore!(core): remove deprecated OC.Apps
Instead use components from `@nextcloud/vue`

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-02-17 12:50:49 +01:00
Ferdinand Thiessen
b66292a0d4
chore!(core): drop deprecated OC.Notification
Deprecated since 17.0.0, use the `@nextcloud/dialogs` package instead.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-02-17 12:50:49 +01:00
Ferdinand Thiessen
16f4ff98e4
chore!(core): drop deprecated OC.Dialogs.fileexists
It is deprecated since 29.0.0.
Instead use `openConflictPicker` from the `@nextcloud/upload` (Vue 2).
Or from `@nextcloud/dialogs` (every other framework like Vue 3 etc).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-02-17 12:50:49 +01:00
Ferdinand Thiessen
9c8f80102a
chore!(core): drop deprecated OC.Settings
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-02-17 12:50:49 +01:00
Enjeck C.
cad90ac28a fix: Add support for AscDesktopEditor browser user agent
Signed-off-by: Enjeck C. <patrathewhiz@gmail.com>
2026-01-28 18:28:01 +01:00
Ferdinand Thiessen
e25f864e28
chore(legacy): fix @stylistic/exp-list-style ESLint rule
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-26 00:05:29 +01:00
Ferdinand Thiessen
503acb0ed6
feat: allow to filter contacts by team
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-23 14:54:41 +01:00
Ferdinand Thiessen
428e76214e
chore: drop legacy WhatsNew
This feature was not used in 8 years and from frontend did not even
properly work anymore and was implemented using deprecated API.
So get rid of it.

The last version that was using a changelog from the changelog server
was Nextcloud 20.

We use the firstrunwizard nowadays for informing about Nextcloud
changes in new releases.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-21 23:23:10 +01:00
Ferdinand Thiessen
6e29885128
refactor(core): migrate OC.EventSource from jQuery to native API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-20 02:35:34 +01:00
Ferdinand Thiessen
a3bd996e7c chore: drop duplicated legacy Ajax error handling
The XHR error handling was duplicated, as we already handle this in
`core/src/init.js` where we intercept Fetch API and XHR API.
So we can drop this jQuery specific duplicate.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-19 16:28:25 +01:00
Ferdinand Thiessen
f175e421b3
refactor(core): migrate OC.msg away from jQuery
Make the class jQuery free to be able to drop it as a dependency.
Also added some unit tests for it.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-16 17:48:49 +01:00
Ferdinand Thiessen
1163638d3d refactor(core): migrate OCP.Comments away from jQuery
The API was not yet deprecated but is not used anymore,
so 1. added a deprecation so we can get rid of it in the future.
But until then we need to drop jQuery so refactored the code to use
vanilla JS.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-16 14:21:52 +01:00
Ferdinand Thiessen
29a59c3822
refactor: migrate OC.*QueryString from jQuery
Use native `URLSearchParams` to remove jQuery and deprecate it.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-16 12:38:14 +01:00
Ferdinand Thiessen
bbe3d92a38
refactor(core): migrate OCP.AppConfig from jQuery to axios
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-16 11:17:02 +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
Ferdinand Thiessen
752a62133a
chore: fix or ignore linter issues
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-15 23:30:21 +01:00
Ferdinand Thiessen
ba0615b33e
refactor(core): migrate public share authentication to Vue
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-15 23:26:19 +01:00