hermes-agent/apps/desktop/src/app
Teknium 0f64557c06 fix(wake): coerce dead onnx->tflite on macOS ARM64; clear stale voice turn-timeout
Two follow-ups from the voice PR (#70509).

1. macOS ARM64 onnx migration. Existing users who pinned
   openwakeword.inference_framework=onnx before the tflite fix landed kept a
   wake word that arms but never fires (ONNX's embedding model is broken on
   Apple Silicon, upstream #336). New resolve_inference_framework() honors an
   explicit framework everywhere ONNX actually works, but coerces the one
   provably-dead combination (explicit onnx + macOS ARM64) to tflite with a
   one-time warning. No config mutation; empty still falls back to the platform
   default. Both read sites (engine init + requirements check) route through
   the shared resolver.

2. Voice turn-timeout leak. Each listen cycle reassigned turnTimeoutRef
   without clearing the prior 60s timer, so a stale timer from an earlier
   cycle could fire handleTurn() mid-way through a later listen — after enough
   idle re-listens this wedged the loop into a non-re-arming state (the
   'voice chat deactivates after ~a minute' report). Clear before re-arm.

Tests: 64 wake tests (added onnx-coercion / intel-kept / tflite-kept /
empty-default cases; updated the stale 'explicit onnx kept on ARM64' test
that encoded the old broken behavior), 39 desktop voice/wake vitest, tsc +
eslint clean.
2026-07-28 19:40:25 -07:00
..
agents refactor(desktop): adopt shared utils + app-wide cleanups 2026-07-03 13:48:44 -05:00
artifacts perf(desktop): memoize sidebar rows + status dots + artifact cells 2026-07-28 20:23:10 -05:00
chat fix(wake): coerce dead onnx->tflite on macOS ARM64; clear stale voice turn-timeout 2026-07-28 19:40:25 -07:00
command-center fix(desktop): satisfy lint — import order, unused import, exhaustive-deps 2026-07-28 20:38:04 -05:00
command-palette fmt(js): npm run fix on merge (#73780) 2026-07-29 02:10:16 +00:00
contrib fmt(js): npm run fix on merge (#73770) 2026-07-29 01:49:23 +00:00
cron feat(desktop): event-driven live sync — change broadcasts replace the always-on polls 2026-07-28 17:21:58 -05:00
gateway/hooks fix(desktop): give ⌘T session tabs a live gateway so slash completions load 2026-07-25 20:30:55 -05:00
hooks desktop: open sessions where they already are 2026-07-28 01:13:30 -05:00
learning refactor(desktop): localize settled TODO(i18n) literals (#57924) 2026-07-03 20:43:50 +00:00
messaging perf(desktop): memoize PlatformAvatar + StatusDot to kill messaging churn 2026-07-28 20:51:04 -05:00
overlays perf(desktop): gate hot store subscriptions + memoize overlay nav + palette rows 2026-07-28 18:51:34 -05:00
pet-generate refactor(desktop): name the overlay z-index ladder 2026-07-27 15:48:09 -05:00
pet-overlay fix(desktop): suspend decorative work when inactive 2026-07-26 21:05:55 -05:00
profiles feat(desktop): right-click parity for every panel list row 2026-07-27 20:56:48 -05:00
quick-entry feat(desktop): quick-entry window — global hotkey capture to any session 2026-07-26 17:48:19 -07:00
right-sidebar fmt(js): npm run fix on merge (#73770) 2026-07-29 01:49:23 +00:00
session fix(desktop): dedicated reader for large remote attachments 2026-07-28 19:20:14 -05:00
settings fmt(js): npm run fix on merge (#73780) 2026-07-29 02:10:16 +00:00
shell test(gateway): change-watcher behavior contracts; align status-snapshot test with 60s cadence 2026-07-28 17:21:58 -05:00
skills fix(desktop): satisfy lint — import order, unused import, exhaustive-deps 2026-07-28 20:38:04 -05:00
starmap lint(desktop): ban atom-mirrored refs via no-restricted-syntax eslint rule 2026-07-25 18:12:48 -07:00
webhooks feat(desktop): right-click parity for every panel list row 2026-07-27 20:56:48 -05:00
floating-hud.ts refactor(desktop): adopt shared utils + app-wide cleanups 2026-07-03 13:48:44 -05:00
index.tsx feat(desktop): routes, nav, and command palette as contributions 2026-07-13 17:57:54 -04:00
layout-constants.ts feat(desktop): cap overlay inner-page width at 75rem 2026-07-02 20:40:57 -05:00
master-detail.tsx fix(desktop): strip Close-X tips and statusbar tip lectures 2026-07-27 22:03:37 -05:00
model-picker-overlay.tsx perf(desktop): stop the model-picker overlay re-rendering per streaming token 2026-07-26 21:05:55 -05:00
model-visibility-overlay.tsx fix(desktop): scope model options by profile (#62795) 2026-07-22 09:40:50 -04:00
open-session.test.ts desktop: shared openSession door for focus-or-route 2026-07-28 01:13:30 -05:00
open-session.ts fmt(js): npm run fix on merge (#73155) 2026-07-28 06:29:04 +00:00
page-search-shell.tsx fix(desktop,gateway,mcp): post-merge — CI contract, review corrections, hub search 2026-07-03 15:22:43 -05:00
routes.test.ts fix(desktop): close cross-session leak windows in composer + session refs (#59305) 2026-07-24 16:04:12 -07:00
routes.ts fix(desktop): front the workspace pane from the router location 2026-07-27 12:54:45 -05:00
routes.workspace-reveal.test.ts test(desktop): cover the workspace-page reveal bug class 2026-07-27 12:54:49 -05:00
session-picker-overlay.tsx desktop: registry-driven slash commands + first-class /resume & /handoff (#42351) 2026-06-11 01:49:24 +00:00
session-switcher.tsx desktop: open sessions where they already are 2026-07-28 01:13:30 -05:00
types.ts fix(desktop): render a skill send as its invocation everywhere it surfaces 2026-07-28 03:44:31 -05:00
updates-overlay.tsx fmt(js): npm run fix on merge (#69805) 2026-07-23 03:32:32 +00:00