fix(desktop): local-only recents, per-platform sidebar sections, and Ctrl+N regressions#42537
Merged
OutThisLife merged 6 commits intoJun 9, 2026
Merged
Conversation
Exclude messaging platform threads from chat recents pagination so Load More returns chat sessions, and clear stale quick-create profile state before Ctrl+N starts a new session.
4 tasks
Contributor
🔎 Lint report:
|
tonydwb
approved these changes
Jun 9, 2026
tonydwb
left a comment
There was a problem hiding this comment.
Code Review Summary
Verdict: Approved
Overview
This PR restores recents pagination and Ctrl+N new-session flow by excluding messaging platform sessions from recents.
Changes
- Adds MESSAGING_SESSION_SOURCE_IDS constant
- Excludes messaging platform sessions from recents sidebar
- Fixes new chat profile targeting for keyboard shortcut
Quality
- Clean fix
- No security concerns
Reviewed by Hermes Agent
…king Two renderer regressions in the desktop chat app: - Sidebar ordering: orderByIds/reconcileOrderIds appended ids missing from the persisted order to the BOTTOM. Callers pass recency-sorted lists (newest first), so a brand-new Ctrl+N session sank below the saved order and read as "my latest session never showed up". Prepend fresh ids so new activity surfaces at the top. - New-chat stuck on "Thinking": terminal/attention state transitions (turn finished, error, or agent now waiting on user) were RAF-batched. Electron throttles requestAnimationFrame to ~0 while the window is backgrounded, occluded, or unfocused, stranding the deferred flush. Flush critical transitions (!busy || needsInput) synchronously; keep the busy heartbeat RAF-batched to avoid scroll churn. Does not touch the messaging-source exclusion in chat recents queries.
The "keep chat recents focused" change excluded every messaging-platform source (telegram, discord, slack, …) from the recents query. That silently undid the messaging-source-folder feature already on main (ede4f5a): the sidebar builds those folders purely from the loaded recents page, so once the sources were filtered out the folders never rendered — telegram and friends vanished from the left sidebar. Only cron stays excluded (it has its own dedicated section). Messaging sessions belong in the sidebar and render with their platform folder/icon. Removes the now-unused MESSAGING_SESSION_SOURCE_IDS export.
…ar section Recents are local-only again: cron and every messaging platform are excluded from the chat-recents query, so "Load more" pages through interactive local chats instead of interleaving gateway threads that bury them. Each messaging platform (telegram, discord, ...) is now fetched as its own slice (refreshMessagingSessions) and rendered as a self-managed sidebar section with its platform icon, count, and per-platform "load more" — no source-grouping magic inside recents. Handed-off sessions (live source becomes local after a handoff) keep their origin-platform badge on the row via handoff_platform, so a Telegram thread continued in the desktop still reads as Telegram.
An intermittent create/stream race can leave selected/active session ids null while the route stays on /:sid — the transcript then sticks empty even though the turn completed and persisted (the "second Ctrl+N shows no response" symptom). The pathname didn't change, so route-resume's normal gate skipped and the view stayed stuck. Resume whenever the routed session isn't the loaded one, gated on freshDraftReady so the /:sid -> /new transition (which also momentarily nulls selected/active a render before the pathname flips) is NOT treated as stranded. selectedStoredSessionIdRef is set synchronously at resume entry, so this can't loop, and the resume cached fast-path restores the already-streamed messages without a refetch.
Render main assistant text through deferred markdown directly instead of the smooth-reveal wrapper. This isolates the wrapper to reasoning surfaces and avoids the intermittent blank-response regression after consecutive new-session flows.
Collaborator
Author
|
Follow-up cleanup pushed in What changed:
Why:
Validation notes:
|
This was referenced Jun 10, 2026
wachoo
pushed a commit
to wachoo/hermes-agent
that referenced
this pull request
Jun 10, 2026
…Ctrl+N regressions (NousResearch#42537) * fix(desktop): keep chat recents focused and reset hotkey target Exclude messaging platform threads from chat recents pagination so Load More returns chat sessions, and clear stale quick-create profile state before Ctrl+N starts a new session. * fix(desktop): surface new sessions in sidebar + unstick new-chat Thinking Two renderer regressions in the desktop chat app: - Sidebar ordering: orderByIds/reconcileOrderIds appended ids missing from the persisted order to the BOTTOM. Callers pass recency-sorted lists (newest first), so a brand-new Ctrl+N session sank below the saved order and read as "my latest session never showed up". Prepend fresh ids so new activity surfaces at the top. - New-chat stuck on "Thinking": terminal/attention state transitions (turn finished, error, or agent now waiting on user) were RAF-batched. Electron throttles requestAnimationFrame to ~0 while the window is backgrounded, occluded, or unfocused, stranding the deferred flush. Flush critical transitions (!busy || needsInput) synchronously; keep the busy heartbeat RAF-batched to avoid scroll churn. Does not touch the messaging-source exclusion in chat recents queries. * fix(desktop): stop excluding messaging platforms from chat recents The "keep chat recents focused" change excluded every messaging-platform source (telegram, discord, slack, …) from the recents query. That silently undid the messaging-source-folder feature already on main (ede4f5a): the sidebar builds those folders purely from the loaded recents page, so once the sources were filtered out the folders never rendered — telegram and friends vanished from the left sidebar. Only cron stays excluded (it has its own dedicated section). Messaging sessions belong in the sidebar and render with their platform folder/icon. Removes the now-unused MESSAGING_SESSION_SOURCE_IDS export. * fix(desktop): give each messaging platform its own self-managed sidebar section Recents are local-only again: cron and every messaging platform are excluded from the chat-recents query, so "Load more" pages through interactive local chats instead of interleaving gateway threads that bury them. Each messaging platform (telegram, discord, ...) is now fetched as its own slice (refreshMessagingSessions) and rendered as a self-managed sidebar section with its platform icon, count, and per-platform "load more" — no source-grouping magic inside recents. Handed-off sessions (live source becomes local after a handoff) keep their origin-platform badge on the row via handoff_platform, so a Telegram thread continued in the desktop still reads as Telegram. * fix(desktop): self-heal a stranded routed session in route-resume An intermittent create/stream race can leave selected/active session ids null while the route stays on /:sid — the transcript then sticks empty even though the turn completed and persisted (the "second Ctrl+N shows no response" symptom). The pathname didn't change, so route-resume's normal gate skipped and the view stayed stuck. Resume whenever the routed session isn't the loaded one, gated on freshDraftReady so the /:sid -> /new transition (which also momentarily nulls selected/active a render before the pathname flips) is NOT treated as stranded. selectedStoredSessionIdRef is set synchronously at resume entry, so this can't loop, and the resume cached fast-path restores the already-streamed messages without a refetch. * fix(desktop): bypass smooth reveal on primary markdown stream Render main assistant text through deferred markdown directly instead of the smooth-reveal wrapper. This isolates the wrapper to reasoning surfaces and avoids the intermittent blank-response regression after consecutive new-session flows.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 10, 2026
… prevent zoom-position bug Brooklyn's sidebar rework (NousResearch#42537/NousResearch#43147) moved the cron jobs section inside a flex-1 overflow-y-auto div, causing it to jump position on zoom. Moved it outside the scrollable container (inside a Fragment) so it stays fixed between sessions and profiles regardless of viewport size.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 10, 2026
…pacing Cron jobs section was moved inside the scrollable sessions container by the sidebar rework (NousResearch#42537/NousResearch#43147), causing zoom-dependent position shifts. Moved it back outside into a Fragment sibling and capped content height to max-h-28 (~4 rows) for a compact strip. Also balanced sidebar spacing: reduced nav row bottom padding and adjusted search field margins so the search bar is visually centered between the navigation row and PINNED section header. 3 files, 11 insertions, 7 deletions.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 10, 2026
…pacing Cron jobs section was moved inside the scrollable sessions container by the sidebar rework (NousResearch#42537/NousResearch#43147), causing zoom-dependent position shifts. Moved it back outside into a Fragment sibling and capped content height to max-h-28 (~4 rows) for a compact strip. Also balanced sidebar spacing: reduced nav row bottom padding and adjusted search field margins so the search bar is visually centered between the navigation row and PINNED section header. 3 files, 11 insertions, 7 deletions.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 10, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to max-h-28 (~4 visible rows) - Reduce nav row bottom padding for balanced side spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 3 files, +15/-7.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 10, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
changman
pushed a commit
to changman/hermes-agent
that referenced
this pull request
Jun 10, 2026
…Ctrl+N regressions (NousResearch#42537) * fix(desktop): keep chat recents focused and reset hotkey target Exclude messaging platform threads from chat recents pagination so Load More returns chat sessions, and clear stale quick-create profile state before Ctrl+N starts a new session. * fix(desktop): surface new sessions in sidebar + unstick new-chat Thinking Two renderer regressions in the desktop chat app: - Sidebar ordering: orderByIds/reconcileOrderIds appended ids missing from the persisted order to the BOTTOM. Callers pass recency-sorted lists (newest first), so a brand-new Ctrl+N session sank below the saved order and read as "my latest session never showed up". Prepend fresh ids so new activity surfaces at the top. - New-chat stuck on "Thinking": terminal/attention state transitions (turn finished, error, or agent now waiting on user) were RAF-batched. Electron throttles requestAnimationFrame to ~0 while the window is backgrounded, occluded, or unfocused, stranding the deferred flush. Flush critical transitions (!busy || needsInput) synchronously; keep the busy heartbeat RAF-batched to avoid scroll churn. Does not touch the messaging-source exclusion in chat recents queries. * fix(desktop): stop excluding messaging platforms from chat recents The "keep chat recents focused" change excluded every messaging-platform source (telegram, discord, slack, …) from the recents query. That silently undid the messaging-source-folder feature already on main (ede4f5a): the sidebar builds those folders purely from the loaded recents page, so once the sources were filtered out the folders never rendered — telegram and friends vanished from the left sidebar. Only cron stays excluded (it has its own dedicated section). Messaging sessions belong in the sidebar and render with their platform folder/icon. Removes the now-unused MESSAGING_SESSION_SOURCE_IDS export. * fix(desktop): give each messaging platform its own self-managed sidebar section Recents are local-only again: cron and every messaging platform are excluded from the chat-recents query, so "Load more" pages through interactive local chats instead of interleaving gateway threads that bury them. Each messaging platform (telegram, discord, ...) is now fetched as its own slice (refreshMessagingSessions) and rendered as a self-managed sidebar section with its platform icon, count, and per-platform "load more" — no source-grouping magic inside recents. Handed-off sessions (live source becomes local after a handoff) keep their origin-platform badge on the row via handoff_platform, so a Telegram thread continued in the desktop still reads as Telegram. * fix(desktop): self-heal a stranded routed session in route-resume An intermittent create/stream race can leave selected/active session ids null while the route stays on /:sid — the transcript then sticks empty even though the turn completed and persisted (the "second Ctrl+N shows no response" symptom). The pathname didn't change, so route-resume's normal gate skipped and the view stayed stuck. Resume whenever the routed session isn't the loaded one, gated on freshDraftReady so the /:sid -> /new transition (which also momentarily nulls selected/active a render before the pathname flips) is NOT treated as stranded. selectedStoredSessionIdRef is set synchronously at resume entry, so this can't loop, and the resume cached fast-path restores the already-streamed messages without a refetch. * fix(desktop): bypass smooth reveal on primary markdown stream Render main assistant text through deferred markdown directly instead of the smooth-reveal wrapper. This isolates the wrapper to reasoning surfaces and avoids the intermittent blank-response regression after consecutive new-session flows.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 10, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 10, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 10, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
This was referenced Jun 11, 2026
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 11, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 11, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 12, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 12, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 12, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 12, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 12, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
12 tasks
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 13, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 13, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 13, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 13, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 13, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 13, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
ValentinSergief
pushed a commit
to ValentinSergief/hermes-agent
that referenced
this pull request
Jun 13, 2026
…ced spacing, running dot - Move cron jobs section outside scrollable sessions container into a Fragment sibling (fixes zoom-position regression from NousResearch#42537) - Compact cron jobs content to ~4 visible items - Reduce nav row bottom padding for balanced sidebar spacing - Add animate-ping indicator on cron job dot while executing (timing heuristic: next_run_at in recent past = job running) - Use same accent glow + ring animation as live session dots 2 files, +20/-8.
alt-glitch
pushed a commit
that referenced
this pull request
Jun 14, 2026
…Ctrl+N regressions (#42537) * fix(desktop): keep chat recents focused and reset hotkey target Exclude messaging platform threads from chat recents pagination so Load More returns chat sessions, and clear stale quick-create profile state before Ctrl+N starts a new session. * fix(desktop): surface new sessions in sidebar + unstick new-chat Thinking Two renderer regressions in the desktop chat app: - Sidebar ordering: orderByIds/reconcileOrderIds appended ids missing from the persisted order to the BOTTOM. Callers pass recency-sorted lists (newest first), so a brand-new Ctrl+N session sank below the saved order and read as "my latest session never showed up". Prepend fresh ids so new activity surfaces at the top. - New-chat stuck on "Thinking": terminal/attention state transitions (turn finished, error, or agent now waiting on user) were RAF-batched. Electron throttles requestAnimationFrame to ~0 while the window is backgrounded, occluded, or unfocused, stranding the deferred flush. Flush critical transitions (!busy || needsInput) synchronously; keep the busy heartbeat RAF-batched to avoid scroll churn. Does not touch the messaging-source exclusion in chat recents queries. * fix(desktop): stop excluding messaging platforms from chat recents The "keep chat recents focused" change excluded every messaging-platform source (telegram, discord, slack, …) from the recents query. That silently undid the messaging-source-folder feature already on main (b3d77bd): the sidebar builds those folders purely from the loaded recents page, so once the sources were filtered out the folders never rendered — telegram and friends vanished from the left sidebar. Only cron stays excluded (it has its own dedicated section). Messaging sessions belong in the sidebar and render with their platform folder/icon. Removes the now-unused MESSAGING_SESSION_SOURCE_IDS export. * fix(desktop): give each messaging platform its own self-managed sidebar section Recents are local-only again: cron and every messaging platform are excluded from the chat-recents query, so "Load more" pages through interactive local chats instead of interleaving gateway threads that bury them. Each messaging platform (telegram, discord, ...) is now fetched as its own slice (refreshMessagingSessions) and rendered as a self-managed sidebar section with its platform icon, count, and per-platform "load more" — no source-grouping magic inside recents. Handed-off sessions (live source becomes local after a handoff) keep their origin-platform badge on the row via handoff_platform, so a Telegram thread continued in the desktop still reads as Telegram. * fix(desktop): self-heal a stranded routed session in route-resume An intermittent create/stream race can leave selected/active session ids null while the route stays on /:sid — the transcript then sticks empty even though the turn completed and persisted (the "second Ctrl+N shows no response" symptom). The pathname didn't change, so route-resume's normal gate skipped and the view stayed stuck. Resume whenever the routed session isn't the loaded one, gated on freshDraftReady so the /:sid -> /new transition (which also momentarily nulls selected/active a render before the pathname flips) is NOT treated as stranded. selectedStoredSessionIdRef is set synchronously at resume entry, so this can't loop, and the resume cached fast-path restores the already-streamed messages without a refetch. * fix(desktop): bypass smooth reveal on primary markdown stream Render main assistant text through deferred markdown directly instead of the smooth-reveal wrapper. This isolates the wrapper to reasoning surfaces and avoids the intermittent blank-response regression after consecutive new-session flows.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Restores the desktop chat sidebar and the Ctrl+N new-session flow after a cluster of recent regressions, and reworks how messaging-platform threads are surfaced.
Sidebar
cronand every messaging-platform source (telegram, discord, slack, ...) are excluded from the chat-recents query, so Load More pages through interactive local chats instead of interleaving gateway threads that buried them.refreshMessagingSessions) fetches messaging threads and renders one section per platform with its icon, count, and a per-platform "load more" - no source-grouping magic inside recents.handoff_platform, so a Telegram thread continued in the desktop still reads as Telegram.orderByIds/reconcileOrderIdspreviously appended ids missing from the persisted order to the bottom; callers pass recency-sorted lists, so a brand-new Ctrl+N session sank below the saved order. Fresh ids now prepend so new activity surfaces at the top.New-chat "Thinking" hang (first session)
requestAnimationFrameto ~0 while the window is backgrounded/occluded/unfocused, stranding the deferred flush. Critical transitions (!busy || needsInput) now flush synchronously; the busy heartbeat stays RAF-batched to avoid scroll churn.Ctrl+N
Follow-up regression fix (June 9)
MarkdownTextImplnow renders throughDeferStreamingTextdirectly (withoutSmoothStreamingText). This isolates smooth reveal to reasoning surfaces and removes the intermittent "new session exists but no visible response until refresh" behavior seen after consecutive Ctrl+N flows.Test plan