This is an automated email from the ASF dual-hosted git repository.

hsluoyz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/casbin-gateway.git

commit 72d9f162c9b2d099115e39327639b2dc8e01157b
Author: Yang Luo <[email protected]>
AuthorDate: Mon Sep 7 00:03:45 2026 +0800

    fix(chat): keep the session list in place while the transcript scrolls
---
 web/src/App.tsx            | 3 ++-
 web/src/pages/ChatPage.tsx | 9 +++++----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/web/src/App.tsx b/web/src/App.tsx
index ba4474c..690bc0b 100644
--- a/web/src/App.tsx
+++ b/web/src/App.tsx
@@ -348,7 +348,8 @@ export default function App() {
             </React.Suspense>
           </main>
 
-          <footer className="flex items-center justify-center border-t py-5">
+          {/* Fixed height: ChatPage sizes its pane against the header and 
this. */}
+          <footer className="flex h-18 items-center justify-center border-t">
             <a target="_blank" rel="noreferrer" 
href="https://github.com/apache/casbin-gateway";>
               <Logo className="h-[30px] w-auto" />
             </a>
diff --git a/web/src/pages/ChatPage.tsx b/web/src/pages/ChatPage.tsx
index acd5fb8..883e190 100644
--- a/web/src/pages/ChatPage.tsx
+++ b/web/src/pages/ChatPage.tsx
@@ -309,7 +309,7 @@ export default function ChatPage({account}: {account: 
Account}) {
   const turns = toTurns(events);
 
   return (
-    <PageContainer>
+    <PageContainer className="lg:h-[calc(100svh-3.25rem-4.5rem)]">
       <PageHeader
         title={i18next.t("chat:Chat")}
         description={i18next.t("chat:Ask an agent on this machine something, 
and watch it work")}
@@ -317,8 +317,9 @@ export default function ChatPage({account}: {account: 
Account}) {
 
       {error ? <MessageAlert variant="destructive" title={error} /> : null}
 
-      <div className="grid gap-4 lg:grid-cols-[300px_1fr]">
-        <div className="flex flex-col gap-3">
+      {/* The chat pane owns the viewport, so only the transcript scrolls. */}
+      <div className="grid min-h-0 gap-4 lg:flex-1 lg:grid-cols-[300px_1fr]">
+        <div className="flex flex-col gap-3 lg:min-h-0 lg:overflow-y-auto">
           <div className="flex flex-col gap-2 rounded-lg border p-3">
             <SimpleSelect
               value={target}
@@ -376,7 +377,7 @@ export default function ChatPage({account}: {account: 
Account}) {
           </div>
         </div>
 
-        <div className="flex min-h-[60vh] min-w-0 flex-col rounded-lg border">
+        <div className="flex min-h-[60vh] min-w-0 flex-col rounded-lg border 
lg:min-h-0">
           {active ? (
             <>
               <div className="text-muted-foreground flex items-center gap-2 
border-b px-3 py-2 text-xs">


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to