The download button icon on the public share page always appeared
in the opposite color of the button text. The root cause was the
wrong CSS variable for the filter applied to the icon.
Background-image icons are dark (black) by default. In light mode,
the icon must be inverted to white when the primary color is dark,
which requires --primary-invert-if-dark. The code was incorrectly
using --primary-invert-if-bright, inverting in the wrong direction.
In dark mode, icons.css swaps the icon variables so that
--icon-download-dark resolves to the white SVG. The filter logic
must be reversed: --primary-invert-if-bright is needed to invert
the white icon to black when the primary color is bright.
Fix by using --primary-invert-if-dark in light mode and
--primary-invert-if-bright in dark mode, handling both the
prefers-color-scheme media query and the Nextcloud data-themes
attribute for explicit theme selection.
Signed-off-by: Rodrigo Mendes Correia <rodrigo.mendes.correia@tecnico.ulisboa.pt>
The header search placeholder now reads as a hint rather than
competing visually with the icon and surrounding header items.
Refs: nextcloud/server#59888
Signed-off-by: nfebe <fenn25.fn@gmail.com>
A centered, input-styled trigger replaces the top-right search icon as
the entry point to Unified Search. First phase of a phased rollout
that will later turn the trigger into a real inline-filtering input.
Refs: nextcloud/server#59888
Signed-off-by: nfebe <fenn25.fn@gmail.com>
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>
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>
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>
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>
"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>
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>