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(() => {