- Keep bubble/microcopy strictly cat-themed; avoid pathfinding, algorithm, graph-theory, GPS, or Dijkstra/A* references.
- Do not have the cat say "meow" while it is sleeping.
- All SVG and icon fills must use theme tokens (light and dark), including hover states; no hardcoded colors that break in dark mode.
- Preserve a pixel-art aesthetic: when given a pixel SVG, integrate it as-is with
shape-rendering="crispEdges"and avoid smoothing or restyling. - Prefer
pnpmfor installs and scripts (this repo usespnpm-lock.yaml/pnpm-workspace.yaml).
- Next.js App Router project; entry layout/styles live in
app/layout.tsxandapp/globals.css. components/oneko.tsxis the shadcn registry entry — a thin React shell. Animation runs inhooks/use-cat-animation.ts; engine code lives underlib/oneko/(frame loop, pathfinding, bubbles, debug controls, persistence).- Bubble copy pools (
IDLE_MESSAGES,MOVING_MESSAGES,FREERUN_MESSAGES) are inlib/oneko/constants.ts; bubble selection/rendering is inlib/oneko/animation/bubbles.ts. - Chat bubble uses Geist Pixel via
geist/font/pixelas--font-geist-pixel-square; load it inapp/layout.tsx. - Theming uses
next-themes; tokens inapp/globals.csswith background#FFF(light) /#0A0A0A(dark) and accent palette ginger#E89F5E, blush#F4B8A8, sage#A8C3B5, fur gray#B8A89F. - Click/UI sound asset is at
components/sounds/click-soft.mp3. - Production domain is
oneko.dhrv.pw(lib/site-url.ts, SEO/OG metadata). - shadcn registry: root
registry.json;pnpm run registry:buildemitspublic/r/oneko.json;prebuildruns beforenext build; consumers runnpx shadcn@latest add https://oneko.dhrv.pw/r/oneko.json. - Inspiration attribution is in
components/inspiration-attribution.tsx; URL validation/fallback inlib/oneko/attribution-url.ts(links tohttps://github.com/adryd325/oneko.js, no trailing slash). - The cat mounts on
document.bodywith defaultz-index2147483646(DEFAULT_Z_INDEXinlib/oneko/constants.ts); fixed footer/attribution UI usesz-2147483647. - Playground settings:
components/oneko-playground-context.tsx(OnekoPlaygroundProvider/useOnekoPlayground()). - Lint/format:
pnpm lint(oxlint),pnpm fmt(oxfmt). Tests:pnpm test(vitest).