2026-10-02

break-reminder에 뽀모도로 GUI와 독립 카운트다운 추가

break-reminder는 v0.13.0에서 CLI로 뽀모도로 모드를 켰다. 모드 전환은 break-reminder pomodoro on이었고, 대시보드에서 주기를 고르거나 업무와 무관한 타이머를 돌리는 길은 없었다. 2026-09-29에 v0.16.0으로 그 부분을 넣었고, 같은 날 v0.16.1·v0.16.2에서 영어·한국어 번역을 맞췄다.

뽀모도로를 화면에서 조작하기

대시보드와 메뉴 막대에 작업 세션 시작, 주기 상태, 길이 설정, 활동 감지 안내가 들어갔다. CLI로 모드를 바꾸는 흐름은 그대로 두고 화면에서도 주기를 보고 바꿀 수 있게 했다. 이 작업은 #20에 있다.

업무·휴식과 따로 도는 카운트다운

기존 뽀모도로는 키보드·마우스 활동을 보고 시간을 세서, 책을 읽을 때처럼 입력이 없는 시간은 정해 둔 길이대로 재지 못한다. 그래서 “코드 리뷰 15분”처럼 이름과 시간을 정해 두고 다른 일로 돌아가는 카운트다운을 업무/휴식 상태와 따로 돌게 넣었다. 이름과 프리셋을 두고 일시정지·재개·교체·재시작을 지원하며, 끝난 뒤에는 완료 카드를 남긴다. 타이머 데이터는 별도 JSON 저장소에 파일 잠금(flock)과 원자적 쓰기(atomic write)로 쓰고, ID·revision 충돌은 거절한다.

대시보드와 메뉴 막대를 닫아도 타이머가 끊기지 않게 로그인 세션에서 도는 launchd 워커(Aqua)가 매초 실제 시각 기준으로 끝나는 시각을 확인한다. 알림을 보내지 못해도 완료 기록은 남기고, 다시 보낼 수 있다. 전체화면 휴식 안내에는 읽기 전용 완료 안내를 붙였고, doctor에서 워커와 알림 상태를 본다.

GUI를 닫은 상태에서 실제 10초 타이머를 돌려 보니 끝나고 약 1.1초 뒤에 알림 요청이 기록됐고, 따로 띄운 launchd 워커가 죽었다가 다시 뜨는 경우와 내려가는 경우도 확인했다(#20). 메뉴 막대를 실제로 눌러 보는 것, 잠자기·깨우기와 로그아웃·로그인, Homebrew로 올리는 전체 과정은 아직 확인하지 못했다.

업그레이드와 번역

v0.15.x 이하에서 올리거나 brew upgrade만 한 뒤에는 한 번 break-reminder service install을 실행해야 한다. brew upgrade만으로는 LaunchAgent가 다시 올라가지 않아서 새 카운트다운 워커가 붙지 않는다. 시간 도구 설정 UI에서도 같은 설치를 할 수 있다.

v0.16.1(#21)은 뽀모도로·카운트다운 UI와 알림·오류를 공유 번역 목록으로 옮겼고, v0.16.2(#22)는 메뉴, 대시보드 탭, 휴식 안내, CLI 도움말, TTS, 진단까지 영어·한국어를 맞췄다. 명령·설정 식별자와 사용자가 쓴 이름은 그대로 둔다.

스톱워치와 예약 알람은 타이머를 일주일 써 본 뒤에 넣을지 정하기로 했다. brew upgrade devlikebear/tap/break-reminder 뒤에 break-reminder service install 한 번이면 된다.

같은 작업대에서 나온 이웃 도구입니다.