Skip to content

메모장 탭과, 쓰면서 걸린 것들 - #47

Open
dongglehada wants to merge 4 commits into
mainfrom
feat/memo-entry
Open

dongglehada wants to merge 4 commits into
mainfrom
feat/memo-entry

Conversation

@dongglehada

Copy link
Copy Markdown
Contributor

한동안 쓰면서 적어준 목록을 한 브랜치에 담았습니다. 밤에 받은 말(할 일 탭 되돌리기,
메모는 메모장으로, 양산형 인상)까지 반영한 상태입니다.

메모장 탭

메모가 제 모델을 갖습니다(MemoNote). 할 일이 아닙니다 — 체크도 날짜도
카테고리도 없고, 한 장에 글이 있고 첫 줄이 제목입니다. 제목부터 묻지 않고(새 메모는
빈 채로 열리고 커서가 옵니다), 저장 단추도 없습니다. 고친 순서로 서고 고정이 맨 위,
빈 채로 나가면 지웁니다.

처음에는 '날짜 없는 할 일'을 메모라고 불러봤는데 그건 여전히 할 일이었습니다 —
체크가 붙고, 끝내면 내려가고, 분류가 따라왔습니다. 그래서 할 일 탭은 원래대로
되돌렸습니다
: 날짜 안 정한 할 일은 지금까지처럼 '날짜 없음' 칸에 그대로 섭니다.
두 탭은 다른 것을 담지, 같은 것을 나눠 담지 않습니다.

고친 것

무엇이 왜 그랬나
반복 일정을 할 일 탭에서 완료해도 캘린더가 몰랐다 '오늘' 칸이 아니면 체크가 isCompleted에 들어갔는데, 반복은 그 값을 아무도 안 읽는다. 이제 줄에 적힌 날짜를 체크한다
반복 일정의 날짜를 바꿀 길이 없었다 종일 반복이면 날짜 피커가 통째로 숨어 있었다. '첫 날'로 이름을 바꿔 되살렸다
압축 캘린더에서 요일과 숫자가 어긋났다 머리글은 고정인데 숫자 줄만 스크롤하는 구조에서, 1,041개 지연 로딩 + 위치 바인딩이 페이지 경계에 못 섰다. 세 페이지짜리로 바꿨다
완료한 막대가 안 보였다 9pt 글자에 취소선 + 불투명도 0.45. 0.7로
디데이가 달력·위젯에 못 갔다 캘린더가 보는 스냅샷에 isDDay가 없었다
한 줄 입력이 날짜를 못 읽었다 시각만 읽고 있었다(DateExpressionParser)
메모를 적는 길이 여섯 걸음이었다 행 단추를 '수정'에서 '메모'로, 입력창은 줄바꿈이 메모, 시트는 열면 커서·닫으면 저장

덤으로 압축 캘린더의 달 경계 깜빡임·눌림 표시·선택이 일요일 색을 덮던 것, 일정이
있는 날의 점, 할 일 탭 검색(빈 검색어가 목록을 지우지 않게 가드)까지.

양산형으로 읽히던 것 넷

기본 테마색 바이올렛(8B5CF6) → 깊은 청록(0F6E62), 목록 카드의 그림자 제거,
모서리 22 → 16, 읽기만 하는 칩은 캡슐을 안 채우고 글자만. 칩 안에서 "오늘 오전
10시"가 두 줄로 깨지던 것도 막았습니다. 하나하나는 작은데 넷이 모이면 "어디서 본
앱"이 된다는 게 요점이라, 경위는 DesignSystem/README.md에 적어뒀습니다.
아니다 싶으면 색과 그림자 둘만 되돌려도 됩니다.

확인

  • xcodebuild -scheme App test — 336건 통과(새 테스트: 메모장 7, 날짜 파싱 17,
    제목·메모 가르기 10)
  • tools/i18n_check.py — 247개, 빠진 번역 없음
  • xcodebuild -scheme MoscoWidget build — 통과
  • 시뮬레이터에서 화면으로 확인: 메모장, 할 일 탭, 하루 페이지, 달력, 스트립을 세 번
    민 뒤의 정렬

