Merge origin/main (Tantivy content search) into delta-sync branch

Both sides added a parameter to create_application_services and a
setup step before it: this branch's storage-usage/quota service (for
the instant-upload path) and main's Tantivy content index (for
SearchService). The resolution keeps both — the signature takes both
arguments and the build runs storage usage as step 3c and the content
index as 3d.

https://claude.ai/code/session_01WdNenpnujNR2sc32XVvwfS
This commit is contained in:
Claude
2026-06-11 18:32:27 +00:00
19 changed files with 2807 additions and 68 deletions
+20
View File
@@ -269,6 +269,26 @@
text-overflow: ellipsis;
}
/* Content-search snippet — fragment of the file body that matched the
query. Wraps onto a second line inside the flex name-cell. */
.files-list-view .file-item .name-cell:has(.file-item__snippet) {
flex-wrap: wrap;
row-gap: 2px;
}
.files-list-view .file-item .file-item__snippet {
flex-basis: 100%;
/* icon width (36px) + cell gap (12px) — aligns under the name */
padding-left: 48px;
font-size: 12px;
color: var(--color-text-muted);
}
/* Grid cards are too compact for body fragments. */
.files-grid-view .file-item .file-item__snippet {
display: none;
}
.files-list-view .file-item .file-icon {
width: 36px;
height: 36px;
+1
View File
@@ -739,6 +739,7 @@ export class ResourceListComponent {
<span>${escapeHtml(file.name)}</span>
${cfg.showFavorite ? `<div class="file-badge file-badge-favorite${isFav ? '' : ' hidden'}"><i class="fas fa-star favorite-star-inline"></i></div>` : ''}
${cfg.showShareBadge ? `<div class="file-badge file-badge-shared${isShared ? '' : ' hidden'}"><i class="fas fa-oxiexport"></i></div>` : ''}
${file.snippet ? `<span class="file-item__snippet" title="${escapeHtml(file.snippet)}">${escapeHtml(file.snippet)}</span>` : ''}
</div>
<div class="owner-cell${this._ownerVisible ? '' : ' hidden'}" data-owner-id="${escapeHtml(file.owner_id || '')}"></div>
${cfg.showPath ? `<div class="path-cell" title="${escapeHtml(file.path || '')}">${escapeHtml(file.path || '')}</div>` : ''}
+2
View File
@@ -47,6 +47,8 @@
* @property {number} sort_date
* @property {string} etag opaque HTTP ETag, for If-Match / If-None-Match
* @property {string} content_hash raw BLAKE3 content hash, for dedup checks
* @property {string} [snippet] plain-text fragment around a content match (search results only)
* @property {string} [match_source] "name" or "content" — how the search found this file
*/
/**