Commits
GitHub 커밋 기반으로 자동 생성된 개발 기록
PWA 푸시 알림 시스템 구현 (v0.59.0)
🤖 3492 in / 711 out / 4203 total tokens Web Push API를 활용한 PWA 푸시 알림 시스템을 완성했다. VAPID 프로토콜로 서버 인증을 처리하고, 클라이언트는 Service Worker에서 push/notificationclick 이벤트를 수신한다. PushSubscription Prisma 모델로 endpoi
v0.58.0: 백그라운드 동기화로 오프라인 경험 개선
🤖 2661 in / 813 out / 3474 total tokens Service Worker Background Sync API를 활용해 오프라인 상태에서도 검색 요청을 놓치지 않도록 만들었다. 네트워크가 끊기면 요청을 IndexedDB 큐에 저장하고, 복구되는 순간 자동으로 동기화한다. Dexie.js로 sync-queue를 구현했고 최대 3
v0.56.0 - 성능 모니터링 시스템 구축
🤖 1641 in / 730 out / 2371 total tokens 이번 버전에서는 성능 가시화에 집중했다. 사용자 경험을 개선하려면 먼저 측정이 필요하니까. Vercel Analytics를 연동해서 Web Vitals를 자동으로 수집하도록 했다. layout.tsx에 Analytics 컴포넌트 하나 추가하는 걸로 끝이라 간편했다. 여기에 더해
다크모드 색상 호환성 개선: 하드코딩 색상을 CSS 변수로 교체
🤖 909 in / 599 out / 1508 total tokens ResultCard와 CompactCard 컴포넌트에 하드코딩된 색상값들이 다크모드에서 가독성 문제를 일으키고 있었다. 배경색이나 텍스트 색상이 고정되어 있어 다크 테마에서도 밝은 색상이 그대로 노출되는 문제다. 방문 뱃지, 메모 영역, 액션 버튼 등에서 dcfce7, 15803d
다크모드 색상 호환성 개선 및 CSS 변수 도입
🤖 909 in / 1673 out / 2582 total tokens ResultCard와 CompactCard의 하드코딩된 색상을 CSS 변수로 전환하여 다크모드 시각적 일관성을 확보했습니다. 방문 뱃지, 메모 영역, 액션 버튼 등의 색상을 변수로 교체하고 호버 배경을 투명하게 처리하여 다크모드에서도 깔끔한 UI를 유지했습니다. 특히 --purpl
TypeScript 타입 에러 3개를 0개로: 테스트 Mock 타입 확장하기
🤖 771 in / 792 out / 1563 total tokens search-cache.test.ts에서 발생하던 TypeScript 타입 에러 3개를 모두 해결했다. 기존 MockPlace 타입이 실제 DetourResult 타입과 맞지 않아 에러가 발생했다. MockPlace를 MockDetourResult로 확장하고, Place와 Rout
경마 게임종료 버튼 위치 정리 + 튜토리얼 색상 동기화
🤖 906 in / 679 out / 1585 total tokens 경마 미니게임 UI에서 사용자 흐름을 개선했다. 게임종료 버튼이 기존에는 replaySection 아래 별도로 떨어져 있었는데, 이를 hostControls 안으로 이동시켰다. 이제 방장 입장에서 버튼 순서가 게임 시작 → 주문받기 → 게임 종료 → 데이터 삭제로 자연스럽게 이어진
경마 튜토리얼 v3 — Shadow DOM으로 CSS 격리 + 11단계 확장
🤖 1603 in / 653 out / 2256 total tokens 튜토리얼 툴팁이 페이지 CSS에 오염되던 문제를 Shadow DOM으로 근본 해결했다. 기존엔 horse-race.css의 button { width: 100% } 같은 글로벌 스타일이 튜토리얼 버튼까지 침범했는데, 이제 Shadow DOM 내부에 완전히 격리된 스타일을 주입한다.
MidWayDer v0.53.0 - 설정 페이지와 캐시 관리 기능 추가
🤖 1681 in / 615 out / 2296 total tokens 캐시 데이터를 사용자가 직접 관리할 수 있는 설정 페이지를 추가했다. /settings 라우트를 새로 만들고, CacheSettings 컴포넌트에서 IndexedDB 기반 캐시의 크기와 항목 수를 보여준다. 삭제 전 ConfirmDialog로 확인을 받고, useCacheStat
ESLint any 타입 경고 21개를 모두 해결했다
🤖 1442 in / 604 out / 2046 total tokens v0.52.0에서 @typescript-eslint/no-explicit-any 경고 21개를 전부 제거했다. 이제 코드베이스에 any 타입이 없다. 주요 변경은 명시적 타입 정의다. PersonalizedDetourResult는 개인화 점수가 포함된 결과를, CacheQuery