Commit 8d27de3
* feat: Add cybernetic mad scientist themes and 5 animation styles for repo cards
This commit introduces a creative suite of animations and themes inspired by
a cybernetic mad scientist laboratory aesthetic:
New Themes (5):
- mad_scientist: Electric blue laboratory with bright cyan tones
- mad_scientist_dark: Deep cyan with near-black background
- cybernetic_lab: Classic blue tech with laboratory feel
- robot_blue: Inspired by blue robot avatar aesthetic
- electric_laboratory: High-contrast electric cyan
New Animation Styles (5):
- bubbles: Fishtank-style floating bubbles rising from bottom
- embers: Glowing particles pulsing like burning embers
- radiant: Pulsing sun with rays emanating from center
- circuit: Dots traveling around edges like circuit paths
- sparks: Electric sparks flashing randomly
Features:
- All animations are pure CSS/SVG (no JavaScript)
- Lightweight and GPU-accelerated where possible
- Can be disabled with disable_animations parameter
- Animations automatically use theme colors
- Fully compatible with all existing repo card parameters
API Changes:
- Added animation_style parameter (bubbles|embers|radiant|circuit|sparks|none)
- Added disable_animations parameter (true|false)
Documentation:
- Added ANIMATION_EXAMPLES.md with comprehensive usage guide
- Includes recommended theme + animation combinations
- Full parameter reference and examples
* feat: Enhance bubbles animation with glowing jellyfish and drifting starfish
Transform the bubbles animation into a complete aquarium experience by adding:
Glowing Jellyfish:
- 2 jellyfish with pulsing glow effects
- 6 wavy tentacles per jellyfish that gently sway
- Drift from left to right with curved path
- Appear every ~12 seconds with staggered timing
- Gaussian blur glow filter for ethereal effect
- Uses theme titleColor for bioluminescent glow
Drifting Starfish:
- 2 five-pointed starfish with outlined edges
- Slow rotation while drifting (15s rotation cycle)
- Travel right to left with gentle wave motion
- Appear every ~15 seconds, offset from jellyfish
- Uses theme iconColor with titleColor outline
Animation Details:
- All creatures layered behind text for depth
- Long delays prevent overcrowding (12s and 15s cycles)
- Smooth fade in/out for natural appearance
- Tentacles wave independently for realistic movement
- Curved motion paths create organic flow
- Theme-colored for seamless integration
The aquarium now feels alive with multiple layers of movement!
* feat: Add floating wave effect to text in bubbles animation
Make the entire card feel like it's underwater by adding gentle wave
animations to all text elements in the bubbles animation style.
Text Animation Details:
- Title: Floats with 4s wave cycle
- Description lines: Each line has independent wave with staggered delays
- Line 1: 3.8s cycle, 0s delay
- Line 2: 3.5s cycle, 0.3s delay
- Line 3: 4.2s cycle, 0.6s delay
- Stats: Float with 3.8s cycle, 0.4s delay
- All other text: 3.2s cycle with 0.2s delay
Wave Patterns:
- textFloatWave: Smooth sine wave (down → up → down)
- textFloatWave2: Inverted wave (up → down → up)
- textFloatWave3: Gentler variant with 1.5px amplitude
Technical Implementation:
- Uses CSS translateY transforms for smooth animation
- Each element has unique timing to prevent synchronization
- Amplitudes kept small (1.5-2px) for subtle, non-distracting effect
- Combines with existing fadeIn animation for title
- All timing uses ease-in-out for organic feel
The result is a complete underwater immersion effect where text,
creatures, and bubbles all move independently like they're floating
in a cybernetic aquarium laboratory!
* feat: Add horizontal wave effect to text in bubbles animation
Implement a true character-by-character wave animation that ripples across
the title text from left to right, creating a mesmerizing underwater effect.
Implementation Details:
- Created wrapTextInWave() helper function that wraps each character in a
tspan element with staggered animation delays
- Each character has a 0.05s delay from the previous one
- Characters animate vertically (3px amplitude) in a 2s cycle
- Wave travels smoothly from left to right across the entire title
Technical Approach:
- Custom wave title rendering for bubbles animation only
- Hides default Card title via CSS when wave is active
- Preserves card height by not using setHideTitle for wave mode
- Maintains Firefox font size compatibility (15.5px)
- Uses CSS :not(:has()) selector to conditionally hide default title
Character Handling:
- Spaces converted to non-breaking spaces (U+00A0) to maintain spacing
- Each character gets unique animation-delay based on position
- Works with any length title (auto-truncates at 35 chars like normal)
Result:
A smooth, flowing wave that travels across the text like ripples on water,
perfectly complementing the jellyfish, starfish, and bubbles in the aquarium!
* feat: Add parameterization and color-morphing to wave animations
Enable full customization of the wave effect in bubbles animation with new
parameters and add a mesmerizing color-morphing gradient option.
New Parameters:
1. wave_speed (default: 2)
- Controls wave cycle duration in seconds
- Lower values = faster waves
- Range: 0.5 to 5 seconds recommended
2. wave_amplitude (default: 3)
- Controls vertical movement height in pixels
- Higher values = bigger waves
- Range: 1 to 10 pixels recommended
3. wave_delay (default: 0.05)
- Controls delay between each character in seconds
- Determines how fast wave travels horizontally
- Range: 0.01 to 0.2 seconds recommended
4. color_morph (default: false)
- Enables color morphing gradient effect
- Letters cycle through theme colors smoothly
- Animation cycle is 3x the wave_speed
Color Morphing Implementation:
- Animates through titleColor → iconColor → textColor → iconColor → titleColor
- Uses CSS fill animation for smooth transitions
- Combines with wave motion for dual-animation effect
- Automatically uses theme colors for perfect integration
Technical Details:
- Parameters passed through API → renderRepoCard → getAnimationStyle
- wrapTextInWave updated to conditionally add wave-char-morph class
- CSS keyframes dynamically generated with user parameters
- Proper type conversion (parseFloat) for numeric params in API
- Maintains backward compatibility with default values
Example Usage:
- Fast big waves: wave_speed=1&wave_amplitude=6&wave_delay=0.03
- Slow gentle: wave_speed=3&wave_amplitude=2&wave_delay=0.08
- Color morph: color_morph=true (combines with any wave params)
Documentation:
- Added Wave Customization Parameters section
- New usage examples showing different combinations
- Parameter reference with ranges and recommendations
- Examples of fast, slow, and color-morphing variations
* feat: Add blinking eye and ring of fire animations to stats card rank circle
Add two creative animation styles that replace the standard rank circle in stats cards:
- "eye": Blinking eyeball with animated eyelids, dilating pupil, and iris colored by theme
- "fire": Ring of 12 flickering flames with glowing center and animated rank letter
Features:
- Animated eyelid blink effect (4s cycle) with synchronized top/bottom movement
- Pupil dilation animation (3s cycle) for organic eye effect
- Ring of fire with 12 flames positioned around 40px radius circle
- Flame flicker animation with scale and position variations
- Glowing effects using radial gradients and filters
- Theme-aware coloring that adapts to card's title and ring colors
- New rank_animation parameter in API: "default", "eye", or "fire"
All animations are pure CSS/SVG with no JavaScript required.
* fix: Correct eye animation eyelid physics to use horizontal sliding doors
Replace ellipse-based eyelids with rectangular "doors" that properly simulate
blinking motion. The eyelids now:
- Use rectangles instead of ellipses to avoid balloon effect
- Top eyelid slides down from above (translateY: -38px → 0)
- Bottom eyelid slides up from below (translateY: 38px → 0)
- Both meet horizontally in the middle when closed
- Create proper door-opening effect when eye opens
This matches the natural physics of eyelids closing horizontally across
the eye rather than spherical objects overlapping.
---------
Co-authored-by: Claude <noreply@anthropic.com>
1 parent 8229c46 commit 8d27de3
6 files changed
Lines changed: 1045 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 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 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
51 | 52 | | |
52 | 53 | | |
53 | 54 | | |
| |||
131 | 132 | | |
132 | 133 | | |
133 | 134 | | |
| 135 | + | |
134 | 136 | | |
135 | 137 | | |
136 | 138 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
45 | 51 | | |
46 | 52 | | |
47 | 53 | | |
| |||
116 | 122 | | |
117 | 123 | | |
118 | 124 | | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
119 | 131 | | |
120 | 132 | | |
121 | 133 | | |
| |||
0 commit comments