diff --git a/.changeset/web-scroll-follow-reengage.md b/.changeset/web-scroll-follow-reengage.md new file mode 100644 index 0000000000..2c07ec7577 --- /dev/null +++ b/.changeset/web-scroll-follow-reengage.md @@ -0,0 +1,5 @@ +--- +"@moonshot-ai/kimi-code": patch +--- + +web: Re-engage the scroll auto-follow only when reaching the true bottom (or via the new-message pill) — reading near the streaming tail no longer yanks the view to the bottom on small downward scrolls. diff --git a/apps/kimi-web/src/components/chat/ConversationPane.vue b/apps/kimi-web/src/components/chat/ConversationPane.vue index 1b6b1a9e79..41c65a09ab 100644 --- a/apps/kimi-web/src/components/chat/ConversationPane.vue +++ b/apps/kimi-web/src/components/chat/ConversationPane.vue @@ -481,8 +481,12 @@ const following = ref(true); const showPill = ref(false); /** Within this many pixels from the bottom counts as "at the bottom" — - scrolling DOWN into this zone re-enables the follow. */ -const BOTTOM_THRESHOLD = 80; + scrolling fully INTO it re-enables the follow. Kept deliberately small: + a large threshold re-engaged the follow while users were still reading + the streaming tail, yanking them back to the bottom on any small + downward scroll. Re-follow now requires reaching the bottom (or + clicking the new-message pill). */ +const BOTTOM_THRESHOLD = 8; const USER_ACTION_FOLLOW_LOCK_MS = 1000; function distanceFromBottom(): number {