@@ -12,7 +12,7 @@ import { Spinner } from "@opencode-ai/ui/spinner"
1212import { SessionTurn } from "@opencode-ai/ui/session-turn"
1313import { ScrollView } from "@opencode-ai/ui/scroll-view"
1414import { TextField } from "@opencode-ai/ui/text-field"
15- import type { AssistantMessage , Message as MessageType , Part , TextPart , UserMessage } from "@opencode-ai/sdk/v2"
15+ import type { Message as MessageType , Part , TextPart , UserMessage } from "@opencode-ai/sdk/v2"
1616import { showToast } from "@opencode-ai/ui/toast"
1717import { Binary } from "@opencode-ai/util/binary"
1818import { getFilename } from "@opencode-ai/util/path"
@@ -27,6 +27,7 @@ import { usePlatform } from "@/context/platform"
2727import { useSettings } from "@/context/settings"
2828import { useSDK } from "@/context/sdk"
2929import { useSync } from "@/context/sync"
30+ import { pending , working } from "@/pages/session/activity"
3031import { messageAgentColor } from "@/utils/agent"
3132import { parseCommentNote , readCommentMetadata } from "@/utils/comment-note"
3233
@@ -236,17 +237,13 @@ export function MessageTimeline(props: {
236237 if ( ! id ) return emptyMessages
237238 return sync . data . message [ id ] ?? emptyMessages
238239 } )
239- const pending = createMemo ( ( ) =>
240- sessionMessages ( ) . findLast (
241- ( item ) : item is AssistantMessage => item . role === "assistant" && typeof item . time . completed !== "number" ,
242- ) ,
243- )
240+ const assistant = createMemo ( ( ) => pending ( sessionMessages ( ) ) )
244241 const sessionStatus = createMemo ( ( ) => {
245242 const id = sessionID ( )
246243 if ( ! id ) return idle
247244 return sync . data . session_status [ id ] ?? idle
248245 } )
249- const working = createMemo ( ( ) => ! ! pending ( ) || sessionStatus ( ) . type !== "idle" )
246+ const busy = createMemo ( ( ) => working ( sessionStatus ( ) ) )
250247 const tint = createMemo ( ( ) => messageAgentColor ( sessionMessages ( ) , sync . data . agent ) )
251248
252249 const [ slot , setSlot ] = createStore ( {
@@ -264,7 +261,7 @@ export function MessageTimeline(props: {
264261 onCleanup ( clear )
265262 createEffect (
266263 on (
267- working ,
264+ busy ,
268265 ( on , prev ) => {
269266 clear ( )
270267 if ( on ) {
@@ -282,23 +279,20 @@ export function MessageTimeline(props: {
282279 ) ,
283280 )
284281 const activeMessageID = createMemo ( ( ) => {
285- const parentID = pending ( ) ?. parentID
282+ if ( ! busy ( ) ) return undefined
283+
284+ const parentID = assistant ( ) ?. parentID
286285 if ( parentID ) {
287286 const messages = sessionMessages ( )
288287 const result = Binary . search ( messages , parentID , ( message ) => message . id )
289288 const message = result . found ? messages [ result . index ] : messages . find ( ( item ) => item . id === parentID )
290289 if ( message && message . role === "user" ) return message . id
291290 }
292291
293- const status = sessionStatus ( )
294- if ( status . type !== "idle" ) {
295- const messages = sessionMessages ( )
296- for ( let i = messages . length - 1 ; i >= 0 ; i -- ) {
297- if ( messages [ i ] . role === "user" ) return messages [ i ] . id
298- }
292+ const messages = sessionMessages ( )
293+ for ( let i = messages . length - 1 ; i >= 0 ; i -- ) {
294+ if ( messages [ i ] . role === "user" ) return messages [ i ] . id
299295 }
300-
301- return undefined
302296 } )
303297 const info = createMemo ( ( ) => {
304298 const id = sessionID ( )
0 commit comments