scope file search to current directory

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-05 00:58:10 +00:00
co-authored by Claude Opus 4.6
parent c66bbfa379
commit c7d509b725
3 changed files with 6 additions and 4 deletions
+3 -1
View File
@@ -843,6 +843,8 @@ router.get('/search', async (ctx) => {
const rootDir = getRootDir(user, ctx.req.query('root') ?? undefined);
const query = (ctx.req.query('q') || '').trim().toLowerCase();
if (!query) throw errors.BAD_REQUEST('q is required');
const searchPath = ctx.req.query('path') || '';
const startDir = searchPath ? resolveUserPath(rootDir, searchPath) : rootDir;
const MAX_RESULTS = 50;
const results: { path: string; name: string; type: string; size: number; modifiedAt: number }[] = [];
@@ -870,7 +872,7 @@ router.get('/search', async (ctx) => {
}
}
await walk(rootDir);
await walk(startDir);
return ctx.json({ results });
});
@@ -104,7 +104,7 @@ export const useFileBrowserApp = (basePath: string, rootOverride?: string, initi
setSearching(true);
searchTimerRef.current = setTimeout(async () => {
try {
const data = await filesRef.current.search(q);
const data = await filesRef.current.search(q, currentPath);
setSearchResults(data.results);
} catch {
toast.error('Search failed');
@@ -24,8 +24,8 @@ export const useFilesAPI = (root: string = 'home') => {
writeFile: (path: string, content: string) =>
client.post(withRoot('/file-browser/write'), { path, content }),
search: (query: string) =>
client.get<{ results: DirEntry[] }>(withRoot(`/file-browser/search?q=${encodeURIComponent(query)}`)),
search: (query: string, path?: string) =>
client.get<{ results: DirEntry[] }>(withRoot(`/file-browser/search?q=${encodeURIComponent(query)}${path ? `&path=${encodeURIComponent(path)}` : ''}`)),
copy: (sources: string[], destination: string) =>
client.post(withRoot('/file-browser/copy'), {