diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cf8c27..b4b47ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) · versioned wi ## [Unreleased] ### Changed +- **Background-job stylesheet split.** Job history and retry-panel rules now live in `static/css/background-jobs.css`. - **Resource diagnostics stylesheet split.** Performance-panel styles now live in `static/css/resource-diagnostics.css` and are loaded with the same release cache-busting version as the core stylesheet. - **Audiobook cast export extraction.** Markdown serialization and legacy page-stamping migration now live in diff --git a/TODO.md b/TODO.md index 6b0d299..110b81c 100644 --- a/TODO.md +++ b/TODO.md @@ -137,6 +137,7 @@ architecture change: the larger Audiobook/Rehearser/style split. - [x] Extract Audiobook parsing primitives and speaker-heuristic constants into `audiobook-parse.js`. - [x] Extract Audiobook cast serialization and page-stamping helpers into `audiobook-cast.js`. - [x] Split the Performance/resource diagnostic styles into `static/css/resource-diagnostics.css`. +- [x] Split background-job history and retry-panel styles into `static/css/background-jobs.css`. - [ ] Split `style.css` by feature. - [ ] Do not migrate to TypeScript or rewrite the frontend until behavior is covered by tests. diff --git a/VERSION b/VERSION index a122672..4408ed4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.24.34 +1.24.35 diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index a8e7f72..6d6bf2b 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -37,6 +37,7 @@ Done incrementally as global-scope ordered files (no ES-module change needed) - ✅ `audiobook-parse.js` — dialogue detection, dehyphenation, and speaker-heuristic constants; the casting pipeline remains in `audiobook.js`. - ✅ `audiobook-cast.js` — cast Markdown export and legacy page-stamping migration helpers; live casting remains in `audiobook.js`. - ✅ `static/css/resource-diagnostics.css` — isolated Performance/resource diagnostic panel styles. +- ✅ `static/css/background-jobs.css` — isolated background-job history and retry-panel styles. - ✅ `rehearser-train.js` — transcript normalization, LCS comparison, and word-level training feedback; microphone/state wiring remains in `rehearser.js`. - ✅ `rehearser-library.js` — SQLite persistence helpers and IndexedDB migration; import/export and auto-save remain in `rehearser.js` until their UI/event-handler dependencies are isolated. diff --git a/static/css/background-jobs.css b/static/css/background-jobs.css new file mode 100644 index 0000000..b7d9b80 --- /dev/null +++ b/static/css/background-jobs.css @@ -0,0 +1,14 @@ +/* ── Background-job history panel ─────────────────────────────────────────── */ +.background-jobs-list { display: flex; flex-direction: column; } +.background-job-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 10px 4px; border-bottom: 1px solid var(--border); font-size: 12px; } +.background-job-row:last-child { border-bottom: none; } +.background-job-main { min-width: 0; display: grid; grid-template-columns: auto auto; gap: 2px 8px; align-items: center; } +.background-job-main strong { font-size: 13px; } +.background-job-main code { color: var(--subtext); font-size: 10px; } +.background-job-detail, .background-job-meta { grid-column: 1 / -1; color: var(--subtext); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.background-job-artifact { grid-column: 1 / -1; color: var(--accent); font-size: 11px; } +.background-job-row.is-error .background-job-detail { color: var(--red); } +.background-job-row.is-done .background-job-meta { color: var(--green, #22c55e); } +.background-job-actions { display: flex; align-items: center; gap: 9px; flex-shrink: 0; } +.background-job-retry-note { color: var(--subtext); font-size: 11px; white-space: nowrap; } +@media (max-width: 640px) { .background-job-row { align-items: flex-start; flex-direction: column; gap: 8px; } .background-job-actions { width: 100%; justify-content: space-between; } } diff --git a/static/index.html b/static/index.html index 50362ce..b11af2a 100644 --- a/static/index.html +++ b/static/index.html @@ -10,7 +10,7 @@ - + @@ -27,8 +27,9 @@ - - + + + @@ -393,7 +394,7 @@ window.toggleNavTree = function(treeId, chevronId) { - + diff --git a/static/style.css b/static/style.css index 111e40b..d49a363 100644 --- a/static/style.css +++ b/static/style.css @@ -3734,19 +3734,6 @@ code { background: var(--panel); border-radius: 4px; padding: 1px 5px; font-fami .bench-history-filter { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--subtext); cursor: pointer; } .perf-history-list { display: flex; flex-direction: column; gap: 0; overflow-x: auto; } .perf-history-empty { font-size: 13px; color: var(--subtext); padding: 16px 0; } -.background-jobs-list { display: flex; flex-direction: column; } -.background-job-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 10px 4px; border-bottom: 1px solid var(--border); font-size: 12px; } -.background-job-row:last-child { border-bottom: none; } -.background-job-main { min-width: 0; display: grid; grid-template-columns: auto auto; gap: 2px 8px; align-items: center; } -.background-job-main strong { font-size: 13px; } -.background-job-main code { color: var(--subtext); font-size: 10px; } -.background-job-detail, .background-job-meta { grid-column: 1 / -1; color: var(--subtext); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.background-job-artifact { grid-column: 1 / -1; color: var(--accent); font-size: 11px; } -.background-job-row.is-error .background-job-detail { color: var(--red); } -.background-job-row.is-done .background-job-meta { color: var(--green, #22c55e); } -.background-job-actions { display: flex; align-items: center; gap: 9px; flex-shrink: 0; } -.background-job-retry-note { color: var(--subtext); font-size: 11px; white-space: nowrap; } -@media (max-width: 640px) { .background-job-row { align-items: flex-start; flex-direction: column; gap: 8px; } .background-job-actions { width: 100%; justify-content: space-between; } } .perf-history-row { display: grid; grid-template-columns: 118px minmax(96px,.8fr) 34px 72px 72px minmax(190px,1.4fr) 92px 82px 68px 70px 24px; min-width: 1010px; gap: 0 10px; padding: 7px 4px; border-bottom: 1px solid var(--border); font-size: 12px; align-items: center; } .perf-history-row:last-child { border-bottom: none; } .perf-history-head { font-size: 11px; color: var(--subtext); text-transform: uppercase; letter-spacing: .05em; font-weight: 600; }