尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A Halloween button cast in gelatin. A plump pill of pumpkin jelly with trick or treat suspended inside it and a gummy eyeball floating in each end. The eyes doze until your pointer comes near, then open and follow it. Jelly strings reach out and wrap your skeleton-gloved hand. Press and it squashes, the eyes go wide, and it bounces back taller before it wobbles to a stop.
Live → jelly-button.vercel.app · Demo video (MP4)
One HTML file, raw WebGL2, no dependencies, no build step.
Open index.html in a recent Chrome, Edge, Safari or Firefox, or serve the folder:
python3 tools/serve.py 3014 .
| Hover near it | the eyes open and follow you, the glow inside wakes, strings reach for the pointer |
| Hover over it | the skin swells toward your pointer and the highlight bends to follow you |
| Press | it dents under the finger and spreads; the eyes go wide with pinprick pupils |
| Release | it rebounds taller and narrower, rocks, and ripples ring out from where you let go |
1 – 4 or the chips | Pumpkin, Slime, Blood, Plum: the colours melt from one into the next |
D or the Dark chip | light studio or Halloween night (follows your system until you choose) |
T or the Tune chip | sliders for the jelly (wobble, glow, density…) and the strings (reach, snap, flow…) |
?flavor=slime&theme=dark | open straight into a flavour and theme |
It is a real <button>: keyboard focusable, and it fires jelly:activate.
JellyButton.element.addEventListener('jelly:activate', () => { /* … */ });
JellyButton.setFlavor('blood');
This is a fork of exteestudio's Venom Button (MIT). The top-down ray-marched scene, the string physics and the cursor icon that gets wrapped are theirs. Everything that makes it jelly and Halloween is new:
qa/contrast.py).Both rendered under identical conditions (same viewport and scale, same scripted pointer, qa/compare.mjs), scored 0–10:
| Venom | Jelly | |
|---|---|---|
| Material & realism | 9 | 7.5 |
| Motion & physics | 9 | 8.5 |
| Character & idea | 8.5 | 9 |
| Reads as a button (label contrast 14.2:1 vs ≥4.7:1) | 9.5 | 8 |
| Polish & restraint | 9.5 | 7.5 |
| Performance (uncapped, 2880×1800: ~310 vs ~250 fps idle, ~305 vs ~130 busy) | 9.5 | 7.5 |
| Robustness & access | 6.5 | 8.5 |
| Customisation | 7.5 | 9.5 |
| Overall | 8.6 | 8.3 |
Venom is one idea, polished over 25 rounds; the jelly trades some of that restraint and speed for character, flavours, themes and a working fallback. The biggest gap left is that the straight-down camera hides the jelly's sides, where real jelly shows the most.
Headless Chrome over the DevTools protocol, real time and real mouse input (qa/chrome.mjs):
node qa/look.mjs # idle, zoom, reach, hover, press, flavours, phone → qa/out/
node qa/eyes.mjs # eyes rest when the pointer is far, track when near
node qa/cursor.mjs # the pointer and its shadow: open floor, approaching, over the jelly, caught
node qa/ui.mjs # one cursor over the chips, the Tune card, hover swell and press dent
node qa/themes.mjs # both themes, every flavour, and the theme switch
node qa/strings.mjs # strings out, every flavour, both themes
node qa/legibility.mjs && python3 qa/contrast.py # label contrast, every flavour, both themes, two sizes
node qa/small.mjs # phone layout and reduced motion
CHROME_ARGS="--disable-3d-apis" node qa/nogl.mjs # the CSS fallback
CHROME_ARGS="--disable-gpu-vsync --disable-frame-rate-limit" node qa/perf.mjs # uncapped frame rate vs the original
CHROME_ARGS="--disable-gpu-vsync --disable-frame-rate-limit" node qa/demo.mjs # re-record media/demo.mp4
LICENSE). qa/ref/venom.html is an untouched copy, kept for the side-by-side tests.fonts/Geist-OFL.txt).left_ptr and hand2 from the Figma Community file "Cursors" (cursors/); the hand is redrawn inside as a skeleton glove.