1- import { FileDiff , Message , Part , Session , SessionStatus , UserMessage } from "@opencode-ai/sdk"
1+ import { FileDiff , Message , Model , Part , Session , SessionStatus , UserMessage } from "@opencode-ai/sdk"
22import { SessionTurn } from "@opencode-ai/ui/session-turn"
33import { SessionReview } from "@opencode-ai/ui/session-review"
4- import { DataProvider , useData } from "@opencode-ai/ui/context"
4+ import { DataProvider } from "@opencode-ai/ui/context"
55import { createAsync , query , RouteDefinition , useParams } from "@solidjs/router"
66import { createMemo , Show } from "solid-js"
77import { Share } from "~/core/share"
@@ -29,6 +29,9 @@ const getData = query(async (sessionID) => {
2929 part : {
3030 [ messageID : string ] : Part [ ]
3131 }
32+ model : {
33+ [ sessionID : string ] : Model [ ]
34+ }
3235 } = {
3336 session : [ ] ,
3437 session_diff : {
@@ -41,6 +44,7 @@ const getData = query(async (sessionID) => {
4144 } ,
4245 message : { } ,
4346 part : { } ,
47+ model : { } ,
4448 }
4549 for ( const item of data ) {
4650 switch ( item . type ) {
@@ -61,6 +65,9 @@ const getData = query(async (sessionID) => {
6165 result . part [ item . data . messageID ] = result . part [ item . data . messageID ] ?? [ ]
6266 result . part [ item . data . messageID ] . push ( item . data )
6367 break
68+ case "model" :
69+ result . model [ sessionID ] = item . data
70+ break
6471 }
6572 }
6673 return result
@@ -82,15 +89,14 @@ export default function () {
8289 { ( data ) => (
8390 < DataProvider data = { data ( ) } >
8491 { iife ( ( ) => {
85- const data = useData ( )
8692 const [ store , setStore ] = createStore ( {
8793 messageId : undefined as string | undefined ,
8894 } )
89- const match = createMemo ( ( ) => Binary . search ( data . session , params . sessionID ! , ( s ) => s . id ) )
95+ const match = createMemo ( ( ) => Binary . search ( data ( ) . session , params . sessionID ! , ( s ) => s . id ) )
9096 if ( ! match ( ) . found ) throw new Error ( `Session ${ params . sessionID } not found` )
91- const info = createMemo ( ( ) => data . session [ match ( ) . index ] )
97+ const info = createMemo ( ( ) => data ( ) . session [ match ( ) . index ] )
9298 const messages = createMemo ( ( ) =>
93- params . sessionID ? ( data . message [ params . sessionID ] ?. filter ( ( m ) => m . role === "user" ) ?? [ ] ) : [ ] ,
99+ params . sessionID ? ( data ( ) . message [ params . sessionID ] ?. filter ( ( m ) => m . role === "user" ) ?? [ ] ) : [ ] ,
94100 )
95101 const firstUserMessage = createMemo ( ( ) => messages ( ) . at ( 0 ) )
96102 const activeMessage = createMemo (
@@ -104,8 +110,9 @@ export default function () {
104110 }
105111 }
106112 const provider = createMemo ( ( ) => activeMessage ( ) ?. model ?. providerID )
107- const model = createMemo ( ( ) => activeMessage ( ) ?. model ?. modelID )
108- const diffs = createMemo ( ( ) => data . session_diff [ params . sessionID ! ] ?? [ ] )
113+ const modelID = createMemo ( ( ) => activeMessage ( ) ?. model ?. modelID )
114+ const model = createMemo ( ( ) => data ( ) . model [ params . sessionID ! ] ?. find ( ( m ) => m . id === modelID ( ) ) )
115+ const diffs = createMemo ( ( ) => data ( ) . session_diff [ params . sessionID ! ] ?? [ ] )
109116
110117 return (
111118 < div class = "relative bg-background-stronger w-screen h-screen overflow-hidden flex flex-col" >
@@ -152,7 +159,7 @@ export default function () {
152159 src = { `https://models.dev/logos/${ provider ( ) } .svg` }
153160 class = "size-4 shrink-0 dark:invert"
154161 />
155- < div class = "text-12-regular text-text-base" > { model ( ) } </ div >
162+ < div class = "text-12-regular text-text-base" > { model ( ) ?. name ?? modelID ( ) } </ div >
156163 </ div >
157164 < div class = "text-12-regular text-text-weaker" >
158165 { DateTime . fromMillis ( info ( ) . time . created ) . toFormat ( "dd MMM yyyy, HH:mm" ) }
@@ -163,7 +170,7 @@ export default function () {
163170 < div class = "flex items-start justify-start h-full min-h-0" >
164171 < Show when = { messages ( ) . length > 1 } >
165172 < MessageNav
166- classList = { { "mt-3 mr-3" : true } }
173+ classList = { { "mt-2 mr-3" : true } }
167174 messages = { messages ( ) }
168175 current = { activeMessage ( ) }
169176 onMessageSelect = { setActiveMessage }
0 commit comments