cc-haha/desktop/src-tauri/app-icon.svg
程序员阿江(Relakkes) 056dc36331 Restore a light app icon while keeping the legacy background removed
The previous icon fix solved the square-background issue on older macOS
versions, but it overcorrected by removing the card entirely and turning the
app mark into a bare transparent glyph. This keeps the icon light and app-like
again by using a shallow light card as the icon body while still removing the
extra outer background that made uncropped icons look wrong.

Constraint: Older macOS versions may expose the bundled icon without applying the newer rounded mask treatment
Constraint: The desktop bundle must keep app-icon.svg and generated PNG/ICNS/ICO assets aligned
Rejected: Keep the transparent-only glyph | no longer reads like the intended app icon in Finder and DMG views
Rejected: Restore the original AI-generated image wholesale | reintroduces the outer background that caused the square-icon issue
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Treat desktop/src-tauri/app-icon.svg as the canonical source and regenerate the bundled icon assets in the same change
Tested: desktop bun run lint; desktop bun run test; extracted regenerated icon.icns for visual verification
Not-tested: Full DMG rebuild and manual Finder/Dock verification on older macOS
2026-04-21 18:26:02 +08:00

68 lines
2.6 KiB
XML

<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient id="cardSurface" x1="108" y1="82" x2="387" y2="430" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFFEFC"/>
<stop offset="0.54" stop-color="#F5F2ED"/>
<stop offset="1" stop-color="#DDD8D2"/>
</linearGradient>
<linearGradient id="cardGloss" x1="256" y1="84" x2="256" y2="247" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFFFFF" stop-opacity="0.9"/>
<stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
</linearGradient>
<linearGradient id="brandStroke" x1="156" y1="144" x2="372" y2="386" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF9A72"/>
<stop offset="0.52" stop-color="#F18258"/>
<stop offset="1" stop-color="#C86439"/>
</linearGradient>
<linearGradient id="brandSpark" x1="256" y1="145" x2="256" y2="263" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFB08B"/>
<stop offset="0.58" stop-color="#FF8A62"/>
<stop offset="1" stop-color="#E26C45"/>
</linearGradient>
<filter id="cardShadow" x="64" y="76" width="384" height="392" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feDropShadow dx="0" dy="18" stdDeviation="18" flood-color="#534330" flood-opacity="0.22"/>
</filter>
</defs>
<g filter="url(#cardShadow)">
<rect x="96" y="92" width="320" height="320" rx="82" fill="url(#cardSurface)"/>
<rect x="96.75" y="92.75" width="318.5" height="318.5" rx="81.25" stroke="#F5F1EB" stroke-width="1.5"/>
<path d="M121 146C168 117 231 107 302 118C344 124 379 138 405 159V239C370 222 324 211 273 208C210 203 158 188 121 163V146Z" fill="url(#cardGloss)"/>
</g>
<g transform="translate(-22 -18) scale(1.06)">
<path
d="M168 193L230 255L168 317"
stroke="url(#brandStroke)"
stroke-width="33"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M344 178L391 189L341 348L303 338"
stroke="url(#brandStroke)"
stroke-width="30"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M225 332C245 349 272 350 295 333"
stroke="url(#brandStroke)"
stroke-width="17"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M301 253C310 242 323 243 331 251"
stroke="url(#brandStroke)"
stroke-width="15"
stroke-linecap="round"
stroke-linejoin="round"
/>
<path
d="M256 145L265 176L296 167L272 191L295 213L264 207L256 238L248 207L217 213L240 191L216 167L247 176L256 145Z"
fill="url(#brandSpark)"
/>
</g>
</svg>