diff --git a/canvas/src/components/tabs/FilesTab/tree.ts b/canvas/src/components/tabs/FilesTab/tree.ts index 35e02c7b..9972d071 100644 --- a/canvas/src/components/tabs/FilesTab/tree.ts +++ b/canvas/src/components/tabs/FilesTab/tree.ts @@ -28,7 +28,7 @@ const FILE_ICONS: Record = { export function getIcon(path: string, isDir: boolean): string { if (isDir) return "📁"; - const ext = "." + path.split(".").pop(); + const ext = "." + (path.split(".").pop() ?? "").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..fa96954f 100644 --- a/canvas/src/store/__tests__/canvas-topology-pure.test.ts +++ b/canvas/src/store/__tests__/canvas-topology-pure.test.ts @@ -94,9 +94,10 @@ describe("sortParentsBeforeChildren", () => { { id: "orphan", parentId: "ghost" }, { id: "root", parentId: undefined }, ]; - // Missing parent is skipped; orphan placed after root + // Missing parent is skipped; orphan keeps its input order + // (ghost doesn't exist → orphan is treated as a root in output order) const result = sortParentsBeforeChildren(nodes); - expect(result.map((n) => n.id)).toEqual(["root", "orphan"]); + expect(result.map((n) => n.id)).toEqual(["orphan", "root"]); }); });