S3.2: hand-placed 12x12 pixel icon set replaces lucide and reicon

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ZacharyZhang-NYandClaude Opus 5.5 committed 2026-10-09 12:13:33 -04:00
1 parent 86dbb4efa1
commit a6036308b7
35 files changed
+150 -182

No files matched your search

+6
View File
@@ -44,6 +44,12 @@ test("text uses the bundled pixel font, and the palette follows the day part, se
const idle = rows.find((row) => !row.matches(".active, [aria-current]"))!;
return [getComputedStyle(active, "::before").animationName, getComputedStyle(idle, "::before").animationName, getComputedStyle(idle, "::before").visibility];
})).toEqual(["px-blink", "none", "hidden"]);
// Every icon on screen is a pixel glyph on the font's grid; no stroked vector icons remain.
expect(await page.evaluate(() => ({
stroked: [...document.querySelectorAll("svg")].filter((svg) => !svg.closest("canvas") && svg.getAttribute("stroke") && svg.getAttribute("stroke") !== "none").length,
size: getComputedStyle(document.querySelector("svg.pixel-icon")!).width === getComputedStyle(document.body).fontSize,
}))).toEqual({ stroked: 0, size: true });
expect(await page.evaluate(() => document.querySelectorAll(".nav > .nav-item").length)).toBe(await page.evaluate(() => document.querySelectorAll(".nav > .nav-item svg.pixel-icon").length));
await page.getByRole("button", { name: "New task" }).click();
const dialog = page.getByRole("dialog", { name: "New task" });
await expect(dialog).toBeVisible();
+13
View File
@@ -0,0 +1,13 @@
import { expect, test } from "vitest";
import { PIXEL_ICONS } from "../../src/renderer/src/shared/pixel-icons";
test("every icon is a 12x12 bitmap of lit and dark pixels, and no two icons are the same", () => {
for (const [name, bitmap] of Object.entries(PIXEL_ICONS)) {
const rows = bitmap.split(" ");
expect(rows, name).toHaveLength(12);
for (const row of rows) expect(row, name).toMatch(/^[#.]{12}$/);
expect(bitmap.includes("#"), name).toBe(true);
}
const bitmaps = Object.values(PIXEL_ICONS);
expect(new Set(bitmaps).size).toBe(bitmaps.length);
});