Status Trio
Status Trio는 macOS 메뉴바 앱으로 Wi‑Fi·배터리·볼륨을 하나의 아이콘에 통합합니다
젤리로 만든 할로윈 버튼·시선 따라가는 눈·젤리 끈·4가지 맛·밝고 어두운 버전·단일 HTML·WebGL2
A Halloween button cast in gelatin: gummy eyes that follow you, jelly strings, four flavours, light and dark. One HTML file, raw WebGL2. Day 4 of a 7-day build challenge.
기타HTML · JavaScriptGitHub @krux-creates온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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.