Răsfoiți Sursa

fix(tui): restore input on timeline revert and show newest first (#5366)

Sachnun 2 luni în urmă
părinte
comite
a5cb4e41f5

+ 10 - 2
packages/opencode/src/cli/cmd/tui/routes/session/dialog-timeline.tsx

@@ -5,8 +5,13 @@ import type { TextPart } from "@opencode-ai/sdk/v2"
 import { Locale } from "@/util/locale"
 import { Locale } from "@/util/locale"
 import { DialogMessage } from "./dialog-message"
 import { DialogMessage } from "./dialog-message"
 import { useDialog } from "../../ui/dialog"
 import { useDialog } from "../../ui/dialog"
+import type { PromptInfo } from "../../component/prompt/history"
 
 
-export function DialogTimeline(props: { sessionID: string; onMove: (messageID: string) => void }) {
+export function DialogTimeline(props: {
+  sessionID: string
+  onMove: (messageID: string) => void
+  setPrompt?: (prompt: PromptInfo) => void
+}) {
   const sync = useSync()
   const sync = useSync()
   const dialog = useDialog()
   const dialog = useDialog()
 
 
@@ -26,10 +31,13 @@ export function DialogTimeline(props: { sessionID: string; onMove: (messageID: s
         value: message.id,
         value: message.id,
         footer: Locale.time(message.time.created),
         footer: Locale.time(message.time.created),
         onSelect: (dialog) => {
         onSelect: (dialog) => {
-          dialog.replace(() => <DialogMessage messageID={message.id} sessionID={props.sessionID} />)
+          dialog.replace(() => (
+            <DialogMessage messageID={message.id} sessionID={props.sessionID} setPrompt={props.setPrompt} />
+          ))
         },
         },
       })
       })
     }
     }
+    result.reverse()
     return result
     return result
   })
   })
 
 

+ 1 - 0
packages/opencode/src/cli/cmd/tui/routes/session/index.tsx

@@ -289,6 +289,7 @@ export function Session() {
               if (child) scroll.scrollBy(child.y - scroll.y - 1)
               if (child) scroll.scrollBy(child.y - scroll.y - 1)
             }}
             }}
             sessionID={route.sessionID}
             sessionID={route.sessionID}
+            setPrompt={(promptInfo) => prompt.set(promptInfo)}
           />
           />
         ))
         ))
       },
       },