diff --git a/api/endpoints/facts_collector.php b/api/endpoints/facts_collector.php index 9542a03..3229086 100644 --- a/api/endpoints/facts_collector.php +++ b/api/endpoints/facts_collector.php @@ -182,7 +182,10 @@ function collect_all(): array { } // ── Site Health (TTL 5 min) ─────────────────────────────────────────── - if ($fresh('sites', 300)) { + // Fixed 2026-07-07: this guard was 300s but cron only runs every 180s, so sites + // were effectively only re-checked every OTHER run (~6 min gaps, felt "far apart"). + // 170s keeps it just under the cron cadence so it re-checks on every run. + if ($fresh('sites', 170)) { $results['sites'] = 'skipped (fresh)'; } else try { $sites = [ diff --git a/public_html/admin/index.php b/public_html/admin/index.php index 48ae9f7..6d06942 100644 --- a/public_html/admin/index.php +++ b/public_html/admin/index.php @@ -1388,6 +1388,14 @@ a{color:var(--cyan);text-decoration:none} .stat-card .val{font-size:1.6rem;color:var(--cyan)} .stat-card .sub{color:var(--text-dim);font-size:0.65rem;margin-top:4px} .stat-card .ok{color:var(--green)}.stat-card .warn{color:var(--yellow)}.stat-card .danger{color:var(--red)} +/* Sites tab: domain names are much longer than typical stat labels (e.g. + parkerslingshotrentals.com) — wider columns + no letter-spacing so they read cleanly. */ +.site-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-bottom:24px} +.site-card{background:var(--surface);border:1px solid var(--border);padding:16px} +.site-card .lbl{color:var(--text-dim);font-size:0.68rem;letter-spacing:0.5px;margin-bottom:8px;white-space:normal;word-break:break-word;line-height:1.4} +.site-card .val{font-size:1.2rem;color:var(--cyan)} +.site-card .sub{color:var(--text-dim);font-size:0.65rem;margin-top:4px} +.site-card .ok{color:var(--green)}.site-card .danger{color:var(--red)} /* ── TABLE ── */ .tbl-wrap{background:var(--surface);border:1px solid var(--border);overflow-x:auto} @@ -3520,18 +3528,18 @@ async function loadSites() { if (!sites.length) { document.getElementById('sites-content').innerHTML='