PR #58224 introduced a raster→SVG conversion path in ImageManager::getImage()
that breaks display of custom theming images. The root cause is a three-part
bug chain:
1. getImage() attempted to convert raster images (PNG/JPEG) to SVG format,
which Imagick cannot do meaningfully and produces broken output.
2. getMimeType() returns 'application/octet-stream' for extensionless stored
files, so the Content-Type response header was wrong.
3. Stale .svg cache files persisted after image replacement, causing
subsequent requests to serve the wrong format.
Fix by:
- Restricting the Imagick conversion to SVG→PNG only (not raster→SVG)
- Reading the stored MIME type from IAppConfig for extensionless files in
ThemingController::getImage()
- Deleting .svg cache files in ImageManager::delete()
- Injecting IAppConfig into ImageManager and reading the cachebuster via
IAppConfig::getAppValueInt() so the URL returned after upload always
carries the freshly-incremented value (IConfig::getAppValue() can return
a stale cached value within the same request)
- Updating the FileInputField Vue component to use a reactive cacheKey ref
that increments on every upload, so the thumbnail refreshes even when the
MIME type of the new image is the same as the old one
AI-Assisted-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Anna Larch <anna@nextcloud.com>
Keeps old design with stronger constrast between background color and
background for high contrast themes.
Fixes: #55508
Signed-off-by: Jonas <jonas@freesources.org>
On some systems (depending on imagick version I think) the ratio would
be messed up on the touchicon, favicon and link preview images.
This fixes it without breaking other systems.
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
- migrate all components to Typescript
- use script setup where feasible
- migrate to Vue 3
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This was planned to be added and already documented.
The use case is some rare occurences where we use success like text.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
With Nextcloud 32 we ship a new default background: "Fluid" by Jo Myoung Hee.
Copyright by Nextcloud GmbH under the CC-BY-SA-4.0
- added the background compressed as WebP (90% quality)
- set as new default
- added license reference and move theming related reuse config
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
The variables like `--color-error` now are based on our secondary
theming, thus they are less "aggressive" colors. But there are two
usecases for primary based status colors:
- borders
- error text messages (e.g. validation errors in forms)
To simplify app changes due to the secondary color theme change this
introduces 3 new variables:
- `--color-text-error` this shall be used if text should have error
status theming and is displayed on normal background (while
`--color-error-text` is only for text shown on `--color-error` similar
as primary and secondary colors)
- `--color-border-error` and `--color-border-success` those should be
used for element borders if there is one of those statuses to be
reported (we use this for validation errors as well as for indicating a
value was saved)
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Fixes a regression from dropping the SCSS compiler that broke
font themes like OpenDyslexic. The old code relied on the SCSS
compiler to automatically correct the order of the CSS rules,
ensuring the @font-face declaration was always valid.
The server now correctly generates the `@font-face` rule at
the top level of the stylesheet, fixing the previously invalid nested CSS.
Introduced in : f1448fcf07
Signed-off-by: nfebe <fenn25.fn@gmail.com>