hermes-agent/apps/desktop/src/lib
Brooklyn Nicholson 463fbf5b16 fix(desktop): middle-click works on a real three-button mouse
Chromium on Windows and Linux answers a middle press inside a scroller by
starting the autoscroll pan, and the mouseup that ends the pan never becomes
an auxclick. Every surface carrying the gesture — tab strips, the session
list, the terminal rail — is a scroller, so middle-click only ever worked on
macOS, where autoscroll doesn't exist.

Arm on pointerdown, spend on the pointerup over the same element (press one
tab, release on another and nothing happens), and cancel the middle mousedown
on every press so the pan widget can't appear on a surface that owns the
button. One helper, four call sites.
2026-07-30 21:43:14 -05:00
..
keybinds feat(desktop): open a folder as a project with ⌘O 2026-07-30 01:15:01 -05:00
ansi.test.ts
…
ansi.ts
…
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
…
commit-changelog.test.ts
…
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
…
desktop-toolsets.ts
…
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
…
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
…
generated-images.ts
…
haptics.ts
…
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
…
loadout.ts refactor(desktop): adopt shared utils + app-wide cleanups 2026-07-03 13:48:44 -05:00
local-preview.ts
…
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
…
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
middle-click.test.tsx fix(desktop): middle-click works on a real three-button mouse 2026-07-30 21:43:14 -05:00
middle-click.ts fix(desktop): middle-click works on a real three-button mouse 2026-07-30 21:43:14 -05: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
…
oneshot.ts
…
persisted.ts
…
pool.test.ts
…
pool.ts
…
preview-targets.test.ts
…
preview-targets.ts
…
profile-color.ts
…
project-idea-templates.ts
…
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
…
runtime-readiness.ts
…
sanitize.test.ts
…
sanitize.ts
…
selectable-card.ts
…
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
…
session-ids.test.ts
…
session-ids.ts
…
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
…
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
…
summarize-command.ts
…
svg-image.ts
…
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
…
todos.ts
…
tool-result-summary.test.ts
…
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
…
update-copy.ts
…
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
…
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