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를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
VITE_SUPPORT_URL (optional, public): the destination of the "Keep the Puzzles Coming" button on custom puzzle pages. Set it to a full https:// URL in the production host's environment variables and redeploy (Vite reads it at build time). When unset or invalid, the button and its supporting sentence are simply not shown. See .env.example.
The end-to-end suite has its own guide — prerequisites, first-time setup,
architecture, safety model and troubleshooting — in
e2e/README.md. It never talks to production; see the
Safety section for how that is enforced rather than
merely intended.README 전문 보기 ↗Rainbow Categories and Mini share this repository. The Full game groups 16 words into four categories with a four-mistake limit and a hidden Rainbow category; see player rules. Treat format-specific behavior separately when changing Mini. Read configuration, database ownership, and the E2E guide before account or persistence work. The React/Vite UI is in src/; Supabase migrations and functions are in supabase/. Shared WorkOS identity does not mean another game's tables belong to Rainbow.
Release snapshot checked 2026-10-29: main at b90b7f676ab142c922fb7d5e882f2543d101bb89 has a successful Production deployment. PR 93 merged at that commit, including completed-game restoration, per-player browser progress and one-word results copy. PR 95 merged into its feature branch first at 6ade3a9, keeping guest decisions with the initiating account. The earlier October 28 snapshot at 32c96c3 was preview/CI evidence; the October 29 deployment record now establishes release. This does not establish real-phone acceptance or a new database migration.
PR 90, the first-game streak fix with a migration, is separate and still open. Its hosted application is not verified by this pass; the owner handoff reports it unapplied. Do not bundle or apply it while publishing documentation. The released PR 93 behavior preserves incomplete legacy records without inventing detailed results or assigning old unlabeled saves to an account.
Use Node 22+, npm ci, then npm run dev after configuring a local environment from .env.example. Use the E2E guide for the disposable backend; ordinary Vite dev is not itself a backend isolation guarantee. The test commands below are defined in package.json; browser tests need Docker and Playwright. CI results above do not establish real-phone or live shared-login acceptance. No suites were run manually for this documentation edit; the PR workflow runs its configured checks.
For a code-only release, review the exact PR head and CI, record the current production deployment, then verify the resulting deployment separately. Post-release account-switching and restored-result acceptance must not create production test scores. Roll back frontend code using the recorded previous deployment; database changes require their own reviewed rollback. The beta reset evidence is historical work, not an instruction to reset again. Current comprehensive backup coverage and restore readiness remain to be checked.
docs/RESULTS-COPY.md lists every end-of-game message, button and rule (results popup, Share text, Rainbow placement, streak flame), taken from the code, with source references.
Rainbow's only sign-in is the shared account service (WorkOS AuthKit), reached
through Supabase Auth's custom:platform provider; Rainbow keeps no passwords
and sends no email. Guests play with a per-browser device credential. The
whole database is supabase/migrations/ (one baseline file, applicable to a
blank project), and supabase/RAINBOW-OWNED-OBJECTS.md lists exactly what
Rainbow owns. See docs/CONFIG-INVENTORY.md for every environment value,
docs/WORKOS-LOCAL-SMOKE.md for the manual sign-in test, and
docs/PHASE-2-HOSTED-CHANGE-PREVIEW.md for the historical beta reset plan; see supabase/ops/beta-reset/ for its evidence.
VITE_SUPPORT_URL (optional, public): the destination of the "Keep the Puzzles Coming" button on custom puzzle pages. Set it to a full https:// URL in the production host's environment variables and redeploy (Vite reads it at build time). When unset or invalid, the button and its supporting sentence are simply not shown. See .env.example.
| Command | What it runs |
|---|---|
npm test | the component/unit suite (Vitest, jsdom) |
npm run typecheck | TypeScript for the app and the E2E harness — CI's first gate |
npm run typecheck:app / :e2e | one project at a time, when you want the other's result too |
npm run lint | ESLint |
npm run e2e:db:verify | every migration on a clean in-process Postgres, plus the full fixture seed — no Docker needed |
npm run e2e:test | the browser end-to-end suite against a disposable local Supabase stack |
The end-to-end suite has its own guide — prerequisites, first-time setup,
architecture, safety model and troubleshooting — in
e2e/README.md. It never talks to production; see the
Safety section for how that is enforced rather than
merely intended.