尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Drop in any file. It comes back as a fish. Same file, same fish, every time.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗My friend misspelled "Filet O' Fish". Now we have file-to-fish: Drop in any file, it comes back as a fish.
Same file, same fish, every time.
Nothing is uploaded — the first 64 KB is read in the browser, hashed, and thrown away. Back to the ocean. Like a fish.
The source link below the title points here. The whole thing
is one self-contained HTML file, so view-source on the deployed page is also the
whole program.
How it's built is in DESIGN.md; the file viewer prototype is in OCEAN.md.
The sea reads your actual clock, which is fine until you want to show someone a
particular sky. Three query parameters override it. They combine with &, and
none of them touch the fish.
| Knob | What it does |
|---|---|
?t=HH:MM | Pins the hour. Minutes are optional — ?t=7 is 07:00 — and the hour wraps at 24. |
?wx=<sky> | Pins a sky: dawn, sunrise, day, dusk, night, fog, rain. Anything else is ignored. |
?fx=<list> | Picks which lighting passes render. Absent means all of them. |
#f=... | Not a knob — a whole fish, packed by the send button. DESIGN.md has the format. |
fx has four switches: sky (scattering sky and tonemap), rays (soft atmospheric
light), water (Fresnel reflection and the sun path), bloom (glow). ?fx=none,
or classic, uses the classic palette with the refined stars, sun, and moon. A plain list turns on only what it
names — ?fx=sky,water. A list where every entry is negated turns everything
on except those — ?fx=-bloom. Mixing the two forms drops the negated half
without saying so.
Five to start from:
?t=07:30 — sunrise.?wx=dusk&t=17:30 — low sun, warm atmospheric light.?t=19:00 — dusk, rising moon.?t=23:00 — moonlit night.?fx=none — classic lighting, for comparison.Why the light does what it does is in DESIGN.md.
The water lab has a wave-intensity slider and all seven weather choices. Walk on the dock with WASD. Press Space to dive, V to change view, and Q to return. Click the scene to look around with the mouse, and press Esc to get the cursor back. Walking cannot take you off the dock. Underwater sound gets softer and more reverberant as you descend. Touch controls provide a movement stick, drag-look, Dive, Return, and depth buttons. Controls and integration limits are in INTEGRATION.md.
npm test runs lightweight checks without a browser.
npm run test:sky opts into browser/GPU checks, which can consume substantial CPU.
radiusAt() is a beta-ish profile curve swept around a spine. Seven archetypes
carry the variety — perch, torpedo, flat, eel, puffer, shark, angler — each setting
ranges for the profile exponents, depth, girth, stretch and tail type, plus optional
features: swordfish bill, puffer spikes, angler lure, barbels, second dorsal.
Continuous jitter alone only ever reads as one fish.
Patterns live in the fragment shader, keyed off object-space position quantised to a coarse grid so they block up with the facets. No textures.
Traits are pure functions of (name, size, MIME, hash), so a shared fish could be a URL rather than a database row.
The shipped six-song soundtrack lives in src/music.js: track data, arrangement
expansion, note compilation, SoundFont playback, and clock-based song selection.
/score is a noindex developer tool that imports that same source to show phrase-level
instrument activity and every compiled note in a piano roll.
npm run soundtrack:inspect # build and open the score inspector
npm run soundtrack:inspect:check # check phrase grouping and pitch conversion
soundtrack/scores.json and soundtrack/render.py are older renderer-neutral
listening sketches. Their WAV files are local build artifacts, not site assets.
A landed fish is not logged. Three buttons decide, and you get exactly one:
Making the dex a decision rather than a side effect is the whole point: giving a fish away has to cost something or sharing is just a copy button.
Dropping a folder logs the haul immediately. Keep and Release disappear. You can send the displayed fish or select back to the water without sharing it.
tools/reclaim.mjs is the local half of the ocean's delete. It walks a folder
of projects and lists what can be rebuilt: package installs, Rust target/,
virtual environments, gitignored build output, git worktrees, identical large
files, and runs someone marked with an INVALID.txt. Every row says how big it
is, why it can go, and the command that brings it back. Scanning changes nothing.
npm run reclaim -- ~/code --protect claude/threejs-tpt-gpu --json report.json
npm run reclaim -- ~/code --protect claude/threejs-tpt-gpu --trash herdr/target
Safe rows are rebuildable by a known command. Check rows need a human:
no lockfile, an unknown build script, uncommitted work, or a note to read.
Protected paths and the worktrees of protected repos are never trashed.
--trash moves folders to the macOS Trash. Worktrees go through
git worktree remove, which refuses dirty ones.