Voice admin: ui_socket_path() returns admin.sock instead of ui.sock #34

Closed
opened 2026-05-13 05:27:25 +00:00 by zaelgohary · 2 comments
Member

The ui_socket_path() function in crates/hero_voice_admin/src/main.rs returns hero_voice/admin.sock despite its name and intent. Hero_router proxies /hero_voice/ui/ to <svc>/ui.sock, so the iframe gets a 404 / connection-refused.

Root cause

fn ui_socket_path() -> PathBuf {
    socket_base_dir().join("hero_voice").join("admin.sock")
}

Should be ui.sock. Sibling crates (hero_office_admin, hero_aibroker_admin, hero_compute_admin) all bind their UI listener at <svc>/ui.sock. The top-of-file doc comment also still references admin.sock.

Repro

  1. Open the Voice island from Hero OS dock.
  2. iframe shows blank / connection error.
  3. ls ~/hero/var/sockets/hero_voice/ — admin.sock present, ui.sock missing.

Expected

Voice iframe loads HeroVoice UI; the socket dir contains ui.sock.

The `ui_socket_path()` function in `crates/hero_voice_admin/src/main.rs` returns `hero_voice/admin.sock` despite its name and intent. Hero_router proxies `/hero_voice/ui/` to `<svc>/ui.sock`, so the iframe gets a 404 / connection-refused. ## Root cause ```rust fn ui_socket_path() -> PathBuf { socket_base_dir().join("hero_voice").join("admin.sock") } ``` Should be `ui.sock`. Sibling crates (`hero_office_admin`, `hero_aibroker_admin`, `hero_compute_admin`) all bind their UI listener at `<svc>/ui.sock`. The top-of-file doc comment also still references `admin.sock`. ## Repro 1. Open the Voice island from Hero OS dock. 2. iframe shows blank / connection error. 3. `ls ~/hero/var/sockets/hero_voice/` — admin.sock present, ui.sock missing. ## Expected Voice iframe loads HeroVoice UI; the socket dir contains `ui.sock`.
Author
Member

Fixed in 50e033f6c3. Awaiting CI before closing.

Fixed in 50e033f6c3. Awaiting CI before closing.
Author
Member

Reopened to correct the record.

The original premise was wrong. Hero_router's resolve_ui_socket (hero_router/crates/hero_router/src/server/routes.rs:916) tries <svc>/admin.sock first (canonical) and falls back to <svc>/ui.sock as legacy. Voice was already binding admin.sock (per the Phase-1 migration in c9a3299, web.sock → admin.sock), so the iframe was working. Only the function NAME ui_socket_path() was misleading.

Original "fix" commit 50e033f (changing the binding to ui.sock) was a regression away from the canonical convention. It's been force-removed from development. Replacement commit dc9af3f just renames the function to admin_socket_path() so the source matches reality.

Closing as not-a-bug. The misleading-name cleanup ships in dc9af3f.

Reopened to correct the record. **The original premise was wrong.** Hero_router's `resolve_ui_socket` (`hero_router/crates/hero_router/src/server/routes.rs:916`) tries `<svc>/admin.sock` **first** (canonical) and falls back to `<svc>/ui.sock` as legacy. Voice was already binding `admin.sock` (per the Phase-1 migration in c9a3299, `web.sock → admin.sock`), so the iframe was working. Only the function NAME `ui_socket_path()` was misleading. Original "fix" commit `50e033f` (changing the binding to `ui.sock`) was a **regression away from the canonical convention**. It's been force-removed from `development`. Replacement commit `dc9af3f` just renames the function to `admin_socket_path()` so the source matches reality. Closing as not-a-bug. The misleading-name cleanup ships in dc9af3f.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_voice#34
No description provided.