- electron/main.ts: extractExeIcon() via app.getFileIcon(), saves PNG to
userData/icons/{md5}.png; IPC icon:extract; scanner:import now auto-extracts
- electron/preload.ts: expose extractIcon()
- AdminPanel: Scan button next to image field — extracts icon from current exe
(shows animated pulse while loading, error if no exe selected or extraction fails)
- GameCard: isExtractedIcon() detects icons/ path; renders centered 64x64 icon
on gradient background instead of stretched cover
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Apps tab: new AppEntry type (source: 'app'), apps.json storage, IPC handlers
(apps:add/remove/update), square tile layout in grid, blue APP badge
- Light/dark theme: CSS variables in :root/.light, ThemeToggle (Sun/Moon),
persisted in localStorage, smooth 0.2s transition
- Visual overhaul: gradient logo, pill badges, glassmorphism header,
gradient play button, modern AdminPanel as slide-in drawer from right
- Animations: 3D tilt + glow on hover, bounce on favorite star, ripple on play,
slide indicator in CategoryFilter, per-category grid re-animation
- AdminPanel: ESC to close, slide-in/out animation, Game/App toggle in add form,
separate sections for games and apps
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>