From c18c79fbcc0ed2c30991ed4797bd1a85a730ba74 Mon Sep 17 00:00:00 2001 From: iris Date: Sun, 30 Aug 2026 14:16:46 +0200 Subject: [PATCH] agent links: use matching emoji for every built-in icon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mara, #3762: stats already used a real emoji, the rest used plain unicode arrow/hexagon glyphs — mixed style, and some of those glyphs don't even render reliably (hexagon showed as a plain circle in one repro). Picked a small matching set: compass/bar-chart/desktop/ hammer/gear. Operator-declared dashboardLinks extras keep their own emoji unchanged. --- frontend/packages/agent/src/components/MetaNav.tsx | 6 +++--- hive-agent/src/web_ui/state.rs | 12 +++++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/frontend/packages/agent/src/components/MetaNav.tsx b/frontend/packages/agent/src/components/MetaNav.tsx index 743148ca..83338275 100644 --- a/frontend/packages/agent/src/components/MetaNav.tsx +++ b/frontend/packages/agent/src/components/MetaNav.tsx @@ -8,7 +8,7 @@ // stats/screen/forge/config + any `hyperhive.dashboardLinks` extras, // sourced from the backend's `agent_links()` (the single source of // truth — same list also feeds the dashboard card's icon strip) — plus -// a `↑ dashboard` back-link, formerly the overflow menu's job (mara: +// a `🧭 dashboard` back-link, formerly the overflow menu's job (mara: // "remove rebuild button, move link to dashboards into links menu" — // the overflow `⋯` trigger existed for exactly two items, dashboard- // link and rebuild; rebuild's gone outright, the dashboard's own @@ -43,7 +43,7 @@ export interface MetaNavProps { links: AgentLink[]; forgePublicUrl: string | null; /** Absolute base URL of the host dashboard (`resolveDashboardBase`) - * — the `↑ dashboard` item links to `${dashboardBase}dashboard.html`. */ + * — the `🧭 dashboard` item links to `${dashboardBase}dashboard.html`. */ dashboardBase: string; } @@ -95,7 +95,7 @@ export function MetaNav({ links, forgePublicUrl, dashboardBase }: MetaNavProps) role="menuitem" onClick={() => setOpen(false)} > - ↑ dashboard + 🧭 dashboard {visible.map((lnk) => { const href = lnk.kind === 'forge' ? `${forgePublicUrl}${lnk.url}` : lnk.url; diff --git a/hive-agent/src/web_ui/state.rs b/hive-agent/src/web_ui/state.rs index 73736aa0..b621c2fa 100644 --- a/hive-agent/src/web_ui/state.rs +++ b/hive-agent/src/web_ui/state.rs @@ -305,6 +305,12 @@ fn read_own_status() -> (Option, Option) { /// operator's browser host. See /// [`docs/web-ui/dashboard.md::Container row`](../../../docs/web-ui/dashboard.md) for /// the resolver + how `deployed:` ships alongside. +/// +/// Icons are real emoji, not unicode arrow/geometric glyphs — mara: +/// operator-declared `dashboardLinks` extras are already free-choice +/// emoji, so the built-ins should read as the same family rather than +/// mixing in plain text glyphs (which also don't reliably render as a +/// hexagon/arrow across fonts to begin with). fn agent_links(label: &str, gui_enabled: bool) -> Vec { let mut links = Vec::new(); @@ -318,7 +324,7 @@ fn agent_links(label: &str, gui_enabled: bool) -> Vec { if gui_enabled { links.push(AgentLink { url: "screen.html".to_owned(), - icon: "🖥".to_owned(), + icon: "🖥️".to_owned(), label: "screen".to_owned(), kind: AgentLinkKind::Container, }); @@ -327,13 +333,13 @@ fn agent_links(label: &str, gui_enabled: bool) -> Vec { if crate::paths::state_dir().join("forge-token").is_file() { links.push(AgentLink { url: format!("/{label}"), - icon: "⬡".to_owned(), + icon: "🔨".to_owned(), label: "forge".to_owned(), kind: AgentLinkKind::Forge, }); links.push(AgentLink { url: format!("/agent-configs/{label}"), - icon: "↳".to_owned(), + icon: "⚙️".to_owned(), label: "config".to_owned(), kind: AgentLinkKind::Forge, });