기기에서 봐야 하는 것

  • 메모를 적고 나갔다 다시 들어왔을 때 그대로 있는지(자동 저장)
  • 반복 일정을 '이번 주' 칸에서 완료했을 때 그 날짜의 달력 칸이 끝난 것으로 보이는지
  • 탭 바 아이콘 셋이 라벨 없이 구분되는지
  • 전체 인상이 달라졌는지

안 한 것

반복 일정 하루만 건너뛰기(skippedDayKeys). 삭제 확인이 "하루만 골라 삭제할 수는
없어요"라고 말하는 그 자리인데, 이번 덩어리가 이미 커서 뺐습니다. docs/BACKLOG.md에
남겼습니다.

🤖 Generated with Claude Code

dongglehada and others added 4 commits October 26, 2026 00:02
## 메모장

메모가 제 모델을 갖는다(`MemoNote`). 할 일이 아니라서 체크도 날짜도 카테고리도
없고, 한 장에 글이 있고 첫 줄이 제목이다. 제목부터 묻지 않고(새 메모는 빈 채로
열리고 커서가 온다), 저장 단추도 없다. 고친 순서로 서고 고정이 맨 위다.

한 번은 '날짜 없는 할 일'을 메모라고 불러봤는데 그건 여전히 할 일이었다 — 체크가
붙고, 끝내면 내려가고, 분류가 따라왔다. 그래서 **할 일 탭은 건드리지 않는다**:
날짜 안 정한 할 일은 지금까지처럼 '날짜 없음' 칸에 그대로 선다.

## 고친 것

- 반복 일정을 할 일 탭에서 완료해도 캘린더가 몰랐다 — '오늘' 칸이 아니면 체크가
  아무도 안 읽는 값(`isCompleted`)에 들어갔다. 이제 줄에 적힌 날짜를 체크한다
- 반복 일정의 날짜를 바꿀 길이 없었다 — 종일 반복이면 날짜 피커가 통째로 숨어
  있었다. '첫 날'로 이름을 바꿔 되살렸다
- 압축 캘린더에서 요일과 숫자가 어긋났다 — 1,041개 지연 로딩 + 스크롤 위치
  바인딩을 걷어내고 세 페이지짜리로. 달 경계 깜빡임, 눌림 표시, 선택이 일요일
  색을 덮던 것도 같이. 일정이 있는 날엔 점을 찍는다
- 완료한 막대가 안 보였다 — 톤 0.45 → 0.7
- 디데이가 달력·위젯에 못 갔다 — 스냅샷에 `isDDay`가 없었다. 날짜 옆 깃발과
  디데이 위젯
- 한 줄 입력이 날짜를 못 읽었다 — `DateExpressionParser`
- 메모를 적는 길이 멀었다 — 행 오른쪽 단추를 '수정'에서 '메모'로, 입력창은
  줄을 바꾸면 그 아래가 메모, 시트는 열면 커서·닫으면 저장
- 할 일 탭에 검색(빈 검색어가 목록을 지우지 않게 가드)

## 양산형으로 읽히던 것

기본 테마색 바이올렛 → 깊은 청록, 목록 카드의 그림자 제거, 모서리 22 → 16,
읽기만 하는 칩은 캡슐을 안 채우고 글자만. 칩 안에서 "오늘 오전 10시"가 두 줄로
깨지던 것도 막았다. 경위는 DesignSystem/README.md에 적었다.

테스트 336건·번역 검사·위젯 빌드 통과.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
앱 아이콘이 보라다. 아이콘과 앱 안의 강조색이 다르면 그게 더 어긋나 보이고,
홈 화면에서 이 앱을 찾는 단서도 그 보라다 — 양산형 인상은 색이 아니라
그림자·모서리·칩 쪽에서 덜어낸다.

