Skip to content

알람 관리

Sudapapa Diary의 **알람(Alarm)**은 일정과는 별도로 운영되는 시간 기반 알림입니다. “매일 7시에 일어나기”, “주중 오후 2시 약 먹기” 같은 반복 알림을 일정에 묶지 않고 독립적으로 관리할 수 있습니다.

알람과 일정 알림의 차이

  • 시계 알람(Clock Alarm) - 이 문서에서 다룹니다. 특정 시각에 무조건 울리는 독립 알림.
  • 일정 알림(Reminder) - 일정에 부착되어 일정 시작 N분 전에 울리는 알림. QuickAdd에서 설정합니다.
  • 두 종류 모두 같은 알림 인프라(reminderScheduler.js)를 통해 표시되며, 알림 문서에서 시스템 동작을 다룹니다.

사이드바의 알람 관리 메뉴를 클릭하면 알람 페이지가 열립니다. 화면은 두 패널로 나뉘어 있습니다.

좌측 패널우측 패널
시계 알람 - 새 알람 추가, 활성/비활성, 반복 설정일정 알림 목록 - 알림이 설정된 모든 일정을 한눈에 보여주는 읽기 전용 뷰
알람 관리 페이지 — 시계 알람 + 일정 알림 목록
알람 관리 — 좌측 시계 알람, 우측 일정 알림 목록
  1. 좌측 패널의 + 새 알람 버튼 클릭
  2. 모달에서 다음 항목 입력
    • 알람 이름(라벨) - 예: “기상”, “약 먹기”
    • 시간(HH:MM) - 24시간 형식
    • 반복 - 반복 안함 / 매일 / 주중 / 주말 / 사용자 지정
    • 팝업 토글 - 시스템 토스트 대신 화면 중앙 팝업 윈도우 사용
    • 소리 토글 - 알림음 ON/OFF
  3. 저장 클릭
  4. 목록에 즉시 추가되고, 다음 발화 시각이 자동으로 예약됩니다.
옵션발화 조건
반복 안함(none)한 번만 울리고 끝 (정확히는 매일 울림 + 사용자가 직접 끄도록 설계되어 있어, 일회성으로 쓰려면 발화 후 비활성 토글)
매일(daily)모든 요일
주중(weekdays)월·화·수·목·금
주말(weekends)토·일
사용자 지정(custom)체크박스로 선택한 요일만 (월~일)

알람 시각이 되면 두 가지 방식 중 하나로 표시됩니다.

Windows 알림 센터로 표시되는 가벼운 토스트입니다. 제목은 ⏰ 시계 알람, 본문에는 라벨 · HH:MM이 들어갑니다. 토스트는 Windows 알림 정책(집중 지원, 우선순위)을 따릅니다.

소리는 OS 기본 알림음을 사용합니다. 소리 토글이 OFF이거나 환경설정에서 notifications.muteAllSounds가 켜진 경우 무음으로 표시됩니다.

절전(슬립) 복귀 후 누락 알람 처리

Section titled “절전(슬립) 복귀 후 누락 알람 처리”

PC가 절전·잠자기 상태에 들어가면 setTimeout 타이머가 정지하므로 그 시간대의 알람을 놓칠 수 있습니다. Sudapapa Diary는 이를 방지하기 위해 다음을 수행합니다(sleepDetector.js + reminderScheduler.js).

  1. Electron powerMonitorsuspend/resume 이벤트 구독
  2. 절전 진입 시점을 기록
  3. 복귀(resume) 시 macOS 중복 발화 대비 1초 디바운스 후 콜백 실행
  4. 복귀 시각 - 절전 시간 범위에서 발화했어야 하는 알람을 즉시 트리거 (단, 5분 이상 늦은 알람은 노이즈 방지를 위해 스킵)
  5. 동일 알람의 중복 발화는 clock-{id}-{날짜} 키로 차단

기존 1분 폴링 방식의 드리프트 문제를 해결하기 위해, 시계 알람은 두 단계로 정밀하게 처리됩니다.

단계범위방식
1. 폴링 즉시 트리거알람 시각 -2초 ~ +2분checkReminders()가 1분 주기로 검사하다 즉시 발화
2. AlarmTimer 예약알람 시각이 미래일 때setTimeout 기반의 DefaultAlarmTimer가 정확한 시각에 콜백 호출

DefaultAlarmTimer는 setTimeout의 32비트 한계(~24.8일)를 자동으로 체이닝 처리하므로 매우 먼 미래의 알람도 안전하게 예약됩니다.

알람 카드의 토글 스위치로 일시 비활성화할 수 있습니다.

  • OFF 상태: 발화하지 않으며 예약된 타이머도 취소됩니다.
  • ON 상태: 다음 발화 시각에 자동으로 예약 + 폴링 검사 모두 활성화.

