Run classification previews in the background with live progress

The preview endpoint held one HTTP request open while classifying
serially at three-second pacing, so any real range meant minutes of a
grayed-out button and per-row errors were invisible until the loop
ended. Analyse now starts a single background run against its own
snapshot; a progress endpoint reports analysed counts, proposed
changes and errors as they happen, and the page polls it with a
progress bar, pace-based estimate and a Stop button. Navigating away
no longer orphans the run: the page re-attaches to it on return.

A run that has produced no successful proposal and fails three times
in a row with the identical error stops early and reports that error,
so a wrong key or unsupported model surfaces in seconds instead of
repeating across the whole paced range.

Also normalize a null settings.private_names, which crashed the whole
UI on a workspace that had never saved preferences.
This commit is contained in:
Lars Nolden
2026-09-12 12:24:50 +02:00
parent 635c11be56
commit 9092c5721d
10 changed files with 449 additions and 91 deletions
+12
View File
@@ -1389,6 +1389,18 @@ summary .badge {
transform: rotate(360deg);
}
}
.progress-track {
height: 8px;
border-radius: 4px;
background: #e1e9e5;
overflow: hidden;
}
.progress-fill {
height: 100%;
border-radius: 4px;
background: var(--emerald);
transition: width 0.6s ease;
}
footer {
display: flex;
justify-content: space-between;