summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src
diff options
context:
space:
mode:
authorShoubhit Dash <[email protected]>2026-04-03 20:24:57 +0530
committerGitHub <[email protected]>2026-04-03 09:54:57 -0500
commit35350b1d25a56665cf065eba68929fc00617fdd2 (patch)
tree91bf53b5d87ff9532ebf0a779c4dbe7bc99148f3 /packages/ui/src
parent263dcf75b548810a149f08ea5e32e0f6754128d5 (diff)
downloadopencode-35350b1d25a56665cf065eba68929fc00617fdd2.tar.gz
opencode-35350b1d25a56665cf065eba68929fc00617fdd2.zip
feat: restore git-backed review modes (#20845)
Diffstat (limited to 'packages/ui/src')
-rw-r--r--packages/ui/src/components/session-review.tsx35
-rw-r--r--packages/ui/src/i18n/en.ts2
2 files changed, 19 insertions, 18 deletions
diff --git a/packages/ui/src/components/session-review.tsx b/packages/ui/src/components/session-review.tsx
index 1040aa292..3b582d66f 100644
--- a/packages/ui/src/components/session-review.tsx
+++ b/packages/ui/src/components/session-review.tsx
@@ -359,11 +359,10 @@ export const SessionReview = (props: SessionReviewProps) => {
<Show when={hasDiffs()} fallback={props.empty}>
<div class="pb-6">
<Accordion multiple value={open()} onChange={handleChange}>
- <For each={files()}>
- {(file) => {
+ <For each={props.diffs}>
+ {(diff) => {
let wrapper: HTMLDivElement | undefined
-
- const item = createMemo(() => diffs().get(file)!)
+ const file = diff.file
const expanded = createMemo(() => open().includes(file))
const mounted = createMemo(() => expanded() && (!!store.visible[file] || pinned(file)))
@@ -372,9 +371,9 @@ export const SessionReview = (props: SessionReviewProps) => {
const comments = createMemo(() => grouped().get(file) ?? [])
const commentedLines = createMemo(() => comments().map((c) => c.selection))
- const beforeText = () => (typeof item().before === "string" ? item().before : "")
- const afterText = () => (typeof item().after === "string" ? item().after : "")
- const changedLines = () => item().additions + item().deletions
+ const beforeText = () => (typeof diff.before === "string" ? diff.before : "")
+ const afterText = () => (typeof diff.after === "string" ? diff.after : "")
+ const changedLines = () => diff.additions + diff.deletions
const mediaKind = createMemo(() => mediaKindFromPath(file))
const tooLarge = createMemo(() => {
@@ -385,9 +384,9 @@ export const SessionReview = (props: SessionReviewProps) => {
})
const isAdded = () =>
- item().status === "added" || (beforeText().length === 0 && afterText().length > 0)
+ diff.status === "added" || (beforeText().length === 0 && afterText().length > 0)
const isDeleted = () =>
- item().status === "deleted" || (afterText().length === 0 && beforeText().length > 0)
+ diff.status === "deleted" || (afterText().length === 0 && beforeText().length > 0)
const selectedLines = createMemo(() => {
const current = selection()
@@ -425,7 +424,7 @@ export const SessionReview = (props: SessionReviewProps) => {
file,
selection,
comment,
- preview: selectionPreview(item(), selection),
+ preview: selectionPreview(diff, selection),
})
},
onUpdate: ({ id, comment, selection }) => {
@@ -434,7 +433,7 @@ export const SessionReview = (props: SessionReviewProps) => {
file,
selection,
comment,
- preview: selectionPreview(item(), selection),
+ preview: selectionPreview(diff, selection),
})
},
onDelete: (comment) => {
@@ -513,7 +512,7 @@ export const SessionReview = (props: SessionReviewProps) => {
<span data-slot="session-review-change" data-type="added">
{i18n.t("ui.sessionReview.change.added")}
</span>
- <DiffChanges changes={item()} />
+ <DiffChanges changes={diff} />
</div>
</Match>
<Match when={isDeleted()}>
@@ -527,7 +526,7 @@ export const SessionReview = (props: SessionReviewProps) => {
</span>
</Match>
<Match when={true}>
- <DiffChanges changes={item()} />
+ <DiffChanges changes={diff} />
</Match>
</Switch>
<span data-slot="session-review-diff-chevron">
@@ -582,7 +581,7 @@ export const SessionReview = (props: SessionReviewProps) => {
<Dynamic
component={fileComponent}
mode="diff"
- preloadedDiff={item().preloaded}
+ preloadedDiff={diff.preloaded}
diffStyle={diffStyle()}
onRendered={() => {
props.onDiffRendered?.()
@@ -599,17 +598,17 @@ export const SessionReview = (props: SessionReviewProps) => {
commentedLines={commentedLines()}
before={{
name: file,
- contents: typeof item().before === "string" ? item().before : "",
+ contents: typeof diff.before === "string" ? diff.before : "",
}}
after={{
name: file,
- contents: typeof item().after === "string" ? item().after : "",
+ contents: typeof diff.after === "string" ? diff.after : "",
}}
media={{
mode: "auto",
path: file,
- before: item().before,
- after: item().after,
+ before: diff.before,
+ after: diff.after,
readFile: props.readFile,
}}
/>
diff --git a/packages/ui/src/i18n/en.ts b/packages/ui/src/i18n/en.ts
index e66b55092..837fd5afc 100644
--- a/packages/ui/src/i18n/en.ts
+++ b/packages/ui/src/i18n/en.ts
@@ -1,5 +1,7 @@
export const dict: Record<string, string> = {
"ui.sessionReview.title": "Session changes",
+ "ui.sessionReview.title.git": "Git changes",
+ "ui.sessionReview.title.branch": "Branch changes",
"ui.sessionReview.title.lastTurn": "Last turn changes",
"ui.sessionReview.diffStyle.unified": "Unified",
"ui.sessionReview.diffStyle.split": "Split",