feat: allow control over displaying hidden/dotfiles and .gitignore matches (#179)

* feat: add chat setting to toggle hidden files (dotfiles)

* feat: add toggle to show/hide gitignored files in file browser

* refactor: don't reuse visibility setting for dotfiles toggle

* fix: honor hidden/gitignored toggles across runtimes

---------

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
syntext
2026-01-20 15:20:17 +02:00
committed by GitHub
co-authored by Bohdan Triapitsyn
parent 6544b12e78
commit 2de0d9d3dd
19 changed files with 639 additions and 157 deletions
+18 -2
View File
@@ -1708,7 +1708,7 @@ class OpencodeService {
const desktopFiles = getDesktopFilesApi();
if (desktopFiles) {
try {
const result = await desktopFiles.listDirectory(directoryPath || '');
const result = await desktopFiles.listDirectory(directoryPath || '', options);
if (!result || !Array.isArray(result.entries)) {
return [];
}
@@ -1753,7 +1753,15 @@ class OpencodeService {
}
}
async searchFiles(query: string, options?: { directory?: string | null; limit?: number }): Promise<ProjectFileSearchHit[]> {
async searchFiles(
query: string,
options?: {
directory?: string | null;
limit?: number;
includeHidden?: boolean;
respectGitignore?: boolean;
}
): Promise<ProjectFileSearchHit[]> {
const desktopFiles = getDesktopFilesApi();
const directory = typeof options?.directory === 'string' && options.directory.trim().length > 0
? options.directory.trim()
@@ -1766,6 +1774,8 @@ class OpencodeService {
directory: directory || '',
query,
maxResults: options?.limit,
includeHidden: options?.includeHidden,
respectGitignore: options?.respectGitignore,
});
if (!Array.isArray(results)) {
@@ -1809,6 +1819,12 @@ class OpencodeService {
if (typeof options?.limit === 'number' && Number.isFinite(options.limit)) {
params.set('limit', String(options.limit));
}
if (options?.includeHidden) {
params.set('includeHidden', 'true');
}
if (options?.respectGitignore === false) {
params.set('respectGitignore', 'false');
}
const searchUrl = `${this.baseUrl}/fs/search${params.toString() ? `?${params.toString()}` : ''}`;
const response = await fetch(searchUrl, {