Compare commits

..

No commits in common. "59098667a1d851b5b92b18fbf5918dd4b928ade0" and "6b93554040e8d4d04937037613e66e97841b52aa" have entirely different histories.

View File

@ -177,12 +177,11 @@ class OverviewManager {
// extra inset — same rhythm as the Backups/Migrate sub-tab strips) — so
// the renderers below only ever produce the body (never a heading or its
// action buttons).
const checkBtn = (label) => `<button class="updater-btn" data-updater-action="check">↻ ${label}</button>`;
const body = (html) => `<div class="ov-tab-body">${html}</div>`;
switch (id) {
case 'overview':
// No manual "Check" — scans run automatically; the hero already reports
// the last scan time, and the Updates/Improvements tabs carry the nudge.
pane.innerHTML = this.renderHeader(id) + body(this.renderOverview());
pane.innerHTML = this.renderHeader(id, checkBtn('Check now')) + body(this.renderOverview());
break;
case 'updates': {
// Preserve which rows are expanded across a rebuild — a background
@ -201,7 +200,7 @@ class OverviewManager {
break;
}
case 'improvements':
pane.innerHTML = this.renderHeader(id) + body(this.renderImprovements());
pane.innerHTML = this.renderHeader(id, checkBtn('Check')) + body(this.renderImprovements());
break;
case 'backups': this.mountBackupCenter(pane); break;
case 'migrate': this.mountMigrate(); break;
@ -359,7 +358,7 @@ class OverviewManager {
sub = bits.join(' · ');
}
} else {
sub = 'The first automatic scan runs within a couple of minutes.';
sub = 'The first automatic scan runs within a couple of minutes — or hit Check now.';
}
const chip = (id, label, n) =>
`<button class="ov-chip${this.board === id ? ' active' : ''}" data-overview-action="board" data-board="${id}">${label}${n ? ` <span class="ov-chip-n">${n}</span>` : ''}</button>`;
@ -616,12 +615,9 @@ class OverviewManager {
// ---- Improvements tab (reuse the updater's hotfix renderer) ---------------
renderImprovements() {
// withToolbar=false — the embedded renderer skips its own toolbar; the
// auto-check line (with its right-side Check-now nudge) leads the body
// instead, matching the Updates tab.
return this.updater
? this.updater.renderAutoCheckLine() + this.updater.renderImprovements(false)
: `<div class="updater-empty">Improvements unavailable.</div>`;
// withToolbar=false — the fleet tab's "Check" button lives in the shared
// header action slot, so the embedded renderer skips its own toolbar.
return this.updater ? this.updater.renderImprovements(false) : `<div class="updater-empty">Improvements unavailable.</div>`;
}
// ---- Backups tab (fleet health glance; actions deep-link per app) ---------