Gmer4Lfe
4b6c5fe1cc
Bring the docs up to the chat window we actually built
...
The readmes still described a single expand glyph and a chevron for saved chats, and neither knew
about the banner, the two expanded sizes or the shortcuts list.
2026-08-09 13:45:30 -04:00
Gmer4Lfe
66f9d6f435
Count orchestrators on the board, pin it, and open on the assistant
...
Counting every step reported a fully scheduled system as 10 of 82, and reopening the last thread
brought its profile with it, so the tab came up as Troubleshoot pointed at nothing.
2026-08-09 13:41:53 -04:00
Gmer4Lfe
4980b62dc2
Pay for the shortcuts list out of the transcript
...
The toggle joins the other window controls in the banner, and opening the list now costs the
conversation its rows rather than costing the page more height.
2026-08-09 13:28:24 -04:00
Gmer4Lfe
d91fa89310
Halve the height of the shut shortcuts strip
...
A 10px label was inheriting a 1.5 line-height, and its margin duplicated the gap the wrapper
already puts between its children.
2026-08-09 13:19:27 -04:00
Gmer4Lfe
d6debc5408
Give the chat shortcuts worth listing, and a place to list them
...
Four new keys alongside Ctrl+Enter, rendered from the same list the handler reads so the panel
cannot advertise a key that stopped working.
2026-08-09 13:15:58 -04:00
Gmer4Lfe
c3ed7262cd
Separate whether the chat is expanded from how big expanded is
...
One is an action taken constantly and the other a preference set once, so the banner names the
size and the composer keeps the toggle.
2026-08-09 12:59:30 -04:00
Gmer4Lfe
455fb55857
Let the Scheduler's views shrink so the assistant can grow into them
...
Flex items default to min-height:auto, so a view holding a log ignored the height it was given
and pushed the composer out of a panel that clips instead of scrolling.
2026-08-09 12:42:32 -04:00
Gmer4Lfe
1370a29233
Tell the page when the chat changes height
...
The Scheduler sizes the views above the panel from what the chat leaves, so a chat that resizes
silently grew off the bottom and took its own composer with it.
2026-08-09 12:33:29 -04:00
Gmer4Lfe
bb5daad3cc
Halve the assistant's share of the Scheduler panel
...
It was the largest thing there before being asked anything, and the view above it is what the
question is usually about.
2026-08-09 12:28:31 -04:00
Gmer4Lfe
6be765a9bf
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.
2026-08-09 12:22:25 -04:00
Gmer4Lfe
8eeb4c3d6c
Make the Scheduler panel an instance, not a second chat
...
It kept its own bar, send loop and poll, which is why a thread there died on reload while the
other two were saved and why its controls had drifted from the same controls everywhere else.
2026-08-09 12:22:07 -04:00
Gmer4Lfe
d0ff0c7d5c
Teach the chat component what the Scheduler dock needs
...
Offers, a settable subject, runtime heights and a profile hook — everything the dock does that
the shared component could not, so it can stop being a second implementation.
2026-08-09 11:50:02 -04:00
Gmer4Lfe
c431370a68
Put every chat control on one row, the same row everywhere
...
The picker sat above the transcript and the buttons below it, so the same component read
differently on each surface; size is the only thing a placement should get to choose.
2026-08-09 11:40:01 -04:00
Gmer4Lfe
4f598f7422
Hold Conversations and Tokens to the Assistant's height
...
A stretched grid item is measured before it is stretched, so a long card grew the row it was
meant to fit inside and then filled it; the ceiling is taken from the Assistant instead.
2026-08-09 11:09:04 -04:00
Gmer4Lfe
7b1b017d8c
Stamp the stylesheet and script with their mtime
...
A pull changes the files but not their URLs, so a browser kept serving the old stylesheet to new
markup — which is how the Monitor AI row lost its layout.
2026-08-09 11:08:58 -04:00
Gmer4Lfe
1afeaf0e15
Give the token ledger its own card on the dashboard
...
The AI card answers whether the model is healthy now; what it has spent over a month was a
different question crowding it out one line at a time.
2026-08-09 11:00:00 -04:00
Gmer4Lfe
33e696071e
Level the Conversations card with the Assistant beside it
...
A list reads better against a transcript when the two share a bottom edge, including after the
Assistant is expanded.
2026-08-09 10:47:55 -04:00
Gmer4Lfe
44cf4e7516
Open the dashboard chat collapsed, every time
...
A size remembered from days ago would push the cards below it down on every load, with nothing
on the page to explain why.
2026-08-09 10:38:21 -04:00
Gmer4Lfe
2aa9302751
Let the Assistant's expand control actually give the transcript room
...
The AI cards sat in the monitor grid, which caps every row at a quarter of the viewport and
clips the card, so expanding grew the transcript inside a box the row had already sized.
2026-08-09 10:29:50 -04:00
Gmer4Lfe
6cdb0d1eab
One profile picker for both surfaces, and open where you left off
2026-08-09 00:56:04 -04:00
Gmer4Lfe
d9225d06d9
Route a General Chat question to the profile that fits it
2026-08-09 00:36:13 -04:00
Gmer4Lfe
37784bce6c
Offer Troubleshoot as a profile, and say plainly when it has no log
2026-08-09 00:25:52 -04:00
Gmer4Lfe
073352b21e
Put the Scheduler dock on the same conversation store as everything else
2026-08-09 00:16:09 -04:00
Gmer4Lfe
f4fd17be4d
Accept the one retrieval kind the indexer produces and the page offers
2026-08-09 00:08:33 -04:00
Gmer4Lfe
a011cd5e3b
Give the Monitor tab the help panel the Scheduler already had
2026-08-09 00:06:28 -04:00
Gmer4Lfe
3a45c18555
Document today's restructures, and give data/ a README that ships with it
2026-08-09 00:01:05 -04:00
Gmer4Lfe
38cd3edf99
Scope the migration's busy check to the installation being migrated
2026-08-08 23:53:13 -04:00
Gmer4Lfe
e406bd445d
Move the data directories too, not only the files inside them
2026-08-08 23:43:57 -04:00
Gmer4Lfe
f1603349cc
Put everything Varaverk persists under one root, state included
2026-08-08 23:26:46 -04:00
Gmer4Lfe
d5c36db531
Put every tmpfs path in one place both layers can read
2026-08-08 22:57:29 -04:00
Gmer4Lfe
0f92609425
Give the AI subsystem one profile table and one collection, read everywhere
2026-08-08 22:35:37 -04:00
Gmer4Lfe
0f4d381ac0
Make PHP agree with the clock the rest of the server keeps
2026-08-08 22:35:31 -04:00
Gmer4Lfe
ea0c713c89
Put the assistant on the dashboard, where the questions actually occur to you
2026-08-08 22:01:13 -04:00
Gmer4Lfe
4d00e37ca1
Move the chat into an include, because the second one was going to be a copy
2026-08-08 22:01:06 -04:00
Gmer4Lfe
1e324636e0
Keep conversations, so a useful answer outlives the tab it was asked in
2026-08-08 22:00:58 -04:00
Gmer4Lfe
df3c4bb369
Stop signalling on the strength of a stat file alone
...
A job killed hard never corrects its own record, so 'running' outlives the
process and the pid can since belong to something else; array-start jobs get
setsid too, so Stop can reach past their direct children.
2026-08-08 13:50:01 -04:00
Gmer4Lfe
2fefb56b8c
Say which revision the pull restarted into
...
The restart line named no version, so a log showing one gave no way to tell what
the rest of the run actually executed.
2026-08-08 13:23:16 -04:00
Gmer4Lfe
934c0b56be
Make a pull that updates the puller take effect on that pull
...
git installs the new file by rename, so the running bash finishes on the inode
it started with and every step after the sync used the previous version.
2026-08-08 13:21:14 -04:00
Gmer4Lfe
e0cf83c944
Let one host template upgrade any host's conf
...
The pull substituted only HOSTN_, so bare HOSTN in comments kept tripping
conf_upgrade's own guard and no host conf had upgraded since the guard landed.
2026-08-08 13:08:24 -04:00
Gmer4Lfe
9cabb04395
Resolve Custom script ids where the scripts actually live
...
The Custom/ prefix is a namespace, not a directory under SCRIPTS_DIR, so every
launcher that resolved it as one could never find the script.
2026-08-08 12:47:26 -04:00
Gmer4Lfe
2ab7d3d98a
Stop the Stop button from killing the web server
...
UI-launched jobs inherited php-fpm's process group, so stopping one that was
actually running group-killed the WebGUI; setsid makes the job its own group
leader and stop.php now refuses to signal any group it does not lead.
2026-08-08 11:09:08 -04:00
Gmer4Lfe
228aae31c9
Ask before running a script, which the page header has always said it did
...
Run was the only mutating control here that did not confirm, and it is the one that executes
shell as root — the library holds cleaners that delete files, and six Run buttons sit a row apart
in a dense tree.
2026-08-07 10:43:43 -04:00
Gmer4Lfe
86a0ba55fe
Include the config the container endpoint now depends on
...
vv_cache_clear() went in without it, so every start and stop fatalled on the line after the
docker command had already run — the action succeeded and the page was told it failed.
2026-08-07 10:33:08 -04:00
Gmer4Lfe
9e3755f9ca
Take the literal script tag out of the comment that broke every tab
...
Written with real angle brackets inside the inline block, it ended that element early, so the
file rendered as visible text and no page JS ran at all.
2026-08-07 10:29:13 -04:00
Gmer4Lfe
ab794db0ab
Stop the dashboard polling harder than its data can change
...
Every poll after the first asked for ?live=1, so the page paid a full collection — partner SSH
timeouts included — every two seconds while the tmpfs cache it was built around went unused.
Polls are now guarded against overlap and stop while the tab is hidden, repeated failures say so
instead of leaving the last good reading on screen, and two functions nothing called are gone.
2026-08-07 10:23:13 -04:00
Gmer4Lfe
b445ddc2c8
Make a container action tell the truth about what happened
...
The response was discarded, so a refused stop looked like a completed one, and the payload the
card redraws from is cached for 300s with no invalidation — the container carried on showing as
running until the once-a-minute writer caught up. Stop now confirms; start still does not.
2026-08-07 10:20:11 -04:00
Gmer4Lfe
fb50f94ed8
Escape what the monitor page renders, and put the helpers where every page can reach them
...
The page interpolated media titles, partner hostnames read over the mesh, and docker folder
names straight into innerHTML — its own header claimed otherwise, and the helpers that would
have fixed it were defined in a page it never loads. Container WebUI values now get a scheme
check before they reach window.open().
2026-08-07 10:17:45 -04:00
Gmer4Lfe
b02857cf04
Put the AI master switch on Settings, so the switch that hides the AI tab is reachable without it
...
Turning AI off takes the AI tools and their conf gear off the Tools card with it, which
left the raw master.conf editor as the only way back on.
2026-08-07 09:49:41 -04:00
Gmer4Lfe
be306cf86c
Let one gate decide every AI surface, so switching AI off actually removes all of it
...
The Tools card adopted the AI scripts on the host check alone, and api/ai.php only
tested AI_ENABLED in front of ask, so a disabled subsystem still had rows to run and
an endpoint that answered.
2026-08-07 09:49:31 -04:00
Gmer4Lfe
bf7a2cc911
Point scripts at the shared host sections, and fix the two reasons those sections could never be found
2026-08-06 23:16:28 -04:00
Gmer4Lfe
4989486f45
Two thirds of the conf was unreachable from the UI, and an empty Config block said nothing about why
2026-08-06 23:08:49 -04:00
Gmer4Lfe
9be6055113
Adopt the AI tools onto the Tools card, but only where the index and the model actually are
2026-08-06 23:02:22 -04:00
Gmer4Lfe
8b0c2f6d1b
Tools had no gear, so nineteen scripts had no Info and Settings at all
2026-08-06 22:57:05 -04:00
Gmer4Lfe
141e2ca37c
At full size the dock's own button becomes its collapse, and closing hands the panel back
2026-08-06 22:49:38 -04:00
Gmer4Lfe
b803fefebd
Give the assistant dock a size toggle, so a long answer can have the panel without hiding what it is about
2026-08-06 22:44:00 -04:00
Gmer4Lfe
ba1979a662
zfs_arc_max reads 0 by default, so the fallback never fired and the ARC section divided by zero
2026-08-06 22:39:54 -04:00
Gmer4Lfe
1b46033584
grep -c prints zero and exits one, so every echo-0 fallback produced a two-line count
2026-08-06 22:31:50 -04:00
Gmer4Lfe
7b2f79e3ac
grep -c prints zero and exits one, so the echo-0 fallback made VM_COUNT two lines and --status died
2026-08-06 22:26:16 -04:00
Gmer4Lfe
9145a66cef
Surface server_reboot.sh on the Tools card without moving it out of the shutdown chain it belongs to
2026-08-06 22:24:30 -04:00
Gmer4Lfe
d5944c2443
Sweep every onclick built from data: an unescaped quote silently killed nine handlers
2026-08-06 22:13:10 -04:00
Gmer4Lfe
d135dff5cd
An unescaped quote ended the onclick attribute early, so clicking an error line did nothing
2026-08-06 22:08:10 -04:00
Gmer4Lfe
62a838ebdd
Clicking a recent error opens the log on that line and acks it, so acknowledged means seen
2026-08-06 22:00:44 -04:00
Gmer4Lfe
f2d0e18f2c
Ask about a run from the row it is on, and stop spending context on health checks when the run was clean
2026-08-06 21:51:55 -04:00
Gmer4Lfe
4347fc5f07
Capture the dock phrasing that worked, so it keeps working
2026-08-06 21:38:41 -04:00
Gmer4Lfe
ce0cbd868c
Write down the routing every bug so far produced, and check it without asking the model
2026-08-06 21:34:05 -04:00
Gmer4Lfe
2658082607
Explain mode: show what a question would be given and why, without asking the model
2026-08-06 21:27:26 -04:00
Gmer4Lfe
55aa7f968f
A phrase list missed one word order, and the assistant answered a log question with a command that re-runs the job
2026-08-06 21:17:57 -04:00
Gmer4Lfe
0882942164
General Chat now hands a Varaverk question up to the Assistant instead of telling the operator to do it
2026-08-06 20:56:47 -04:00
Gmer4Lfe
917ff43795
Profile permissions belong in one table, because scattered they hid a capability chat was never meant to have
2026-08-06 20:51:19 -04:00
Gmer4Lfe
d562644581
State the no-citation rule for run evidence in the contract itself, since as an amendment it lost
2026-08-06 18:49:18 -04:00
Gmer4Lfe
02aa73bb8d
Chat invented a log inspection when asked how a run went, and the rundown cited passages it had not read
2026-08-06 18:48:01 -04:00
Gmer4Lfe
0fa871ef61
The run-outcome gate ignored the profile, so chat could be handed a log it is promised it never sees
2026-08-06 18:45:55 -04:00
Gmer4Lfe
815ceef276
A question about how a run went should arrive with the run attached, not with directions to the log panel
2026-08-06 18:43:12 -04:00
Gmer4Lfe
10c1705790
An answer sized the assistant dock past the bottom of the page because nothing refit the panel after it landed
2026-08-06 18:36:50 -04:00
Gmer4Lfe
e467cdaf23
The scheduler AI dock read the poll envelope as the job, so every answer hung on thinking
2026-08-06 18:28:13 -04:00
Gmer4Lfe
269ef9b2de
Verify a bug report's component and evidence before filing it
2026-08-05 21:25:00 -04:00
Gmer4Lfe
657ee435d1
Add a copy-out button that formats a report as a pasteable issue
2026-08-05 21:12:40 -04:00
Gmer4Lfe
2f8af3a1b7
Say the bug was recorded locally, because that is what happened
2026-08-05 20:55:56 -04:00
Gmer4Lfe
2c5e412d91
File AI-detected Varaverk defects as deduped reports, surfaced on the AI tab and counted in the coffee report
2026-08-05 20:48:54 -04:00
Gmer4Lfe
9d4a62fa5e
Have the troubleshooter suspect configuration before it suspects Varaverk
2026-08-05 20:33:01 -04:00
Gmer4Lfe
714d97dd49
Add an incident journal the troubleshooter reads back, and thinking for diagnosis
2026-08-05 20:26:56 -04:00
Gmer4Lfe
5a813eb4c8
Add a troubleshooting profile with the scoped log, and a deterministic conf-key lookup
2026-08-05 20:18:05 -04:00
Gmer4Lfe
185abdb442
Add a scope-aware assistant dock to the scheduler right panel
2026-08-05 19:56:02 -04:00
Gmer4Lfe
60994c7667
Stop the array fields soft-wrapping so numbers and stripes stay in register
2026-08-05 18:24:06 -04:00
Gmer4Lfe
eacea56d9d
Title the info banner for its view, and number and stripe the array fields
2026-08-05 18:13:04 -04:00
Gmer4Lfe
99486b1eaf
Open on the condensed list, with a More info button for the full document
2026-08-05 18:03:47 -04:00
Gmer4Lfe
aeb8c01370
Show the terse control list when the help block is collapsed
2026-08-05 17:58:29 -04:00
Gmer4Lfe
2ad3a1bfed
Put the whole help doc back behind the collapse so the live blocks are not buried
2026-08-05 17:51:12 -04:00
Gmer4Lfe
329bf25b14
Number and stripe the per-script settings so each one reads as its own row
2026-08-05 17:44:12 -04:00
Gmer4Lfe
90eee5674f
Guarantee a trailing newline when writing a conf so appends cannot join the last line
2026-08-04 21:20:42 -04:00
Gmer4Lfe
1761087283
Measure the editor chrome instead of assuming 38px, so the last lines are reachable
2026-08-04 21:16:15 -04:00
Gmer4Lfe
a13c5541cc
Pin the editor highlight overlay to the textarea so long confs scroll to the end
2026-08-04 21:07:27 -04:00
Gmer4Lfe
262cd92300
Cover every control in the reference tables so the collapsed view stays complete
2026-08-04 19:49:44 -04:00
Gmer4Lfe
87fa2693f0
Show the reference tables collapsed and the task guide on expand, from one file
2026-08-04 19:45:23 -04:00
Gmer4Lfe
64a28acd64
Keep wrapped list items in their bullet instead of orphaning the continuation
2026-08-04 19:38:58 -04:00
Gmer4Lfe
3ea80ef944
Single-source the scheduler help from markdown the AI index can read
2026-08-04 19:30:38 -04:00
Gmer4Lfe
e1bbecad38
Rename the per-orchestrator expander to Steps so it stops colliding with Advanced mode
2026-08-04 19:19:48 -04:00
Gmer4Lfe
149d98a10b
Add a collapsed settings card under the composer
2026-08-04 18:27:57 -04:00
Gmer4Lfe
bd583b58dc
Put token usage above the system checks on the AI tab
2026-08-04 18:22:09 -04:00
Gmer4Lfe
7d0f7332b9
Probe partner liveness separately so a blink cannot delete a cached ledger
2026-08-04 18:15:47 -04:00