diff --git a/libs/remix-ui/renderer/src/lib/renderer.tsx b/libs/remix-ui/renderer/src/lib/renderer.tsx
index 27959bda6c..084c510517 100644
--- a/libs/remix-ui/renderer/src/lib/renderer.tsx
+++ b/libs/remix-ui/renderer/src/lib/renderer.tsx
@@ -96,11 +96,11 @@ export const Renderer = ({message, opt = {}, plugin}: RendererProps) => {
-
-
+
+
- { askGtp() }}>ASK GPT
+ { askGtp() }}>ASK GPT
)}
diff --git a/libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx b/libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx
index 258c64c740..6a58e23cc9 100644
--- a/libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx
+++ b/libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx
@@ -736,7 +736,8 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => {
return (
{
- typewrite(element, msg ? msg.toString() : null)
+ typewrite(element, msg ? msg.toString() : null, () => scrollToBottom()
+ )
}} className={x.style}>
@@ -754,7 +755,7 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => {
typeWriterIndexes.current.push(index)
return (
{
- typewrite(element, x.message)
+ typewrite(element, x.message, () => scrollToBottom())
}} className={x.style}>
)
} else {
@@ -803,14 +804,21 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => {
)
}
-const typewrite = (elementsRef, message) => {
+const typewrite = (elementsRef, message, callback) => {
(() => {
let count = 0
const id = setInterval(() => {
if (!elementsRef) return
count++
elementsRef.innerText = message.substr(0, count)
- if (message === count) clearInterval(id)
+ // scroll when new line `
+ if (elementsRef.lastChild.tagName === `BR`) {
+ callback()
+ }
+ if (message.length === count) {
+ clearInterval(id)
+ callback()
+ }
}, 5)
})()
}