Skip to content

feat(desktop): autoscroll thread sidebar for new replies#363

Merged
wesbillman merged 3 commits into
mainfrom
fix-thread-autoscroll
Apr 18, 2026
Merged

feat(desktop): autoscroll thread sidebar for new replies#363
wesbillman merged 3 commits into
mainfrom
fix-thread-autoscroll

Conversation

@wesbillman
Copy link
Copy Markdown
Collaborator

Summary

  • Wires useTimelineScrollManager (the same hook the channel page uses) into MessageThreadPanel, replacing two manual scroll effects with the shared hook
  • Adds a "Jump to latest" button with new-message count when the user has scrolled up in a thread
  • Removes dead totalReplyCount prop from the thread panel chain (MessageThreadPanel, ChannelPane, ChannelScreen)
  • Fixes just dev failing due to missing sidecar placeholder binaries (gap from feat(desktop): bundle sprout-acp and sprout-mcp-server as Tauri sidecars #362)

Net -33 lines across the scroll refactor.

Test plan

  • Open a thread with many replies, verify it auto-scrolls to bottom on open
  • Send a new reply in the thread, verify it auto-scrolls to show the new message
  • Scroll up in a long thread, verify "Jump to latest" button appears
  • Click "Jump to latest", verify it smooth-scrolls to bottom
  • Receive a new reply while scrolled up, verify the button shows "1 new message"
  • Switch between threads, verify scroll position resets correctly
  • Run just dev from a fresh worktree — should build without sidecar errors

🤖 Generated with Claude Code

wesbillman and others added 3 commits April 18, 2026 10:44
Replace the manual scroll-to-bottom effect with useTimelineScrollManager
so new replies automatically scroll into view, matching channel page
behavior. Adds a "Jump to latest" button when scrolled up.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…t into hook

The manual scroll-to-target effect in MessageThreadPanel duplicated
built-in targetMessageId/onTargetReached support in useTimelineScrollManager.
Wire those through the hook instead and remove the redundant effect.
Also remove the unused totalReplyCount prop chain (MessageThreadPanel ←
ChannelPane ← ChannelScreen).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Tauri validates `externalBin` paths at compile time. The `desktop-tauri-check`
recipe already creates placeholder stubs, but the `dev` recipe didn't — causing
a build failure when running `just dev` after the sidecar bundling landed in
main (#362).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@wesbillman wesbillman merged commit 11410be into main Apr 18, 2026
10 checks passed
@wesbillman wesbillman deleted the fix-thread-autoscroll branch April 18, 2026 17:38
fsola-sq added a commit that referenced this pull request Apr 20, 2026
…-binding

* origin/main:
  fix(desktop): eliminate agent startup beachball (#374)
  fix(desktop): resolve agent command path for DMG builds (#372)
  fix(desktop): remove stale sprout-admin prereq, add sidecar tooling (#371)
  Add server cross-compile and macOS desktop build CI jobs (#369)
  Fix forum post card bugs on desktop and mobile (#370)
  fix(desktop): kill WebSocket flood and fix Markdown <p><div> nesting (#368)
  perf: caching, batched DM resolution, bounded audit, global kind index (#367)
  fix: staging to generate stubs as needed (#366)
  chore(deps): update rust crate axum to v0.8.9 (#365)
  chore(deps): update dependency @tanstack/react-router to v1.168.22 (#364)
  feat(desktop): autoscroll thread sidebar for new replies (#363)
  fix(desktop): eliminate 10+ second UI freeze on startup (#361)
  feat(desktop): bundle sprout-acp and sprout-mcp-server as Tauri sidecars (#362)
  Remove release pipeline from public repo (#360)

Amp-Thread-ID: https://ampcode.com/threads/T-019dab7a-5979-7401-83a1-509b9adfe4a0
Co-authored-by: Amp <amp@ampcode.com>

# Conflicts:
#	crates/sprout-relay/src/state.rs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant