From 944f8b508cb014c1f814033601d90c260b7695ef Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Mon, 18 May 2026 16:22:33 +0800
Subject: [PATCH] design: add VoiceSnap icon candidates

---
 TODO.md                                                                   |    6 
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.png     |    0 
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_C_taglauncher-style.png |    0 
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_D_glass-circle.png      |    0 
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_D_glass-circle.svg      |   38 ++++
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_C_taglauncher-style.svg |   43 +++++
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_candidates_preview.svg  |  221 +++++++++++++++++++++++++++
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_candidates_preview.png  |    0 
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.svg   |   38 ++++
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_E_compact-liquid.png    |    0 
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.png   |    0 
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_E_compact-liquid.svg    |   42 +++++
 VoiceSnapGo/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.svg     |   40 +++++
 13 files changed, 427 insertions(+), 1 deletions(-)

diff --git a/TODO.md b/TODO.md
index 2621835..ad52f96 100644
--- a/TODO.md
+++ b/TODO.md
@@ -9,7 +9,11 @@
 
 ## In Progress
 
-- 无
+- [2026-05-18] 重做 VoiceSnap macOS 图标为 SVG 矢量母版。
+  - 目标: 白色圆角方形底、蓝色麦克风,风格参考 TagLauncher,避免毛边、截图白边和尺寸忽大忽小。
+  - 当前调整: 先生成 5 个 SVG 矢量候选和一张对比预览图,用户选定后再替换进 App 并打包。
+  - 已输出: `VoiceSnapGo/design/icon-candidates/voicesnap_icon_candidates_preview.png`
+  - 已输出: `VoiceSnapGo/design/icon-candidates/voicesnap_icon_[A-E]_*.svg`
 
 ## Todo
 
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.png b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.png
new file mode 100644
index 0000000..ce5897b
--- /dev/null
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.png
Binary files differ
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.svg b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.svg
new file mode 100644
index 0000000..3137748
--- /dev/null
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.svg
@@ -0,0 +1,40 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="Pure Blue Mic">
+  <defs>
+    <linearGradient id="vAtile" x1="160" y1="118" x2="820" y2="900" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#FFFFFF"/>
+      <stop offset="0.62" stop-color="#FBFDFF"/>
+      <stop offset="1" stop-color="#F2F7FF"/>
+    </linearGradient>
+    <linearGradient id="vAblue" x1="340" y1="200" x2="700" y2="830" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#24D8FF"/>
+      <stop offset="0.46" stop-color="#0A91FF"/>
+      <stop offset="1" stop-color="#0057D8"/>
+    </linearGradient>
+    <linearGradient id="vAblue2" x1="300" y1="320" x2="760" y2="780" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#48C9FF"/>
+      <stop offset="1" stop-color="#0067E8"/>
+    </linearGradient>
+    <linearGradient id="vAsoft" x1="272" y1="184" x2="760" y2="804" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#EAFBFF" stop-opacity="0.88"/>
+      <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
+    </linearGradient>
+    <filter id="vAinnerShadow" x="-20%" y="-20%" width="140%" height="150%">
+      <feDropShadow dx="0" dy="14" stdDeviation="15" flood-color="#0069DA" flood-opacity="0.20"/>
+      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.16"/>
+    </filter>
+    <clipPath id="vAclip"><rect x="96" y="96" width="832" height="832" rx="184" ry="184"/></clipPath>
+  </defs>
+  <rect x="96" y="96" width="832" height="832" rx="184" ry="184" fill="url(#vAtile)"/>
+  <rect x="98" y="98" width="828" height="828" rx="182" ry="182" fill="none" stroke="#E5EDF7" stroke-width="4"/>
+
+  <g filter="url(#vAinnerShadow)">
+    <path fill="url(#vAblue)" d="M512 196c-70 0-126 56-126 126v198c0 70 56 126 126 126s126-56 126-126V322c0-70-56-126-126-126Z"/>
+    <path fill="url(#vAsoft)" d="M512 216c-52 0-94 42-94 94v138c0 23 19 42 42 42h38c52 0 94-42 94-94V242c-20-16-46-24-80-24Z"/>
+    <rect x="468" y="346" width="88" height="19" rx="9.5" fill="#FFFFFF" opacity="0.96"/>
+    <rect x="468" y="397" width="88" height="19" rx="9.5" fill="#FFFFFF" opacity="0.96"/>
+    <rect x="468" y="448" width="88" height="19" rx="9.5" fill="#FFFFFF" opacity="0.96"/>
+    <path fill="none" stroke="url(#vAblue2)" stroke-width="48" stroke-linecap="round" d="M316 468v62c0 108 88 196 196 196s196-88 196-196v-62"/>
+    <path fill="none" stroke="#FFFFFF" stroke-width="12" stroke-linecap="round" stroke-opacity="0.44" d="M342 470v58c0 94 76 170 170 170"/>
+    <rect x="488" y="724" width="48" height="116" rx="24" fill="url(#vAblue2)"/>
+    <rect x="372" y="818" width="280" height="58" rx="29" fill="url(#vAblue2)"/>
+  </g></svg>
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.png b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.png
new file mode 100644
index 0000000..ccea8b7
--- /dev/null
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.png
Binary files differ
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.svg b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.svg
new file mode 100644
index 0000000..c2d3a85
--- /dev/null
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.svg
@@ -0,0 +1,38 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="Thin Blue Glyph">
+  <defs>
+    <linearGradient id="vBtile" x1="160" y1="118" x2="820" y2="900" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#FFFFFF"/>
+      <stop offset="0.62" stop-color="#FBFDFF"/>
+      <stop offset="1" stop-color="#F8FBFF"/>
+    </linearGradient>
+    <linearGradient id="vBblue" x1="340" y1="200" x2="700" y2="830" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#24D8FF"/>
+      <stop offset="0.46" stop-color="#0A91FF"/>
+      <stop offset="1" stop-color="#0057D8"/>
+    </linearGradient>
+    <linearGradient id="vBblue2" x1="300" y1="320" x2="760" y2="780" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#48C9FF"/>
+      <stop offset="1" stop-color="#0067E8"/>
+    </linearGradient>
+    <linearGradient id="vBsoft" x1="272" y1="184" x2="760" y2="804" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#EAFBFF" stop-opacity="0.88"/>
+      <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
+    </linearGradient>
+    <filter id="vBinnerShadow" x="-20%" y="-20%" width="140%" height="150%">
+      <feDropShadow dx="0" dy="14" stdDeviation="15" flood-color="#0069DA" flood-opacity="0.20"/>
+      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.16"/>
+    </filter>
+    <clipPath id="vBclip"><rect x="96" y="96" width="832" height="832" rx="184" ry="184"/></clipPath>
+  </defs>
+  <rect x="96" y="96" width="832" height="832" rx="184" ry="184" fill="url(#vBtile)"/>
+  <rect x="98" y="98" width="828" height="828" rx="182" ry="182" fill="none" stroke="#E5EDF7" stroke-width="4"/>
+
+      <g clip-path="url(#vBclip)"><circle cx="512" cy="544" r="330" fill="#EAF7FF" opacity="0.72"/><circle cx="282" cy="258" r="154" fill="#DDF8FF" opacity="0.62"/></g>
+      
+  <g filter="url(#vBinnerShadow)">
+    <path d="M512 214c-58 0-105 47-105 105v190c0 58 47 105 105 105s105-47 105-105V319c0-58-47-105-105-105Z" fill="none" stroke="url(#vBblue)" stroke-width="42" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M317 472v55c0 108 87 195 195 195s195-87 195-195v-55" fill="none" stroke="url(#vBblue)" stroke-width="46" stroke-linecap="round"/>
+    <path d="M512 722v112" fill="none" stroke="url(#vBblue)" stroke-width="46" stroke-linecap="round"/>
+    <path d="M388 844h248" fill="none" stroke="url(#vBblue)" stroke-width="48" stroke-linecap="round"/>
+    <path d="M470 354h84M470 409h84M470 464h84" fill="none" stroke="url(#vBblue)" stroke-width="18" stroke-linecap="round" opacity="0.9"/>
+  </g></svg>
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_C_taglauncher-style.png b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_C_taglauncher-style.png
new file mode 100644
index 0000000..c5e869b
--- /dev/null
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_C_taglauncher-style.png
Binary files differ
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_C_taglauncher-style.svg b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_C_taglauncher-style.svg
new file mode 100644
index 0000000..738016c
--- /dev/null
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_C_taglauncher-style.svg
@@ -0,0 +1,43 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="TagLauncher Style">
+  <defs>
+    <linearGradient id="vCtile" x1="160" y1="118" x2="820" y2="900" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#FFFFFF"/>
+      <stop offset="0.62" stop-color="#FFFFFF"/>
+      <stop offset="1" stop-color="#F7FAFF"/>
+    </linearGradient>
+    <linearGradient id="vCblue" x1="340" y1="200" x2="700" y2="830" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#24D8FF"/>
+      <stop offset="0.46" stop-color="#0A91FF"/>
+      <stop offset="1" stop-color="#0057D8"/>
+    </linearGradient>
+    <linearGradient id="vCblue2" x1="300" y1="320" x2="760" y2="780" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#48C9FF"/>
+      <stop offset="1" stop-color="#0067E8"/>
+    </linearGradient>
+    <linearGradient id="vCsoft" x1="272" y1="184" x2="760" y2="804" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#EAFBFF" stop-opacity="0.88"/>
+      <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
+    </linearGradient>
+    <filter id="vCinnerShadow" x="-20%" y="-20%" width="140%" height="150%">
+      <feDropShadow dx="0" dy="14" stdDeviation="15" flood-color="#0069DA" flood-opacity="0.20"/>
+      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.16"/>
+    </filter>
+    <clipPath id="vCclip"><rect x="96" y="96" width="832" height="832" rx="184" ry="184"/></clipPath>
+  </defs>
+  <rect x="96" y="96" width="832" height="832" rx="184" ry="184" fill="url(#vCtile)"/>
+  <rect x="98" y="98" width="828" height="828" rx="182" ry="182" fill="none" stroke="#E5EDF7" stroke-width="4"/>
+
+      <g clip-path="url(#vCclip)">
+        <rect x="650" y="182" width="142" height="468" rx="42" fill="#E9F3FF" opacity="0.95"/>
+        <rect x="681" y="226" width="82" height="82" rx="22" fill="#1AB9FF" opacity="0.90"/>
+        <rect x="681" y="330" width="82" height="82" rx="22" fill="#087DFF" opacity="0.90"/>
+        <rect x="681" y="434" width="82" height="82" rx="22" fill="#005BE0" opacity="0.88"/>
+      </g>
+      
+  <g filter="url(#vCinnerShadow)">
+    <path d="M512 214c-58 0-105 47-105 105v190c0 58 47 105 105 105s105-47 105-105V319c0-58-47-105-105-105Z" fill="none" stroke="#0077F4" stroke-width="42" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M317 472v55c0 108 87 195 195 195s195-87 195-195v-55" fill="none" stroke="#0077F4" stroke-width="46" stroke-linecap="round"/>
+    <path d="M512 722v112" fill="none" stroke="#0077F4" stroke-width="46" stroke-linecap="round"/>
+    <path d="M388 844h248" fill="none" stroke="#0077F4" stroke-width="48" stroke-linecap="round"/>
+    <path d="M470 354h84M470 409h84M470 464h84" fill="none" stroke="#0077F4" stroke-width="18" stroke-linecap="round" opacity="0.9"/>
+  </g></svg>
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_D_glass-circle.png b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_D_glass-circle.png
new file mode 100644
index 0000000..a54c1fd
--- /dev/null
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_D_glass-circle.png
Binary files differ
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_D_glass-circle.svg b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_D_glass-circle.svg
new file mode 100644
index 0000000..9297a20
--- /dev/null
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_D_glass-circle.svg
@@ -0,0 +1,38 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="Glass Circle">
+  <defs>
+    <linearGradient id="vDtile" x1="160" y1="118" x2="820" y2="900" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#FFFFFF"/>
+      <stop offset="0.62" stop-color="#FBFDFF"/>
+      <stop offset="1" stop-color="#F2F7FF"/>
+    </linearGradient>
+    <linearGradient id="vDblue" x1="340" y1="200" x2="700" y2="830" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#24D8FF"/>
+      <stop offset="0.46" stop-color="#0A91FF"/>
+      <stop offset="1" stop-color="#0057D8"/>
+    </linearGradient>
+    <linearGradient id="vDblue2" x1="300" y1="320" x2="760" y2="780" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#48C9FF"/>
+      <stop offset="1" stop-color="#0067E8"/>
+    </linearGradient>
+    <linearGradient id="vDsoft" x1="272" y1="184" x2="760" y2="804" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#EAFBFF" stop-opacity="0.88"/>
+      <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
+    </linearGradient>
+    <filter id="vDinnerShadow" x="-20%" y="-20%" width="140%" height="150%">
+      <feDropShadow dx="0" dy="14" stdDeviation="15" flood-color="#0069DA" flood-opacity="0.20"/>
+      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.16"/>
+    </filter>
+    <clipPath id="vDclip"><rect x="96" y="96" width="832" height="832" rx="184" ry="184"/></clipPath>
+  </defs>
+  <rect x="96" y="96" width="832" height="832" rx="184" ry="184" fill="url(#vDtile)"/>
+  <rect x="98" y="98" width="828" height="828" rx="182" ry="182" fill="none" stroke="#E5EDF7" stroke-width="4"/>
+
+      <g clip-path="url(#vDclip)"><circle cx="512" cy="512" r="294" fill="#0C8DFF" opacity="0.10"/><circle cx="512" cy="512" r="248" fill="#FFFFFF" opacity="0.64" stroke="#D9EEFF" stroke-width="5"/></g>
+      
+  <g filter="url(#vDinnerShadow)">
+    <path d="M512 214c-58 0-105 47-105 105v190c0 58 47 105 105 105s105-47 105-105V319c0-58-47-105-105-105Z" fill="none" stroke="#086FE8" stroke-width="42" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M317 472v55c0 108 87 195 195 195s195-87 195-195v-55" fill="none" stroke="#086FE8" stroke-width="46" stroke-linecap="round"/>
+    <path d="M512 722v112" fill="none" stroke="#086FE8" stroke-width="46" stroke-linecap="round"/>
+    <path d="M388 844h248" fill="none" stroke="#086FE8" stroke-width="48" stroke-linecap="round"/>
+    <path d="M470 354h84M470 409h84M470 464h84" fill="none" stroke="#086FE8" stroke-width="18" stroke-linecap="round" opacity="0.9"/>
+  </g></svg>
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_E_compact-liquid.png b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_E_compact-liquid.png
new file mode 100644
index 0000000..aea363f
--- /dev/null
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_E_compact-liquid.png
Binary files differ
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_E_compact-liquid.svg b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_E_compact-liquid.svg
new file mode 100644
index 0000000..042a1a7
--- /dev/null
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_E_compact-liquid.svg
@@ -0,0 +1,42 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024" role="img" aria-label="Compact Liquid">
+  <defs>
+    <linearGradient id="vEtile" x1="160" y1="118" x2="820" y2="900" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#FFFFFF"/>
+      <stop offset="0.62" stop-color="#FBFDFF"/>
+      <stop offset="1" stop-color="#EEF8FF"/>
+    </linearGradient>
+    <linearGradient id="vEblue" x1="340" y1="200" x2="700" y2="830" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#24D8FF"/>
+      <stop offset="0.46" stop-color="#0A91FF"/>
+      <stop offset="1" stop-color="#0057D8"/>
+    </linearGradient>
+    <linearGradient id="vEblue2" x1="300" y1="320" x2="760" y2="780" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#48C9FF"/>
+      <stop offset="1" stop-color="#0067E8"/>
+    </linearGradient>
+    <linearGradient id="vEsoft" x1="272" y1="184" x2="760" y2="804" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#EAFBFF" stop-opacity="0.88"/>
+      <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
+    </linearGradient>
+    <filter id="vEinnerShadow" x="-20%" y="-20%" width="140%" height="150%">
+      <feDropShadow dx="0" dy="14" stdDeviation="15" flood-color="#0069DA" flood-opacity="0.20"/>
+      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.16"/>
+    </filter>
+    <clipPath id="vEclip"><rect x="96" y="96" width="832" height="832" rx="184" ry="184"/></clipPath>
+  </defs>
+  <rect x="96" y="96" width="832" height="832" rx="184" ry="184" fill="url(#vEtile)"/>
+  <rect x="98" y="98" width="828" height="828" rx="182" ry="182" fill="none" stroke="#E5EDF7" stroke-width="4"/>
+
+      <g clip-path="url(#vEclip)"><path d="M96 690c118-68 244-58 388 34 166 107 308 84 444-42v246H96V690Z" fill="#EAF7FF"/><path d="M96 250c142-70 292-50 450 30 166 84 254 80 382 32V96H96v154Z" fill="#F5FCFF"/></g>
+      
+  <g filter="url(#vEinnerShadow)">
+    <path fill="url(#vEblue)" d="M512 214c-70 0-126 56-126 126v198c0 70 56 126 126 126s126-56 126-126V340c0-70-56-126-126-126Z"/>
+    <path fill="url(#vEsoft)" d="M512 234c-52 0-94 42-94 94v138c0 23 19 42 42 42h38c52 0 94-42 94-94V260c-20-16-46-24-80-24Z"/>
+    <rect x="468" y="346" width="88" height="19" rx="9.5" fill="#FFFFFF" opacity="0.96"/>
+    <rect x="468" y="397" width="88" height="19" rx="9.5" fill="#FFFFFF" opacity="0.96"/>
+    <rect x="468" y="448" width="88" height="19" rx="9.5" fill="#FFFFFF" opacity="0.96"/>
+    <path fill="none" stroke="url(#vEblue2)" stroke-width="48" stroke-linecap="round" d="M316 468v62c0 108 88 196 196 196s196-88 196-196v-62"/>
+    <path fill="none" stroke="#FFFFFF" stroke-width="12" stroke-linecap="round" stroke-opacity="0.44" d="M342 470v58c0 94 76 170 170 170"/>
+    <rect x="488" y="724" width="48" height="116" rx="24" fill="url(#vEblue2)"/>
+    <rect x="372" y="818" width="280" height="58" rx="29" fill="url(#vEblue2)"/>
+  </g></svg>
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_candidates_preview.png b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_candidates_preview.png
new file mode 100644
index 0000000..a2b0b43
--- /dev/null
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_candidates_preview.png
Binary files differ
diff --git a/VoiceSnapGo/design/icon-candidates/voicesnap_icon_candidates_preview.svg b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_candidates_preview.svg
new file mode 100644
index 0000000..68b0a96
--- /dev/null
+++ b/VoiceSnapGo/design/icon-candidates/voicesnap_icon_candidates_preview.svg
@@ -0,0 +1,221 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="1236" height="448" viewBox="0 0 1236 448">
+  <rect x="0" y="0" width="1236" height="448" fill="#F5F5F7"/>
+  <rect x="38" y="54" width="1160" height="246" rx="42" ry="42" fill="#262628"/>
+  <rect x="38" y="300" width="1160" height="1" fill="#C7C7CC"/>
+  
+    <g transform="translate(54 96) scale(0.1796875)">
+  <defs>
+    <linearGradient id="vAtile" x1="160" y1="118" x2="820" y2="900" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#FFFFFF"/>
+      <stop offset="0.62" stop-color="#FBFDFF"/>
+      <stop offset="1" stop-color="#F2F7FF"/>
+    </linearGradient>
+    <linearGradient id="vAblue" x1="340" y1="200" x2="700" y2="830" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#24D8FF"/>
+      <stop offset="0.46" stop-color="#0A91FF"/>
+      <stop offset="1" stop-color="#0057D8"/>
+    </linearGradient>
+    <linearGradient id="vAblue2" x1="300" y1="320" x2="760" y2="780" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#48C9FF"/>
+      <stop offset="1" stop-color="#0067E8"/>
+    </linearGradient>
+    <linearGradient id="vAsoft" x1="272" y1="184" x2="760" y2="804" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#EAFBFF" stop-opacity="0.88"/>
+      <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
+    </linearGradient>
+    <filter id="vAinnerShadow" x="-20%" y="-20%" width="140%" height="150%">
+      <feDropShadow dx="0" dy="14" stdDeviation="15" flood-color="#0069DA" flood-opacity="0.20"/>
+      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.16"/>
+    </filter>
+    <clipPath id="vAclip"><rect x="96" y="96" width="832" height="832" rx="184" ry="184"/></clipPath>
+  </defs>
+  <rect x="96" y="96" width="832" height="832" rx="184" ry="184" fill="url(#vAtile)"/>
+  <rect x="98" y="98" width="828" height="828" rx="182" ry="182" fill="none" stroke="#E5EDF7" stroke-width="4"/>
+
+  <g filter="url(#vAinnerShadow)">
+    <path fill="url(#vAblue)" d="M512 196c-70 0-126 56-126 126v198c0 70 56 126 126 126s126-56 126-126V322c0-70-56-126-126-126Z"/>
+    <path fill="url(#vAsoft)" d="M512 216c-52 0-94 42-94 94v138c0 23 19 42 42 42h38c52 0 94-42 94-94V242c-20-16-46-24-80-24Z"/>
+    <rect x="468" y="346" width="88" height="19" rx="9.5" fill="#FFFFFF" opacity="0.96"/>
+    <rect x="468" y="397" width="88" height="19" rx="9.5" fill="#FFFFFF" opacity="0.96"/>
+    <rect x="468" y="448" width="88" height="19" rx="9.5" fill="#FFFFFF" opacity="0.96"/>
+    <path fill="none" stroke="url(#vAblue2)" stroke-width="48" stroke-linecap="round" d="M316 468v62c0 108 88 196 196 196s196-88 196-196v-62"/>
+    <path fill="none" stroke="#FFFFFF" stroke-width="12" stroke-linecap="round" stroke-opacity="0.44" d="M342 470v58c0 94 76 170 170 170"/>
+    <rect x="488" y="724" width="48" height="116" rx="24" fill="url(#vAblue2)"/>
+    <rect x="372" y="818" width="280" height="58" rx="29" fill="url(#vAblue2)"/>
+  </g></g>
+    <text x="146" y="334" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, SF Pro Display, Helvetica, Arial" font-size="30" font-weight="750" fill="#1D1D1F">A</text>
+    <text x="146" y="371" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, SF Pro Text, Helvetica, Arial" font-size="17" font-weight="560" fill="#6E6E73">Pure Blue Mic</text>
+
+    <g transform="translate(290 96) scale(0.1796875)">
+  <defs>
+    <linearGradient id="vBtile" x1="160" y1="118" x2="820" y2="900" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#FFFFFF"/>
+      <stop offset="0.62" stop-color="#FBFDFF"/>
+      <stop offset="1" stop-color="#F8FBFF"/>
+    </linearGradient>
+    <linearGradient id="vBblue" x1="340" y1="200" x2="700" y2="830" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#24D8FF"/>
+      <stop offset="0.46" stop-color="#0A91FF"/>
+      <stop offset="1" stop-color="#0057D8"/>
+    </linearGradient>
+    <linearGradient id="vBblue2" x1="300" y1="320" x2="760" y2="780" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#48C9FF"/>
+      <stop offset="1" stop-color="#0067E8"/>
+    </linearGradient>
+    <linearGradient id="vBsoft" x1="272" y1="184" x2="760" y2="804" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#EAFBFF" stop-opacity="0.88"/>
+      <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
+    </linearGradient>
+    <filter id="vBinnerShadow" x="-20%" y="-20%" width="140%" height="150%">
+      <feDropShadow dx="0" dy="14" stdDeviation="15" flood-color="#0069DA" flood-opacity="0.20"/>
+      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.16"/>
+    </filter>
+    <clipPath id="vBclip"><rect x="96" y="96" width="832" height="832" rx="184" ry="184"/></clipPath>
+  </defs>
+  <rect x="96" y="96" width="832" height="832" rx="184" ry="184" fill="url(#vBtile)"/>
+  <rect x="98" y="98" width="828" height="828" rx="182" ry="182" fill="none" stroke="#E5EDF7" stroke-width="4"/>
+
+      <g clip-path="url(#vBclip)"><circle cx="512" cy="544" r="330" fill="#EAF7FF" opacity="0.72"/><circle cx="282" cy="258" r="154" fill="#DDF8FF" opacity="0.62"/></g>
+      
+  <g filter="url(#vBinnerShadow)">
+    <path d="M512 214c-58 0-105 47-105 105v190c0 58 47 105 105 105s105-47 105-105V319c0-58-47-105-105-105Z" fill="none" stroke="url(#vBblue)" stroke-width="42" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M317 472v55c0 108 87 195 195 195s195-87 195-195v-55" fill="none" stroke="url(#vBblue)" stroke-width="46" stroke-linecap="round"/>
+    <path d="M512 722v112" fill="none" stroke="url(#vBblue)" stroke-width="46" stroke-linecap="round"/>
+    <path d="M388 844h248" fill="none" stroke="url(#vBblue)" stroke-width="48" stroke-linecap="round"/>
+    <path d="M470 354h84M470 409h84M470 464h84" fill="none" stroke="url(#vBblue)" stroke-width="18" stroke-linecap="round" opacity="0.9"/>
+  </g></g>
+    <text x="382" y="334" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, SF Pro Display, Helvetica, Arial" font-size="30" font-weight="750" fill="#1D1D1F">B</text>
+    <text x="382" y="371" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, SF Pro Text, Helvetica, Arial" font-size="17" font-weight="560" fill="#6E6E73">Thin Blue Glyph</text>
+
+    <g transform="translate(526 96) scale(0.1796875)">
+  <defs>
+    <linearGradient id="vCtile" x1="160" y1="118" x2="820" y2="900" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#FFFFFF"/>
+      <stop offset="0.62" stop-color="#FFFFFF"/>
+      <stop offset="1" stop-color="#F7FAFF"/>
+    </linearGradient>
+    <linearGradient id="vCblue" x1="340" y1="200" x2="700" y2="830" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#24D8FF"/>
+      <stop offset="0.46" stop-color="#0A91FF"/>
+      <stop offset="1" stop-color="#0057D8"/>
+    </linearGradient>
+    <linearGradient id="vCblue2" x1="300" y1="320" x2="760" y2="780" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#48C9FF"/>
+      <stop offset="1" stop-color="#0067E8"/>
+    </linearGradient>
+    <linearGradient id="vCsoft" x1="272" y1="184" x2="760" y2="804" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#EAFBFF" stop-opacity="0.88"/>
+      <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
+    </linearGradient>
+    <filter id="vCinnerShadow" x="-20%" y="-20%" width="140%" height="150%">
+      <feDropShadow dx="0" dy="14" stdDeviation="15" flood-color="#0069DA" flood-opacity="0.20"/>
+      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.16"/>
+    </filter>
+    <clipPath id="vCclip"><rect x="96" y="96" width="832" height="832" rx="184" ry="184"/></clipPath>
+  </defs>
+  <rect x="96" y="96" width="832" height="832" rx="184" ry="184" fill="url(#vCtile)"/>
+  <rect x="98" y="98" width="828" height="828" rx="182" ry="182" fill="none" stroke="#E5EDF7" stroke-width="4"/>
+
+      <g clip-path="url(#vCclip)">
+        <rect x="650" y="182" width="142" height="468" rx="42" fill="#E9F3FF" opacity="0.95"/>
+        <rect x="681" y="226" width="82" height="82" rx="22" fill="#1AB9FF" opacity="0.90"/>
+        <rect x="681" y="330" width="82" height="82" rx="22" fill="#087DFF" opacity="0.90"/>
+        <rect x="681" y="434" width="82" height="82" rx="22" fill="#005BE0" opacity="0.88"/>
+      </g>
+      
+  <g filter="url(#vCinnerShadow)">
+    <path d="M512 214c-58 0-105 47-105 105v190c0 58 47 105 105 105s105-47 105-105V319c0-58-47-105-105-105Z" fill="none" stroke="#0077F4" stroke-width="42" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M317 472v55c0 108 87 195 195 195s195-87 195-195v-55" fill="none" stroke="#0077F4" stroke-width="46" stroke-linecap="round"/>
+    <path d="M512 722v112" fill="none" stroke="#0077F4" stroke-width="46" stroke-linecap="round"/>
+    <path d="M388 844h248" fill="none" stroke="#0077F4" stroke-width="48" stroke-linecap="round"/>
+    <path d="M470 354h84M470 409h84M470 464h84" fill="none" stroke="#0077F4" stroke-width="18" stroke-linecap="round" opacity="0.9"/>
+  </g></g>
+    <text x="618" y="334" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, SF Pro Display, Helvetica, Arial" font-size="30" font-weight="750" fill="#1D1D1F">C</text>
+    <text x="618" y="371" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, SF Pro Text, Helvetica, Arial" font-size="17" font-weight="560" fill="#6E6E73">TagLauncher Style</text>
+
+    <g transform="translate(762 96) scale(0.1796875)">
+  <defs>
+    <linearGradient id="vDtile" x1="160" y1="118" x2="820" y2="900" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#FFFFFF"/>
+      <stop offset="0.62" stop-color="#FBFDFF"/>
+      <stop offset="1" stop-color="#F2F7FF"/>
+    </linearGradient>
+    <linearGradient id="vDblue" x1="340" y1="200" x2="700" y2="830" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#24D8FF"/>
+      <stop offset="0.46" stop-color="#0A91FF"/>
+      <stop offset="1" stop-color="#0057D8"/>
+    </linearGradient>
+    <linearGradient id="vDblue2" x1="300" y1="320" x2="760" y2="780" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#48C9FF"/>
+      <stop offset="1" stop-color="#0067E8"/>
+    </linearGradient>
+    <linearGradient id="vDsoft" x1="272" y1="184" x2="760" y2="804" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#EAFBFF" stop-opacity="0.88"/>
+      <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
+    </linearGradient>
+    <filter id="vDinnerShadow" x="-20%" y="-20%" width="140%" height="150%">
+      <feDropShadow dx="0" dy="14" stdDeviation="15" flood-color="#0069DA" flood-opacity="0.20"/>
+      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.16"/>
+    </filter>
+    <clipPath id="vDclip"><rect x="96" y="96" width="832" height="832" rx="184" ry="184"/></clipPath>
+  </defs>
+  <rect x="96" y="96" width="832" height="832" rx="184" ry="184" fill="url(#vDtile)"/>
+  <rect x="98" y="98" width="828" height="828" rx="182" ry="182" fill="none" stroke="#E5EDF7" stroke-width="4"/>
+
+      <g clip-path="url(#vDclip)"><circle cx="512" cy="512" r="294" fill="#0C8DFF" opacity="0.10"/><circle cx="512" cy="512" r="248" fill="#FFFFFF" opacity="0.64" stroke="#D9EEFF" stroke-width="5"/></g>
+      
+  <g filter="url(#vDinnerShadow)">
+    <path d="M512 214c-58 0-105 47-105 105v190c0 58 47 105 105 105s105-47 105-105V319c0-58-47-105-105-105Z" fill="none" stroke="#086FE8" stroke-width="42" stroke-linecap="round" stroke-linejoin="round"/>
+    <path d="M317 472v55c0 108 87 195 195 195s195-87 195-195v-55" fill="none" stroke="#086FE8" stroke-width="46" stroke-linecap="round"/>
+    <path d="M512 722v112" fill="none" stroke="#086FE8" stroke-width="46" stroke-linecap="round"/>
+    <path d="M388 844h248" fill="none" stroke="#086FE8" stroke-width="48" stroke-linecap="round"/>
+    <path d="M470 354h84M470 409h84M470 464h84" fill="none" stroke="#086FE8" stroke-width="18" stroke-linecap="round" opacity="0.9"/>
+  </g></g>
+    <text x="854" y="334" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, SF Pro Display, Helvetica, Arial" font-size="30" font-weight="750" fill="#1D1D1F">D</text>
+    <text x="854" y="371" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, SF Pro Text, Helvetica, Arial" font-size="17" font-weight="560" fill="#6E6E73">Glass Circle</text>
+
+    <g transform="translate(998 96) scale(0.1796875)">
+  <defs>
+    <linearGradient id="vEtile" x1="160" y1="118" x2="820" y2="900" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#FFFFFF"/>
+      <stop offset="0.62" stop-color="#FBFDFF"/>
+      <stop offset="1" stop-color="#EEF8FF"/>
+    </linearGradient>
+    <linearGradient id="vEblue" x1="340" y1="200" x2="700" y2="830" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#24D8FF"/>
+      <stop offset="0.46" stop-color="#0A91FF"/>
+      <stop offset="1" stop-color="#0057D8"/>
+    </linearGradient>
+    <linearGradient id="vEblue2" x1="300" y1="320" x2="760" y2="780" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#48C9FF"/>
+      <stop offset="1" stop-color="#0067E8"/>
+    </linearGradient>
+    <linearGradient id="vEsoft" x1="272" y1="184" x2="760" y2="804" gradientUnits="userSpaceOnUse">
+      <stop offset="0" stop-color="#EAFBFF" stop-opacity="0.88"/>
+      <stop offset="1" stop-color="#FFFFFF" stop-opacity="0"/>
+    </linearGradient>
+    <filter id="vEinnerShadow" x="-20%" y="-20%" width="140%" height="150%">
+      <feDropShadow dx="0" dy="14" stdDeviation="15" flood-color="#0069DA" flood-opacity="0.20"/>
+      <feDropShadow dx="0" dy="2" stdDeviation="3" flood-color="#003E8F" flood-opacity="0.16"/>
+    </filter>
+    <clipPath id="vEclip"><rect x="96" y="96" width="832" height="832" rx="184" ry="184"/></clipPath>
+  </defs>
+  <rect x="96" y="96" width="832" height="832" rx="184" ry="184" fill="url(#vEtile)"/>
+  <rect x="98" y="98" width="828" height="828" rx="182" ry="182" fill="none" stroke="#E5EDF7" stroke-width="4"/>
+
+      <g clip-path="url(#vEclip)"><path d="M96 690c118-68 244-58 388 34 166 107 308 84 444-42v246H96V690Z" fill="#EAF7FF"/><path d="M96 250c142-70 292-50 450 30 166 84 254 80 382 32V96H96v154Z" fill="#F5FCFF"/></g>
+      
+  <g filter="url(#vEinnerShadow)">
+    <path fill="url(#vEblue)" d="M512 214c-70 0-126 56-126 126v198c0 70 56 126 126 126s126-56 126-126V340c0-70-56-126-126-126Z"/>
+    <path fill="url(#vEsoft)" d="M512 234c-52 0-94 42-94 94v138c0 23 19 42 42 42h38c52 0 94-42 94-94V260c-20-16-46-24-80-24Z"/>
+    <rect x="468" y="346" width="88" height="19" rx="9.5" fill="#FFFFFF" opacity="0.96"/>
+    <rect x="468" y="397" width="88" height="19" rx="9.5" fill="#FFFFFF" opacity="0.96"/>
+    <rect x="468" y="448" width="88" height="19" rx="9.5" fill="#FFFFFF" opacity="0.96"/>
+    <path fill="none" stroke="url(#vEblue2)" stroke-width="48" stroke-linecap="round" d="M316 468v62c0 108 88 196 196 196s196-88 196-196v-62"/>
+    <path fill="none" stroke="#FFFFFF" stroke-width="12" stroke-linecap="round" stroke-opacity="0.44" d="M342 470v58c0 94 76 170 170 170"/>
+    <rect x="488" y="724" width="48" height="116" rx="24" fill="url(#vEblue2)"/>
+    <rect x="372" y="818" width="280" height="58" rx="29" fill="url(#vEblue2)"/>
+  </g></g>
+    <text x="1090" y="334" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, SF Pro Display, Helvetica, Arial" font-size="30" font-weight="750" fill="#1D1D1F">E</text>
+    <text x="1090" y="371" text-anchor="middle" font-family="-apple-system, BlinkMacSystemFont, SF Pro Text, Helvetica, Arial" font-size="17" font-weight="560" fill="#6E6E73">Compact Liquid</text>
+</svg>

--
Gitblit v1.9.3