hermes-agent/apps/desktop/src/lib
brooklyn! 937222f4ec
fix(desktop): keep a mid-turn model pick painted in the composer (#74759)
The gateway now queues a model switch made during a turn and applies it
at the next turn start (#74756), but the desktop still bounced the pill
back to the old model: the post-switch refetch answered with the model
still running and repainted over the pick.

Skip that refetch when the switch was deferred — the apply publishes
session.info when it lands, and that is what re-syncs every surface.
An older gateway that still refuses with 4009 keeps the pick too rather
than rolling back and toasting at a user who did nothing wrong; it is
what the next turn runs anyway. Real failures still roll back and report.

The 4009 predicate lives beside the other gateway-compat probes in
lib/gateway-rpc.
2026-07-30 10:34:48 +00:00
..
keybinds feat(desktop): open a folder as a project with ⌘O 2026-07-30 01:15:01 -05:00
ansi.test.ts fix(desktop): triage batch of GUI quality-of-life fixes (#37536) 2026-06-02 16:33:22 -04:00
ansi.ts desktop: registry-driven slash commands + first-class /resume & /handoff (#42351) 2026-06-11 01:49:24 +00:00
artifact-detect.test.ts feat(desktop): artifacts — versioned cards, sandboxed live preview, right-rail viewer 2026-07-26 19:29:25 -07:00
artifact-detect.ts feat(desktop): artifacts — versioned cards, sandboxed live preview, right-rail viewer 2026-07-26 19:29:25 -07:00
brand-icon.test.ts feat(desktop): resolve a hostname to its Simple Icons brand mark 2026-07-27 21:23:46 -05:00
brand-icon.ts fmt(js): npm run fix on merge (#73096) 2026-07-28 03:43:07 +00:00
chat-messages.test.ts fix(agent): keep interrupt-checkpoint scaffolding out of the steered transcript 2026-07-28 01:05:02 -05:00
chat-messages.ts feat(desktop): two-way reaction UI — tapback pill, frimousse picker, live paint 2026-07-30 00:08:28 -05:00
chat-runtime.test.ts fix(desktop): stop message age falling back to the 1970 epoch ("20663d ago") 2026-07-28 20:33:25 -05:00
chat-runtime.ts feat(desktop): two-way reaction UI — tapback pill, frimousse picker, live paint 2026-07-30 00:08:28 -05:00
clipboard.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
commit-changelog.test.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
commit-changelog.ts refactor(desktop): adopt shared utils + app-wide cleanups 2026-07-03 13:48:44 -05:00
completion-sound.ts refactor(desktop): tidy the cross-window deduper 2026-07-20 18:36:05 -05:00
composer-input-sanitize.test.ts test(input): preservation regressions and prompt.submit boundary (#62557) 2026-07-15 07:39:42 -07:00
composer-input-sanitize.ts fix(desktop): resolve eslint errors in composer-input-sanitize.ts 2026-07-16 01:42:02 +05:30
desktop-fs.test.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
desktop-fs.ts style(desktop): satisfy merged eslint/prettier config 2026-07-20 23:01:49 +02:00
desktop-git.test.ts fix(desktop): salvage /compress cluster — session.compress RPC + dedicated RPC routing (#68229) 2026-07-22 16:40:06 -04:00
desktop-git.ts fix(desktop): salvage /compress cluster — session.compress RPC + dedicated RPC routing (#68229) 2026-07-22 16:40:06 -04:00
desktop-remote-auth.test.ts fmt(js): npm run fix on merge (#70914) 2026-07-24 18:14:17 +00:00
desktop-remote-auth.ts feat(desktop): add "Connect to existing Hermes" option to first-run onboarding 2026-07-24 12:55:06 -05:00
desktop-slash-commands.test.ts fix(wake): route desktop control and select input devices 2026-07-29 14:04:21 -06:00
desktop-slash-commands.ts fix(wake): route desktop control and select input devices 2026-07-29 14:04:21 -06:00
desktop-toolsets.test.ts fix(desktop): hide platform/internal toolsets from the Skills & Tools list 2026-06-24 19:18:29 -05:00
desktop-toolsets.ts fix(desktop): hide platform/internal toolsets from the Skills & Tools list 2026-06-24 19:18:29 -05:00
download-text.ts feat(desktop): artifacts — versioned cards, sandboxed live preview, right-rail viewer 2026-07-26 19:29:25 -07:00
drag-ghost.ts fix(desktop): session-tab drag, focus sync, and pop-out isolation 2026-07-15 03:13:33 -04:00
embedded-images.test.ts fix(desktop): persist the image ref for natively-vision-capable models too 2026-07-24 21:20:52 -05:00
embedded-images.ts fix(desktop): persist the image ref for natively-vision-capable models too 2026-07-24 21:20:52 -05:00
escape-layers.test.ts feat(desktop): store + lib — layout/preview/session atoms, escape-layers, keybind helpers 2026-07-13 17:57:54 -04:00
escape-layers.ts feat(desktop): store + lib — layout/preview/session atoms, escape-layers, keybind helpers 2026-07-13 17:57:54 -04:00
excluded-paths.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
external-link.test.tsx feat(desktop): show brand icons on links to known domains 2026-07-27 21:23:46 -05:00
external-link.tsx refactor(desktop): one .ref class, and the theme owns every accent 2026-07-30 04:52:06 -05:00
find-in-page.ts feat(desktop): complete find-in-page with the find-next/find-previous accelerators 2026-07-26 17:48:05 -07:00
format.ts feat(desktop): Capabilities foundation — shared utils, master-detail, editors, primitives 2026-07-03 05:08:13 -05:00
gateway-events.test.ts fix(desktop, ink): don't wipe messages before final message (#65919) 2026-07-20 11:42:29 -04:00
gateway-events.ts fix(desktop, ink): don't wipe messages before final message (#65919) 2026-07-20 11:42:29 -04:00
gateway-rpc.test.ts fix(desktop): dismiss stale prompt overlays 2026-07-08 16:52:10 +02:00
gateway-rpc.ts fix(desktop): keep a mid-turn model pick painted in the composer (#74759) 2026-07-30 10:34:48 +00:00
gateway-ws-url.test.ts fix(desktop): avoid false remote gateway reauthentication (#68250) 2026-07-20 20:54:36 -04:00
generated-images.test.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
generated-images.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
haptics.ts feat(desktop): drag sessions into chat as @session links + spawn loader 2026-06-04 19:41:51 -05:00
icons.ts feat(desktop): two-way reaction UI — tapback pill, frimousse picker, live paint 2026-07-30 00:08:28 -05:00
incremental-external-store-runtime.test.ts perf(desktop): reconcile only the messages that actually moved 2026-07-26 02:56:08 -05:00
incremental-external-store-runtime.ts perf(desktop): reconcile only the messages that actually moved 2026-07-26 02:56:08 -05:00
inflight-turn-journal.test.ts fix(desktop): stop dropping the prompt a mid-turn redirect corrected 2026-07-26 19:44:42 -05:00
inflight-turn-journal.ts fix(desktop): stop a duplicate message id from crashing the workspace pane 2026-07-28 02:03:05 -05:00
input-modality.test.ts fix(desktop): stop the model-pill tooltip popping open after a mouse pick 2026-07-28 02:27:11 -05:00
input-modality.ts fix(desktop): stop the model-pill tooltip popping open after a mouse pick 2026-07-28 02:27:11 -05:00
json-format.test.ts feat(desktop): Capabilities foundation — shared utils, master-detail, editors, primitives 2026-07-03 05:08:13 -05:00
json-format.ts feat(desktop): Capabilities foundation — shared utils, master-detail, editors, primitives 2026-07-03 05:08:13 -05:00
json-rpc-gateway-url-guard.test.ts fmt(js): npm run fix on merge (#69562) 2026-07-22 19:01:09 +00:00
katex-memo.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
loadout.ts refactor(desktop): adopt shared utils + app-wide cleanups 2026-07-03 13:48:44 -05:00
local-preview.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
markdown-blocks.test.ts test(desktop): raise timeout on markdown-blocks property fuzz 2026-07-18 18:53:41 -04:00
markdown-blocks.ts perf(desktop): cache short markdown parses too 2026-07-26 17:02:59 -05:00
markdown-code.test.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
markdown-code.ts refactor(desktop): adopt shared utils + app-wide cleanups 2026-07-03 13:48:44 -05:00
markdown-preprocess.ts feat(desktop): render agent-written @session links as chips 2026-07-24 22:52:45 -05:00
mcp-dashboard-oauth.test.ts fmt(js): npm run fix on merge (#66348) 2026-07-17 14:30:29 +00:00
mcp-dashboard-oauth.ts fmt(js): npm run fix on merge (#66348) 2026-07-17 14:30:29 +00:00
mcp-tool-filter.test.ts feat(mcp): first-class MCP tab — catalog, GUI auth/probe/logs, per-tool gating 2026-07-03 05:08:28 -05:00
mcp-tool-filter.ts feat(mcp): first-class MCP tab — catalog, GUI auth/probe/logs, per-tool gating 2026-07-03 05:08:28 -05:00
media.remote.test.ts fix(desktop): stream remote media through gateway 2026-07-28 11:58:03 -07:00
media.ts fix(desktop): stream remote media through gateway 2026-07-28 11:58:03 -07:00
model-options.test.ts fix(desktop): scope model options by profile (#62795) 2026-07-22 09:40:50 -04:00
model-options.ts fix(desktop): scope model options by profile (#62795) 2026-07-22 09:40:50 -04:00
model-search-text.ts fmt(js): npm run fix on merge (#72522) 2026-07-27 07:00:22 +00:00
model-status-label.test.ts Merge pull request #71601 from helix4u/fix/desktop-model-picker-authority 2026-07-25 21:20:54 -05:00
model-status-label.ts Merge pull request #71601 from helix4u/fix/desktop-model-picker-authority 2026-07-25 21:20:54 -05:00
mutable-ref.ts chore(desktop): zero eslint/typecheck debt + prettier pass (#39100) 2026-06-04 14:10:38 +00:00
oneshot.ts feat(desktop): add shared project UI primitives 2026-06-25 16:40:27 -05:00
persisted.ts feat(desktop): add shared project UI primitives 2026-06-25 16:40:27 -05:00
pool.test.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
pool.ts feat(desktop): add shared project UI primitives 2026-06-25 16:40:27 -05:00
preview-targets.test.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
preview-targets.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
profile-color.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
project-idea-templates.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
provider-setup-errors.test.ts fix(desktop): stop spurious provider onboarding from credential warnings 2026-07-23 00:18:21 -05:00
provider-setup-errors.ts fix(desktop): stop spurious provider onboarding from credential warnings 2026-07-23 00:18:21 -05:00
query-client.test.ts perf(desktop): scope tool-diff subscriptions + narrow profile query invalidation 2026-07-18 19:15:57 -04:00
query-client.ts perf(desktop): scope tool-diff subscriptions + narrow profile query invalidation 2026-07-18 19:15:57 -04:00
raf-coalesce.ts refactor(desktop): extract shared rafCoalesce helper for sash drags 2026-07-19 22:38:57 -05:00
reasoning-effort.test.ts refactor(desktop): give reasoning effort one owner 2026-07-25 20:51:18 -05:00
reasoning-effort.ts refactor(desktop): give reasoning effort one owner 2026-07-25 20:51:18 -05:00
renderer-loop-pause.ts fix(desktop): suspend decorative work when inactive 2026-07-26 21:05:55 -05:00
reorder.ts feat(desktop): store + lib — layout/preview/session atoms, escape-layers, keybind helpers 2026-07-13 17:57:54 -04:00
runtime-readiness.test.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
runtime-readiness.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
sanitize.test.ts feat(desktop): add shared project UI primitives 2026-06-25 16:40:27 -05:00
sanitize.ts feat(desktop): add shared project UI primitives 2026-06-25 16:40:27 -05:00
selectable-card.ts feat(desktop): floating pet, pop-out overlay + Cmd+K picker 2026-06-20 14:18:40 -05:00
session-branch-tree.test.ts fix(desktop): keep pinned sidebar rows in user order 2026-07-27 01:38:21 -05:00
session-branch-tree.ts fmt(js): npm run fix on merge (#72522) 2026-07-27 07:00:22 +00:00
session-date-groups.test.ts feat(desktop): date dividers in the sessions sidebar 2026-07-24 10:45:34 -05:00
session-date-groups.ts feat(desktop): date dividers in the sessions sidebar 2026-07-24 10:45:34 -05:00
session-export.ts fix(desktop): route profile session reads 2026-06-11 18:09:24 -05:00
session-ids.test.ts test(desktop): cover runtime->stored notification id resolution 2026-06-19 17:50:35 +05:30
session-ids.ts fix(desktop): resume stored session id on notification click 2026-06-19 17:50:35 +05:30
session-link-title.test.ts fmt(js): npm run fix on merge (#71532) 2026-07-25 19:11:39 +00:00
session-link-title.ts feat(desktop): render agent-written @session links as chips 2026-07-24 22:52:45 -05:00
session-refs.test.ts feat(session-search): give the agent a link to hand back 2026-07-24 23:30:25 -05:00
session-refs.ts feat(session-search): give the agent a link to hand back 2026-07-24 23:30:25 -05:00
session-search.test.ts fix(desktop): match sessions by git branch in ctrl-k palette and sidebar search (#65172) 2026-07-15 15:37:12 -04:00
session-search.ts fix(desktop): match sessions by git branch in ctrl-k palette and sidebar search (#65172) 2026-07-15 15:37:12 -04:00
session-signatures.test.ts fmt(js): npm run fix on merge (#65229) 2026-07-15 21:40:56 +00:00
session-signatures.ts feat(desktop): store + lib — layout/preview/session atoms, escape-layers, keybind helpers 2026-07-13 17:57:54 -04:00
session-source.test.ts fmt(js): npm run fix on merge (#73770) 2026-07-29 01:49:23 +00:00
session-source.ts feat(desktop): add Photon iMessage section to sidebar 2026-07-28 18:19:12 -07:00
slash-completion-cache.ts perf(desktop): cache @ path completions like / completions already are 2026-07-30 04:52:06 -05:00
speech-text.test.ts fmt(js): npm run fix on merge (#73666) 2026-07-28 21:55:38 +00:00
speech-text.ts fix(desktop): skip markdown tables in speech output 2026-07-28 11:58:03 -07:00
stable-array.ts refactor(desktop): DRY the computed-dedup into stableArray + freeze 2026-07-19 19:46:09 -05:00
statusbar.tsx fix(desktop): prevent timers from shifting as they count (#68131) 2026-07-20 16:39:20 +00:00
storage.test.ts fix(desktop): keep recents sorted unless manually reordered (#45404) 2026-06-13 00:38:10 -05:00
storage.ts feat(desktop): store + lib — layout/preview/session atoms, escape-layers, keybind helpers 2026-07-13 17:57:54 -04:00
summarize-command.test.ts style(desktop,tui): fix all lint/type/formatting issues 2026-06-26 01:04:33 -05:00
summarize-command.ts fix(desktop): compact tool row titles 2026-06-25 00:01:11 -05:00
svg-image.ts feat(desktop): zoomable primitive — open full, pan/zoom, copy 2026-06-26 03:40:49 -05:00
text.ts feat(desktop): Capabilities foundation — shared utils, master-detail, editors, primitives 2026-07-03 05:08:13 -05:00
thinking-sound.test.ts feat(voice): calm ambient "thinking" sound while the agent works in voice chat 2026-07-29 08:24:00 -07:00
thinking-sound.ts feat(voice): calm ambient "thinking" sound while the agent works in voice chat 2026-07-29 08:24:00 -07:00
time.test.ts feat(desktop): date dividers in the sessions sidebar 2026-07-24 10:45:34 -05:00
time.ts fmt(js): npm run fix on merge (#70845) 2026-07-24 16:36:59 +00:00
todos.test.ts feat(desktop): composer status stack, live subagent windows, editable prompts (#44630) 2026-06-12 08:30:06 -05:00
todos.ts feat(desktop): composer status stack, live subagent windows, editable prompts (#44630) 2026-06-12 08:30:06 -05:00
tool-result-summary.test.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
tool-result-summary.ts refactor(desktop): adopt shared utils + app-wide cleanups 2026-07-03 13:48:44 -05:00
tool-run-continuity.test.ts feat(desktop): summarize a run of tool calls as one line 2026-07-27 18:10:26 -05:00
trackpad-gestures.ts feat(desktop): Memory Graph — playable radial timeline of memories + skills 2026-06-30 00:54:21 -05:00
update-copy.test.ts fix(desktop): name the update target in the overlay; honest no-changelog copy 2026-06-08 08:58:26 -07:00
update-copy.ts fix(desktop): name the update target in the overlay; honest no-changelog copy 2026-06-08 08:58:26 -07:00
use-enter-animation.test.tsx fix(desktop): stop the enter animation pinning opacity over the stylesheet 2026-07-27 19:54:47 -05:00
use-enter-animation.ts fix(desktop): stop the enter animation pinning opacity over the stylesheet 2026-07-27 19:54:47 -05:00
use-session-slice.ts perf(desktop): stop the statusbar re-rendering per streaming token 2026-07-26 14:21:34 -05:00
utils.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
version-status.test.ts refactor(desktop): resolve version/update labels in one place 2026-07-29 00:24:38 -05:00
version-status.ts refactor(desktop): resolve version/update labels in one place 2026-07-29 00:24:38 -05:00
voice-barge-in.ts fix(desktop): full-duplex voice barge-in — interrupt during generation AND playback 2026-07-29 12:52:42 -07:00
voice-playback.ts fmt(js): npm run fix on merge (#73770) 2026-07-29 01:49:23 +00:00
voice-stop-word.test.ts fix(voice): bare stop phrase ends the voice chat on every surface, spoken or typed 2026-07-29 00:01:06 -07:00
voice-stop-word.ts fix(voice): bare stop phrase ends the voice chat on every surface, spoken or typed 2026-07-29 00:01:06 -07:00
wake-sound.test.ts fmt(js): npm run fix on merge (#73770) 2026-07-29 01:49:23 +00:00
wake-sound.ts feat(desktop): play an activation chime when the wake word fires 2026-07-28 09:35:06 -07:00
yolo-session.ts feat(desktop): put YOLO in ⌘K and show each toggle's live state 2026-07-30 02:41:34 -05:00