Skip to content

✨ Add live Voice conversations to the Hudson portal - #233

Merged
arach merged 1 commit into
mainfrom
codex/portal-voice
Sep 17, 2026
Merged

arach merged 1 commit into
mainfrom
codex/portal-voice

Conversation

@arach

@arach arach commented Sep 17, 2026 •

Copy link
Copy Markdown
Collaborator

Hudson's portal now exposes the shared conversational voice SDK through a Voice app at /app/hudson-voice and in the main workspace. Users can select or switch microphones, start/end a session, mute input, interrupt/resume assistant audio, and follow transcripts and tool activity independently.

The local server owns provider configuration and credentials. Its same-origin loopback broker accepts only SDP, bounds request size and connection attempts, and keeps credentials out of browser responses. The reference tool only counts supplied words. The client ends sessions after 90 seconds; this is a UI limit, not a server-enforced billing cap. Remote deployment requires an authenticated broker.

Panel content now stays between shell chrome and side panels. Standalone Voice uses the existing focus layout to omit unused side panels; the main workspace retains its regular navigation. Provider identifiers are available under Connection details.

Validation:

  • 109 focused tests passed: 19 Voice controller/broker, 25 shell, 65 shared conversation SDK.
  • Web TypeScript check and focused ESLint passed without warnings.
  • HudsonKit JavaScript/declaration build and diff whitespace checks passed.
  • Browser verified standalone Voice, microphone menu, main workspace registration and settings entry; final screenshot reviewed.
  • No real microphone-to-provider round trip was performed through this new portal UI. Existing shared provider tests are separate evidence.

Hosted CI: package builds, packed package validation, and all four typecheck stages passed. Lint stops on the same four pre-existing errors as base main commit d9412b7 (run 35233289257): browser-host.test.ts no-this-alias, two import.test.ts no-explicit-any errors, and RuntimePicker.tsx set-state-in-effect. Those files are unchanged by this PR. Hosted test stages consequently did not run; focused local tests above passed. Main has no required branch protection checks.

@arach
arach merged commit b225ce3 into main Sep 17, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant