From 100d28d1c6a64a3247b20dce371d39cc2fcff475 Mon Sep 17 00:00:00 2001 From: Myron Blair Date: Tue, 7 Jul 2026 11:21:43 -0500 Subject: [PATCH 01/13] Add Backup Downloads card (JARVIS + DO Server backups) to Blair HQ dashboard --- index.html | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/index.html b/index.html index 9d2ef2d..2fb8986 100644 --- a/index.html +++ b/index.html @@ -233,6 +233,20 @@

+ +
+
+
πŸ’Ύ
+

Backup Downloads

+
+ +
+
@@ -726,6 +740,31 @@ } loadBackupStatus(); + // ── Backup Downloads card β€” added 2026-07-07 ─────────────────────────── + async function loadBackupDownloads() { + const el = document.getElementById('backup-downloads-list'); + try { + const r = await fetch('/downloads/backup-files-status.json', { cache: 'no-store' }); + const data = await r.json(); + const fmt = (iso) => { + if (!iso) return 'No backup found'; + const d = new Date(iso); + return d.toLocaleString('en-US', {month:'short', day:'numeric', hour:'2-digit', minute:'2-digit'}); + }; + const row = (label, entry) => ` + + + ${label} + ${entry.source} β€” ${fmt(entry.timestamp)}${entry.size ? ' Β· ' + entry.size : ''} + ↓ + `; + el.innerHTML = row('JARVIS Backup', data.jarvis) + row('DO Server Backup', data.do_server); + } catch (e) { + el.innerHTML = ''; + } + } + loadBackupDownloads(); + // ── Notes β€” server-backed so they sync across all devices ───────────── const API = '/notes.php'; From 041a3aa080724079d493c26d264789c5bd5d34c6 Mon Sep 17 00:00:00 2001 From: Myron Blair Date: Tue, 7 Jul 2026 11:23:54 -0500 Subject: [PATCH 02/13] Resolve merge: keep infra-reference link removal + add Backup Downloads card --- index.html | 1 - 1 file changed, 1 deletion(-) diff --git a/index.html b/index.html index 2fb8986..6cefb96 100644 --- a/index.html +++ b/index.html @@ -220,7 +220,6 @@
-
From 5242cd8867f02f7af204d5e47b15adb8b8d2d54b Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 8 Jul 2026 15:31:20 -0500 Subject: [PATCH 03/13] Add Install Commands card: copy-to-clipboard JARVIS agent + FusionPBX installer one-liners Both are plain text buttons (not links) so they never navigate/click through, just copy to clipboard. JARVIS command intentionally omits the registration key (site is password-protected, but kept the same interactive-prompt pattern used for the public install scripts anyway) -- it prompts for the key when run. --- index.html | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/index.html b/index.html index 6cefb96..3b61f9b 100644 --- a/index.html +++ b/index.html @@ -128,6 +128,31 @@ } .link-item:hover .arrow { opacity: 1; } + .copy-item { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.6rem 1rem; + color: var(--text); + font-size: 0.9rem; + transition: background 0.15s; + cursor: pointer; + border: none; + background: none; + width: 100%; + text-align: left; + font-family: inherit; + } + .copy-item:hover { background: var(--surface2); } + .copy-item .copy-icon { + color: var(--muted); + font-size: 0.7rem; + opacity: 0; + transition: opacity 0.15s; + flex-shrink: 0; + } + .copy-item:hover .copy-icon { opacity: 1; } + .dot-blue { background: var(--accent); } .dot-purple { background: var(--accent2); } .dot-green { background: var(--green); } @@ -220,6 +245,22 @@
+ +
+
+
πŸ“‹
+

Install Commands

+
+ +
+
@@ -701,6 +742,18 @@ } tick(); setInterval(tick, 1000); + // ── Install Commands card: copy-to-clipboard, never auto-navigates ── + function copyCmd(btn, text) { + navigator.clipboard.writeText(text).then(() => { + const iconEl = btn.querySelector('.copy-icon'); + const prev = iconEl.textContent; + iconEl.textContent = 'copied!'; + iconEl.style.opacity = '1'; + setTimeout(() => { iconEl.textContent = prev; iconEl.style.opacity = ''; }, 1500); + }); + } + + // ── Backup Status card β€” reads daily-refreshed JSON from MSP360 collector ── async function loadBackupStatus() { const el = document.getElementById('backup-status-list'); From 8bd13f5caf88e34e2d9bcdd6767d265a4d1e62a7 Mon Sep 17 00:00:00 2001 From: Myron Blair Date: Sun, 12 Jul 2026 16:21:31 -0500 Subject: [PATCH 04/13] Fix Home Assistant external link: http not https, add port 8123 --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 3b61f9b..09a0ffd 100644 --- a/index.html +++ b/index.html @@ -294,7 +294,7 @@

Home Automation

From 11b8e4d93934e30fb7004ff27afea2b78d5bd238 Mon Sep 17 00:00:00 2001 From: Myron Blair Date: Thu, 23 Jul 2026 22:34:55 -0500 Subject: [PATCH 12/13] Remove Jellyfin link - replaced by StreamHoard --- index.html | 3 --- 1 file changed, 3 deletions(-) diff --git a/index.html b/index.html index bd21c58..fd20799 100644 --- a/index.html +++ b/index.html @@ -314,9 +314,6 @@

Media