Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
翻译准备中
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证A yard where your pets talk to each other. Desktop pets for Codex and Claude Code users.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Your Codex pets, together on your desktop: up to 12 at once, talking to each other and cheering on your coding agent.
Website · User guide · Install guide · Releases · Developer docs
Site in: English · Korean · Japanese · Simplified Chinese
| Friends talk among themselves | Out on your desktop while you code | A friend for each coding agent |
|---|---|---|
| Area | What you get |
|---|---|
| Companions | Daisy, Clover (main mascot), Pip and Miso, with summer and winter outfits; or community pet files |
| Relationships | Friend, Partner, Dependable mentor, Playful younger sibling |
| Conversations | Chat with one friend, bring others in, or let them talk among themselves |
| AI connections | Signed-in Claude Code or Codex CLI, local Ollama, an OpenAI or Grok (xAI) API key, or an OpenAI-compatible server; one AI per friend |
| Places | Four places and imported backgrounds; season, time and weather controls |
| Play | Hide and seek, parade, tag |
| Garden and album | Dig for seeds, saplings and keepsakes; plant; fish and catch bugs |
| Desktop mode | Pets stroll the desktop (on macOS, over full-screen apps too) |
| Coding company | Hooks and MCP for Claude Code, Codex, Gemini CLI, Cursor, Grok Build, Qoder, Kimi Code and other MCP tools |
| Languages | English, Korean, Japanese, Simplified Chinese |
~/.codex/pets load on their own.playpets://import?url=<pet page> imports in one click.| System | Get it |
|---|---|
| macOS (Apple Silicon and Intel) | PlayPets_<version>_macos-universal.dmg from releases, or Homebrew (below) |
| Windows x64 / ARM | Microsoft Store or winget (below), or PlayPets_<version>_windows-x64-setup.exe / …_windows-arm64-setup.exe from releases |
| Linux x64 / arm64 | .deb (Debian, Ubuntu) or .AppImage (needs FUSE 2) |
# macOS
brew install gaerae/tap/playpets
# Windows
winget install --id 9NSKXQ6R187M --source msstore
| Tool | Where to paste | What it does |
|---|---|---|
| Claude Code (recommended) | ~/.claude/settings.json | Reports every step through hooks |
| Codex CLI | ~/.codex/config.toml, at the top | A note when a turn ends |
| Gemini CLI | ~/.gemini/settings.json | Reports every step through hooks |
| Cursor | ~/.cursor/hooks.json | Reports edits, commands and completion (observe-only hooks) |
| Grok Build | ~/.grok/hooks/playpets.json, a new file | Reports every step through hooks |
| Qoder | ~/.qoder/settings.json | Reports every step through hooks |
| Kimi Code | ~/.kimi-code/config.toml, at the end | Reports every step through hooks |
| Other MCP tools | The tool's MCP settings | set_pet_state, say, react, list_pets |
playpets hook claude|gemini|cursor|grok|qoder|kimi # hooks (stdin JSON, always exit code 0; prints {} for Gemini and Cursor)
playpets hook codex <json> # Codex notify
playpets mcp # MCP stdio server
playpets status <state> [message] [--pet name|ID] [--bridge file]
playpets say <message>
playpets react <action>
playpets pets
playpets run -- <command>
[!NOTE]
- The bridge stays on this computer: 127.0.0.1, with token authentication.
- Hooks leave out your prompts and tool inputs.
- Short completion and notification reports can still hold work details, including code in an agent's answer. They can reach your chosen AI provider in a friend's conversation.
- Review terminal and MCP messages before sending. Use a local model to keep those details on this computer.
PLAYPETS_DATA moves it.| Task | Command |
|---|---|
| Install dependencies | pnpm install --frozen-lockfile |
| Unit tests (Rust and page) | pnpm test |
| Format / check | pnpm run format / pnpm run lint (rustfmt, clippy, Oxlint, Oxfmt, Biome for CSS) |
| Real-app E2E | pnpm run test:e2e (isolated data folder, own test pet, fake AI server) |
| Live check against community sites | pnpm run test:live-import |
| Site dev server / build | pnpm run site:dev / pnpm run site:build (fails on a dead link) |
| Site screenshots (macOS) | pnpm run shots x.y.z → website/public/shots/ |
| Installer art | pnpm run art (DMG window, Windows installer pictures, Linux store screenshots) |
| macOS dmg | pnpm run dist:mac → release/macos/ |
| Linux packages and E2E | pnpm run dist:linux (Docker) → release/linux/ (deb, AppImage, E2E under Xvfb) |
| Windows x64 packages | pnpm run dist:windows (Docker) → release/windows/ (MinGW cross build, NSIS installer, portable zip, MSIX signed with a test certificate in msix-test/) |
| Redraw icons | pnpm run icons (assets/icon.png → every icon) |
| Workflow | What it does |
|---|---|
.github/workflows/build.yml | Builds and E2E on macOS, Windows x64/arm64, Linux x64/arm64 for every push to main and every PR; artifacts in the run |
.github/workflows/release.yml | After pnpm run release x.y.z and git push origin HEAD vx.y.z: builds every platform, drafts a GitHub release with the changelog section (Release a new version) |
.github/workflows/distribute.yml | On a published release: makes the winget manifest and the Homebrew cask; with tokens, opens the winget PR and updates the tap (Signing keys and secrets) |
src/ Page (HTML, CSS, JS, used as is with no build tool)
index.html Yard window · app.js entry point, render.js draws state, window.js window dragging, resizing and Always on top
overlay.html Desktop pet window · overlay/ its scripts and styles
core/ Shared by both windows: state, sprites and animation, strings (i18n, strings), icons
yard/ The yard: the painted scenery, friends, games, treats, the garden and its gifts,
fishing and bugs, closeness, seasonal events and the yard's sounds
content/ What the yard is made of, as data: catalogue, composition, events · art/ its drawings
panel/ Side panel: tabs, friends, chat, friend settings, AI connections, invite, settings
styles/ Styles by area (base, shell, scenery, yard, panel, dialog, loaded in this order)
src-tauri/src/ App core (Rust)
main.rs Startup wiring · app.rs state (app/ loading, sprites) · commands.rs the COMMANDS table
chat/ Chat, AI connections (subscription CLIs, HTTP), prompts
pets/ Pet files, import from an address or a ZIP, friends in the yard
agent/ Coding agents: the app's CLI mode (hooks, MCP) and the bridge
desktop/ Desktop overlay and strolling
i18n/ Backend strings tables
*.rs window, tray, system, store (data files), update, links (playpets://)
tests/ Page and script unit tests (*.test.mjs) and real-app E2E (e2e.mjs) · Rust tests live in each .rs file
packaging/ Distribution builds: macos (dmg), linux and windows (Docker, MSIX)
scripts/ Dev tools (release, distribution channels, site preparation, screenshots, installer art, OG images, mascot pets, measurement, icons)
assets/ Source art: icon, mascot, starter companions, banner and demo GIF
docs/ Developer docs (architecture, standards, how-to, decisions, design records)
website/ The site (VitePress): landing page, user guide and release pages in English (the root), Korean (ko/), Japanese (ja/) and Simplified Chinese (zh-hans/); developer docs are copied in from docs/ to dev/
src-tauri/src/desktop/overlay.rs).WebView2Loader.dll next to the exe (the installer and the portable zip include it). An MSVC build links it statically.packaging/windows/msix/AppxManifest.xml.
playpets.exe.MSIX_PUBLISHER.release/windows/msix-test/README.txt.app.playpets is the data folder name; it never changes after release.assets/.pet.json.