尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Three calm, storybook-night games for children that measure cognition without ever feeling like a test. Menus and game introductions use responsive, scrollable layouts. Measured gameplay stays on a fixed 390 × 844 dp reference canvas that scales to fit the screen's safe area.
| # | Game | Task it is built on | What it measures (never shown to the child) |
|---|---|---|---|
| 1 | Firefly Watch | Psychomotor Vigilance Task | median reaction time, lapses, false starts |
| 2 | Firefly Trail | Corsi block-tapping (spatial span) | anchor accuracy, span, tap timing |
| 3 | Night Watch | Mackworth Clock (vigilance) | hits, misses, false alarms, reaction-time steadiness, per-quarter counts |
npm install
npm run dev # http://localhost:3000
npm run build # production build
npx tsx scripts/check-forms.ts # verifies every stored session list against the design rules
npx tsx scripts/check-scoring.ts # self-checks the scoring engine on synthetic logs
npx tsx scripts/check-watch-progress.ts # catch, timeout, and pause/resume regressions
npx tsx scripts/check-trail-response.ts # empty, partial, and complete Done responses
npx tsx scripts/check-night-watch.ts # fixed-length runs and response-window boundaries
Art preview pages (for review only): /dev/skins, /dev/fox, /dev/companions, /dev/scenes, /dev/ui.
/ Welcome — the public landing page with the download button./basecamp Basecamp — the home place: the fox, the three games, the collection of rewards, the grown-ups link. First launch redirects to Choose what you'll catch. The installed app opens here./choose-skin — pick one of six original stimulus skins (firefly, butterfly, friendly pup, comet, glow jelly, star spark)./choose-world — Night Watch world: Forest Friends (fox, lanterns), Space Voyagers (otter astronaut, beacons), Neon Arcade (neon lynx, windows)./firefly-watch, /firefly-trail, /night-watch — the games. Each has Ready → practice → scored play → optional unscored cooldown → All done, plus pause, interruption, and stop-early overlays./settings — change skin / world, sound, reduced motion, text size, high contrast, read instructions aloud, gentle pace, short watch, delete all data./grown-ups — hold-to-enter page with per-game trends against the child's own usual, reliability labels, and per-session delete. The only place numbers appear.scripts/check-forms.ts enforces all of this.requestAnimationFrame). Taps use the pointer event's own timeStamp, not when handler code ran.src/
app/ routes (App Router); each page renders one client screen
components/
Stage.tsx scrollable menus or a 390×844 game canvas; `At` positions game elements in dp
ui/ buttons, chip, pips, speech bubble, reward card, big circle button, overlay
art/ all original vector art: scenes, Fox, Otter, Lynx, six skins, stones, lights, rewards
games/
firefly-watch/ Game 1 engine + screens
firefly-trail/ Game 2 engine + screens
night-watch/ Game 3 engine + screens (three worlds)
basecamp/ choose/ settings/ grown-ups/
lib/
forms/ the stored session lists and timing constants (TUNE values live here)
scoring/ scoring engine and trend series
db.ts encrypted IndexedDB (Dexie + WebCrypto)
session.ts finishSession, interruption hook, frame timing, timers
settings.tsx settings store (localStorage) and accessibility modes
audio.ts synthesised chime and quiet pad; voice instructions
theme.ts the palette from the design document
scripts/
check-forms.ts validates all stored lists
check-scoring.ts scoring engine self-check
gen-nightwatch-forms.mjs one-off generator used to produce the Night Watch forms
Every value marked TUNE in the design doc lives in src/lib/forms/*.ts as a named constant (WATCH_TIMING, TRAIL_TIMING, NIGHT_WATCH_TIMING). Change them there, never in a game file.
The ios/ folder is a Capacitor 8 native app with bundled Next.js screens, fonts, and artwork. It opens at Basecamp and works without a web server or an internet connection. Session history stays on the device. The website and native app have separate local storage.
Requirements: macOS, Xcode 26 or newer, Node.js 22 or newer. The app targets iOS/iPadOS 16.4 and newer. iPhone uses portrait; iPad supports portrait and landscape.
npm ci
npm run ios:sync # build the offline screens and copy them into Xcode
npm run ios:open # open ios/App/App.xcodeproj
In Xcode, choose the App scheme and an iPhone/iPad simulator, then Run. For a physical device, choose your Apple development team under Signing & Capabilities, keep automatic signing enabled, connect your device, select it, and Run. The starter bundle identifier is com.braincompass.basecamp; change it in both capacitor.config.ts and the Xcode target if your team needs a different identifier. Personal signing settings are not stored in the repository.
For a release archive, select Any iOS Device and use Product → Archive. An unsigned archive cannot be installed on a phone; distribution requires a matching signing profile. No App Store or TestFlight upload is performed by these scripts.
Every web-code update needs npm run ios:sync before rebuilding in Xcode. Native builds use a static export in out/; npm run build remains the normal website build. Both build modes use .next/, so stop a running production web server before switching modes, then rebuild it normally before npm start.
The native route handler serves each exported route's index.html, including cold launches, and preserves Next's navigation payloads. The app pauses on native background events. Keep the default capacitor://localhost origin unchanged so existing local history remains accessible. Simulator builds must use Xcode's normal local signing (do not disable signing), because WebKit needs the app identifier to persist its encryption key.
src/lib/audio.ts when they land.finishSession at the real engine when it is ready.The project is a standard Next.js app. Import the GitHub repo into Vercel with the default settings (framework: Next.js, build: npm run build); no environment variables are needed. The landing page is /, the app is /basecamp, and the web manifest installs the app to a phone's home screen from /.
src/lib/scoring) is pure and offline; the trend is ready well inside the 2-second budget. Every measure is labelled experimental until test-retest ICC reaches 0.70 and is excluded from any composite.