File tree Expand file tree Collapse file tree
packages/opencode/src/cli/cmd/tui/routes/session Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -15,7 +15,19 @@ export function Footer() {
1515 const lsp = createMemo ( ( ) => Object . keys ( sync . data . lsp ) )
1616 const permissions = createMemo ( ( ) => {
1717 if ( route . data . type !== "session" ) return [ ]
18- return sync . data . permission [ route . data . sessionID ] ?? [ ]
18+ // Collect permissions from all descendant sessions (full tree)
19+ const rootID = route . data . sessionID
20+ const ids : string [ ] = [ rootID ]
21+ const queue = [ rootID ]
22+ while ( queue . length > 0 ) {
23+ const parentID = queue . pop ( ) !
24+ for ( const s of sync . data . session ) {
25+ if ( s . parentID !== parentID ) continue
26+ ids . push ( s . id )
27+ queue . push ( s . id )
28+ }
29+ }
30+ return ids . flatMap ( ( id ) => sync . data . permission [ id ] ?? [ ] )
1931 } )
2032 const directory = useDirectory ( )
2133 const connected = useConnected ( )
Original file line number Diff line number Diff line change @@ -145,13 +145,27 @@ export function Session() {
145145 } )
146146 const messages = createMemo ( ( ) => sync . data . message [ route . sessionID ] ?? [ ] )
147147 const paging = createMemo ( ( ) => sync . data . message_page [ route . sessionID ] )
148+ // Collect all descendant session IDs (full tree) for permission/question aggregation
149+ const descendants = createMemo ( ( ) => {
150+ const rootID = session ( ) ?. id
151+ if ( ! rootID || session ( ) ?. parentID ) return [ ]
152+ const ids : string [ ] = [ rootID ]
153+ const queue = [ rootID ]
154+ while ( queue . length > 0 ) {
155+ const parentID = queue . pop ( ) !
156+ for ( const s of sync . data . session ) {
157+ if ( s . parentID !== parentID ) continue
158+ ids . push ( s . id )
159+ queue . push ( s . id )
160+ }
161+ }
162+ return ids
163+ } )
148164 const permissions = createMemo ( ( ) => {
149- if ( session ( ) ?. parentID ) return [ ]
150- return children ( ) . flatMap ( ( x ) => sync . data . permission [ x . id ] ?? [ ] )
165+ return descendants ( ) . flatMap ( ( id ) => sync . data . permission [ id ] ?? [ ] )
151166 } )
152167 const questions = createMemo ( ( ) => {
153- if ( session ( ) ?. parentID ) return [ ]
154- return children ( ) . flatMap ( ( x ) => sync . data . question [ x . id ] ?? [ ] )
168+ return descendants ( ) . flatMap ( ( id ) => sync . data . question [ id ] ?? [ ] )
155169 } )
156170
157171 const LOAD_MORE_THRESHOLD = 5
You can’t perform that action at this time.
0 commit comments