diff --git a/apps/desktop/scripts/generate-file-icons.ts b/apps/desktop/scripts/generate-file-icons.ts index da13b64df5..0975d41afc 100644 --- a/apps/desktop/scripts/generate-file-icons.ts +++ b/apps/desktop/scripts/generate-file-icons.ts @@ -33,16 +33,25 @@ function run() { addIcon(manifest.file); addIcon(manifest.folder); addIcon(manifest.folderExpanded); + addIcon(manifest.rootFolder); + addIcon(manifest.rootFolderExpanded); // File mappings for (const icon of Object.values(manifest.fileNames ?? {})) addIcon(icon); for (const icon of Object.values(manifest.fileExtensions ?? {})) addIcon(icon); + // Language ID mappings (VS Code languageId → icon, not covered by extensions) + for (const icon of Object.values(manifest.languageIds ?? {})) addIcon(icon); + // Folder mappings for (const icon of Object.values(manifest.folderNames ?? {})) addIcon(icon); for (const icon of Object.values(manifest.folderNamesExpanded ?? {})) addIcon(icon); + for (const icon of Object.values(manifest.rootFolderNames ?? {})) + addIcon(icon); + for (const icon of Object.values(manifest.rootFolderNamesExpanded ?? {})) + addIcon(icon); // Build condensed manifest const condensed: CondensedManifest = { @@ -56,13 +65,19 @@ function run() { }; // material-icon-theme relies on VS Code's languageIds for base extensions. - // Since Electron has no languageId system, add them explicitly. - const baseExtensionDefaults: Record = { + // Since Electron has no languageId system, fold languageIds where the + // language name matches a common file extension so they resolve at runtime. + const languageIdExtensionMap: Record = { ts: "typescript", js: "javascript", + php: "php", + tex: "tex", + m: "matlab", + diff: "diff", + patch: "diff", }; - for (const [ext, icon] of Object.entries(baseExtensionDefaults)) { + for (const [ext, icon] of Object.entries(languageIdExtensionMap)) { if (!condensed.fileExtensions[ext]) { condensed.fileExtensions[ext] = icon; referencedIcons.add(icon); diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/FilesView/utils/resolveFileIconAssetUrl.ts b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/FilesView/utils/resolveFileIconAssetUrl.ts index 1a945e5ddf..318bc2dff1 100644 --- a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/FilesView/utils/resolveFileIconAssetUrl.ts +++ b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/FilesView/utils/resolveFileIconAssetUrl.ts @@ -2,7 +2,7 @@ const FILE_ICONS_DIR = "file-icons"; export function resolveFileIconAssetUrl( iconName: string, - baseHref = globalThis.location?.origin ?? "http://localhost", + baseHref = globalThis.location?.href ?? "http://localhost/", ): string { return new URL(`${FILE_ICONS_DIR}/${iconName}.svg`, baseHref).toString(); }