diff --git a/frontend/packages/dashboard/src/call.js b/frontend/packages/dashboard/src/call.js index c0b478ff..88ea4588 100644 --- a/frontend/packages/dashboard/src/call.js +++ b/frontend/packages/dashboard/src/call.js @@ -615,27 +615,6 @@ function buildQuestionLi(q) { return li; } -// Snapshot / restore open `
` state across a re-render, scoped to -// one section root. renderQuestions only manages `#questions-section`, so it -// keeps its own section-local pair rather than reaching into tabs.js's -// `MANAGED_SECTION_IDS`-based helpers (which aren't in this module's scope — -// referencing them threw `ReferenceError: snapshotOpenDetails is not defined` -// and aborted refreshState). Sections that should survive a refresh carry a -// stable `data-restore-key`. -function snapshotOpenDetails(root) { - const open = new Set(); - for (const d of root.querySelectorAll('details[data-restore-key]')) { - if (d.open) open.add(d.dataset.restoreKey); - } - return open; -} -function restoreOpenDetails(root, open) { - if (!open.size) return; - for (const d of root.querySelectorAll('details[data-restore-key]')) { - if (open.has(d.dataset.restoreKey)) d.open = true; - } -} - export function renderQuestions() { const root = $('questions-section'); // #questions-section only lives on /dashboard.html (Y3R C4LL tab); @@ -646,7 +625,7 @@ export function renderQuestions() { // any expanded sections. The keyed-cache approach reuses question //
  • nodes (preserving textarea/checkbox state) and only rebuilds // cache-miss rows, so we no longer wipe the DOM at the start. - const openDetails = snapshotOpenDetails(root); + const openDetails = snapshotOpenDetails(); const fmt = (n) => new Date(n * 1000).toISOString().replace('T', ' ').slice(0, 19); const allPending = questionsState.pending; @@ -771,7 +750,7 @@ export function renderQuestions() { const histEl = root.querySelector('.q-history'); if (histEl) histEl.open = true; } - restoreOpenDetails(root, openDetails); + restoreOpenDetails(openDetails); } // Format a remaining-seconds count as the `⏳ …` TTL chip text on a diff --git a/hive-ag3nt/src/web_ui.rs b/hive-ag3nt/src/web_ui.rs index f2835c1d..113da430 100644 --- a/hive-ag3nt/src/web_ui.rs +++ b/hive-ag3nt/src/web_ui.rs @@ -664,9 +664,8 @@ struct DashboardState { /// `None` when no status is set. #[serde(skip_serializing_if = "Option::is_none")] status_set_at: Option, - /// Full context-window size from the most recent completed turn - /// (`ctx_usage.context_tokens()` = input + cache-read + cache-creation). - /// `None` until the first turn finishes. Drives the `ctx·Nk` card badge. + /// Input token count from the most recent completed turn (`ctx_usage.input_tokens`). + /// `None` until the first turn finishes. #[serde(skip_serializing_if = "Option::is_none")] ctx_tokens: Option, /// Effective context-window budget for the current model. Same @@ -715,12 +714,7 @@ async fn api_dashboard_state(State(state): State) -> axum::Json