diff options
Diffstat (limited to 'packages/ui/src')
| -rw-r--r-- | packages/ui/src/components/message-part.tsx | 9 | ||||
| -rw-r--r-- | packages/ui/src/components/session-turn.tsx | 23 |
2 files changed, 23 insertions, 9 deletions
diff --git a/packages/ui/src/components/message-part.tsx b/packages/ui/src/components/message-part.tsx index 2d39207ec..83811494c 100644 --- a/packages/ui/src/components/message-part.tsx +++ b/packages/ui/src/components/message-part.tsx @@ -623,7 +623,14 @@ ToolRegistry.register({ const sessionId = childSessionId() if (!sessionId) return undefined const permissions = data.store.permission?.[sessionId] ?? [] - return permissions.toSorted((a, b) => a.id.localeCompare(b.id))[0] + return permissions.reduce( + (result, perm) => { + if (!result) return perm + if (perm.id < result.id) return perm + return result + }, + undefined as (typeof permissions)[number] | undefined, + ) }) const childToolPart = createMemo(() => { diff --git a/packages/ui/src/components/session-turn.tsx b/packages/ui/src/components/session-turn.tsx index 8e9aa9f23..e1a392bf0 100644 --- a/packages/ui/src/components/session-turn.tsx +++ b/packages/ui/src/components/session-turn.tsx @@ -4,7 +4,7 @@ import { useDiffComponent } from "../context/diff" import { getDirectory, getFilename } from "@opencode-ai/util/path" import { checksum } from "@opencode-ai/util/encode" import { Binary } from "@opencode-ai/util/binary" -import { createEffect, createMemo, For, Match, onCleanup, ParentProps, Show, Switch } from "solid-js" +import { createEffect, createMemo, For, Match, on, onCleanup, ParentProps, Show, Switch } from "solid-js" import { createResizeObserver } from "@solid-primitives/resize-observer" import { DiffChanges } from "./diff-changes" import { Typewriter } from "./typewriter" @@ -193,11 +193,16 @@ export function SessionTurn( return false }) + const permissions = createMemo(() => data.store.permission?.[props.sessionID] ?? []) + const permissionCount = createMemo(() => permissions().length) + const permissionParts = createMemo(() => { - const permissions = data.store.permission?.[props.sessionID] ?? [] - if (!permissions.length) return [] as { part: ToolPart; message: AssistantMessage }[] + if (props.stepsExpanded) return [] as { part: ToolPart; message: AssistantMessage }[] + + const items = permissions() + if (!items.length) return [] as { part: ToolPart; message: AssistantMessage }[] - const ids = new Set(permissions.map((perm) => perm.callID)) + const ids = new Set(items.map((perm) => perm.callID)) const result: { part: ToolPart; message: AssistantMessage }[] = [] for (const message of assistantMessages()) { @@ -371,11 +376,13 @@ export function SessionTurn( } }) - createEffect(() => { - if (permissionParts().length > 0) { + createEffect( + on(permissionCount, (count, prev) => { + if (!count) return + if (prev !== undefined && count <= prev) return autoScroll.forceScrollToBottom() - } - }) + }), + ) createEffect(() => { if (working() || !isLastUserMessage()) return |