알람 카드의 삭제 버튼으로 개별 알람을 제거할 수 있습니다. 모든 알람을 일괄로 비활성화하려면 환경설정의 모든 알림 끄기(notifications.disableAll) 또는 방해 금지 시간을 설정하면 됩니다(자세한 내용은 알림 참고).

알람 페이지 우측 패널은 읽기 전용 일정 알림 뷰입니다.

  • 알림이 설정된 모든 일정 카드 표시
  • 일정 제목, 시작 시각, 알림 시점(예: 10분 전)
  • 카드를 클릭하면 해당 일정의 QuickAdd 편집 모드가 열려 알림을 수정/삭제할 수 있습니다.

이 패널에서는 새 일정을 만들 수 없습니다. 일정 자체를 추가하려면 캘린더 위젯이나 트레이 메뉴를 사용하세요.

시계 알람은 환경설정의 clockAlarms 키에 JSON 배열로 저장됩니다.

[
{
"id": "alarm-1714194000000",
"label": "기상",
"time": "07:00",
"enabled": true,
"repeat": "weekdays",
"customDays": null,
"popup": true,
"sound": true
}
]

이 설정은 내보내기/가져오기의 설정 백업에 포함되어 다른 PC로 옮길 수 있습니다.

현재 버전은 OS 기본 알림음을 사용하며, 사용자 지정 사운드 파일 업로드는 향후 업데이트로 제공될 예정입니다. 사운드를 끄고 싶다면 알람별 소리 토글을 OFF로 두거나, 환경설정의 모든 알림 소리 끄기를 켜세요.

Windows 11에서는 알림 토스트가 표시되지 않을 수 있으니 다음을 확인하세요.

  1. 설정 → 시스템 → 알림 - 알림 토글이 ON인지 확인
  2. 앱 알림 목록에서 Sudapapa Diary 항목이 활성화되어 있는지 확인
  3. **집중 지원(Focus Assist)**이 우선순위만/알람만이면 알람을 차단할 수 있음 - 끄기로 변경
  4. 야간 시간대에는 Windows 자체 방해금지 일정이 작동할 수 있음

팝업 옵션을 켠 알람은 Windows 알림 권한과 무관하게 표시되므로, 알림 권한 문제를 우회하려면 팝업 ON을 사용하세요.

증상해결
알람이 정해진 시각에 울리지 않음PC가 절전 상태였는지 확인 - 절전 5분 이내 복귀 시 자동으로 울림. 그 외에는 환경설정의 알림/방해금지 설정 확인
팝업이 다른 모니터에 표시됨메인 모니터 기준으로 계산됨 - 디스플레이 설정에서 주 모니터 변경 후 재시작
토스트는 안 뜨고 팝업만 뜸알람의 팝업 토글이 ON 상태 - OFF로 변경 후 저장
동일 알람이 두 번 울림macOS의 resume 이벤트 중복일 수 있음 - 1초 디바운스로 자동 차단되며 재현 시 GitHub 이슈로 보고
모든 알람이 멈춤환경설정의 모든 알림 끄기가 켜져 있을 수 있음 - 끄거나 알림 설정 확인

중요한 알람은 팝업 ON

Windows 알림 권한이 제한된 환경이나 듀얼 모니터 환경에서는 시스템 토스트를 놓치기 쉽습니다. 절대 놓치면 안 되는 알람은 팝업 옵션을 켜세요.

라벨은 짧고 명확하게

팝업과 토스트 모두 라벨이 본문 한 줄로 표시됩니다. “기상”, “약 먹기”처럼 짧고 명확한 표현이 가장 잘 어울립니다.

요일별로 분리

주중/주말 알람을 하나로 합치는 대신 두 개로 나누면, 한쪽만 일시 비활성화할 때 편합니다.

DND와 함께 사용

매일 새벽까지 작동하는 알람이 있다면 방해 금지 시간을 함께 설정해 야간 시간대만 알림을 차단할 수 있습니다.

Q. 일정 알림과 시계 알람의 가장 큰 차이는 무엇인가요?

일정 알림은 일정 시간에 종속되어 일정이 옮겨지면 알림 시각도 같이 옮겨집니다. 시계 알람은 일정과 무관하게 고정된 시각에 울리며, 일정이 없는 날에도 작동합니다.

Q. 절전 모드에서 PC가 꺼지면 알람이 PC를 깨우나요?

아니요. Sudapapa Diary는 OS의 깨우기(wake) 기능을 사용하지 않습니다. PC가 꺼져 있거나 절전 상태이면 알람이 울리지 않으며, 복귀 후 5분 이내라면 자동으로 보정됩니다.