- Change introductionVersion from "8.0.0" to "Daledda" (codename)
- Clarify that the cache is a process-lifetime cache tracking which
users have a personal space, not one of the general proxy caches
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract homeKnown() and createHome() from ServeHTTP to bring
cognitive complexity under the SonarCloud limit of 15.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Verifies that IndexSpace visits children inside 100 already-indexed
directories whose mtimes match the index. Before the SkipDir fix
these subtrees would be permanently skipped after an interrupted
reindex run.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Allow operators to disable the in-memory CreateHome cache via
PROXY_CREATEHOME_CACHE_DISABLED as a fallback if the cache causes
unexpected behavior.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The SkipDir optimization skipped entire subtrees when a directory was
already indexed with a matching mtime. After a failed indexing run
(e.g. Tika crash), this permanently prevented unindexed children from
being visited since the parent directory's mtime doesn't change when
child extraction fails. With O(1) DocID lookups the per-file skip
check is negligible, making SkipDir unnecessary for correctness.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The UploadReady event's FileRef.ResourceId.OpaqueId is set to the space
root ID (required for CS3 gateway path resolution via WalkPath). This
means consumers that need the file's actual node ID for Graph API URLs
get the space root instead.
Add a separate ResourceID field (following the BytesReceived pattern)
that carries the file's actual resource identifier with the correct
OpaqueId set to session.NodeID().
Upstream: https://github.com/owncloud/reva/pull/XXXXX
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Use canonical header casing "X-Access-Token" (canonicalheader)
- Return true instead of nil on success to avoid nilnil (nilnil)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Log the resolved OCIS_BASE_DATA_PATH and OCIS_CONFIG_DIR at startup
so operators can immediately see where data is being written. This
catches misconfigured Docker volume mounts where data silently falls
back to ~/.ocis inside the container instead of /var/lib/ocis.
Fixes: #12044
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The CreateHome middleware fired a gRPC CreateHome request on every
authenticated HTTP request. On first login the browser sends ~11
parallel requests, each triggering a redundant call. Use singleflight
to collapse concurrent calls for the same user and sync.Map to cache
successful results so subsequent requests skip the gRPC call entirely.
Fixes: #12068
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
babel-preset-react-app defaults to absoluteRuntime: true, which
hardcodes Linux-specific absolute paths to @babel/runtime helpers.
This breaks builds on FreeBSD. Setting absoluteRuntime: false makes
Babel resolve the runtime relative to the source file instead.
Fixes: #12065
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the per-file Search() call in IndexSpace with a direct Lookup()
using Bleve's DocIDQuery. The old approach parsed a KQL query string,
compiled it, and ran a full-text search for each file — taking 600-950ms
per file on large indexes. The new approach does an O(1) document lookup
by ID and compares mtime/Extracted fields in memory.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add an Optimizer optional interface and Bleve.Optimize() method that
triggers ForceMerge to compact all index segments into one. Called
automatically after IndexSpace completes its walk. Over time, writes
create multiple segments that degrade query performance — compaction
consolidates them for faster searches.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update acceptance tests and all deployment example CSP configs to include
'data:' in font-src, consistent with the default csp.yaml change.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The bundled Web UI CSS (from owncloud/web) inlines the KaTeX_Size3 font
as a base64 data:font/woff2 URI. The default CSP sets font-src to 'self'
only, which blocks these data URIs and produces a console error on every
page load:
Loading the font 'data:font/woff2;base64,...' violates the following
Content Security Policy directive: "font-src 'self'".
Add 'data:' to font-src, matching the existing pattern where img-src
already permits data: URIs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extracts DateTimeNode handling into dateTimeQuery(), same pattern as
numericQuery(). Brings walk() cyclomatic complexity from 36 to ~30,
well below the SonarCloud threshold of 35.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>