Show scan warnings as structured cards instead of long sentences

Warnings are now stored and served as structured data (title, detail,
slave/master items, total) and rendered as cards with a Slave -> Master
table: the first five rows, with "Show all" for the rest.

- Renamed folders highlight the characters that differ; non-ASCII
  characters get their code point in a tooltip, so look-alikes such as
  "-" (U+002D) and "‐" (U+2010) can be told apart.
- Songs in a different folder are grouped by folder pair with a song
  count, most affected first, instead of two long examples.
- Folders that only differ by name are no longer also reported as
  songs in a different folder.
- Warnings saved as plain text by earlier scans still display.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
cdnutterandClaude Opus 5.5 committed 2026-09-23 21:49:22 -07:00
1 parent 1d31999793
commit 9e848cd765
13 files changed
+305 -92

No files matched your search

+8 -1
View File
@@ -75,7 +75,7 @@ export type Pair = {
approx_threshold: number;
last_scan_at: number | null;
last_scan_error: string;
last_scan_warnings: string[];
last_scan_warnings: ScanWarning[];
summary: Summary;
job: Job | null;
};
@@ -199,3 +199,10 @@ export type BulkPreview = {
bytes_freed: number;
examples: Record<string, string[] | undefined>;
};
export type ScanWarning = {
title: string;
detail?: string;
items?: { slave: string; master: string; count?: number }[];
total?: number;
};