Say there is one chat component, in the places that claimed otherwise

Several headers argued the Scheduler dock was deliberately separate, and the Scheduler's help
never mentioned the assistant at all — including the fix flow that just changed shape.
This commit is contained in:
Gmer4Lfe
2026-08-09 12:22:25 -04:00
parent 8eeb4c3d6c
commit 6be765a9bf
6 changed files with 95 additions and 24 deletions
+16 -9
View File
@@ -121,16 +121,23 @@ soon a page notices the writer's update.
> cache miss. A key added to the endpoint and not to the writer leaves its card loading forever
> on every ordinary page load and working only on the request that happens to miss.
**One widget, rendered twice.** `include/ai_chat.php` owns the conversation surface — profile
bar, transcript, composer, source viewer, stored-chat list — and both the AI tab and the Monitor
tab's AI row construct it. Every id is composed from a prefix so instances can coexist, and each
tears down the previous holder of its prefix, because Unraid swaps tab content by AJAX without
unloading the old page's JavaScript.
**One widget, rendered three times.** `include/ai_chat.php` owns the conversation surface —
transcript, composer, profile and history pickers, source viewer, stored-chat list — and the AI
tab, the Monitor tab's AI row and the Scheduler's right-hand panel all construct it. Every id is
composed from a prefix so instances can coexist, and each tears down the previous holder of its
prefix, because Unraid swaps tab content by AJAX without unloading the old page's JavaScript.
The Scheduler tab's dock is deliberately *not* built on it: a one-line bar that follows the view
you have open, with its own scope chip, fix flow and incident capture, is a different component
that happens to share an endpoint. Folding it in would produce one widget with two personalities
and a mode flag choosing between them.
A placement chooses how much room it gets and which extra controls it needs. It does not choose
the shape: the control row is fixed everywhere — profile chip hard left, `⤢` `▾` `New` `Ask` hard
right — because a chat that rearranges itself per tab is three components wearing one name.
The Scheduler panel was exactly that until it was folded in, and it proved the cost: a thread
there died on reload while the other two were saved, and its bar had drifted into a different
shape from the same control everywhere else. What was genuinely particular to it became options
rather than a second implementation — `scope` as a function for a subject that follows the open
view, `beforeSend` for the one reply that is recorded rather than asked, `think` for reasoning on
diagnosis only, and `setHeights()` for a placement sized as a share of a panel, which is not a
number that exists until layout has run.
**Timezone.** `include/config.php` adopts Unraid's own `timeZone` from `ident.cfg` for the whole
PHP layer. PHP here has no `date.timezone` and therefore ran in UTC while the server ran local,