Merge claude/2
This commit is contained in:
commit
b875ee0525
@ -594,7 +594,7 @@ class AppTabbedManager {
|
|||||||
const autoLine = this.appUpdater.renderAutoCheckLine();
|
const autoLine = this.appUpdater.renderAutoCheckLine();
|
||||||
const body = app
|
const body = app
|
||||||
? this.appUpdater.renderAppDetail(app, { includeVersion: true })
|
? this.appUpdater.renderAppDetail(app, { includeVersion: true })
|
||||||
: `<div class="updater-empty">No scan data for this app yet — the first automatic check will fill this in shortly.</div>`;
|
: `<div class="updater-empty">You're all caught up — no updates found for this app.</div>`;
|
||||||
section.innerHTML = this.renderAppUpdaterHead(app) +
|
section.innerHTML = this.renderAppUpdaterHead(app) +
|
||||||
`<div class="updater-detail-container">${autoLine}${body}</div>`;
|
`<div class="updater-detail-container">${autoLine}${body}</div>`;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -367,6 +367,7 @@
|
|||||||
.updater-autocheck {
|
.updater-autocheck {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
gap: 9px;
|
gap: 9px;
|
||||||
margin: 0 0 14px;
|
margin: 0 0 14px;
|
||||||
padding: 9px 12px;
|
padding: 9px 12px;
|
||||||
@ -377,6 +378,10 @@
|
|||||||
color: rgba(var(--text-rgb), .72);
|
color: rgba(var(--text-rgb), .72);
|
||||||
}
|
}
|
||||||
.updater-autocheck strong { color: var(--text-primary, #fff); font-weight: 600; }
|
.updater-autocheck strong { color: var(--text-primary, #fff); font-weight: 600; }
|
||||||
|
.updater-autocheck-text { min-width: 0; }
|
||||||
|
/* Manual check lives here (right side), not as a top-level tab button — a nudge
|
||||||
|
for the automatic scan, not the primary way updates are found. */
|
||||||
|
.updater-autocheck-btn { margin-left: auto; flex: 0 0 auto; padding: 4px 11px; font-size: .78rem; }
|
||||||
.updater-autocheck-dot {
|
.updater-autocheck-dot {
|
||||||
width: 7px; height: 7px; border-radius: 50%; flex: 0 0 auto;
|
width: 7px; height: 7px; border-radius: 50%; flex: 0 0 auto;
|
||||||
background: #36d399; box-shadow: 0 0 8px rgba(54, 211, 153, .6);
|
background: #36d399; box-shadow: 0 0 8px rgba(54, 211, 153, .6);
|
||||||
|
|||||||
@ -190,8 +190,10 @@ class OverviewManager {
|
|||||||
const open = Array.from(document.querySelectorAll('#overview-view .ov-row-details:not([hidden])'))
|
const open = Array.from(document.querySelectorAll('#overview-view .ov-row-details:not([hidden])'))
|
||||||
.map((d) => d.id.replace(/^ov-detail-/, ''));
|
.map((d) => d.id.replace(/^ov-detail-/, ''));
|
||||||
const anyUpdate = !!(this.updater && this.updater.apps.some((a) => a.update_available));
|
const anyUpdate = !!(this.updater && this.updater.apps.some((a) => a.update_available));
|
||||||
const actions = checkBtn('Check')
|
// No manual "Check" in the header — the auto-check line at the top of the
|
||||||
+ (anyUpdate ? ` <button class="updater-btn updater-btn-primary" data-updater-action="update-all">Update all</button>` : '');
|
// body carries the (secondary) Check-now nudge. Only the real "Update all"
|
||||||
|
// action lives up here, and only when there's actually something to apply.
|
||||||
|
const actions = anyUpdate ? `<button class="updater-btn updater-btn-primary" data-updater-action="update-all">Update all</button>` : '';
|
||||||
pane.innerHTML = this.renderHeader(id, actions) + body(this.renderUpdates());
|
pane.innerHTML = this.renderHeader(id, actions) + body(this.renderUpdates());
|
||||||
open.forEach((app) => this._openDetail(app));
|
open.forEach((app) => this._openDetail(app));
|
||||||
this._honorAppDeepLink();
|
this._honorAppDeepLink();
|
||||||
@ -524,9 +526,11 @@ class OverviewManager {
|
|||||||
const chip = (id, label, n) =>
|
const chip = (id, label, n) =>
|
||||||
`<button class="ov-chip${this.filter === id ? ' active' : ''}" data-overview-action="filter" data-filter="${id}">${label}${n != null ? ` <span class="ov-chip-n">${n}</span>` : ''}</button>`;
|
`<button class="ov-chip${this.filter === id ? ' active' : ''}" data-overview-action="filter" data-filter="${id}">${label}${n != null ? ` <span class="ov-chip-n">${n}</span>` : ''}</button>`;
|
||||||
const rows = shown.map((a) => this.updateRow(a)).join('') || `<div class="updater-empty">Nothing matches this filter.</div>`;
|
const rows = shown.map((a) => this.updateRow(a)).join('') || `<div class="updater-empty">Nothing matches this filter.</div>`;
|
||||||
// Check / Update all live in the tab header's action slot (renderTab), so
|
// The auto-check line leads the body (with its right-side Check-now nudge);
|
||||||
// the toolbar is just the filter chips.
|
// "Update all" lives in the tab header's action slot (renderTab), so the
|
||||||
|
// toolbar is just the filter chips.
|
||||||
return `
|
return `
|
||||||
|
${up.renderAutoCheckLine()}
|
||||||
<div class="updater-toolbar ov-toolbar">
|
<div class="updater-toolbar ov-toolbar">
|
||||||
<div class="ov-chips">${chip('all', 'All', up.apps.length)}${chip('updates', 'Updates', nUpd)}${chip('security', 'Security', nSec)}</div>
|
<div class="ov-chips">${chip('all', 'All', up.apps.length)}${chip('updates', 'Updates', nUpd)}${chip('security', 'Security', nSec)}</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -575,7 +575,8 @@ class UpdaterPage {
|
|||||||
nextBit = ` · next check ${this.fmtRelFuture(Date.parse(gen) + iv * 60000)}`;
|
nextBit = ` · next check ${this.fmtRelFuture(Date.parse(gen) + iv * 60000)}`;
|
||||||
}
|
}
|
||||||
return `<div class="updater-autocheck${off}"><span class="updater-autocheck-dot"></span>` +
|
return `<div class="updater-autocheck${off}"><span class="updater-autocheck-dot"></span>` +
|
||||||
`<span>Checked automatically · last checked <strong>${last}</strong>${nextBit}</span></div>`;
|
`<span class="updater-autocheck-text">Checked automatically · last checked <strong>${last}</strong>${nextBit}</span>` +
|
||||||
|
`<button class="updater-btn updater-autocheck-btn" data-updater-action="check" title="Check for updates now">↻ Check now</button></div>`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user