그리고 새로 넣은 `체크_회차` 테스트가 `TodoListPage.occurrenceDate`에 달력을
안 넘겨 `.current`를 썼다. CI는 UTC로 돌아서 로컬(KST)에서만 통과했다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
생일·월급날은 "하는" 게 아니라 "오는" 것이다. 그런데 앱은 모든 항목에 완료를
요구했고, 안 하면 '지난 할 일' 칸에 영영 쌓였다 — 할 수 없는 것들이 거기 모이는
것이 그 칸이 무거워지는 가장 큰 이유였다.

새 종류가 아니라 깃발 하나다(`isCheckable`). 반복·알림·카테고리·캘린더·검색·
위젯을 그대로 물려받는다 — 생일은 매년, 월급날은 매월 반복이라 코드를 두 벌
들면 한쪽만 고쳐지는 날이 온다.

달력에는 남고, 세는 자리에서는 빠진다. 할 일 탭 · '할 일 N개 남음' · 과부하
배너 · 하루 마무리 알림 · 위젯의 "3/5" 요약 전부. 판정은 `countsAsRemaining(on:)`
하나로 모았다 — "안 끝냈다"와 "셀 필요가 없다"는 다른 말이다.

행에서는 체크 자리에 점이 서고 몸통을 눌러도 아무 일이 없다(비우면 그 줄만
제목이 당겨져 목록의 세로줄이 어긋난다). 위젯도 버튼 대신 점이다 — 눌러도
아무 일이 안 일어나는 버튼은 고장으로 읽힌다. 켜고 끄는 길은 꾹 눌러 나오는
메뉴 한 줄이고, 껐다 켜면 전에 체크해둔 것이 그대로 살아난다.

테스트 344건 통과(`CheckableTests` 8건은 빠져야 하는 자리들을 한데 묶었다).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
기능이 늘면서 화면이 복잡해졌다. 늘어난 것을 줄이는 대신, **같은 일에는 같은
그림, 다른 일에는 다른 그림**이 안 지켜져서 기능이 몇 개인지부터 헷갈렸다.

## 메모 기호는 하나다

탭 바·행 단추·'새 메모'·메뉴까지 전부 `note.text`, 아직 없을 때만 플러스가
붙는다(`note.text.badge.plus`). 없을 때 쓰던 `square.and.pencil`은 시스템이
"새로 쓰기/편집"에 쓰는 기호라 **메모 단추가 수정 단추로 읽혔다.** 모양이
갈리니 진하기로 구분할 필요도 없어졌다 — 그건 예전에 한 번 걷어낸 방식이다.

## 메뉴를 줄이고 순서에 뜻을 준다

수정 → (메모) → 디데이·체크 없애기 → 잠금화면·복사·옮기기 → 삭제.
성격을 정하는 둘을 나란히 두고, 되돌릴 수 없는 것은 맨 끝에 둔다.
**목록 행에서는 메모 항목을 뺀다** — 행에 단추가 있어서 같은 곳으로 가는 길이
둘이 된다. 단추가 없는 시간표 블록에서는 그대로 남는다(`showsMemoItem`).
'완료 체크 없애기'는 **'체크 없애기'** — 상태 이름보다 결과가 바로 읽힌다.

## 행에서 반복되던 글자를 뺀다

기본 카테고리는 이름을 안 적는다. 사람이 따로 만들지 않은 분류라 거의 모든
줄에 '할 일'이 반복됐다 — 훑을 때 그건 정보가 아니라 소음이다. 왼쪽 색 막대는
그대로라 분류가 사라지지도 않는다. 태그 줄에 세울 것이 하나도 없으면 줄 자체를
만들지 않는다(빈 줄은 설명 없는 여백만 남긴다).

## 죽은 것 정리

세 페이지 구조로 바꾸면서 안 쓰게 된 `WeekStripWindow`(1,041개 주 배열)와
투두형 메모 탭과 함께 사라진 문구 둘을 걷어냈다. `deadcode_audit.py`로 확인.

테스트 344건·번역 247개·위젯 빌드 통과.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant