Make casting live-view panels resizable, fix collapse chevron direction (v1.14.10)

Passage/Thinking boxes in the audiobook casting live view can now be
resized vertically. Also fixed the character-list collapse button's
chevron pointing opposite to the direction the panel edge actually moves.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mARTin-B78 2026-07-09 01:50:36 +02:00
parent 328e612eb7
commit f139367f74
5 changed files with 17 additions and 7 deletions

View File

@ -9,6 +9,16 @@ Follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) · versioned wi
--- ---
## [1.14.10] — 2026-07-09
### Added
- **Passage/Thinking panels in audiobook casting's live view are now resizable** — drag the bottom-right corner of either box to read more comfortably.
### Fixed
- **Character-list collapse chevron pointed the wrong way** — it showed the direction opposite to where the panel edge actually moves. Now expanded shows → (collapsing moves the edge right) and collapsed shows ← (expanding moves it left).
---
## [1.14.9] — 2026-07-09 ## [1.14.9] — 2026-07-09
### Fixed ### Fixed

View File

@ -1 +1 @@
1.14.9 1.14.10

View File

@ -10,7 +10,7 @@
<meta name="format-detection" content="telephone=no"> <meta name="format-detection" content="telephone=no">
<meta name="color-scheme" content="light dark"> <meta name="color-scheme" content="light dark">
<meta name="theme-color" content="#2563EB"> <meta name="theme-color" content="#2563EB">
<meta name="app-version" content="1.14.9"> <meta name="app-version" content="1.14.10">
<link rel="manifest" href="/manifest.webmanifest"> <link rel="manifest" href="/manifest.webmanifest">
<link rel="icon" href="/static/icon.svg" type="image/svg+xml"> <link rel="icon" href="/static/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/static/icon.svg"> <link rel="apple-touch-icon" href="/static/icon.svg">
@ -27,7 +27,7 @@
<!-- ── Core styles (local — no CDN dependency for first paint) ────────── --> <!-- ── Core styles (local — no CDN dependency for first paint) ────────── -->
<link rel="stylesheet" href="/static/vendor/mdi/materialdesignicons.min.css"> <link rel="stylesheet" href="/static/vendor/mdi/materialdesignicons.min.css">
<link rel="stylesheet" href="/static/style.css?v=1.14.9"> <link rel="stylesheet" href="/static/style.css?v=1.14.10">
<!-- ── Flag icons — non-blocking (loaded async, icons appear after JS) ── --> <!-- ── Flag icons — non-blocking (loaded async, icons appear after JS) ── -->
@ -365,7 +365,7 @@ window.toggleNavTree = function(treeId, chevronId) {
</script> </script>
<!-- loader.js: fetches sections → loads JS modules → removes skeleton --> <!-- loader.js: fetches sections → loads JS modules → removes skeleton -->
<script src="/static/loader.js?v=1.14.9"></script> <script src="/static/loader.js?v=1.14.10"></script>
</body> </body>
</html> </html>

View File

@ -1175,7 +1175,7 @@ function audiobookCastView(total, llmUrl, defaultModel, isIdle = false) {
<div class="ab-cv-side" id="ab-cv-side"> <div class="ab-cv-side" id="ab-cv-side">
<div class="ab-cv-side-head"> <div class="ab-cv-side-head">
<span class="ab-cv-side-title">Characters found</span> <span class="ab-cv-side-title">Characters found</span>
<button class="ab-cv-side-collapse" id="ab-cv-side-collapse" type="button" title="Collapse to avatars"><span class="mdi mdi-chevron-left"></span></button> <button class="ab-cv-side-collapse" id="ab-cv-side-collapse" type="button" title="Collapse to avatars"><span class="mdi mdi-chevron-right"></span></button>
</div> </div>
<div class="ab-cv-side-tools"> <div class="ab-cv-side-tools">
<input type="text" class="ab-cv-side-search" id="ab-cv-side-search" placeholder="Search characters…" autocomplete="off"> <input type="text" class="ab-cv-side-search" id="ab-cv-side-search" placeholder="Search characters…" autocomplete="off">

View File

@ -5409,11 +5409,11 @@ code { background: var(--panel); border-radius: 4px; padding: 1px 5px; font-fami
.ab-cv-llm-col { min-width: 0; display: flex; flex-direction: column; gap: 4px; } .ab-cv-llm-col { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.ab-cv-llm-col-label { font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--subtext); display: flex; align-items: center; gap: 5px; } .ab-cv-llm-col-label { font-size: 10.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; color: var(--subtext); display: flex; align-items: center; gap: 5px; }
.ab-cv-think { .ab-cv-think {
margin: 0; max-height: 240px; overflow-y: auto; white-space: pre-wrap; margin: 0; height: 240px; min-height: 80px; max-height: 80vh; resize: vertical; overflow-y: auto; white-space: pre-wrap;
overflow-wrap: anywhere; font-size: 11.5px; line-height: 1.5; color: var(--text); overflow-wrap: anywhere; font-size: 11.5px; line-height: 1.5; color: var(--text);
background: rgba(37,99,235,.05); border: 1px solid var(--border); border-radius: 6px; padding: 8px 10px; background: rgba(37,99,235,.05); border: 1px solid var(--border); border-radius: 6px; padding: 8px 10px;
} }
.ab-cv-llm-split .ab-cv-llm-pre { max-height: 240px; overflow-y: auto; font-size: 11.5px; border: 1px solid var(--border); border-radius: 6px; padding: 8px 10px; background: var(--panel); } .ab-cv-llm-split .ab-cv-llm-pre { height: 240px; min-height: 80px; max-height: 80vh; resize: vertical; overflow-y: auto; font-size: 11.5px; border: 1px solid var(--border); border-radius: 6px; padding: 8px 10px; background: var(--panel); }
@media (max-width: 900px) { .ab-cv-llm-split { grid-template-columns: 1fr; } } @media (max-width: 900px) { .ab-cv-llm-split { grid-template-columns: 1fr; } }
/* Heading-like narration (recovered chapter titles, OCR headline bands): /* Heading-like narration (recovered chapter titles, OCR headline bands):