사이드바
Daynight 사이드바
역할
잠든 시각과 일어난 시각을 버튼 하나로 기록하고, 오른쪽 사이드바에서 수면 구간을 띠 차트로 보여 줍니다. 하루에 여러 번 자거나 밤낮이 바뀐 경우에도 쓸 수 있도록 날짜별이 아니라 시각이 찍힌 기록 단위로 저장합니다.
기록 파일
- 설정한 Daynight 폴더에 월별 파일
sleep-YYYY-MM.md로 저장합니다. 예:sleep-2026-10.md - 폴더 설정이 비어 있으면
sleep폴더에 저장합니다. - 폴더가 없으면 첫 기록을 남길 때 만듭니다.
- 기록은 기록 시각이 속한 달의 파일에 적습니다. 그 달의 파일이 없으면 머리행과 함께 새로 만듭니다.
- 파일 내용은 세 열 마크다운 표이며, 머리행과 값은 사용 언어와 관계없이 영어로 고정합니다.
| Date | Time | Type |
| --- | --- | --- |
| 2026-10-05 | 06:15 | sleep |
| 2026-10-05 | 13:00 | wake |
Date는YYYY-MM-DD,Time은 24시간제HH:mm,Type은sleep또는wake입니다.- 플러그인 전용 파일로 보고 새 행은 항상 파일 끝에 붙입니다.
읽기와 구간 계산
- 사이드바를 열 때 폴더의
sleep-*.md파일을 모두 읽어 하나의 기록 목록으로 합치고 시간순으로 정렬합니다. 월 경계는 따로 처리하지 않습니다. - 표 형식에 맞는 행만 읽고 머리행과 다른 줄은 무시합니다.
- 보관소 전체가 아니라 기록 폴더 안의 파일만 확인합니다.
- 읽은 기록은 파일별로 메모리에 들고 있다가, 파일이 생성·수정·삭제·이름 변경되면 그 파일만 다시 읽어 바꿔 끼웁니다. 폴더 설정이 바뀌면 새 폴더를 처음부터 읽습니다.
- 각 기록에서 다음 기록까지를 그 기록 종류의 구간으로 만듭니다.
sleep에서 시작하면 수면 구간,wake에서 시작하면 깨어 있는 구간이므로 두 구간이 번갈아 이어집니다. - 마지막 기록에서 현재 시각까지를 진행 중인 구간으로 봅니다.
- 낮잠과 주 수면을 구분하지 않고 같은 색으로 표시합니다.
사이드바 구성
위에서부터 다음 순서로 표시합니다.
- 상태
- 이동 막대: 표시 중인 시각 범위,
‹,↺(지금),› - 24시간 띠 차트
- 최근 기록(기본 4개)
- 바로가기 버튼
- 기록 버튼
기록 버튼을 뺀 나머지는 하나의 스크롤 영역입니다. 사이드바가 낮아도 기록 버튼은 항상 하단에 보입니다.
상태
- 현재 구간을 보고 있을 때
- 상태 점과
깨어 있음또는자는 중을 작게 표시합니다. 점은 깨어 있으면 아침색, 자는 중이면 테마 강조색입니다. - 마지막 기록 이후 경과 시간을
8시간 0분처럼 크게 표시합니다. - 그 아래에
13:00에 일어남 · 지난 24시간 수면 6시간 45분처럼 마지막 기록 시각과 지난 24시간 수면 합계를 표시합니다. 마지막 기록이 오늘이 아니면 날짜도 함께 표시합니다.
- 상태 점과
- 지난 구간을 선택했을 때도 이동하며 레이아웃이 흔들리지 않도록 같은 세 줄 구조로 표시합니다.
- 연한 회색 점과
10/4 수면또는10/5 깨어 있음처럼 구간이 시작된 날짜를 작게 표시합니다. - 구간 길이를 크게 표시합니다.
- 그 아래에 수면 구간이면
23:10에 잠듦 · 07:05에 일어남을, 깨어 있는 구간이면07:05에 일어남 · 23:40에 잠듦을 표시합니다. 시작한 날과 끝난 날이 다르면 날짜도 함께 표시합니다.
- 연한 회색 점과
- 시간 길이는 한국어에서
7시간 55분, 영어에서7h 55m형식입니다. - 기록이 하나도 없으면
아직 기록이 없어요와아래 버튼으로 첫 기록을 남겨 보세요를 표시하고, 이동 막대·차트·최근 기록은 숨깁니다.
띠 차트와 이동
- 24시간 구간을 가로 띠 하나로 그리고, 수면 구간은 테마 강조색, 깨어 있는 구간은 상태 점과 같은 아침색 막대로 번갈아 칠합니다. 첫 기록보다 앞은 빈 띠로 둡니다.
- 3시간 간격 눈금과 시각을 표시하고, 자정 위치에 날짜를 표시합니다.
- 밤 시간대(18시~6시)는 띠 배경을 연하게 어둡게 칠합니다. 막대 색은 낮밤과 관계없이 같습니다.
- 처음에는 현재 시각에서 끝나는 24시간을 보여 주고, 현재 시각 위치에 세로선을 그립니다.
‹와›는 시간 단위가 아니라 구간 단위로 이동하며, 수면 구간과 깨어 있는 구간을 번갈아 거슬러 갑니다. 현재에서‹를 누르면 가장 최근에 끝난 구간을, 다시 누르면 그 이전 구간을 선택합니다. 진행 중인 구간은 현재 화면과 같으므로 건너뜁니다. 가장 최근에 끝난 구간에서›를 누르면 현재로 돌아갑니다.- 선택한 구간을 차트 가운데에 둡니다. 다만 현재 시각 너머로는 넘어가지 않으므로, 이때는 현재 시각에서 끝나는 24시간을 보여 주고 세로선도 그립니다.
- 막대는 하나만 진하게 두고 나머지는 흐리게 표시합니다. 현재에서는 진행 중인 구간을, 구간을 선택하면 그 구간을 진하게 둡니다.
- 가장 오래된 구간에서는
‹를, 현재에서는›를 흐리게 비활성화합니다. ↺는 현재로 돌아갑니다. 이미 현재면 비활성화합니다.- 선택한 구간이 기록 삭제로 없어지면 현재로 돌아갑니다.
최근 기록
- 가장 최근 기록을 설정한 개수만큼(기본 4개) 시간순으로(가장 최근 기록이 맨 아래)
10/5 13:00 기상형식으로 표시합니다. - 맨 아래의 마지막 기록만 클릭할 수 있습니다. 클릭하면 옆에 버튼 테두리 없는 연필(
pencil)과×(x) 아이콘이 나타납니다. 아이콘은 Lucide 아이콘을 씁니다. ×를 누르면 그 행을 파일에서 삭제합니다.- 연필을 누르면 그 행이
날짜 [시각 입력칸] 종류 ✓ ×로 바뀌어 시각만 고칠 수 있습니다. 날짜와 종류는 바꾸지 않습니다.- 고친 시각은 바로 앞 기록보다 늦고 현재 시각보다 이르거나 같아야 합니다. 어긋나면
✓를 비활성화하고 행 아래에 이유를 표시합니다. ✓를 누르면 파일의 그 행을 새 시각으로 바꾸고,×를 누르면 수정을 취소합니다.- 고치는 동안에는 1분마다 다시 그리지 않아 입력이 끊기지 않습니다.
- 고친 시각은 바로 앞 기록보다 늦고 현재 시각보다 이르거나 같아야 합니다. 어긋나면
- 마지막 기록이 이전 달 파일에 있으면 그 파일에서 삭제합니다.
- 마지막 기록만 고치거나 지울 수 있으므로 기록은 항상
sleep과wake가 번갈아 나옵니다.
바로가기 버튼
- 최근 기록 아래 오른쪽에 아이콘 버튼 두 개를 둡니다. 기록이 없으면 숨깁니다.
- 파일(
file-text) 버튼은 마지막 기록이 든sleep-YYYY-MM.md파일을 엽니다. 월초에 아직 이번 달 기록이 없어도 빈 파일을 만들지 않고 지난달 파일을 엽니다. 지난 기록은 사이드바에서 고칠 수 없으므로 이 파일을 직접 고칩니다. - 대시보드(
moon) 버튼은 Daynight 대시보드를 엽니다.
기록 버튼
- 토글 버튼 하나를 둡니다. 마지막 기록이
wake이거나 기록이 없으면지금 자기,sleep이면지금 일어나기를 표시합니다. - 상태에 따라 색과 아이콘이 바뀝니다.
지금 자기는 남색 바탕에 달 아이콘,지금 일어나기는 주황 바탕에 해 아이콘입니다. - 누르면 현재 시각으로 반대 종류의 행을 추가합니다.
- 모바일에서 누르기 쉽도록 사이드바 하단에 넓게 배치합니다.
- 버튼을 누르면 살짝 눌리는 효과만 주고, 그 밖의 애니메이션은 넣지 않습니다.
대시보드
사이드바가 기록과 최근 24시간을 맡고, 대시보드는 장기 통계를 맡습니다. 메인 영역에 새 탭으로 열고, 이미 열려 있으면 그 탭으로 갑니다. 탭 아이콘은 moon이고, 화면 안에는 제목 없이 집계 기간 버튼만 오른쪽 위에 둡니다.
공통 규칙
- 위쪽 버튼으로 집계 기간을
7일,30일,90일,전체중에서 고릅니다. 기본은 30일이고 마지막 선택은 설정에 저장합니다. - 기간은 날짜가 아니라 현재 시각에서 거슬러 간 시간 범위입니다.
전체는 첫 기록부터입니다. 첫 기록 이전은 상태를 모르므로 어떤 기간이든 집계에서 뺍니다. - 수면을 날짜에 귀속하지 않고, 모든 계산을 시각 또는 구간 단위로 합니다. 낮잠과 주 수면도 구분하지 않습니다.
- 기간 시작에 걸친 구간은 시각 기반 계산(주된 시간대, 규칙성)에서는 기간 안의 부분만 자르고, 구간 기반 계산(각성 시간)에서는 끝이 기간 안에 있으면 통째로 넣습니다.
- 기록이 바뀌면 사이드바와 함께 다시 그립니다.
- 기록 누락을 따로 감지하지 않습니다. 버튼을 깜빡해 생긴 긴 구간도 그대로 집계되므로 기록 파일에서 직접 고칩니다.
카드 배치
- 주된 시간대: 전체 폭
- 규칙성, 각성 시간: 나란히. 대시보드 폭이 560px 이하면 위아래로 쌓습니다.
- 액토그램: 전체 폭
내용은 최대 900px 폭으로 가운데에 둡니다.
주된 시간대
- 하루를 시계 기준 15분 칸 96개로 나누고, 칸마다 기록이 있던 시간 중 잠든 시간의 비율을 구합니다.
- 비율이 임계값 이상인 칸이 이어진 덩어리를 수면 시간대, 나머지를 활동 시간대로 보고
수면 01:30–08:45,활동 08:45–01:30처럼 표시합니다. 자정을 넘는 덩어리도 하나로 셉니다. - 덩어리가 여러 개면 가장 긴 것을 크게, 나머지를 옆에 작게 표시합니다. 없으면
없음, 하루 전체면하루 종일을 표시합니다. - 그 아래에 칸별 비율 막대그래프를 그립니다. 임계값 이상인 막대는 진하게, 미만은 흐리게 칠하고 임계값 위치에 점선을 긋습니다.
- 임계값은 카드 아래 슬라이더로 10~90%, 10% 단위로 바꿉니다. 기본은 50%이고 설정에 저장합니다. 슬라이더를 움직이는 동안에는 이 카드만 다시 그립니다.
규칙성
- 수면 규칙성 지수(SRI)를 표시합니다. 기간 안에서 5분 간격으로 지금과 24시간 뒤가 같은 상태(잠/깸)인 비율을 구해 -100~100으로 옮깁니다. 100은 매일 같고 0은 무작위 수준입니다.
- 24시간 간격으로 견줄 기록이 없으면
—와기록이 부족해요를 표시합니다.
각성 시간
- 끝난 깨어 있는 구간만 셉니다. 진행 중인 구간은 뺍니다.
- 최장 각성 시간을 크게, 평균을 작게 표시합니다.
- 그 아래에 구간 길이 분포를 가로 막대로 그립니다. 4시간 단위로
0–4시간부터20–24시간까지 나누고 마지막 칸24시간+에 그 이상을 모두 넣습니다. 막대는 아침색입니다.
액토그램
- 하루에 한 줄씩, 그날 0시부터 다음 날 24시까지 48시간을 그리는 double plot입니다. 각 날이 위 줄 오른쪽과 아래 줄 왼쪽에 두 번 나와서 자정을 넘는 수면도 끊기지 않고 보입니다.
- 오래된 날이 위, 최근 날이 아래입니다. 첫 줄은 기간 시작 전날, 마지막 줄은 어제이므로 마지막 줄 오른쪽 절반이 오늘입니다.
- 줄 왼쪽에
10/17처럼 날짜를, 위에 6시간 간격 시각을 표시하고 자정 선을 진하게 긋습니다. - 기록이 있는 시간에만 바탕을 깔고 수면 구간을 테마 강조색으로 칠합니다. 첫 기록 이전과 현재 이후는 비워 둡니다.
설정과 명령
- 설정 탭에 Daynight 폴더 경로 입력란을 둡니다. Later 노트 대상 폴더 설정과 같은 방식입니다.
- 설정 탭에서 최근 기록 표시 개수를 정합니다. 최소 1개, 기본 4개입니다.
- 오른쪽 사이드바에 Daynight 뷰를 여는 명령과 리본 아이콘을 둡니다.
- 대시보드를 여는
Daynight: 대시보드 열기명령을 둡니다. 리본 아이콘은 추가하지 않습니다. - 대시보드의 집계 기간과 임계값은 설정 탭이 아니라 대시보드에서 바꾸고, 플러그인 데이터에 저장합니다.
- 사이드바 UI 문구는 플러그인 locales의 en/ko를 따릅니다. 파일에 적는 내용만 영어로 고정합니다.