Skip to content

Commit 256377c

Browse files
authored
feat(ui): add WebChat auto-scroll mode selector
Add a persisted Control UI/WebChat auto-scroll mode setting with near-bottom, always, and off modes. The implementation preserves the current near-bottom behavior by default, keeps manual scroll-to-bottom available when automatic scrolling is off, exposes the selector in desktop and mobile chat controls, syncs i18n fallbacks, and adds focused storage/render/scroll coverage. Verification: - pnpm test ui/src/ui/app-settings.test.ts ui/src/ui/views/chat.test.ts ui/src/ui/app-render.helpers.node.test.ts ui/src/ui/app-render.helpers.browser.test.ts ui/src/ui/storage.node.test.ts ui/src/ui/app-scroll.test.ts -- --reporter=verbose - pnpm check:changed - pnpm ui:i18n:check - pnpm ui:build - PR CI green on head 1b8859c Fixes #7648. Fixes #81287.
1 parent 7c5222a commit 256377c

48 files changed

Lines changed: 528 additions & 78 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Docs: https://docs.openclaw.ai
66

77
### Changes
88

9+
- Control UI/WebChat: add a persisted auto-scroll mode selector so users can keep the current near-bottom behavior, always follow streaming output, or turn automatic streaming scroll off and use the New messages button manually. Fixes #7648 and #81287. Thanks @BunsDev.
910
- ACP: add `acp.fallbacks` so ACP turns can try configured backup runtime backends when the primary backend is unavailable before any output is emitted. (#69542) Thanks @kaseonedge.
1011

1112
### Fixes

ui/src/i18n/.i18n/ar.meta.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
{
2-
"fallbackKeys": [],
3-
"generatedAt": "2026-05-11T15:39:37.620Z",
2+
"fallbackKeys": [
3+
"chat.autoScrollAlways",
4+
"chat.autoScrollMode",
5+
"chat.autoScrollNearBottom",
6+
"chat.autoScrollOff"
7+
],
8+
"generatedAt": "2026-05-14T02:57:13.554Z",
49
"locale": "ar",
510
"model": "gpt-5.5",
611
"provider": "openai",
7-
"sourceHash": "aeecf1f192f6e0aa03b14ef1f310b33ba7dea155928848024d0548f50849f584",
8-
"totalKeys": 1108,
12+
"sourceHash": "21a3e182cf575ee49da8100200441d290766012efb17685445098f21d46dcab7",
13+
"totalKeys": 1112,
914
"translatedKeys": 1108,
1015
"workflow": 1
1116
}

ui/src/i18n/.i18n/de.meta.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
{
2-
"fallbackKeys": [],
3-
"generatedAt": "2026-05-11T15:39:36.041Z",
2+
"fallbackKeys": [
3+
"chat.autoScrollAlways",
4+
"chat.autoScrollMode",
5+
"chat.autoScrollNearBottom",
6+
"chat.autoScrollOff"
7+
],
8+
"generatedAt": "2026-05-14T02:57:12.026Z",
49
"locale": "de",
510
"model": "gpt-5.5",
611
"provider": "openai",
7-
"sourceHash": "aeecf1f192f6e0aa03b14ef1f310b33ba7dea155928848024d0548f50849f584",
8-
"totalKeys": 1108,
12+
"sourceHash": "21a3e182cf575ee49da8100200441d290766012efb17685445098f21d46dcab7",
13+
"totalKeys": 1112,
914
"translatedKeys": 1108,
1015
"workflow": 1
1116
}

ui/src/i18n/.i18n/es.meta.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
{
2-
"fallbackKeys": [],
3-
"generatedAt": "2026-05-11T15:39:36.358Z",
2+
"fallbackKeys": [
3+
"chat.autoScrollAlways",
4+
"chat.autoScrollMode",
5+
"chat.autoScrollNearBottom",
6+
"chat.autoScrollOff"
7+
],
8+
"generatedAt": "2026-05-14T02:57:12.327Z",
49
"locale": "es",
510
"model": "gpt-5.5",
611
"provider": "openai",
7-
"sourceHash": "aeecf1f192f6e0aa03b14ef1f310b33ba7dea155928848024d0548f50849f584",
8-
"totalKeys": 1108,
12+
"sourceHash": "21a3e182cf575ee49da8100200441d290766012efb17685445098f21d46dcab7",
13+
"totalKeys": 1112,
914
"translatedKeys": 1108,
1015
"workflow": 1
1116
}

ui/src/i18n/.i18n/fa.meta.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
{
2-
"fallbackKeys": [],
3-
"generatedAt": "2026-05-11T15:39:40.437Z",
2+
"fallbackKeys": [
3+
"chat.autoScrollAlways",
4+
"chat.autoScrollMode",
5+
"chat.autoScrollNearBottom",
6+
"chat.autoScrollOff"
7+
],
8+
"generatedAt": "2026-05-14T02:57:16.363Z",
49
"locale": "fa",
510
"model": "gpt-5.5",
611
"provider": "openai",
7-
"sourceHash": "aeecf1f192f6e0aa03b14ef1f310b33ba7dea155928848024d0548f50849f584",
8-
"totalKeys": 1108,
12+
"sourceHash": "21a3e182cf575ee49da8100200441d290766012efb17685445098f21d46dcab7",
13+
"totalKeys": 1112,
914
"translatedKeys": 1108,
1015
"workflow": 1
1116
}

ui/src/i18n/.i18n/fr.meta.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
{
2-
"fallbackKeys": [],
3-
"generatedAt": "2026-05-11T15:39:37.305Z",
2+
"fallbackKeys": [
3+
"chat.autoScrollAlways",
4+
"chat.autoScrollMode",
5+
"chat.autoScrollNearBottom",
6+
"chat.autoScrollOff"
7+
],
8+
"generatedAt": "2026-05-14T02:57:13.240Z",
49
"locale": "fr",
510
"model": "gpt-5.5",
611
"provider": "openai",
7-
"sourceHash": "aeecf1f192f6e0aa03b14ef1f310b33ba7dea155928848024d0548f50849f584",
8-
"totalKeys": 1108,
12+
"sourceHash": "21a3e182cf575ee49da8100200441d290766012efb17685445098f21d46dcab7",
13+
"totalKeys": 1112,
914
"translatedKeys": 1108,
1015
"workflow": 1
1116
}

ui/src/i18n/.i18n/id.meta.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
{
2-
"fallbackKeys": [],
3-
"generatedAt": "2026-05-11T15:39:38.863Z",
2+
"fallbackKeys": [
3+
"chat.autoScrollAlways",
4+
"chat.autoScrollMode",
5+
"chat.autoScrollNearBottom",
6+
"chat.autoScrollOff"
7+
],
8+
"generatedAt": "2026-05-14T02:57:14.803Z",
49
"locale": "id",
510
"model": "gpt-5.5",
611
"provider": "openai",
7-
"sourceHash": "aeecf1f192f6e0aa03b14ef1f310b33ba7dea155928848024d0548f50849f584",
8-
"totalKeys": 1108,
12+
"sourceHash": "21a3e182cf575ee49da8100200441d290766012efb17685445098f21d46dcab7",
13+
"totalKeys": 1112,
914
"translatedKeys": 1108,
1015
"workflow": 1
1116
}

ui/src/i18n/.i18n/it.meta.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
{
2-
"fallbackKeys": [],
3-
"generatedAt": "2026-05-11T15:39:37.929Z",
2+
"fallbackKeys": [
3+
"chat.autoScrollAlways",
4+
"chat.autoScrollMode",
5+
"chat.autoScrollNearBottom",
6+
"chat.autoScrollOff"
7+
],
8+
"generatedAt": "2026-05-14T02:57:13.869Z",
49
"locale": "it",
510
"model": "gpt-5.5",
611
"provider": "openai",
7-
"sourceHash": "aeecf1f192f6e0aa03b14ef1f310b33ba7dea155928848024d0548f50849f584",
8-
"totalKeys": 1108,
12+
"sourceHash": "21a3e182cf575ee49da8100200441d290766012efb17685445098f21d46dcab7",
13+
"totalKeys": 1112,
914
"translatedKeys": 1108,
1015
"workflow": 1
1116
}

ui/src/i18n/.i18n/ja-JP.meta.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
{
2-
"fallbackKeys": [],
3-
"generatedAt": "2026-05-11T15:39:36.677Z",
2+
"fallbackKeys": [
3+
"chat.autoScrollAlways",
4+
"chat.autoScrollMode",
5+
"chat.autoScrollNearBottom",
6+
"chat.autoScrollOff"
7+
],
8+
"generatedAt": "2026-05-14T02:57:12.626Z",
49
"locale": "ja-JP",
510
"model": "gpt-5.5",
611
"provider": "openai",
7-
"sourceHash": "aeecf1f192f6e0aa03b14ef1f310b33ba7dea155928848024d0548f50849f584",
8-
"totalKeys": 1108,
12+
"sourceHash": "21a3e182cf575ee49da8100200441d290766012efb17685445098f21d46dcab7",
13+
"totalKeys": 1112,
914
"translatedKeys": 1108,
1015
"workflow": 1
1116
}

ui/src/i18n/.i18n/ko.meta.json

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
{
2-
"fallbackKeys": [],
3-
"generatedAt": "2026-05-11T15:39:36.995Z",
2+
"fallbackKeys": [
3+
"chat.autoScrollAlways",
4+
"chat.autoScrollMode",
5+
"chat.autoScrollNearBottom",
6+
"chat.autoScrollOff"
7+
],
8+
"generatedAt": "2026-05-14T02:57:12.935Z",
49
"locale": "ko",
510
"model": "gpt-5.5",
611
"provider": "openai",
7-
"sourceHash": "aeecf1f192f6e0aa03b14ef1f310b33ba7dea155928848024d0548f50849f584",
8-
"totalKeys": 1108,
12+
"sourceHash": "21a3e182cf575ee49da8100200441d290766012efb17685445098f21d46dcab7",
13+
"totalKeys": 1112,
914
"translatedKeys": 1108,
1015
"workflow": 1
1116
}

0 commit comments

Comments
 (0)