fix(app): remove fork session button

This commit is contained in:
Adam
2026-03-26 14:34:01 -05:00
parent ad3b350672
commit 311ba4179a
2 changed files with 9 additions and 48 deletions
+3 -24
View File
@@ -26,8 +26,8 @@ import { createAutoScroll } from "@opencode-ai/ui/hooks"
import { previewSelectedLines } from "@opencode-ai/ui/pierre/selection-bridge" import { previewSelectedLines } from "@opencode-ai/ui/pierre/selection-bridge"
import { Button } from "@opencode-ai/ui/button" import { Button } from "@opencode-ai/ui/button"
import { showToast } from "@opencode-ai/ui/toast" import { showToast } from "@opencode-ai/ui/toast"
import { base64Encode, checksum } from "@opencode-ai/util/encode" import { checksum } from "@opencode-ai/util/encode"
import { useNavigate, useSearchParams } from "@solidjs/router" import { useSearchParams } from "@solidjs/router"
import { NewSessionView, SessionHeader } from "@/components/session" import { NewSessionView, SessionHeader } from "@/components/session"
import { useComments } from "@/context/comments" import { useComments } from "@/context/comments"
import { getSessionPrefetch, SESSION_PREFETCH_TTL } from "@/context/global-sync/session-prefetch" import { getSessionPrefetch, SESSION_PREFETCH_TTL } from "@/context/global-sync/session-prefetch"
@@ -317,7 +317,6 @@ export default function Page() {
const sync = useSync() const sync = useSync()
const dialog = useDialog() const dialog = useDialog()
const language = useLanguage() const language = useLanguage()
const navigate = useNavigate()
const sdk = useSDK() const sdk = useSDK()
const settings = useSettings() const settings = useSettings()
const prompt = usePrompt() const prompt = usePrompt()
@@ -1555,26 +1554,6 @@ export default function Page() {
const reverting = createMemo(() => revertMutation.isPending || restoreMutation.isPending) const reverting = createMemo(() => revertMutation.isPending || restoreMutation.isPending)
const restoring = createMemo(() => (restoreMutation.isPending ? restoreMutation.variables : undefined)) const restoring = createMemo(() => (restoreMutation.isPending ? restoreMutation.variables : undefined))
const fork = (input: { sessionID: string; messageID: string }) => {
const value = draft(input.messageID)
const dir = base64Encode(sdk.directory)
return sdk.client.session
.fork(input)
.then((result) => {
const next = result.data
if (!next) {
showToast({
variant: "error",
title: language.t("common.requestFailed"),
})
return
}
prompt.set(value, undefined, { dir, id: next.id })
navigate(`/${dir}/session/${next.id}`)
})
.catch(fail)
}
const revert = (input: { sessionID: string; messageID: string }) => { const revert = (input: { sessionID: string; messageID: string }) => {
if (reverting()) return if (reverting()) return
return revertMutation.mutateAsync(input) return revertMutation.mutateAsync(input)
@@ -1593,7 +1572,7 @@ export default function Page() {
.map((item) => ({ id: item.id, text: line(item.id) })) .map((item) => ({ id: item.id, text: line(item.id) }))
}) })
const actions = { fork, revert } const actions = { revert }
createEffect(() => { createEffect(() => {
const sessionID = params.id const sessionID = params.id
+6 -24
View File
@@ -884,7 +884,7 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
const i18n = useI18n() const i18n = useI18n()
const [state, setState] = createStore({ const [state, setState] = createStore({
copied: false, copied: false,
busy: undefined as "fork" | "revert" | undefined, busy: false,
}) })
const copied = () => state.copied const copied = () => state.copied
const busy = () => state.busy const busy = () => state.busy
@@ -938,10 +938,10 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
setTimeout(() => setState("copied", false), 2000) setTimeout(() => setState("copied", false), 2000)
} }
const run = (kind: "fork" | "revert") => { const revert = () => {
const act = kind === "fork" ? props.actions?.fork : props.actions?.revert const act = props.actions?.revert
if (!act || busy()) return if (!act || busy()) return
setState("busy", kind) setState("busy", true)
void Promise.resolve() void Promise.resolve()
.then(() => .then(() =>
act({ act({
@@ -949,9 +949,7 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
messageID: props.message.id, messageID: props.message.id,
}), }),
) )
.finally(() => { .finally(() => setState("busy", false))
if (busy() === kind) setState("busy", undefined)
})
} }
return ( return (
@@ -1017,22 +1015,6 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
</Show> </Show>
</span> </span>
</Show> </Show>
<Show when={props.actions?.fork}>
<Tooltip value={i18n.t("ui.message.forkMessage")} placement="top" gutter={4}>
<IconButton
icon="fork"
size="normal"
variant="ghost"
disabled={!!busy()}
onMouseDown={(e) => e.preventDefault()}
onClick={(event) => {
event.stopPropagation()
run("fork")
}}
aria-label={i18n.t("ui.message.forkMessage")}
/>
</Tooltip>
</Show>
<Show when={props.actions?.revert}> <Show when={props.actions?.revert}>
<Tooltip value={i18n.t("ui.message.revertMessage")} placement="top" gutter={4}> <Tooltip value={i18n.t("ui.message.revertMessage")} placement="top" gutter={4}>
<IconButton <IconButton
@@ -1043,7 +1025,7 @@ export function UserMessageDisplay(props: { message: UserMessage; parts: PartTyp
onMouseDown={(e) => e.preventDefault()} onMouseDown={(e) => e.preventDefault()}
onClick={(event) => { onClick={(event) => {
event.stopPropagation() event.stopPropagation()
run("revert") revert()
}} }}
aria-label={i18n.t("ui.message.revertMessage")} aria-label={i18n.t("ui.message.revertMessage")}
/> />