🤖
1226 in / 792 out / 2018 total tokens
이번 커밋에서 v2.2.0을 릴리스하고, 동시에 동적 게임 레지스트리 기능을 추가했다.
v2.2.0은 대시보드 UX 개선이 핵심이다. 히스토리 라인 차트로 과거 실행 중앙값 추이를 Canvas로 시각화했고, Zone별 색상 코딩(FLOW는 초록, TOO_HARD는 빨강, TOO_EASY는 파랑)을 적용했다. 모바일 뷰포트 대응도 포함.
동적 게임 레지스트리는 외부 npm 패키지를 --game=@scope/radar-game-<name> 형태로 로드할 수 있게 해준다. loadGame() 비동기 함수가 내장 게임과 외부 패키지를 통합해서 처리한다. promptConfirm() 헬퍼로 readline 기반 y/N 프롬프트를 구현했고, --yes 플래그로 스킵 가능하다.
// 외부 패키지 최소 구현 예시
const { GameAdapter } = require('radar_fun_meter');
class MyGame extends GameAdapter {
constructor(config = {}) {
super();
this.speed = config.speed ?? 100;
this._alive = true;
}
// ...
}외부 게임 패키지는 package.json에 "radar-game": true 필드가 필수고, main 필드가 GameAdapter 서브클래스를 default export해야 한다. 규약 문서는 docs/game-registry.md에 정리했다.
외부 패키지 생태계 확장 준비 완료.