From 49e7dc191fbdf0c03e4b33b28c5144bb6708227e Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 27 Jun 2026 20:25:08 -0400 Subject: [PATCH] fix(tui): make undo inclusive of last user message and simplify revert banner --- packages/tui/src/routes/session/index.tsx | 45 +++++++++++++++++++++-- packages/tui/src/routes/session/rows.ts | 2 +- 2 files changed, 42 insertions(+), 5 deletions(-) diff --git a/packages/tui/src/routes/session/index.tsx b/packages/tui/src/routes/session/index.tsx index f4d570d443a..7781f7cc7bd 100644 --- a/packages/tui/src/routes/session/index.tsx +++ b/packages/tui/src/routes/session/index.tsx @@ -878,7 +878,8 @@ export function Session() { message.id > session()!.revert!.messageID).length} + count={messages().filter((message) => message.id >= session()!.revert!.messageID && message.type === "user").length} + files={session()!.revert!.files ?? []} /> @@ -1167,7 +1168,21 @@ function CompactionMessage() { ) } -function RevertMessage(props: { count: number }) { +function statusLabel(status: "added" | "modified" | "deleted") { + if (status === "added") return "A" + if (status === "deleted") return "D" + return "M" +} + +function RevertMessage(props: { + count: number + files: ReadonlyArray<{ + readonly path: string + readonly status: "added" | "modified" | "deleted" + readonly additions: number + readonly deletions: number + }> +}) { const { theme } = useTheme() const route = useRouteData("session") const sdk = useSDK() @@ -1186,13 +1201,35 @@ function RevertMessage(props: { count: number }) { })() }} flexShrink={0} + marginTop={1} border={["left"]} customBorderChars={SplitBorder.customBorderChars} borderColor={theme.backgroundPanel} > - {props.count} message{props.count === 1 ? "" : "s"} reverted - Click to redo + + {props.count} message{props.count === 1 ? "" : "s"} reverted + + 0}> + + + {(file) => ( + + {statusLabel(file.status)} + + {Locale.truncateLeft(file.path, 60)} + + 0}> + +{file.additions} + + 0}> + -{file.deletions} + + + )} + + + ) diff --git a/packages/tui/src/routes/session/rows.ts b/packages/tui/src/routes/session/rows.ts index 26756a7fcd1..3a15d6bc14a 100644 --- a/packages/tui/src/routes/session/rows.ts +++ b/packages/tui/src/routes/session/rows.ts @@ -28,7 +28,7 @@ export function createSessionRows(sessionID: Accessor) { function reduce() { const messages = data.session.message.list(sessionID()) const boundary = revertBoundary() - return reduceSessionRows(boundary ? messages.filter((message) => message.id <= boundary) : messages) + return reduceSessionRows(boundary ? messages.filter((message) => message.id < boundary) : messages) } createEffect(() => {