fix(#2650,#2649): drop reminders tab + pending_reminders chip
hive-c0re's broker reminder store and /api/reminders endpoint were removed in PR #2644 (reminders migrated to in-container sqlite store). The dashboard had a QU3U3D R3M1ND3RS section on the schedules tab backed by that endpoint, and a per-agent badge driven by pending_reminders (always 0 after the migration). Remove both. Per-agent reminders now surface through get_loose_ends / the todos pill on the agent page, consistent with the todos migration. - frontend/packages/dashboard/src/schedules.js: drop refreshReminders, renderReminders, applyRemindersChanged; drop appendLinkified import (no longer used); update module comment. - frontend/packages/dashboard/src/tabs.js: drop applyRemindersChanged and refreshReminders imports; remove reminders-section from managed list; remove refreshReminders call site; drop reminders_changed from SSE dispatch; simplify countdown ticker (reminder-due gone). - frontend/packages/dashboard/src/dashboard.html: remove QU3U3D R3M1ND3RS section. - frontend/packages/dashboard/src/dashboard.css: remove reminder list + row CSS. - frontend/packages/dashboard/src/common.css: remove .badge-reminder. - frontend/packages/dashboard/src/swarm.js: remove pending_reminders from fingerprint key and badge render.
This commit is contained in:
parent
ee072149c9
commit
fab2fdcc0a
6 changed files with 21 additions and 180 deletions
|
|
@ -28,8 +28,8 @@ import {
|
|||
initPermissions,
|
||||
} from './permissions.js';
|
||||
import {
|
||||
applySchedulesChanged, applyRemindersChanged,
|
||||
refreshSchedules, refreshReminders, activeScheduleCount,
|
||||
applySchedulesChanged,
|
||||
refreshSchedules, activeScheduleCount,
|
||||
} from './schedules.js';
|
||||
import {
|
||||
initCall,
|
||||
|
|
@ -105,11 +105,10 @@ window.marked = marked;
|
|||
// a request pending for an hour could still show "0s ago" without
|
||||
// this ticker. Also flips `.stale` (amber highlight) at exactly 1h
|
||||
// rather than only at the next re-render.
|
||||
// Live countdown for reminder due-at labels and schedule next-fire
|
||||
// cells. Both renderers stamp `data-due-at` on the element so this
|
||||
// single ticker keeps them fresh without triggering a full re-render.
|
||||
// `.reminder-due` -> "overdue X ago" / "in Y"
|
||||
// `.sched-due` -> same pattern
|
||||
// Live countdown for schedule next-fire cells. Renderers stamp
|
||||
// `data-due-at` on `.sched-due` elements so this single ticker keeps
|
||||
// them fresh without triggering a full re-render. Also keeps
|
||||
// `.approval-ts` stale-highlight fresh at the 1h boundary.
|
||||
setInterval(() => {
|
||||
const now = Math.floor(Date.now() / 1000);
|
||||
document.querySelectorAll('.approval-ts[data-requested-at]').forEach((node) => {
|
||||
|
|
@ -119,13 +118,13 @@ window.marked = marked;
|
|||
node.textContent = 'requested ' + fmtAgo(requestedAt);
|
||||
node.classList.toggle('stale', ageSec >= 3600);
|
||||
});
|
||||
document.querySelectorAll('.reminder-due[data-due-at], .sched-due[data-due-at]').forEach((node) => {
|
||||
document.querySelectorAll('.sched-due[data-due-at]').forEach((node) => {
|
||||
const dueAt = Number(node.getAttribute('data-due-at'));
|
||||
if (!Number.isFinite(dueAt)) return;
|
||||
const dueIn = dueAt - now;
|
||||
node.textContent = dueIn <= 0
|
||||
? 'overdue ' + fmtAgo(dueAt)
|
||||
: (node.classList.contains('reminder-due') ? 'in ' : '') + fmtDuration(dueIn);
|
||||
: fmtDuration(dueIn);
|
||||
});
|
||||
}, 1000);
|
||||
|
||||
|
|
@ -139,7 +138,6 @@ window.marked = marked;
|
|||
'questions-section',
|
||||
'inbox-section',
|
||||
'approvals-section',
|
||||
'reminders-section',
|
||||
'schedules-section',
|
||||
'capabilities-section',
|
||||
'tool-groups-section',
|
||||
|
|
@ -248,7 +246,6 @@ window.marked = marked;
|
|||
// #inbox-section element to render into.)
|
||||
syncApprovalsFromSnapshot(s);
|
||||
renderApprovals();
|
||||
refreshReminders();
|
||||
refreshSchedules();
|
||||
restoreOpenDetails(openDetails);
|
||||
notifyDeltas(s);
|
||||
|
|
@ -310,7 +307,6 @@ window.marked = marked;
|
|||
// rebuild_queue_changed stays: it refreshes the SW4RM badges.
|
||||
rebuild_queue_changed: applyRebuildQueueChanged,
|
||||
schedules_changed: applySchedulesChanged,
|
||||
reminders_changed: applyRemindersChanged,
|
||||
capabilities_changed: applyCapabilitiesChanged,
|
||||
tool_groups_changed: applyToolGroupsChanged,
|
||||
};
|
||||
|
|
@ -370,8 +366,8 @@ window.marked = marked;
|
|||
renderSelectionBar(Array.from(containersState.values()));
|
||||
// Re-fetch on activation as a safety net: SSE covers live mutations,
|
||||
// re-sync covers disconnect windows / approval-path inserts that
|
||||
// don't yet emit. SCH3DUL3S also re-fetches reminders (same tab).
|
||||
if (target === 'schedules') { refreshSchedules(); refreshReminders(); }
|
||||
// don't yet emit.
|
||||
if (target === 'schedules') { refreshSchedules(); }
|
||||
// Permissions tables: SSE covers worker-applied changes
|
||||
// (capabilities_changed / tool_groups_changed); re-fetch on
|
||||
// activation as a safety net for any gap between SSE events and
|
||||
|
|
|
|||
Loading…
Reference in a new issue