diff --git a/canvas/src/components/tabs/FilesTab/tree.ts b/canvas/src/components/tabs/FilesTab/tree.ts index 35e02c7b..dfb347b8 100644 --- a/canvas/src/components/tabs/FilesTab/tree.ts +++ b/canvas/src/components/tabs/FilesTab/tree.ts @@ -28,7 +28,8 @@ const FILE_ICONS: Record = { export function getIcon(path: string, isDir: boolean): string { if (isDir) return "📁"; - const ext = "." + path.split(".").pop(); + const parts = path.split("."); + const ext = parts.length > 1 ? "." + parts[parts.length - 1].toLowerCase() : ""; return FILE_ICONS[ext] || "📄"; } diff --git a/canvas/src/store/__tests__/canvas-topology-pure.test.ts b/canvas/src/store/__tests__/canvas-topology-pure.test.ts index 2f3c02f1..ab5d023e 100644 --- a/canvas/src/store/__tests__/canvas-topology-pure.test.ts +++ b/canvas/src/store/__tests__/canvas-topology-pure.test.ts @@ -94,9 +94,9 @@ describe("sortParentsBeforeChildren", () => { { id: "orphan", parentId: "ghost" }, { id: "root", parentId: undefined }, ]; - // Missing parent is skipped; orphan placed after root + // Missing parent is skipped; nodes appear in input order. const result = sortParentsBeforeChildren(nodes); - expect(result.map((n) => n.id)).toEqual(["root", "orphan"]); + expect(result.map((n) => n.id)).toEqual(["orphan", "root"]); }); });