feat(transcribe): Norwegian defaults, vocabulary presets, multi-file court day queue
- Default language → nb (Bokmål); auto-detect demoted with warning note - Default model → large-v3; VAD filter on by default - Vocabulary prompt promoted to main form with 4 preset buttons (Barnerett/CPS, Rettssak/tingrett, Generell norsk, Egendefinert) - Multi-file upload queue: drop/select multiple clips, numbered list UI - Sequential queue processing with cumulative time_offset per clip - Backend shifts segment timestamps so SRT/VTT covers full court day - Merged transcript + segments across all clips for single download Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+93
-3
@@ -940,10 +940,12 @@ p {
|
||||
|
||||
.upload-file {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 10px;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
gap: 6px;
|
||||
min-height: 48px;
|
||||
width: 100%;
|
||||
padding: 0.4rem 0;
|
||||
}
|
||||
|
||||
.upload-filename {
|
||||
@@ -1288,4 +1290,92 @@ p {
|
||||
}
|
||||
.prompt-textarea:focus { outline: 2px solid var(--teal); outline-offset: 1px; }
|
||||
|
||||
/* ─── Vocabulary presets ──────────────────────────────────────────────────── */
|
||||
|
||||
.vocab-presets {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
gap: 0.35rem;
|
||||
margin-bottom: 0.35rem;
|
||||
}
|
||||
|
||||
.vocab-btn {
|
||||
font-size: 0.78rem;
|
||||
padding: 0.2rem 0.6rem;
|
||||
border: 1px solid var(--line);
|
||||
border-radius: 20px;
|
||||
background: var(--bg);
|
||||
color: var(--ink);
|
||||
cursor: pointer;
|
||||
transition: background 0.15s, border-color 0.15s, color 0.15s;
|
||||
}
|
||||
|
||||
.vocab-btn:hover {
|
||||
background: var(--soft-teal, #e8f7f6);
|
||||
border-color: var(--teal);
|
||||
color: var(--teal);
|
||||
}
|
||||
|
||||
.vocab-btn.is-active {
|
||||
background: var(--teal);
|
||||
border-color: var(--teal);
|
||||
color: #fff;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
/* ─── Audio queue list ────────────────────────────────────────────────────── */
|
||||
|
||||
.audio-queue-list {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.queue-item {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
gap: 0.5rem;
|
||||
padding: 3px 0;
|
||||
font-size: 0.84rem;
|
||||
}
|
||||
|
||||
.queue-num {
|
||||
flex-shrink: 0;
|
||||
min-width: 1.4rem;
|
||||
font-variant-numeric: tabular-nums;
|
||||
color: var(--muted);
|
||||
font-size: 0.78rem;
|
||||
}
|
||||
|
||||
.queue-item--processing .queue-num { color: var(--teal); }
|
||||
.queue-item--done .queue-num { color: #22a06b; }
|
||||
.queue-item--error .queue-num { color: var(--coral, #e05); }
|
||||
|
||||
.queue-name {
|
||||
flex: 1;
|
||||
font-weight: 500;
|
||||
word-break: break-all;
|
||||
color: var(--ink);
|
||||
}
|
||||
|
||||
.queue-item--done .queue-name { color: var(--muted); }
|
||||
.queue-item--error .queue-name { color: var(--coral, #e05); }
|
||||
|
||||
.queue-size {
|
||||
flex-shrink: 0;
|
||||
font-size: 0.76rem;
|
||||
color: var(--muted);
|
||||
}
|
||||
|
||||
.audio-queue-actions {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
margin-top: 0.5rem;
|
||||
font-size: 0.82rem;
|
||||
}
|
||||
|
||||
.control-hint { font-size: 0.74rem; color: var(--muted); font-weight: 400; }
|
||||
|
||||
Reference in New Issue
Block a user