@@ -87,9 +87,11 @@ function makeWsFactory() {
8787 let lastRequestId = 'mock-req-id' ;
8888 let lastSentPath = '' ;
8989 let lastSentIncludeFiles = false ;
90- const fsListDir = vi . fn ( ( path : string , includeFiles = false ) => {
90+ let lastSentIncludeMetadata = false ;
91+ const fsListDir = vi . fn ( ( path : string , includeFiles = false , includeMetadata = false ) => {
9192 lastSentPath = path ;
9293 lastSentIncludeFiles = includeFiles ;
94+ lastSentIncludeMetadata = includeMetadata ;
9395 return lastRequestId ;
9496 } ) ;
9597 const fsMkdir = vi . fn ( ( path : string ) => {
@@ -153,7 +155,7 @@ function makeWsFactory() {
153155 for ( const messageHandler of messageHandlers ) messageHandler ( msg ) ;
154156 } ;
155157
156- return { ws, fsListDir, fsMkdir, fsWriteFile, fsRename, fsDelete, respond, respondError, sendMsg, getLastPath : ( ) => lastSentPath , getIncludeFiles : ( ) => lastSentIncludeFiles } ;
158+ return { ws, fsListDir, fsMkdir, fsWriteFile, fsRename, fsDelete, respond, respondError, sendMsg, getLastPath : ( ) => lastSentPath , getIncludeFiles : ( ) => lastSentIncludeFiles , getIncludeMetadata : ( ) => lastSentIncludeMetadata } ;
157159}
158160
159161describe ( 'FileBrowser' , ( ) => {
@@ -196,6 +198,14 @@ describe('FileBrowser', () => {
196198
197199 // ── Layout ─────────────────────────────────────────────────────────────
198200
201+
202+ it ( 'requests lightweight directory listings even when hidden files are visible by default' , ( ) => {
203+ const { ws, fsListDir } = makeWsFactory ( ) ;
204+ render ( < FileBrowser ws = { ws } mode = "file-multi" layout = "panel" initialPath = "/home/user" onConfirm = { vi . fn ( ) } /> ) ;
205+
206+ expect ( fsListDir ) . toHaveBeenCalledWith ( '/home/user' , true , false ) ;
207+ } ) ;
208+
199209 it ( 'renders modal overlay in modal layout' , ( ) => {
200210 const { ws } = makeWsFactory ( ) ;
201211 render ( < FileBrowser ws = { ws } mode = "dir-only" layout = "modal" onConfirm = { vi . fn ( ) } onClose = { vi . fn ( ) } /> ) ;
@@ -298,7 +308,7 @@ describe('FileBrowser', () => {
298308 render (
299309 < FileBrowser ws = { ws } mode = "dir-only" layout = "modal" initialPath = "~/projects" onConfirm = { vi . fn ( ) } onClose = { vi . fn ( ) } /> ,
300310 ) ;
301- expect ( fsListDir ) . toHaveBeenCalledWith ( '~/projects' , false , true ) ;
311+ expect ( fsListDir ) . toHaveBeenCalledWith ( '~/projects' , false , false ) ;
302312 } ) ;
303313
304314 it ( 'does NOT include files for dir-only mode' , ( ) => {
@@ -319,7 +329,7 @@ describe('FileBrowser', () => {
319329 < FileBrowser ws = { ws } mode = "file-single" layout = "panel" initialPath = "/home/user" onConfirm = { vi . fn ( ) } /> ,
320330 ) ;
321331
322- expect ( fsListDir ) . toHaveBeenCalledWith ( '/home/user' , true , true ) ;
332+ expect ( fsListDir ) . toHaveBeenCalledWith ( '/home/user' , true , false ) ;
323333 expect ( getByTitle ( 'Hidden' ) . querySelector < HTMLInputElement > ( 'input[type="checkbox"]' ) ?. checked ) . toBe ( true ) ;
324334 expect ( getByTitle ( 'New file' ) . querySelector ( '.fb-create-icon-file' ) ) . not . toBeNull ( ) ;
325335 expect ( getByTitle ( 'New folder' ) . querySelector ( '.fb-create-icon-folder' ) ) . not . toBeNull ( ) ;
@@ -365,7 +375,7 @@ describe('FileBrowser', () => {
365375
366376 expect ( getByText ( 'projects' ) ) . toBeDefined ( ) ;
367377 expect ( getByText ( 'documents' ) ) . toBeDefined ( ) ;
368- expect ( fsListDir ) . toHaveBeenCalledWith ( '/home/user' , false , true ) ;
378+ expect ( fsListDir ) . toHaveBeenCalledWith ( '/home/user' , false , false ) ;
369379 } ) ;
370380
371381 it ( 'keeps the initial list request lightweight even when downloads are enabled' , ( ) => {
@@ -381,7 +391,7 @@ describe('FileBrowser', () => {
381391 /> ,
382392 ) ;
383393
384- expect ( fsListDir ) . toHaveBeenCalledWith ( '/home/user' , true , true ) ;
394+ expect ( fsListDir ) . toHaveBeenCalledWith ( '/home/user' , true , false ) ;
385395 } ) ;
386396
387397 it ( 'uses entry.path from a Windows drive root listing' , async ( ) => {
@@ -544,7 +554,7 @@ describe('FileBrowser', () => {
544554 sendMsg ( { type : 'fs.mkdir_response' , requestId : 'mock-mkdir-id' , path : '/home/user/newdir' , resolvedPath : '/home/user/newdir' , status : 'ok' } as any ) ;
545555 } ) ;
546556
547- expect ( fsListDir ) . toHaveBeenLastCalledWith ( '/home/user' , false , true ) ;
557+ expect ( fsListDir ) . toHaveBeenLastCalledWith ( '/home/user' , false , false ) ;
548558 expect ( onDirectoryCreated ) . toHaveBeenCalledWith ( '/home/user/newdir' ) ;
549559 } ) ;
550560
@@ -575,7 +585,7 @@ describe('FileBrowser', () => {
575585 sendMsg ( { type : 'fs.write_response' , requestId : 'mock-write-id' , path : '/home/user/new-file.ts' , resolvedPath : '/home/user/new-file.ts' , status : 'ok' , mtime : 2000 } as any ) ;
576586 } ) ;
577587
578- expect ( fsListDir ) . toHaveBeenLastCalledWith ( '/home/user' , true , true ) ;
588+ expect ( fsListDir ) . toHaveBeenLastCalledWith ( '/home/user' , true , false ) ;
579589 expect ( fsReadFile ) . toHaveBeenCalledWith ( '/home/user/new-file.ts' ) ;
580590 } ) ;
581591
@@ -693,7 +703,7 @@ describe('FileBrowser', () => {
693703 } ) ;
694704
695705 expect ( factory . fsListDir . mock . calls . length ) . toBe ( callsBefore + 1 ) ;
696- expect ( factory . fsListDir ) . toHaveBeenLastCalledWith ( longSegmentPath , true , true ) ;
706+ expect ( factory . fsListDir ) . toHaveBeenLastCalledWith ( longSegmentPath , true , false ) ;
697707 } ) ;
698708
699709 it ( 'copies the current directory path from the footer next to Select' , async ( ) => {
@@ -2217,7 +2227,7 @@ describe('FileBrowser — file-manager preview/folder sync', () => {
22172227 ) ;
22182228 } ) ;
22192229 // The left tree navigated to the previewed file's folder (its siblings).
2220- await waitFor ( ( ) => expect ( fsListDir ) . toHaveBeenCalledWith ( '/home/user/sub' , true , true ) ) ;
2230+ await waitFor ( ( ) => expect ( fsListDir ) . toHaveBeenCalledWith ( '/home/user/sub' , true , false ) ) ;
22212231 } ) ;
22222232
22232233 it ( 'previewing a folder opens its listing instead of "preview failed" (bug B)' , async ( ) => {
@@ -2239,7 +2249,7 @@ describe('FileBrowser — file-manager preview/folder sync', () => {
22392249 } as unknown as ServerMessage ) ;
22402250 } ) ;
22412251 // The folder's listing is opened in the left tree (navigated into it)...
2242- await waitFor ( ( ) => expect ( fsListDir ) . toHaveBeenCalledWith ( '/home/user/somedir' , true , true ) ) ;
2252+ await waitFor ( ( ) => expect ( fsListDir ) . toHaveBeenCalledWith ( '/home/user/somedir' , true , false ) ) ;
22432253 // ...and no "preview failed" error is rendered.
22442254 expect ( screen . queryByText ( 'file_browser.preview_error' ) ) . toBeNull ( ) ;
22452255 } ) ;
0 commit comments