husteno-o feat: code review system, type safety, error handling, AI provider fallback · 9/9/2026
1985bf3
67 lines · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" fill="none">
  <defs>
    <linearGradient id="logo-gradient" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" style="stop-color:#22c55e"/>
      <stop offset="50%" style="stop-color:#3b82f6"/>
      <stop offset="100%" style="stop-color:#8b5cf6"/>
    </linearGradient>
    <linearGradient id="logo-gradient-alt" x1="0%" y1="0%" x2="100%" y2="100%">
      <stop offset="0%" style="stop-color:#16a34a"/>
      <stop offset="100%" style="stop-color:#2563eb"/>
    </linearGradient>
    <filter id="glow">
      <feGaussianBlur stdDeviation="4" result="coloredBlur"/>
      <feMerge>
        <feMergeNode in="coloredBlur"/>
        <feMergeNode in="SourceGraphic"/>
      </feMerge>
    </filter>
  </defs>
  
  <!-- Background circle with gradient -->
  <circle cx="256" cy="256" r="240" fill="url(#logo-gradient)" opacity="0.1"/>
  
  <!-- Main pulse ring -->
  <circle cx="256" cy="256" r="200" stroke="url(#logo-gradient)" stroke-width="2" opacity="0.3" fill="none">
    <animate attributeName="r" values="190;210;190" dur="3s" repeatCount="indefinite"/>
    <animate attributeName="opacity" values="0.3;0.1;0.3" dur="3s" repeatCount="indefinite"/>
  </circle>
  
  <!-- Second pulse ring -->
  <circle cx="256" cy="256" r="160" stroke="url(#logo-gradient)" stroke-width="1.5" opacity="0.2" fill="none">
    <animate attributeName="r" values="150;170;150" dur="4s" repeatCount="indefinite"/>
    <animate attributeName="opacity" values="0.2;0.05;0.2" dur="4s" repeatCount="indefinite"/>
  </circle>
  
  <!-- Central hub - stylized "D" shape -->
  <g filter="url(#glow)">
    <!-- Left vertical bar of D -->
    <rect x="140" y="140" width="32" height="232" rx="16" fill="url(#logo-gradient-alt)"/>
    
    <!-- Curved part of D -->
    <path d="M172 140 C280 140, 360 196, 360 256 C360 316, 280 372, 172 372 L172 336 C256 336, 320 300, 320 256 C320 212, 256 176, 172 176 Z" fill="url(#logo-gradient)"/>
  </g>
  
  <!-- Pulse dots representing activity -->
  <circle cx="380" cy="200" r="8" fill="#22c55e">
    <animate attributeName="opacity" values="1;0.3;1" dur="2s" repeatCount="indefinite"/>
  </circle>
  <circle cx="400" cy="256" r="6" fill="#3b82f6">
    <animate attributeName="opacity" values="0.3;1;0.3" dur="2.5s" repeatCount="indefinite"/>
  </circle>
  <circle cx="380" cy="312" r="8" fill="#8b5cf6">
    <animate attributeName="opacity" values="1;0.3;1" dur="1.8s" repeatCount="indefinite"/>
  </circle>
  
  <!-- Connection lines from center to dots -->
  <line x1="340" y1="220" x2="380" y2="200" stroke="#22c55e" stroke-width="2" opacity="0.6">
    <animate attributeName="opacity" values="0.6;0.2;0.6" dur="2s" repeatCount="indefinite"/>
  </line>
  <line x1="340" y1="256" x2="400" y2="256" stroke="#3b82f6" stroke-width="2" opacity="0.6">
    <animate attributeName="opacity" values="0.2;0.6;0.2" dur="2.5s" repeatCount="indefinite"/>
  </line>
  <line x1="340" y1="292" x2="380" y2="312" stroke="#8b5cf6" stroke-width="2" opacity="0.6">
    <animate attributeName="opacity" values="0.6;0.2;0.6" dur="1.8s" repeatCount="indefinite"/>
  </line>
</svg>