2026-08-06 PulseUp 작업일지입니다. 오늘은 2건의 작업을 진행했습니다.
재시작 시 중앙 카운트 창에 완료 이미지 잔존
현상/기능
- COMBO(stress/loop) 운동이 정상 종료된 뒤 다시 시작하면 중앙 count 창에 카운트 화면 대신 이미지가 송출됨
- 위 수정 검증을 위한 렌더러 빌드 통과
작업
- `renderer/`, `renderer/`
- 운동 완료 시 타이머 창에 붙는 `end-counter-image-modal`(전체화면·z-index 9999)이 제거되는 경로가 없어, 재시작 시 스플래시(z-index 10000)가 사라지는 순간 카운트 화면을 덮고 있었음. `hideEndCounterImageOverlay`를 추가해 `hideSplashScreen`에서 항상 제거하도록 수정(모든 서킷 공통 적용)
- `renderer/components/`
- `DEFAULT_OPTIONS`가 `Required<Omit<..., 'onEscalate'>>`로 선언돼 옵셔널 콜백 `shouldBePlaying`을 요구하면서 `build:renderer`가 TS2741로 실패하던 기존 오류를 Omit 대상에 추가해 해소(타입 전용 수정)
COMBO 재생 로직 점검
현상/기능
- COMBO 운동 로직 전수 점검
- 점검에서 나온 3화면 화면 전환 문제 수정
- 휴식·물보충 duration이 0/누락인 기존 저장 데이터 보정
- COMBO 타이머 운동 카운트 정정
- 저장 순서에 없는 position이 조용히 콤보 A로 처리되는 문제
- 수정 검증
작업
- 저장(3운동 분할 저장·물보충/휴식 배치)과 재생(MOVE/SET/RND 계산, 라벨, 구간 전환 30초, 네비게이션)이 문서 규격과 일치함을 확인. COMBO-Stress에 3화면 A/B→C/D 전환 정책이 없어 물보충이 0초로 저장된 경우 MOVE 3·4에서 영상이 A/B에 머무는 문제, 휴식·물보충 duration 폴백 누락, COMBO-Loop 타이머 운동 카운트 중복 증가를 미결 이슈로 정리
- `combo-stress/`, `combo-stress/`
- COMBO-Loop와 같은 정책으로 `resolveComboStressSeekPosition`을 추가해 MOVE 1·2(A/B) ↔ MOVE 3·4(C/D) 경계에서만 `workout-seek-queue`(절대 이동)를 보내도록 함. 물보충 시퀀스에만 의존하던 전환을 콤보 전환 기준으로 바꿔 물보충 0초 저장·네비게이션 진입에서도 화면이 맞음
- `combo-stress/`, `combo-loop/`
- 저장 duration이 0이면 플랜(`restTime`/`waterBreakTime` 등)에서 SET·RND별 휴식과 마지막 행 물보충 값을 찾아 사용하도록 폴백을 통일. 브로드캐스트 duration과 타이머 지연을 같은 값으로 맞춰 메인은 즉시 넘어가고 타이머는 60초를 세던 불일치를 제거
- `renderer/components/`, `renderer/circuits/combo/`
- DOM 없는 순수 함수로 카운트 규칙을 분리하고 COMBO 전용 `combo-moves` 모드를 추가. 한 MOVE의 운동 3개를 position 단위로 세고, round가 SET(Stress)·RND(Loop) 번호인 COMBO에서는 round 변경으로 리셋하지 않고 메인 구간 전체를 누적. 기존 Stress/Loop/EMOM 규칙은 그대로 유지
- `resolveCombo*Index`를 추가해 순서 목록에 없으면 position prefix(A/B/C/D)로 콤보를 추정하도록 하고, `runComboLoopBreak`의 다음 운동 탐색을 `isComboLoopMainExercise` 필터로 통일해 임시운동·0초 시퀀스를 제외
- 3화면 MOVE 전환 seek, 0초 휴식·물보충 복구, 모드별 운동 카운트, position prefix 폴백에 대한 단위 테스트 추가. `vitest --run` 53파일 185테스트 통과, `build:main`·`build:renderer` 타입체크 통과
- **분석** · `combo-loop/*`, `combo-stress/*`, `web-app/.../`
- **Test** · , , , , `combo-*-`