feat(tui): implement session timeline

This commit is contained in:
Dax Raad
2026-07-20 09:53:07 -04:00
parent 7be95bcd6a
commit c7aa47c144
3 changed files with 21 additions and 2 deletions
@@ -24,6 +24,12 @@ export function DialogMessage(props: {
<DialogSelect
title="Message Actions"
options={[
{
title: "Jump to",
value: "message.jump",
description: "view message in session",
onSelect: (dialog) => dialog.clear(),
},
{
title: "Revert",
value: "session.revert",
@@ -4,10 +4,12 @@ import { DialogSelect, type DialogSelectOption } from "../../ui/dialog-select"
import { Locale } from "../../util/locale"
import { DialogMessage } from "./dialog-message"
import { useDialog } from "../../ui/dialog"
import type { PromptInfo } from "../../prompt/history"
export function DialogTimeline(props: {
sessionID: string
onMove: (messageID: string) => void
setPrompt?: (prompt: PromptInfo) => void
}) {
const data = useData()
const dialog = useDialog()
@@ -26,7 +28,9 @@ export function DialogTimeline(props: {
value: message.id,
footer: Locale.time(message.time.created),
onSelect: (dialog) => {
dialog.replace(() => <DialogMessage messageID={message.id} sessionID={props.sessionID} />)
dialog.replace(() => (
<DialogMessage messageID={message.id} sessionID={props.sessionID} setPrompt={props.setPrompt} />
))
},
})
}
+10 -1
View File
@@ -53,6 +53,7 @@ import { useDialog } from "../../ui/dialog"
import { DialogSessionRename } from "../../component/dialog-session-rename"
import { DialogMessage } from "./dialog-message"
import { DialogFork } from "./dialog-fork"
import { DialogTimeline } from "./dialog-timeline"
import { Sidebar } from "./sidebar"
import { Composer } from "./composer"
import { filetype } from "../../util/filetype"
@@ -458,7 +459,15 @@ export function Session() {
id: "session.timeline",
group: "Session",
slash: { name: "timeline" },
run: () => unavailable("The message timeline"),
run: () => {
dialog.replace(() => (
<DialogTimeline
sessionID={route.sessionID}
onMove={jumpToMessage}
setPrompt={(value) => promptRef.current?.set(value)}
/>
))
},
},
{
title: "Fork session",