From b803fefebddbce5bda9413329bbc049774fd7c18 Mon Sep 17 00:00:00 2001 From: Gmer4Lfe Date: Thu, 6 Aug 2026 22:44:00 -0400 Subject: [PATCH] Give the assistant dock a size toggle, so a long answer can have the panel without hiding what it is about --- Plugin/unraid/css/varaverk.css | 4 ++++ Plugin/unraid/pages/scheduler.php | 35 ++++++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/Plugin/unraid/css/varaverk.css b/Plugin/unraid/css/varaverk.css index 9b7b464..f04f4c3 100644 --- a/Plugin/unraid/css/varaverk.css +++ b/Plugin/unraid/css/varaverk.css @@ -536,6 +536,10 @@ body.vv-fullscreen #displaybox { padding-left: 1rem !important; padding-top: .5r #vv-ai-dock-input:focus { outline: none; border-color: #2d4a6a; } #vv-ai-dock-body { border-bottom: 1px solid #1c1c1c; padding: 9px 10px; overflow-y: auto; font-size: 12px; line-height: 1.55; } +/* Always present, unlike the collapse button next to it — the size of the conversation is worth + changing before there is one, when you already know the answer will be long. */ +.vv-ai-dock-grow { flex-shrink: 0; min-width: 26px; } +.vv-ai-dock-grow-on { color: #8fb0c4; border-color: #2d4a6a; background: #12191d; } .vv-ai-dock-q { color: #8fb0c4; margin: 0 0 5px; } .vv-ai-dock-q::before { content: '› '; color: #3a5a6a; } .vv-ai-dock-a { color: #b8b8b8; margin: 0 0 11px; white-space: normal; } diff --git a/Plugin/unraid/pages/scheduler.php b/Plugin/unraid/pages/scheduler.php index ab9bec2..107a796 100644 --- a/Plugin/unraid/pages/scheduler.php +++ b/Plugin/unraid/pages/scheduler.php @@ -1066,6 +1066,8 @@ Still the same two servers, two households, the same media stack running itself. style="display:none" title="Record what actually fixed this, against this script">Save fix + @@ -1177,6 +1179,11 @@ function vvPost(url, data) { }).then(r => r.json()); } +// Whether the assistant dock is holding the larger share of the panel. Persisted: someone working +// through a long answer wants it to still be big after a reload, not to re-expand every visit. +// Declared here rather than with the other dock state because vvFitRight() below reads it. +let vvAiDockBig = localStorage.getItem('vv-ai-dock-big') === '1'; + function vvFitRight() { const right = document.getElementById('vv-sched-right'); if (!right.classList.contains('vv-panel-visible')) return; @@ -1209,8 +1216,12 @@ function vvFitRight() { // its floor, and nothing ever raised it again. const availH = Math.max(80, lf.getBoundingClientRect().top - 32 - toolbar.getBoundingClientRect().bottom); + // Expanded takes most of the panel rather than all of it. The view above is what the question + // is usually about — a log, a conf, a script — and a chat that covers it entirely turns every + // follow-up into a round trip through the collapse button. const dockBody = document.getElementById('vv-ai-dock-body'); - if (dockBody) dockBody.style.maxHeight = Math.max(90, Math.round(availH * 0.4)) + 'px'; + const dockCap = vvAiDockBig ? 0.82 : 0.4; + if (dockBody) dockBody.style.maxHeight = Math.max(90, Math.round(availH * dockCap)) + 'px'; // Measured after the cap is applied, so this reads the clamped height, not the natural one. const dock = document.getElementById('vv-ai-dock'); const dockH = dock ? dock.offsetHeight : 0; @@ -2379,6 +2390,27 @@ function vvAiDockExpand() { requestAnimationFrame(vvFitRight); } +// Trades panel space between the conversation and whatever is above it. Separate from collapse, +// which is all-or-nothing: this is for reading a long answer without losing sight of the log. +function vvAiDockGrow() { + vvAiDockBig = !vvAiDockBig; + localStorage.setItem('vv-ai-dock-big', vvAiDockBig ? '1' : '0'); + vvAiDockApplyGrow(); + // Growing a hidden conversation would look like the button did nothing, so opening it is part + // of growing. Shrinking deliberately does not collapse — that is what the ▾ button is for. + if (vvAiDockBig) vvAiDockExpand(); + else requestAnimationFrame(vvFitRight); +} + +function vvAiDockApplyGrow() { + const b = document.getElementById('vv-ai-dock-grow'); + if (!b) return; + b.textContent = vvAiDockBig ? '⤡' : '⤢'; + b.title = vvAiDockBig ? 'Give the panel back to the view above' + : 'Give the conversation more of the panel'; + b.classList.toggle('vv-ai-dock-grow-on', vvAiDockBig); +} + // Collapse is not clear. Re-expanding shows the same conversation, so you can shrink it to read // the conf the answer was about and open it again without paying for the turn twice. function vvAiDockCollapse() { @@ -4900,6 +4932,7 @@ document.querySelectorAll('.vv-sched-card').forEach(card => { requestAnimationFrame(function() { vvRestoreInvert(); + vvAiDockApplyGrow(); vvRestoreAdvancedMode(); vvRestoreSugStates(); vvApplyHighlighting();