build(icon): give both cable strands and the MIDI pins a glow

- The violet strand, which stands for network ports, had no glow while the cyan one did, so the two halves of the icon read as different weights; each strand now carries a glow of its own colour.
- The five MIDI pins glow cyan in place of the dimmer shadow they had, clipped to the inside of the socket so the glow does not spill over the anchor's ring.
- The macOS and Windows icon files are rendered again from the new drawing. The menu bar icon is the anchor's outline alone, which did not change.
This commit is contained in:
James Coleman 2026-10-02 11:55:25 -05:00
parent 9099ca3fcb
commit d5d63c52cb
3 changed files with 26 additions and 11 deletions

View file

@ -49,16 +49,31 @@
<feGaussianBlur stdDeviation="8" result="blur" />
<feComposite in="SourceGraphic" in2="blur" operator="over" />
</filter>
<filter id="anchorGlow" x="-20%" y="-20%" width="140%" height="140%">
<feGaussianBlur in="SourceAlpha" stdDeviation="8" result="blur" />
<feOffset in="blur" dx="0" dy="4" result="offset" />
<feFlood flood-color="#00f2fe" flood-opacity="0.4" result="color" />
<feComposite in="color" in2="offset" operator="in" result="shadow" />
<filter id="violetGlow" filterUnits="userSpaceOnUse" x="0" y="0" width="512" height="512" color-interpolation-filters="sRGB">
<feFlood flood-color="#c084fc" flood-opacity="0.85" result="glowColor" />
<feComposite in="glowColor" in2="SourceAlpha" operator="in" result="glowSource" />
<feGaussianBlur in="glowSource" stdDeviation="12" result="outerGlow" />
<feGaussianBlur in="glowSource" stdDeviation="3" result="innerGlow" />
<feMerge>
<feMergeNode in="shadow" />
<feMergeNode in="outerGlow" />
<feMergeNode in="innerGlow" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<filter id="cyanGlow" filterUnits="userSpaceOnUse" x="0" y="0" width="512" height="512" color-interpolation-filters="sRGB">
<feFlood flood-color="#67e8f9" flood-opacity="0.85" result="glowColor" />
<feComposite in="glowColor" in2="SourceAlpha" operator="in" result="glowSource" />
<feGaussianBlur in="glowSource" stdDeviation="12" result="outerGlow" />
<feGaussianBlur in="glowSource" stdDeviation="3" result="innerGlow" />
<feMerge>
<feMergeNode in="outerGlow" />
<feMergeNode in="innerGlow" />
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
<clipPath id="socketInteriorClip" clipPathUnits="userSpaceOnUse">
<circle cx="256" cy="125" r="34" />
</clipPath>
<style>
.bg-ring { fill: none; stroke: url(#ringGrad); stroke-width: 3; opacity: 0.3; }
.data-stream { fill: none; stroke: #00f2fe; stroke-width: 2.5; stroke-dasharray: 6 8; opacity: 0.8; }
@ -108,14 +123,14 @@
</g>
<g id="layer-cables" inkscape:label="Connection cables" inkscape:groupmode="layer">
<!-- Auto-Repairing Connection Swirls (MIDI Cable + Harbor Anchor Motif) -->
<g filter="url(#shadow)" id="connection-cables" inkscape:label="Cable strands">
<g id="connection-cables" inkscape:label="Cable strands">
<g id="cyan-cable" inkscape:label="Hardware and virtual">
<!-- Left Cable Strand (Hardware/Virtual) -->
<path d="M 100 180 C 140 240, 180 340, 256 380" fill="none" stroke="#00f2fe" stroke-width="5" stroke-linecap="round" opacity="0.8" filter="url(#glow)" id="cyan-strand" />
<path d="M 100 180 C 140 240, 180 340, 256 380" fill="none" stroke="#00f2fe" stroke-width="5" stroke-linecap="round" opacity="0.8" filter="url(#cyanGlow)" id="cyan-strand" />
</g>
<g id="violet-cable" inkscape:label="Network and RTP-MIDI">
<!-- Right Cable Strand (Network/RTP) -->
<path d="M 412 180 C 372 240, 332 340, 256 380" fill="none" stroke="#7b2cbf" stroke-width="5" stroke-linecap="round" opacity="0.8" id="violet-strand" />
<path d="M 412 180 C 372 240, 332 340, 256 380" fill="none" stroke="#7b2cbf" stroke-width="5" stroke-linecap="round" opacity="0.8" filter="url(#violetGlow)" id="violet-strand" />
</g>
</g>
</g>
@ -134,13 +149,13 @@
</g>
<!-- MIDI 5-PIN Configuration Inside the Anchor Shackling Ring -->
<!-- 180-degree arc standard MIDI layout -->
<g filter="url(#anchorGlow)" id="midi-pins" inkscape:label="Five MIDI pins">
<g filter="url(#cyanGlow)" clip-path="url(#socketInteriorClip)" id="midi-pins" inkscape:label="Five MIDI pins">
<!-- Pin 1 (Sound / Control) -->
<circle cx="230" cy="133" r="4.5" class="midi-pin" />
<!-- Pin 2 (Shield/Ground) -->
<circle cx="240" cy="113" r="4.5" class="midi-pin" />
<!-- Pin 3 (Master Center) -->
<circle cx="256" cy="105" r="5" fill="#00f2fe" filter="url(#glow)" />
<circle cx="256" cy="105" r="5" fill="#00f2fe" />
<!-- Pin 4 (Data +) -->
<circle cx="272" cy="113" r="4.5" class="midi-pin" />
<!-- Pin 5 (Data -) -->

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 364 KiB

After

Width:  |  Height:  |  Size: 364 KiB