fix: eslint error and format

This commit is contained in:
LukeGus
2026-05-11 13:19:55 -05:00
parent 93fa749d09
commit 0efcb7de7e
7 changed files with 66 additions and 67 deletions
+53 -37
View File
@@ -1,73 +1,83 @@
import sharp from 'sharp'; import sharp from "sharp";
import { readFileSync, writeFileSync, mkdirSync } from 'fs'; import { readFileSync, writeFileSync, mkdirSync } from "fs";
import { join, dirname } from 'path'; import { join, dirname } from "path";
import { fileURLToPath } from 'url'; import { fileURLToPath } from "url";
const __dirname = dirname(fileURLToPath(import.meta.url)); const __dirname = dirname(fileURLToPath(import.meta.url));
const root = join(__dirname, '..'); const root = join(__dirname, "..");
const publicDir = join(root, 'public'); const publicDir = join(root, "public");
const iconsDir = join(publicDir, 'icons'); const iconsDir = join(publicDir, "icons");
mkdirSync(iconsDir, { recursive: true }); mkdirSync(iconsDir, { recursive: true });
const svgBuffer = readFileSync(join(publicDir, 'icon.svg')); const svgBuffer = readFileSync(join(publicDir, "icon.svg"));
const pngSizes = [16, 24, 32, 48, 64, 128, 256, 512, 1024]; const pngSizes = [16, 24, 32, 48, 64, 128, 256, 512, 1024];
console.log('Generating PNG icons...'); console.log("Generating PNG icons...");
await Promise.all( await Promise.all(
pngSizes.map(size => pngSizes.map((size) =>
sharp(svgBuffer) sharp(svgBuffer)
.resize(size, size) .resize(size, size)
.png() .png()
.toFile(join(iconsDir, `${size}x${size}.png`)) .toFile(join(iconsDir, `${size}x${size}.png`))
.then(() => console.log(` ✓ icons/${size}x${size}.png`)) .then(() => console.log(` ✓ icons/${size}x${size}.png`)),
) ),
); );
// icon.png (1024x1024) for Linux electron-builder // icon.png (1024x1024) for Linux electron-builder
await sharp(svgBuffer).resize(1024, 1024).png().toFile(join(publicDir, 'icon.png')); await sharp(svgBuffer)
console.log(' ✓ icon.png'); .resize(1024, 1024)
.png()
.toFile(join(publicDir, "icon.png"));
console.log(" ✓ icon.png");
// icon-mac.png (512x512) for macOS // icon-mac.png (512x512) for macOS
await sharp(svgBuffer).resize(512, 512).png().toFile(join(publicDir, 'icon-mac.png')); await sharp(svgBuffer)
console.log(' ✓ icon-mac.png'); .resize(512, 512)
.png()
.toFile(join(publicDir, "icon-mac.png"));
console.log(" ✓ icon-mac.png");
// full-icon.png (1024x1024) used in app UI // full-icon.png (1024x1024) used in app UI
await sharp(svgBuffer).resize(1024, 1024).png().toFile(join(publicDir, 'full-icon.png')); await sharp(svgBuffer)
console.log(' ✓ full-icon.png'); .resize(1024, 1024)
.png()
.toFile(join(publicDir, "full-icon.png"));
console.log(" ✓ full-icon.png");
// favicon.ico — embed 16, 32, 48 px layers // favicon.ico — embed 16, 32, 48 px layers
console.log('Generating favicon.ico...'); console.log("Generating favicon.ico...");
const icoSizes = [16, 32, 48]; const icoSizes = [16, 32, 48];
const icoBuffers = await Promise.all( const icoBuffers = await Promise.all(
icoSizes.map(size => icoSizes.map((size) => sharp(svgBuffer).resize(size, size).png().toBuffer()),
sharp(svgBuffer).resize(size, size).png().toBuffer()
)
); );
writeFileSync(join(publicDir, 'favicon.ico'), buildIco(icoBuffers, icoSizes)); writeFileSync(join(publicDir, "favicon.ico"), buildIco(icoBuffers, icoSizes));
console.log(' ✓ favicon.ico'); console.log(" ✓ favicon.ico");
// icon.ico — embed 16, 32, 48, 64, 128, 256 px layers // icon.ico — embed 16, 32, 48, 64, 128, 256 px layers
console.log('Generating icon.ico...'); console.log("Generating icon.ico...");
const winSizes = [16, 32, 48, 64, 128, 256]; const winSizes = [16, 32, 48, 64, 128, 256];
const winBuffers = await Promise.all( const winBuffers = await Promise.all(
winSizes.map(size => winSizes.map((size) => sharp(svgBuffer).resize(size, size).png().toBuffer()),
sharp(svgBuffer).resize(size, size).png().toBuffer()
)
); );
writeFileSync(join(publicDir, 'icon.ico'), buildIco(winBuffers, winSizes)); writeFileSync(join(publicDir, "icon.ico"), buildIco(winBuffers, winSizes));
console.log(' ✓ icon.ico'); console.log(" ✓ icon.ico");
// icons/icon.ico and icons/icon.icns placeholders (stubs pointing to source) // icons/icon.ico and icons/icon.icns placeholders (stubs pointing to source)
// electron-builder generates .icns; copy the 1024 PNG as icons/icon.png for reference // electron-builder generates .icns; copy the 1024 PNG as icons/icon.png for reference
await sharp(svgBuffer).resize(1024, 1024).png().toFile(join(iconsDir, 'icon.ico').replace('icon.ico', '1024x1024.png')); await sharp(svgBuffer)
.resize(1024, 1024)
.png()
.toFile(join(iconsDir, "icon.ico").replace("icon.ico", "1024x1024.png"));
// Copy icon.ico and icon.icns into icons/ as well // Copy icon.ico and icon.icns into icons/ as well
import { copyFileSync } from 'fs'; import { copyFileSync } from "fs";
copyFileSync(join(publicDir, 'icon.ico'), join(iconsDir, 'icon.ico')); copyFileSync(join(publicDir, "icon.ico"), join(iconsDir, "icon.ico"));
console.log(' ✓ icons/icon.ico'); console.log(" ✓ icons/icon.ico");
console.log('\nDone! Note: icon.icns requires macOS tools (iconutil). Use electron-builder on macOS to generate it.'); console.log(
"\nDone! Note: icon.icns requires macOS tools (iconutil). Use electron-builder on macOS to generate it.",
);
/** /**
* Builds a minimal ICO file from PNG buffers. * Builds a minimal ICO file from PNG buffers.
@@ -84,7 +94,13 @@ function buildIco(pngBuffers, sizes) {
let offset = dirSize; let offset = dirSize;
const entries = pngBuffers.map((buf, i) => { const entries = pngBuffers.map((buf, i) => {
const size = sizes[i]; const size = sizes[i];
const entry = { size, width: size > 255 ? 0 : size, height: size > 255 ? 0 : size, buf, offset }; const entry = {
size,
width: size > 255 ? 0 : size,
height: size > 255 ? 0 : size,
buf,
offset,
};
offset += buf.length; offset += buf.length;
return entry; return entry;
}); });
@@ -111,7 +127,7 @@ function buildIco(pngBuffers, sizes) {
}); });
// Image data // Image data
entries.forEach(e => e.buf.copy(ico, e.offset)); entries.forEach((e) => e.buf.copy(ico, e.offset));
return ico; return ico;
} }
+1 -1
View File
@@ -1,7 +1,7 @@
import * as React from "react"; import * as React from "react";
import { cn } from "@/lib/utils"; import { cn } from "@/lib/utils";
export interface KbdProps extends React.HTMLAttributes<HTMLElement> {} export type KbdProps = React.HTMLAttributes<HTMLElement>;
const Kbd = React.forwardRef<HTMLElement, KbdProps>( const Kbd = React.forwardRef<HTMLElement, KbdProps>(
({ className, ...props }, ref) => { ({ className, ...props }, ref) => {
@@ -6,7 +6,6 @@ import {
Activity, Activity,
ArrowLeft, ArrowLeft,
Box, Box,
Info,
List, List,
Settings, Settings,
Terminal, Terminal,
@@ -13,15 +13,11 @@ import {
Settings, Settings,
Download, Download,
Upload, Upload,
ChevronLeft,
ChevronRight,
RefreshCw,
ArrowUp, ArrowUp,
ArrowDown, ArrowDown,
FileSymlink, FileSymlink,
Move, Move,
GitCompare, GitCompare,
Edit,
} from "lucide-react"; } from "lucide-react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import type { FileItem } from "@/types/index"; import type { FileItem } from "@/types/index";
+1 -11
View File
@@ -1,26 +1,16 @@
import React, { useCallback, useEffect, useState } from "react"; import React, { useCallback, useEffect, useState } from "react";
import { Button } from "@/components/button"; import { Button } from "@/components/button";
import { Card } from "@/components/card"; import { Card } from "@/components/card";
import { Input } from "@/components/input";
import { Separator } from "@/components/separator"; import { Separator } from "@/components/separator";
import {
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
} from "@/components/dialog";
import { import {
AlertCircle, AlertCircle,
Clock, Clock,
Network, Network,
Play, Play,
Plus,
RefreshCw, RefreshCw,
Settings, Settings,
Square, Square,
Trash2,
Wifi, Wifi,
WifiOff, WifiOff,
} from "lucide-react"; } from "lucide-react";
-1
View File
@@ -58,7 +58,6 @@ function useSplitSizes(splitMode: SplitMode) {
const d = defaultSizes(splitMode); const d = defaultSizes(splitMode);
setRowSizes(d.rowSizes); setRowSizes(d.rowSizes);
setRowColSizes(d.rowColSizes); setRowColSizes(d.rowColSizes);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [splitMode]); }, [splitMode]);
function reset() { function reset() {
-1
View File
@@ -4,7 +4,6 @@ import { Separator } from "@/components/separator";
import { import {
DropdownMenu, DropdownMenu,
DropdownMenuContent, DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger, DropdownMenuTrigger,
} from "@/components/dropdown-menu"; } from "@/components/dropdown-menu";
import { ChevronDown, ChevronUp, X } from "lucide-react"; import { ChevronDown, ChevronUp, X } from "lucide-react";