Commit Graph

4342 Commits

Author SHA1 Message Date
kshitijk4poor
7dc796463d fix(agent): a persisted /steer row survives the next prompt's alternation repair; typed for history
Both steer sites now build the row through one helper, prompt_builder.steer_user_row:
a role:user row with display_kind="steer" and no leading blank lines. The alternation
repair (_merge_consecutive_users) skips a steer-typed prev row, so a run that ended
right after a steered batch (Ctrl-C, interrupt) does not get the next real prompt
merged INTO the already-persisted steer row — which would have rewritten it in place
and re-broken live≠replay parity, the exact class this PR fixes.

TUI/desktop history projects the steer row as the user's own words instead of the
model-facing marker wrapper; 'steer' joins the display_kind union. The compression
anchor scan keeps its tool-row branch for transcripts persisted before this change and
its docstring says so.
2026-09-09 12:21:28 +05:30
hermes-seaeye[bot]
990473a79c fmt(js): npm run fix on merge (#106237)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-09 03:18:52 +00:00
brooklyn!
5255d7823e test(desktop): cover scrolling message counts and pane isolation 2026-09-08 22:13:30 -05:00
brooklyn!
342f76a7c2 feat(desktop): show messages below the thread viewport 2026-09-08 22:13:30 -05:00
hermes-seaeye[bot]
610576454a fmt(js): npm run fix on merge (#106231)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-09 03:02:27 +00:00
Gille
153da9569f fix(desktop): keep macOS HUD visible when inactive (#102573) 2026-09-08 22:57:02 -04:00
brooklyn!
9e8c1569b6 fix(desktop): keep pets and starmap animated without focus 2026-09-08 21:53:33 -05:00
brooklyn!
3cad0f312b fix(desktop): keep visible renderer animations running on blur 2026-09-08 21:53:33 -05:00
brooklyn!
72a3277cd7 test(desktop): cover project creation scope and reconnect routing 2026-09-08 20:05:07 -05:00
brooklyn!
2b6a5181a3 fix(desktop): allow project creation while browsing all profiles 2026-09-08 20:05:07 -05:00
brooklyn!
258b351fc1 fix(desktop): keep background reports behind bounded disclosures 2026-09-08 18:53:48 -05:00
brooklyn!
608b97c305 docs(desktop): document sidebar glass defaults 2026-09-08 18:45:42 -05:00
brooklyn!
1175ac4bb9 feat(desktop): default glass to 29% tint on the sidebar 2026-09-08 18:45:42 -05:00
unsupportedpastels
7568fb6727 fix(desktop): let subagent header collapse roster and details 2026-09-08 14:54:47 -07:00
Teknium
ed6671db83 test(desktop): retire model catalog fixture jobs at teardown 2026-09-08 14:52:59 -07:00
hermes-seaeye[bot]
c076d653a2 fmt(js): npm run fix on merge (#106065)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-08 21:28:40 +00:00
hermes-seaeye[bot]
e9bb6e86fb fmt(js): npm run fix on merge (#106039)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-08 21:23:02 +00:00
Teknium
bc952a78ce fix: integrate group attention with room ordering and working avatars 2026-09-08 13:54:58 -07:00
Adolanium
ab6f4c5408 fix(desktop): show the focused bot's working think pose
Port Adolanium's focused-turn pose from Hermes-Bot-Mode#101 and
hermes-agent#88134 to the current typed Bot Mode implementation.
Match the busy signal's connection-qualified focused owner rather than
the gateway socket, retain worker activity, and ease transitions in
elapsed time on the existing shared face clock.

Includes owner-isolation and animated-pose invariants, both proven red
on origin/main, and native Electron before/after verification against
a real temporary Hermes backend with held loopback inference.

Co-authored-by: Teknium <127238744+teknium1@users.noreply.github.com>
2026-09-08 13:38:53 -07:00
Teknium
9d66e76c5d feat(desktop): let users order Group Chat rooms
Add Move up/down controls for actual rooms without changing bot or folder
ordering. Preserve default pin/activity ordering until an explicit move,
retain hidden room slots, and persist Desktop-local order through room
updates, mirror merges, and hydration. No membership or routing writes.

Adapted narrowly from the group ordering idea in archived
NousResearch/Hermes-Bot-Mode#105 by @onuraycicek; rename already exists.

Co-authored-by: Onur Aycicek <onur.m.aycicek@gmail.com>
2026-09-08 13:37:19 -07:00
Teknium
acbe72ed1f fix: keep Bot Mode pet selection rings inside the gallery 2026-09-08 13:35:51 -07:00
brooklyn!
be4bd24a50 fix(desktop): take Import session off the sidebar nav
The importer stays in the command palette. The labeled nav row was
clutter next to New session / Capabilities / Messaging.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 15:35:19 -05:00
brooklyn!
960dee7fe5 fix(desktop): Hide tabs works on the sessions sidebar
hideOnly chrome pinned the Sessions/Bots strip on at any tab count, so
never was a silent no-op. The panes stay; ⌘⌥T brings the strip back.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 15:35:19 -05:00
Teknium
f9993d5be2 refactor: extract group member phases and roster presentation 2026-09-08 13:29:18 -07:00
Teknium
e1c8764d18 fix: fence retired group member failure cues 2026-09-08 13:29:18 -07:00
Teknium
613ec20304 fix(bot-mode): keep pending group attention bound to its live room
Complete the PR #101452 salvage, preserving sprmn24 authorship. Credit @kokhlo PR #101591 for independently diagnosing the in-flight rename race; use scoped authoritative room bindings rather than persistent aliases. Keep mention attention independent and retire late work after disband.
2026-09-08 13:29:18 -07:00
sprmn24
ad08688bc6 fix(bot-mode): derive group clarify/approval attention from $groupClarify instead of duplicating it into $groupNeedsYou
$groupNeedsYou was written by two independent sources: an @user mention
(appendGroupChatEntry) and, until now, syncGroupClarify whenever a member
blocked on a clarify or approval. Nothing kept the two in sync, so every
path that consumed a clarify -- answering it, the server resolving it,
disbanding or renaming the room -- left a stale badge lit with nothing
behind it, because none of them cleared the copy syncGroupClarify had
written. A naive fix (writing false back into $groupNeedsYou on every
clarify cleanup path) would have created the opposite bug: clearing an
unrelated, still-unresolved @user mention.

$groupClarify is already the source of truth for pending clarify/
approval attention. syncGroupClarify no longer writes $groupNeedsYou; a
new groupHasPendingClarify(clarifies, group) derives the same signal
from a $groupClarify snapshot. It's intentionally pure -- the caller
(roster-pane) subscribes to $groupClarify itself via useValue and passes
the live snapshot in, so the subscription actually drives the
recalculation instead of existing only to force a re-render. A prompt
resolving, being answered, or its room being disbanded all self-correct
through the existing $groupClarify cleanup paths, with nothing left to
keep in sync.

Rename needed its own fix: the old clearGroupClarify(oldName) call on
rename dropped a clarify-only room's attention entirely, since clarify no
longer lives in $groupNeedsYou to be carried over by the existing
old->new key swap there. New renameGroupClarify(oldName, newName) re-keys
matching mirrors onto the new name in two passes -- unrelated entries
first, migrated entries last -- so a stale mirror already stranded at the
destination key (left behind by a known, separate in-flight-poll race)
can never clobber the just-migrated current prompt.

The roster now reads groupNeedsYou[group] || groupHasPendingClarify(...)
and subscribes to both stores so either one repaints the row.

Tests: multi-clarify sequencing, mention+clarify independence (resolving
one must not clear the other), server-side resolution cleanup, rename
migration, rename destination-collision (red-green verified against the
prior single-pass implementation), a GroupRow badge render test, and a
subscription harness using the real stores/useValue/helper end-to-end.

(cherry picked from commit e5038f12ccc1a4d1fb56ecc5f0e1a884f1e8b795)
2026-09-08 13:29:18 -07:00
ethernet
c8aa5608c2 Merge pull request #101420 from ethernet8023/ethie/desktop-update-tests
test(install): cross-OS install/update E2E matrix (windows, macos, linux)
2026-09-08 10:30:44 -04:00
Teknium
a25967b434 test: keep Desktop pane-focus setup outside cold imports 2026-09-08 07:29:26 -07:00
hermes-seaeye[bot]
b3399c1396 fmt(js): npm run fix on merge (#105823)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-08 14:05:24 +00:00
hermes-seaeye[bot]
9a3f1dceba fmt(js): npm run fix on merge (#105818)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-08 13:59:05 +00:00
Teknium
a529ecfeb5 feat(desktop): nest profile sessions under gateway sections 2026-09-08 06:53:22 -07:00
Teknium
6909604f97 fix(desktop): reuse saved Cloud gateways from Settings
Separate saved Cloud instances from the live window source, use the existing
registry activation path instead of repeating sign-in/apply, and persist the
chosen instance name while retaining registry identity and custom labels.

Naming metadata adapted from IAvecilla's contribution in PR #103224.

Co-authored-by: IAvecilla <ignacio.avecilla@lambdaclass.com>
2026-09-08 06:53:22 -07:00
Teknium
77a5457343 feat: organize desktop sessions by gateway and profile 2026-09-08 06:53:22 -07:00
unsupportedpastels
8aa219ef60 fix(desktop): expose plugin installation from settings 2026-09-08 05:23:59 -07:00
Teknium
3dcf0deb29 test(desktop): adapt status-card regression to current router 2026-09-08 03:39:32 -07:00
Lester Liang
dec10c9177 fix(desktop): keep task status card opaque on scroll 2026-09-08 03:39:32 -07:00
Teknium
c2a0a188c1 fix(desktop): align subagent hydration with owned roster contract 2026-09-08 03:06:30 -07:00
Teknium
975699714d feat(desktop): hydrate scoped subagents and read extended live transcripts 2026-09-08 03:06:30 -07:00
Teknium
fd3932c416 fix(desktop): preserve scoped steering drafts and worker timer origins 2026-09-08 03:06:30 -07:00
Teknium
98aa270978 feat(desktop): steer and stop subagents through their parent owner 2026-09-08 03:06:30 -07:00
Teknium
092ed67532 feat(desktop): surface live subagent work above each composer 2026-09-08 03:06:30 -07:00
Teknium
9516ac130e fix: refresh retained bot tiles without losing their live turn 2026-09-07 23:16:13 -07:00
Gille
9a017b9691 fix(desktop): refresh busy bot chat on explicit open 2026-09-07 23:16:13 -07:00
hermes-seaeye[bot]
9fd44b4dfc fmt(js): npm run fix on merge (#105601)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-08 05:35:50 +00:00
hermes-seaeye[bot]
b1cf905786 fmt(js): npm run fix on merge (#105600)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-08 05:30:17 +00:00
Teknium
cae1c0c4a9 fix: reschedule bounded Desktop foreground queue retries 2026-09-07 22:25:12 -07:00
Teknium
3a7bf7455f fix: keep Bot Mode group replies visible in arrival order 2026-09-07 22:03:12 -07:00
hermes-seaeye[bot]
966637323e fmt(js): npm run fix on merge (#105451)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-08 00:13:36 +00:00
Teknium
aa1a546a22 test: make desktop orphan-reap deadline checks deterministic 2026-09-07 17:08:51 -07:00