Commit Graph
24195 Commits
Author SHA1 Message Date
André Duffeck 658688d18e Cap legacy thumbnail resolutions at 2048
The old default list reached 7680x4320, which made webdav ask the generator for boxes it refuses.
2026-10-23 14:17:15 +02:00
André Duffeck 481cd40646 Hold a free thumbnail axis to the maximum thumbnail size
A box like 0x2048 passed the check, and the aspect ratio of a very wide source then sized the other side without a bound.
2026-10-23 14:15:51 +02:00
Jörn Friedrich Dreyer 3884562e8f Merge pull request #3397 from opencloud-eu/imagor
Push based thumbnailer architecture
2026-10-23 14:07:44 +02:00
André Duffeck 94756cb514 Merge remote-tracking branch 'upstream/main' into imagor 2026-10-23 13:34:59 +02:00
André Duffeck 964b4c0016 Bump reva 2026-10-23 12:37:09 +02:00
Dominik Schmidt 8e508e56c2 refactor: name the settings that extend a default list additional_*
They are merged onto the built-in defaults, the way the proxy's additional_policies and OC_ADD_RUN_SERVICES are, so the name says it: env variable, yaml key and field all carry the prefix. The two that take key:value entries are named in the plural like the other map-shaped settings in this repo, and the README says which of the three takes bare mime types.
2026-10-23 10:18:30 +02:00
Dominik Schmidt afdaace67a docs(webdav): name every thumbnail variable that stopped doing anything 2026-10-21 14:54:07 +02:00
Dominik Schmidt 8a80d75363 refactor(webdav): keep ignoring the legacy a flag
OpenCloud never honored it, so clients were tested against an ignored a and honoring it now would change what they get.
2026-10-21 14:22:54 +02:00
Dominik Schmidt 83a0facc08 fix(ci): quote the imagor body limit so the service starts
An unquoted 50000000 reaches the container as 5e+07 and imagor panics while parsing its flags, which took both imagor services down and failed test-lint-unit.
2026-10-21 13:20:57 +02:00
Dominik Schmidt f7e8817433 refactor(webdav,graph,frontend): put the thumbnail settings in a thumbnails block
Every service that configures thumbnails now carries one thumbnails section whose keys are named like the setting itself, so webdav's thumbnails.max_input_image_file_size and the thumbnails service's thumbnail.max_input_image_file_size read the same, and a key's path matches its env name. Env names are unchanged.
2026-10-21 13:11:40 +02:00
Dominik Schmidt 6d7dd34f1c fix(thumbnails): apply an embedded color profile in the pure Go build
png.Decode and gif.Decode hand back the source colors untouched, so a wide gamut image came out oversaturated where a jpeg, read through imaging, was converted. Real imagor passes the profile on to the client instead.
2026-10-21 12:22:25 +02:00
Alex 8acaef28e2 fix(idp): show keyboard focus on every control (#3732)
* fix(idp): show keyboard focus on primary buttons

* fix(idp): show keyboard focus on every control
2026-10-21 11:06:52 +02:00
Christian Richter db02471082 bump reva
Signed-off-by: Christian Richter <c.richter@opencloud.eu>
2026-10-21 08:06:22 +02:00
opencloudeu 61ae13a1fe [tx] updated from transifex 2026-10-20 23:22:29 +00:00
Alex ccb2ba4739 fix: show the lilac logo on the login page (#3773) 2026-10-20 22:08:31 +02:00
Dominik Schmidt ef5e9c2e6e docs: name who decides what instead of what a thumbnail is 2026-10-20 20:39:15 +02:00
Dominik Schmidt 9f3e51b89d docs(webdav): say what an existing deployment has to change
Environment names keep working, a yaml configuration does not: its keys belong to the section of the service that reads them, and an unknown key is ignored without a word.
2026-10-20 20:22:10 +02:00
Dominik Schmidt 9c327dc34a docs: let the comments say what the code does, not what it used to do
A comment that explains a decision by what another branch or the previous service did stops being true the moment this merges.
2026-10-20 20:22:10 +02:00
Dominik Schmidt 16aadb4988 Merge remote-tracking branch 'origin/main' into imagor
# Conflicts:
#	tests/acceptance/expected-failures-decomposed-storage.md
#	tests/acceptance/expected-failures-posix-storage.md
2026-10-20 20:12:56 +02:00
Dominik Schmidt 46e845cfad ci: give the pipeline's imagor the same limits as the suite
CI runs imagor as a service instead of through testcontainers, so the frame limit never reached it and the animation case answered differently there than locally.
2026-10-20 19:20:25 +02:00
Dominik Schmidt c490926ce3 refactor: name the thumbnail config fields like their yaml keys
Internal only: the fields in webdav, graph and frontend now read Thumbnails like the keys and the variables they carry. The generator keeps its released thumbnail block, field and key alike.
2026-10-20 18:40:39 +02:00
Dominik Schmidt a5dd8143a5 refactor: name the thumbnail yaml keys like their variables
The keys are new in this PR, nothing has them set: a yaml file configures webdav's thumbnail settings under the webdav section, so the key now reads like the variable without its service prefix.
2026-10-20 18:37:44 +02:00
Dominik Schmidt c6ac8748d8 refactor: name the thumbnail settings after the service, THUMBNAILS
The service is thumbnails and its released variables say so; the new ones said THUMBNAIL. None of them has shipped yet, so they are renamed rather than aliased. The input file size gains the shared OC_THUMBNAILS_ name, because webdav and the generator have to agree on it.
2026-10-20 18:08:34 +02:00
Dominik Schmidt 575a17967f fix(thumbnails): decode one frame of a png asked for as a still
An animated png carried every frame through imaging.Decode, which only the gif path guarded: a 465 KB file with 200 full-canvas frames allocated 226 MB, now 10 MB. png.Decode reads IDAT and ignores an animation's fdAT chunks.
2026-10-20 17:58:01 +02:00
Dominik Schmidt 951917e87f test(thumbnails): hand every limit to imagor in the parity suite
imagor's own defaults are looser, so a difference could pass as agreement. With the frame limit set it truncates the animation where the built-in refuses the file, which the override now records.
2026-10-20 17:45:45 +02:00
Dominik Schmidt 0070f031fa fix(thumbnails): give the thumbnail size its own ceiling
The source ceiling had to stand in for the box a request may ask for, two limits with different reasons under one name. webdav decides the preview size and never asks for more than its largest resolution; this is the net for everything else.
2026-10-20 17:37:58 +02:00
Dominik Schmidt 4e85772b47 fix(webdav): stop the resolution ladder at 2048
The largest rung is the largest box a generator is asked for, and fill and stretch enlarge a small source to fill it, so the rungs above 2048 let a tiny image cost whatever 8K costs. Web asks for 1200 at most.
2026-10-20 16:56:28 +02:00
Dominik Schmidt 9b9b5ab6a2 Revert "fix(thumbnails): cap the box a request may ask for at 2048 per axis"
This reverts commit 89b5bdf964.
2026-10-20 16:55:57 +02:00
Dominik Schmidt 89b5bdf964 fix(thumbnails): cap the box a request may ask for at 2048 per axis
Only the source was bounded, while fill and stretch upscale, so a tiny image asked for at 7680 allocated accordingly. The pixel budget for animations and webdav's ladder above this are a follow-up.
2026-10-20 16:06:30 +02:00
Dominik Schmidt 97e8031935 fix(thumbnails): take a slot once the image is in, not before
The slots bound the decoding and the resizing, so a slow upload no longer occupies one while nothing is being computed.
2026-10-20 16:05:34 +02:00
Dominik Schmidt e871ebb64a fix(thumbnails): read the image part without the multipart form
The handler holds the whole image in memory to decode it; the form kept a second copy, on disk for anything past its memory limit, for no gain.
2026-10-20 16:03:42 +02:00
Dominik Schmidt 41b7160f3a fix(webdav): the source type belongs in the cache key
The same bytes uploaded under two types are not the same thumbnail: the type picks the extractor, and with Tika in front what it finds depends on it.
2026-10-20 16:03:06 +02:00
Dominik Schmidt 4f79fdf9bb fix(webdav): hash the checksum that becomes the cache key
The checksum is not this service's to trust, an OCM share takes it from a remote PROPFIND, and it ends up as a path on disk and as an S3 object key.
2026-10-20 16:02:39 +02:00
Dominik Schmidt ab29d4848f fix(webdav): keep the deprecated cache root pointing at its files directory
THUMBNAILS_FILESYSTEMSTORAGE_ROOT named the directory the old service kept files/ in, so reading it as the cache directory moved the cache one level up and left the existing thumbnails behind.
2026-10-20 16:01:52 +02:00
Dominik Schmidt 56d96d2df8 fix(webdav): say it when the thumbnail cache fails to answer
Only a miss is silent now; every other error from the cache is logged instead of disappearing behind a regenerated thumbnail.
2026-10-20 14:59:08 +02:00
Dominik Schmidt 260d6f0bbd fix(webdav): a missing s3 bucket is not a cache miss
Matching any 404 let a typo in the bucket name read as a miss on every lookup; only NoSuchKey, and a 404 that carries no code at all, are misses now.
2026-10-20 14:58:46 +02:00
Dominik Schmidt 3ff5a34ceb fix(thumbnails): decode one frame of a gif asked for as a still
imaging.Decode is DecodeAll plus SingleFrame, so a gif renamed to .png held every frame in memory; the frame limit only guards the gif output path.
2026-10-20 14:58:31 +02:00
Dominik Schmidt fa73366ff0 fix(webdav): read the generator's status before the writer's error
A 429 or 413 is answered without reading the body, which breaks the write; the broken pipe used to mask the status. A 413 now reads as too large, not as a server fault.
2026-10-20 14:58:09 +02:00
Florian Schade 208f1e8b33 Merge pull request #3760 from fschade/fix-frontend-content-search-capability
fix(frontend): report content search only when full-text search is enabled
2026-10-20 13:03:01 +02:00
Alex Ababii 3d0706ad4f Merge pull request #3758 from maki5/feat/guestlinks_space_share
guestlinks: auth-guest service is handling space shared events
2026-10-20 10:20:34 +02:00
Alex Ababii 821514d010 feat(guestauth): trigger ci 2026-10-20 09:17:37 +02:00
Andre Duffeck 3ad81e4d99 Merge pull request #3719 from opencloud-eu/feat/spaces-default-quota-capability
feat: expose the default project space quota in the capabilities
2026-10-20 09:11:31 +02:00
opencloudeu 9cc0dd6446 [tx] updated from transifex 2026-10-19 23:17:30 +00:00
Michael Barz a9a694cd74 Merge pull request #3738 from opencloud-eu/docs-unified-roles
docs: update unified Roles
2026-10-19 21:18:19 +02:00
Viktor Scharf d0958f04c2 tests: check that a guest can only access the shared resource (#3752)
Make sure the guest session gives no access outside of the shared folder.
2026-10-19 20:55:29 +02:00
Alexander Ackermann 79a4499ca8 refactor: read the default quota only from OC_SPACES_DEFAULT_QUOTA and deprecate GRAPH_SPACES_DEFAULT_QUOTA 2026-10-19 16:13:42 +02:00
Alexander Ackermann 6adeacf8ce feat: expose the default project space quota in the capabilities 2026-10-19 16:13:42 +02:00
Alex Ababii 80d64ea92b feat(guestauth): remove tests from expected failures 2026-10-19 15:48:15 +02:00
Florian Schade 54f33437ff fix(frontend): report content search only when full-text search is enabled 2026-10-19 15:18:57 +02:00
Dominik Schmidt 89e2f42d7c refactor(webdav): ask ForType for options, not for an any map 2026-10-19 15:16:06 +02:00