Merge branch 'master' into worktree-mosaic-library

Renumbers the mosaic's requirement IDs out of the way of the download work
that landed on master in parallel: it had already claimed DR-163/DR-164 and
UT-162, so the mosaic layout is now DR-172, the library favourites scope
DR-173, and its composition test UT-167.

Note for the download branch: its UT-162..UT-165 rows trace to DR-163..DR-166,
none of which are defined in requirements.md — that branch defined DR-167..171
instead. Those references are orphaned and want a look; nothing here touches
them.
This commit is contained in:
2026-08-16 00:04:26 +02:00
26 changed files with 2495 additions and 1554 deletions
+1 -1
View File
@@ -15,7 +15,7 @@
* Called once the bitmap is decoded, with its intrinsic pixel size. Lets a
* layout that sizes boxes from artwork (the mosaic) use the shape the image
* actually has rather than the one its item type suggests.
* TRACES: UR-075 | DR-163
* TRACES: UR-075 | DR-172
*/
onNaturalSize?: (width: number, height: number) => void;
}
+1 -1
View File
@@ -11,7 +11,7 @@
arrives over a few hundred milliseconds, and re-packing on each arrival would
shuffle the grid under the viewer's cursor several times over.
TRACES: UR-075 | DR-163
TRACES: UR-075 | DR-172
-->
<script lang="ts" generics="T extends { key: string; ratio: number }">
import type { Snippet } from "svelte";
+1 -1
View File
@@ -7,7 +7,7 @@
lines would no longer line up with its neighbours. Keeping everything inside
the box is what lets `layoutMosaic` own the geometry completely.
TRACES: UR-075 | DR-163
TRACES: UR-075 | DR-172
-->
<script lang="ts">
import type { Snippet } from "svelte";
+1 -1
View File
@@ -9,7 +9,7 @@
// `favoritesScope` (Rust: `SearchScope::for_collection_type`). This file only
// decides what to *call* it and where to put it.
//
// TRACES: UR-075, UR-067 | DR-163, DR-164 | UT-162
// TRACES: UR-075, UR-067 | DR-172, DR-173 | UT-167
import type { Library } from "$lib/api/types";
import {
+1 -1
View File
@@ -9,7 +9,7 @@
//
// Presentation only — nothing here knows what a library or a media item is.
//
// TRACES: UR-075 | DR-163 | UT-158, UT-159, UT-160
// TRACES: UR-075 | DR-172 | UT-158, UT-159, UT-160
/** A tile to place: an opaque key and the aspect ratio (width / height) to honour. */
export interface MosaicInput {