Mirrors GitHub PR #6.
Stacked on #1 (GitHub #5) (
chore/setup-ci-v013). Merge #1 (GitHub #5) first, and this PR will retarget tomain.
What
- Sender logos:
/api/logo/:domaintries theSVG first, then the existing favicon service. The route now sendsnosniffand a sandboxing CSP, because third-party SVG bytes are served from our own origin. NewPOST /api/logos/syncscans every non-free-mail sender domain and returns aLogoSummary. Tests are inserver/logos.test.ts. - Window controls: on Windows and Linux the window is now frameless with no caption overlay. The top bar draws its own traffic lights (close, minimize, maximize over IPC), and they grey out while the window is unfocused. Settings → Appearance can move them to the right. Double-clicking the bar maximizes the window.
- Icons:
lucide-reactis replaced withiconsax-react.
Fitting in with what's already on main and open
- macOS (GitHub #1, already merged): macOS keeps
hiddenInsetand its native traffic lights at (16, 16). The app-drawn dots, the double-click handler and the right-side toggle are all turned off ondarwin. Appearance shows a note there instead of the toggle. DESIGN.md describes both platforms. - #1 (GitHub #5): this PR builds on #1 (GitHub #5)'s version bump to 0.1.3 and adds no version change of its own.
- #2 (GitHub #4): this PR's
src/App.tsxandsrc/style.csschanges merge cleanly with #2 (GitHub #4). #2 (GitHub #4) and #1 (GitHub #5) already conflict with each other (inpackage.jsontestscript, CHANGELOG, CONTRIBUTING, KB), and this PR doesn't change that. - #3 (GitHub #2) (revert macOS): already conflicting. If it ever lands, the
isMacbranches here stay harmless.
Verification
npx tsc --noEmitpassesnpm test: 32/32 passnpm run buildpasses- Not yet run by hand on Windows or macOS
🤖 Generated with Claude Code