Skip to content

Commit 9246524

Browse files
committed
Undo to last non-ignored message (fix for Opencode-DCP/opencode-dynamic-context-pruning#191)
1 parent f7f3d82 commit 9246524

1 file changed

Lines changed: 8 additions & 1 deletion

File tree

  • packages/opencode/src/cli/cmd/tui/routes/session

packages/opencode/src/cli/cmd/tui/routes/session/index.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,14 @@ export function Session() {
698698
const status = sync.data.session_status?.[route.sessionID]
699699
if (status?.type !== "idle") await sdk.client.session.abort({ sessionID: route.sessionID }).catch(() => {})
700700
const revert = session()?.revert?.messageID
701-
const message = messages().findLast((x) => (!revert || x.id < revert) && x.role === "user")
701+
const message = messages().findLast((x) => {
702+
if (x.role !== "user") return false
703+
if (revert && x.id >= revert) return false
704+
// Skip messages where all text parts are ignored
705+
const parts = sync.data.part[x.id]
706+
const hasNonIgnoredText = parts?.some((p) => p.type === "text" && !p.ignored)
707+
return hasNonIgnoredText
708+
})
702709
if (!message) return
703710
sdk.client.session
704711
.revert({

0 commit comments

Comments
 (0)