Partnership page: Varaverk assistant profile, row-2 Actions, and the two container list cards

This commit is contained in:
Gmer4Lfe
2026-08-17 15:08:43 -04:00
parent 2216072669
commit 239e100b44
2 changed files with 224 additions and 11 deletions
+39 -11
View File
@@ -120,21 +120,47 @@ textarea.vv-pt-set-input { resize:vertical; white-space:pre; }
<div style="color:#444;font-size:12px;padding:16px 0;text-align:center;">Loading…</div>
</div>
<!-- Data moved between the servers -->
<div class="vv-card" id="vv-pt-xfer-card" style="margin-bottom:12px;">
<h3>Data Transferred</h3>
<div id="vv-pt-xfer-body" style="color:#444;font-size:12px;">Loading…</div>
<!-- Row 2 — what has moved, and what you can do about it -->
<div style="display:flex;gap:12px;margin-bottom:12px;align-items:stretch;flex-wrap:wrap;">
<div class="vv-card" id="vv-pt-xfer-card" style="flex:1 1 260px;min-width:0;display:flex;flex-direction:column;">
<h3>Data Transferred</h3>
<div id="vv-pt-xfer-body" style="flex:1;color:#444;font-size:12px;">Loading…</div>
</div>
<div class="vv-card" id="vv-pt-actions-card" style="flex:2 1 340px;min-width:0;">
<h3>Actions</h3>
<div id="vv-pt-actions-body" style="color:#444;font-size:12px;">Loading…</div>
</div>
</div>
<!-- Mirror sync + Actions side by side -->
<!-- Row 3 — sync state, and the two lists that decide what the partner carries -->
<div style="display:flex;gap:12px;margin-bottom:12px;align-items:stretch;flex-wrap:wrap;">
<div class="vv-card" id="vv-pt-sync-card" style="flex:1 1 220px;min-width:0;display:flex;flex-direction:column;">
<h3>Mirror Sync</h3>
<div id="vv-pt-sync-body" style="flex:1;color:#444;font-size:12px;">Loading…</div>
</div>
<div class="vv-card" id="vv-pt-actions-card" style="flex:2 1 300px;min-width:0;">
<h3>Actions</h3>
<div id="vv-pt-actions-body" style="color:#444;font-size:12px;">Loading…</div>
<!-- Failover coverage: which of THIS host's containers the partner starts when this host is
down, and after how long. Backed by FALLBACK_<me>_TIER1-4 in this host's own conf, which
is what fallback.sh on the partner actually reads — so the picker edits the real list
rather than a second one that could disagree with it. -->
<div class="vv-card" id="vv-pt-cover-card" style="flex:1 1 300px;min-width:0;display:flex;flex-direction:column;">
<div style="display:flex;justify-content:space-between;align-items:center;">
<h3 style="margin:0;">Failover Coverage</h3>
<button id="vv-pt-cover-save" class="vv-pt-action-btn run"
onclick="vvPtSaveCover(this)" style="display:none;font-size:11px;">Save</button>
</div>
<div id="vv-pt-cover-body" style="flex:1;color:#444;font-size:12px;margin-top:8px;">Loading…</div>
</div>
<!-- Services deployed to the partner that are neither auth nor arr. These are pushed as XML
templates during onboard, so they run there rather than only starting during an outage. -->
<div class="vv-card" id="vv-pt-svc-card" style="flex:1 1 300px;min-width:0;display:flex;flex-direction:column;">
<div style="display:flex;justify-content:space-between;align-items:center;">
<h3 style="margin:0;">Shared Services</h3>
<button id="vv-pt-svc-save" class="vv-pt-action-btn run"
onclick="vvPtSaveSvc(this)" style="display:none;font-size:11px;">Save</button>
</div>
<div id="vv-pt-svc-body" style="flex:1;color:#444;font-size:12px;margin-top:8px;">Loading…</div>
</div>
</div>
@@ -142,7 +168,7 @@ textarea.vv-pt-set-input { resize:vertical; white-space:pre; }
<?php if (vv_ai_ui_on()): ?>
<div class="vv-card" id="vv-pt-ai-card" style="margin-bottom:12px;">
<?php vv_ai_chat_markup('vv-pt-ai', [
'profile' => 'chat',
'profile' => 'varaverk',
'compact' => true,
'title' => 'Assistant',
'height' => '300px',
@@ -1459,8 +1485,10 @@ setInterval(vvPtLoad, 10000);
if (typeof VvAiChat === 'function' && document.getElementById('vv-pt-ai-chat')) {
VvAiChat({
prefix: 'vv-pt-ai',
profile: 'chat',
resumeProfile: 'chat',
// The Varaverk assistant, not general chat: every question asked on this page is about this
// installation, and the strict profile is the one that can answer from it.
profile: 'varaverk',
resumeProfile: 'varaverk',
empty: 'Ask about the partnership — sync state, fallback tiers, what the mirror is running, '
+ 'why a transfer moved nothing.',
});