Diff -- /var/www/vhosts/3dshawn.com/site1/TEMPLATES/site.html
Diff
/var/www/vhosts/3dshawn.com/site1/TEMPLATES/site.html
added on local at 2026-07-12 00:48:44
Added
+144
lines
Removed
-0
lines
Context
0
unchanged
Blobs
from
to 89bfad940ccd
to 89bfad940ccd
Unified diff
Naive LCS-based line diff. Additions in emerald, deletions in rose. Both sides decompressed live from BLOB_STORE.| 1 | <div class="page-head"> | |
| 2 | <span class="page-eyebrow"><span class="dot"></span> Site view</span> | |
| 3 | <h1 class="page-title">$scan_name</h1> | |
| 4 | <p class="page-subtitle"> | |
| 5 | <code class="mono dim">$scan_path</code> | |
| 6 | · on <strong>$server_name</strong> <span class="dim">($server_kind)</span> | |
| 7 | · retention: <strong>$retention_h</strong> | |
| 8 | </p> | |
| 9 | </div> | |
| 10 | ||
| 11 | [if:$has_error] | |
| 12 | <div class="module glow-rose"><div class="module-body">$error_msg</div></div> | |
| 13 | [/if] | |
| 14 | ||
| 15 | [if:!$has_error] | |
| 16 | <div class="ds-guide"> | |
| 17 | <div class="dsg-icon">i</div> | |
| 18 | <div> | |
| 19 | <span class="dsg-title">Everything for this site, one screen.</span> | |
| 20 | Filtered KPIs, 90-day rhythm, recent activity, hotspots to consider pinning, and the named releases scoped here. Use the quick-action chips to jump to <a href="$changes_url">full file changes</a>, <a href="$pin_url">bulk-pin hotspots</a>, or <a href="$export_url">CSV export</a> for this site alone. | |
| 21 | </div> | |
| 22 | </div> | |
| 23 | ||
| 24 | <!-- KPIs --> | |
| 25 | <div class="dash-grid" style="grid-template-columns:repeat(4,1fr);margin-bottom:16px"> | |
| 26 | <div class="module glow-teal"> | |
| 27 | <div class="module-head"><div class="left"><div class="module-title">Last 24h</div></div></div> | |
| 28 | <div class="module-body kpi kpi-teal"><div class="num">$kpi_24h</div><div class="lbl">changes captured</div></div> | |
| 29 | </div> | |
| 30 | <div class="module glow-emerald"> | |
| 31 | <div class="module-head"><div class="left"><div class="module-title">Last 7 days</div></div></div> | |
| 32 | <div class="module-body kpi kpi-emerald"><div class="num">$kpi_7d</div><div class="lbl">changes captured</div></div> | |
| 33 | </div> | |
| 34 | <div class="module glow-sky"> | |
| 35 | <div class="module-head"><div class="left"><div class="module-title">Active files</div></div></div> | |
| 36 | <div class="module-body kpi kpi-sky"><div class="num">$kpi_active</div><div class="lbl">distinct files, not deleted</div></div> | |
| 37 | </div> | |
| 38 | <div class="module glow-amber"> | |
| 39 | <div class="module-head"><div class="left"><div class="module-title">Lifetime</div></div></div> | |
| 40 | <div class="module-body kpi kpi-amber"><div class="num">$kpi_all</div><div class="lbl">total captures ever</div></div> | |
| 41 | </div> | |
| 42 | </div> | |
| 43 | ||
| 44 | <!-- 90-day timeline --> | |
| 45 | <div class="module glow-teal" style="margin-bottom:16px"> | |
| 46 | <div class="module-head"><div class="left"> | |
| 47 | <div class="module-title">Activity, last 90 days<span class="ds-help" data-help-title="This site only" data-help-body="Just this monitor's captures — unlike the main dashboard which stacks the whole portfolio."></span></div> | |
| 48 | <span class="module-subtitle">Click any day to filter file changes to that date.</span> | |
| 49 | </div></div> | |
| 50 | <div class="module-body"> | |
| 51 | $timeline_svg | |
| 52 | </div> | |
| 53 | </div> | |
| 54 | ||
| 55 | <div class="dash-grid" style="grid-template-columns:2fr 1fr;margin-bottom:16px"> | |
| 56 | <!-- Recent activity --> | |
| 57 | <div class="module glow-teal"> | |
| 58 | <div class="module-head"><div class="left"> | |
| 59 | <div class="module-icon"><svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg></div> | |
| 60 | <div class="module-title">Recent changes<span class="ds-help" data-help-title="Programmer view" data-help-body="Made an edit that got overwritten? Find it here, click <strong>Restore</strong> to write it back — or open the diff, copy the exact lines you need, and paste them into the current version manually. Every restore backs up the current file first."></span></div> | |
| 61 | <span class="module-subtitle">Last 40 captures on this monitor. Click a row to open the diff. "Restore" writes the captured version back to disk.</span> | |
| 62 | </div> | |
| 63 | <a href="$changes_url" class="tr-chip" style="margin-left:auto">See all →</a> | |
| 64 | </div> | |
| 65 | <div class="module-body tight" style="max-height:640px;overflow:auto"> | |
| 66 | [if:$has_recent] | |
| 67 | <table class="tbl"> | |
| 68 | <thead><tr> | |
| 69 | <th style="width:90px">Status</th> | |
| 70 | <th>File</th> | |
| 71 | <th style="width:80px">Blob</th> | |
| 72 | <th style="width:150px">When</th> | |
| 73 | <th style="width:70px">Restore</th> | |
| 74 | </tr></thead> | |
| 75 | <tbody> | |
| 76 | [loop:@recent] | |
| 77 | <tr> | |
| 78 | <td><span class="pill $status_pill">$status</span>[if:$is_ts_only] <span class="pill pill-mute" style="font-size:9px">ts</span>[/if]</td> | |
| 79 | <td class="mono" style="font-size:11.5px"><a href="$diff_url" style="color:var(--accent-hi);text-decoration:none">$file_short</a></td> | |
| 80 | <td class="mono dim">$blob_short</td> | |
| 81 | <td class="mono dim"><span class="ts" data-ts="$ts_epoch" data-fmt="relative">$date_time</span></td> | |
| 82 | <td>[if:$can_restore]<a href="$restore_url" class="tr-chip" style="padding:2px 8px;font-size:10.5px">Restore</a>[/if]</td> | |
| 83 | </tr> | |
| 84 | [/loop] | |
| 85 | </tbody> | |
| 86 | </table> | |
| 87 | [/if] | |
| 88 | [if:!$has_recent]<div style="padding:36px 14px;text-align:center;color:var(--text-dim)">Nothing captured yet.</div>[/if] | |
| 89 | </div> | |
| 90 | </div> | |
| 91 | ||
| 92 | <!-- Hotspots + releases --> | |
| 93 | <div> | |
| 94 | <div class="module glow-amber" style="margin-bottom:16px"> | |
| 95 | <div class="module-head"><div class="left"> | |
| 96 | <div class="module-title">Hotspots (30d)</div> | |
| 97 | <span class="module-subtitle">Files edited most often on this site. Pin them to freeze current state.</span> | |
| 98 | </div> | |
| 99 | <a href="$pin_url" class="tr-chip" style="margin-left:auto">Pin these →</a> | |
| 100 | </div> | |
| 101 | <div class="module-body tight"> | |
| 102 | [if:$has_hotspots] | |
| 103 | <table class="tbl"> | |
| 104 | <thead><tr><th>File</th><th style="width:60px">Ct</th></tr></thead> | |
| 105 | <tbody> | |
| 106 | [loop:@hotspots] | |
| 107 | <tr> | |
| 108 | <td class="mono" style="font-size:11.5px"><a href="$diff_url" style="color:var(--accent-hi);text-decoration:none">$file_short</a></td> | |
| 109 | <td class="mono" style="color:var(--accent-warn);font-weight:700">$ct</td> | |
| 110 | </tr> | |
| 111 | [/loop] | |
| 112 | </tbody> | |
| 113 | </table> | |
| 114 | [/if] | |
| 115 | [if:!$has_hotspots]<div style="padding:24px 14px;text-align:center;color:var(--text-dim);font-size:12.5px">No activity in the last 30 days.</div>[/if] | |
| 116 | </div> | |
| 117 | </div> | |
| 118 | ||
| 119 | <div class="module glow-emerald"> | |
| 120 | <div class="module-head"><div class="left"> | |
| 121 | <div class="module-title">Releases & stable versions<span class="ds-help" data-help-title="Versions for this site" data-help-body="Portfolio-wide releases + releases scoped to this site or its server. Stable-tier releases are highlighted in green. Click <strong>Restore</strong> to roll every pinned file in that release back to the pinned state."></span></div> | |
| 122 | <span class="module-subtitle">Save a working / stable version below; roll back with one click.</span> | |
| 123 | </div></div> | |
| 124 | <div class="module-body tight"> | |
| 125 | [if:$has_releases] | |
| 126 | <table class="tbl"> | |
| 127 | <thead><tr><th>Version</th><th style="width:70px">Tier</th><th style="width:70px"></th></tr></thead> | |
| 128 | <tbody> | |
| 129 | [loop:@releases] | |
| 130 | <tr> | |
| 131 | <td><strong>$label</strong><div class="dim" style="font-size:11px">$description</div></td> | |
| 132 | <td><span class="pill $tier_pill" style="font-size:9.5px">$tier</span></td> | |
| 133 | <td><a href="$restore_url" class="tr-chip" style="padding:2px 8px;font-size:10.5px">Restore</a></td> | |
| 134 | </tr> | |
| 135 | [/loop] | |
| 136 | </tbody> | |
| 137 | </table> | |
| 138 | [/if] | |
| 139 | [if:!$has_releases]<div style="padding:20px 14px;text-align:center;color:var(--text-dim);font-size:12px">No releases yet. <a href="/named_releases.cgi" style="color:var(--accent-hi)">Save one now</a>.</div>[/if] | |
| 140 | </div> | |
| 141 | </div> | |
| 142 | </div> | |
| 143 | </div> | |
| 144 | [/if] |