svrnty-hermes-webui-plugin/static
Svrnty 01825190a3 feat(adwright panel): wire GetCycleMetrics into Overview KPIs
Frontend now drives Impressions / CTR / Spend from real per-variant
metrics (cycle_metric) rather than hardcoded zeros + fake +12% / -0.3%
deltas. Adds state.data.metricsByCycle keyed by cycle id; populated
via _fetchCycleMetrics which hits the panel-update endpoint directly
(no CMO chat dispatch needed — the route calls gRPC live per request).

After every cycles load (refresh-cycles or list-cycles ingest), fans
out one metrics fetch per cycle. _deriveKpis flattens all metrics
arrays, sums impressions/clicks/spend, computes real CTR from
clicks/impressions. Spend bar now reflects $spend / $budget_total
from real values instead of falling back to the $6,000 default floor.

Plugin route _real_payload_for gains a new branch:
adwright_get_cycle_metrics?cycle_id=N → core.get_cycle_metrics_tool(N).

Fake deltas dropped — real deltas need a previous-window snapshot
the backend doesn't supply yet.

Verified live: metricsByCycle.1 populated with backend's [{variant_id:1,
impressions:0, ...}] record. All metric values still zero in this
sandbox because no ads have dispatched.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 17:57:10 -04:00
..
adwright feat(plugin): Adwright + BTE Command Center panels (v0.4.0) 2026-05-24 12:12:27 -04:00
bte feat(plugin): Adwright + BTE Command Center panels (v0.4.0) 2026-05-24 12:12:27 -04:00
fonts feat(plugin): Phase 2 partial — vault_status migrated + brand skin moved + eval suite (P2.B/C, P3.A/B) 2026-05-23 10:02:47 -04:00
adwright.css fix(plugin): hide native main-views when our panel active; BTE in-main not full-viewport 2026-05-24 13:05:38 -04:00
adwright.js feat(adwright panel): wire GetCycleMetrics into Overview KPIs 2026-05-24 17:57:10 -04:00
app.css fix(adwright + plugin): font 404s + status humanization + compound refresh + poll deadline 2026-05-24 17:47:56 -04:00
app.js feat(plugin): voice-message mic UI in app.js — closes Phase 2.A UX gap (L8) 2026-05-23 10:28:47 -04:00
bte.css fix(plugin): hide native main-views when our panel active; BTE in-main not full-viewport 2026-05-24 13:05:38 -04:00
bte.js fix(bte panel): store BTE-relative thumbUrl so renderer's PROXY_BASE wrap doesn't double-encode 2026-05-24 14:19:09 -04:00
svrnty_nav.js fix(plugin): inject sidebar buttons into BOTH .rail (desktop) + .sidebar-nav (mobile) 2026-05-24 12:58:06 -04:00
umbrella.css feat(umbrella): cortex-os umbrella graph viz panel — Phase 2.E 2026-05-24 12:43:29 -04:00
umbrella.html feat(umbrella): cortex-os umbrella graph viz panel — Phase 2.E 2026-05-24 12:43:29 -04:00
umbrella.js feat(umbrella): cortex-os umbrella graph viz panel — Phase 2.E 2026-05-24 12:43:29 -04:00