SPB Git

spb/zyquo-local Public MIT

Native macOS AI chat that runs LLMs 100% locally on Apple Silicon with MLX — no cloud, no API keys.

Swift 97.2% Shell 1.8% Makefile 1%

icon: final silicon direction — dominant emerald Z with bright rim over dim processor die; build 3

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
simon-pierre boucher committed 11 days ago (Jul 30, 2026) parent 3647791

Showing 4 changed files with +76 and −78

modified Support/Info.plist +1 −1
@@ -28,7 +28,7 @@
28 28 <key>CFBundleShortVersionString</key>
29 29 <string>0.1.0</string>
30 30 <key>CFBundleVersion</key>
31 <string>2</string>
31 + <string>3</string>
32 32 <key>LSApplicationCategoryType</key>
33 33 <string>public.app-category.productivity</string>
34 34 <key>LSArchitecturePriority</key>
modified assets/icon/AppIcon.icns +0 −0

Binary file not shown.

modified assets/icon/zyquo-local-simple.svg +15 −9
@@ -1,8 +1,8 @@
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <!--
3 3 zyquo-local-simple.svg — simplified variant baked for 16/32 px:
4 cloud, beam and shadows dropped; flat sky gradient + bold white Z,
5 crisp at 16 px.
4 + die, traces and glow dropped; dark graphite field + bold emerald Z with
5 + its bright rim, crisp at 16 px.
6 6
7 7 Zyquo Local
8 8
@@ -11,19 +11,25 @@
11 11 -->
12 12 <svg width="1024" height="1024" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
13 13 <defs>
14 <linearGradient id="sky" x1="0" y1="0" x2="0" y2="1">
15 <stop offset="0" stop-color="#6FA8FF"/>
16 <stop offset="0.52" stop-color="#4E6AF0"/>
17 <stop offset="1" stop-color="#3A3F9E"/>
14 + <linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
15 + <stop offset="0" stop-color="#222B26"/>
16 + <stop offset="1" stop-color="#101512"/>
17 + </linearGradient>
18 + <linearGradient id="emerald" x1="0" y1="0" x2="0" y2="1" gradientUnits="userSpaceOnUse">
19 + <stop offset="270" stop-color="#1CD693"/>
20 + <stop offset="760" stop-color="#0FA873"/>
18 21 </linearGradient>
19 22 <clipPath id="squircle">
20 23 <rect x="100" y="100" width="824" height="824" rx="184" ry="184"/>
21 24 </clipPath>
22 25 </defs>
23 26 <g clip-path="url(#squircle)">
24 <rect x="100" y="100" width="824" height="824" fill="url(#sky)"/>
25 <path d="M 330 296 L 694 296 L 330 728 L 694 728"
26 fill="none" stroke="#FFFFFF" stroke-width="118"
27 + <rect x="100" y="100" width="824" height="824" fill="url(#bg)"/>
28 + <path d="M 320 290 L 704 290 L 320 734 L 704 734"
29 + fill="none" stroke="#9CF7D2" stroke-width="132"
30 + stroke-linecap="round" stroke-linejoin="round"/>
31 + <path d="M 320 290 L 704 290 L 320 734 L 704 734"
32 + fill="none" stroke="url(#emerald)" stroke-width="116"
27 33 stroke-linecap="round" stroke-linejoin="round"/>
28 34 </g>
29 35 </svg>
modified assets/icon/zyquo-local.svg +60 −68
@@ -1,9 +1,12 @@
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <!--
3 zyquo-local.svg — the Zyquo Local app icon.
4 Sky rework: Big Sur squircle, vertical sky gradient (#6FA8FF → #4E6AF0 →
5 #3A3F9E), sleek geometric cloud silhouette, bold white Z embossed into and
6 crossing through the cloud, its diagonal stroke a luminous beam of light.
3 + zyquo-local.svg — the Zyquo Local app icon (final direction).
4 + Big Sur squircle on deep graphite-to-near-black with a faint green
5 + undertone (#1E2622 → #0F1412). Dominant bold geometric Z (~55 % of the
6 + icon) in luminous emerald (#17C787 → #0E9F6E) with a thin bright rim and
7 + a restrained glow — sharp, solid, clearly foreground. Behind it, a small,
8 + dim silicon-die outline with fine circuit traces in emerald-gray frames
9 + the letter without competing. One soft top light, flat vector, no bevel.
7 10 Source of truth for all raster sizes.
8 11
9 12 Zyquo Local
@@ -13,51 +16,21 @@
13 16 -->
14 17 <svg width="1024" height="1024" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
15 18 <defs>
16 <linearGradient id="sky" x1="0" y1="0" x2="0" y2="1">
17 <stop offset="0" stop-color="#6FA8FF"/>
18 <stop offset="0.52" stop-color="#4E6AF0"/>
19 <stop offset="1" stop-color="#3A3F9E"/>
19 + <linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
20 + <stop offset="0" stop-color="#1E2622"/>
21 + <stop offset="1" stop-color="#0F1412"/>
20 22 </linearGradient>
21 <!-- sunlit-from-above cloud body -->
22 <linearGradient id="cloud" x1="0" y1="0" x2="0" y2="1">
23 <stop offset="0" stop-color="#DCE8FF"/>
24 <stop offset="1" stop-color="#A4C0F4"/>
23 + <linearGradient id="emerald" x1="0" y1="0" x2="0" y2="1" gradientUnits="userSpaceOnUse">
24 + <stop offset="280" stop-color="#17C787"/>
25 + <stop offset="744" stop-color="#0E9F6E"/>
25 26 </linearGradient>
26 <!-- Z monogram, white to near-white -->
27 <linearGradient id="zink" x1="0" y1="0" x2="0" y2="1" gradientUnits="userSpaceOnUse">
28 <stop offset="300" stop-color="#FFFFFF"/>
29 <stop offset="720" stop-color="#EAF1FF"/>
30 </linearGradient>
31 <!-- luminous beam along the Z diagonal -->
32 <linearGradient id="beam" gradientUnits="userSpaceOnUse"
33 x1="840" y1="132" x2="184" y2="892">
34 <stop offset="0" stop-color="#FFFFFF" stop-opacity="0"/>
35 <stop offset="0.32" stop-color="#FFFFFF" stop-opacity="0.34"/>
36 <stop offset="0.5" stop-color="#FFFFFF" stop-opacity="0.5"/>
37 <stop offset="0.68" stop-color="#FFFFFF" stop-opacity="0.34"/>
38 <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
39 </linearGradient>
40 <radialGradient id="sunGlow" cx="0.5" cy="0.12" r="0.8">
41 <stop offset="0" stop-color="#FFFFFF" stop-opacity="0.30"/>
42 <stop offset="0.5" stop-color="#FFFFFF" stop-opacity="0.06"/>
43 <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
27 + <radialGradient id="topLight" cx="0.5" cy="0.14" r="0.8">
28 + <stop offset="0" stop-color="#313D36" stop-opacity="0.9"/>
29 + <stop offset="0.55" stop-color="#313D36" stop-opacity="0.22"/>
30 + <stop offset="1" stop-color="#313D36" stop-opacity="0"/>
44 31 </radialGradient>
45 <filter id="softGlow" x="-40%" y="-40%" width="180%" height="180%">
46 <feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur"/>
47 <feMerge>
48 <feMergeNode in="blur"/>
49 <feMergeNode in="SourceGraphic"/>
50 </feMerge>
51 </filter>
52 <filter id="beamBlur" x="-60%" y="-60%" width="220%" height="220%">
53 <feGaussianBlur in="SourceGraphic" stdDeviation="22"/>
54 </filter>
55 <filter id="zShadow" x="-40%" y="-40%" width="180%" height="180%">
56 <feDropShadow dx="0" dy="10" stdDeviation="14" flood-color="#333884" flood-opacity="0.62"/>
57 <feGaussianBlur in="SourceGraphic" stdDeviation="0.6" result="crisp"/>
58 </filter>
59 <filter id="cloudShadow" x="-30%" y="-30%" width="160%" height="160%">
60 <feDropShadow dx="0" dy="14" stdDeviation="26" flood-color="#2A2F7E" flood-opacity="0.35"/>
32 + <filter id="restrainedGlow" x="-40%" y="-40%" width="180%" height="180%">
33 + <feGaussianBlur in="SourceGraphic" stdDeviation="18"/>
61 34 </filter>
62 35 <clipPath id="squircle">
63 36 <rect x="100" y="100" width="824" height="824" rx="184" ry="184"/>
@@ -65,31 +38,50 @@
65 38 </defs>
66 39
67 40 <g clip-path="url(#squircle)">
68 <!-- high-daylight sky -->
69 <rect x="100" y="100" width="824" height="824" fill="url(#sky)"/>
70 <rect x="100" y="100" width="824" height="824" fill="url(#sunGlow)"/>
41 + <!-- dark on-device silicon field, one soft top light -->
42 + <rect x="100" y="100" width="824" height="824" fill="url(#bg)"/>
43 + <rect x="100" y="100" width="824" height="824" fill="url(#topLight)"/>
71 44
72 <!-- luminous beam sweeping the sky along the Z diagonal -->
73 <line x1="836" y1="136" x2="188" y2="888" stroke="url(#beam)"
74 stroke-width="200" stroke-linecap="round" filter="url(#beamBlur)"/>
75
76 <!-- sleek geometric cloud silhouette -->
77 <g filter="url(#cloudShadow)">
78 <circle cx="402" cy="572" r="110" fill="url(#cloud)"/>
79 <circle cx="524" cy="516" r="140" fill="url(#cloud)"/>
80 <circle cx="648" cy="580" r="102" fill="url(#cloud)"/>
81 <rect x="318" y="572" width="410" height="110" rx="55" fill="url(#cloud)"/>
45 + <!-- supporting motif: minimal processor die + fine traces, dim -->
46 + <g stroke="#2C3A33" stroke-width="5" fill="none">
47 + <rect x="272" y="272" width="480" height="480" rx="52"/>
48 + <rect x="296" y="296" width="432" height="432" rx="40" stroke-width="2.5" opacity="0.7"/>
49 + <g stroke-linecap="round">
50 + <line x1="392" y1="272" x2="392" y2="188"/>
51 + <line x1="512" y1="272" x2="512" y2="164"/>
52 + <line x1="632" y1="272" x2="632" y2="188"/>
53 + <line x1="392" y1="752" x2="392" y2="836"/>
54 + <line x1="512" y1="752" x2="512" y2="860"/>
55 + <line x1="632" y1="752" x2="632" y2="836"/>
56 + <line x1="272" y1="392" x2="188" y2="392"/>
57 + <line x1="272" y1="512" x2="164" y2="512"/>
58 + <line x1="272" y1="632" x2="188" y2="632"/>
59 + <line x1="752" y1="392" x2="836" y2="392"/>
60 + <line x1="752" y1="512" x2="860" y2="512"/>
61 + <line x1="752" y1="632" x2="836" y2="632"/>
62 + </g>
63 + </g>
64 + <!-- trace terminal nodes, dim emerald-gray -->
65 + <g fill="#33443B">
66 + <circle cx="392" cy="188" r="7"/><circle cx="512" cy="164" r="7"/><circle cx="632" cy="188" r="7"/>
67 + <circle cx="392" cy="836" r="7"/><circle cx="512" cy="860" r="7"/><circle cx="632" cy="836" r="7"/>
68 + <circle cx="188" cy="392" r="7"/><circle cx="164" cy="512" r="7"/><circle cx="188" cy="632" r="7"/>
69 + <circle cx="836" cy="392" r="7"/><circle cx="860" cy="512" r="7"/><circle cx="836" cy="632" r="7"/>
82 70 </g>
83 71
84 <!-- luminous diagonal: light passing through the sky -->
85 <line x1="652" y1="332" x2="372" y2="692" stroke="#FFFFFF" stroke-opacity="0.6"
86 stroke-width="120" stroke-linecap="round" filter="url(#beamBlur)"/>
72 + <!-- restrained soft glow behind the Z (never blurring its edges) -->
73 + <path d="M 336 302 L 688 302 L 336 722 L 688 722"
74 + fill="none" stroke="#17C787" stroke-opacity="0.35" stroke-width="104"
75 + stroke-linecap="round" stroke-linejoin="round" filter="url(#restrainedGlow)"/>
87 76
88 <!-- bold Z monogram, embossed into the cloud, sunlit from above -->
89 <g filter="url(#zShadow)">
90 <path d="M 372 332 L 652 332 L 372 692 L 652 692"
91 fill="none" stroke="url(#zink)" stroke-width="88"
92 stroke-linecap="round" stroke-linejoin="round"/>
93 </g>
77 + <!-- thin bright rim so the Z detaches cleanly -->
78 + <path d="M 336 302 L 688 302 L 336 722 L 688 722"
79 + fill="none" stroke="#8FF2CB" stroke-width="104"
80 + stroke-linecap="round" stroke-linejoin="round"/>
81 +
82 + <!-- the dominant Z monogram: sharp, solid, luminous emerald -->
83 + <path d="M 336 302 L 688 302 L 336 722 L 688 722"
84 + fill="none" stroke="url(#emerald)" stroke-width="92"
85 + stroke-linecap="round" stroke-linejoin="round"/>
94 86 </g>
95 87 </svg>
96 88