Skip to content

할 일 탭 — 반복 일정 날짜와 키보드 (1.5.1) - #44

Merged
dongglehada merged 1 commit into
mainfrom
fix/todolist-repeat-and-keyboard
Oct 12, 2026
Merged

dongglehada merged 1 commit into
mainfrom
fix/todolist-repeat-and-keyboard

Conversation

@dongglehada

Copy link
Copy Markdown
Contributor

할 일 탭에서 나온 것 둘. 기능이 는 게 아니라 버그 수정뿐이라 **1.5.1 (빌드 10)**로 올렸다.

1. 반복 일정이 만든 날짜를 달고 있었다

2년 전에 만든 매주 회의가 "3월 5일"로 보인다. 그게 할 날인지 만든 날인지 알 수가 없다.

이상한 건 정렬은 처음부터 맞았다는 점이다. TodoListPage.keyDate가 앞날 묶음에서는 다음 회차를 보고 있었고, 거기 주석에도 "반복 일정을 원본 시작일로 세우면 2년 전에 만든 매주 회의가 영영 맨 위에 붙는다"고 적혀 있었다. 순서는 다음 회차, 글자는 원본 — 둘이 어긋나 있었으니 오히려 더 헷갈렸다. 맨 위에 선 것이 가장 오래된 날짜를 달고 있는 꼴이다.

고치면서 두 값을 갈랐다.

  • occurrenceDate — 어느 회차를 체크하느냐. 오늘 칸에만 넘긴다. 앞날 회차를 미리 체크할 일은 없다.
  • displayDate — 어느 날짜를 보여주느냐. 오늘·이번 주·나중 칸의 반복 일정에 다음 회차를 넘긴다.

'지난 할 일' 칸은 건드리지 않았다. 거기서는 "언제였는지"가 요점이고, 다음 회차를 찍으면 지난 칸에 앞날 날짜가 서는 꼴이 된다. '날짜 없음'도 마찬가지로 둔다.

여러 날짜리 반복은 끝날도 같은 만큼 민다 — 기간 길이가 변하면 안 된다.

2. 키보드

달력에서 쓰던 수식어를 그대로 복사해 둔 게 문제였다.

.ignoresSafeArea(.keyboard, edges: .bottom)

달력은 격자가 고정이라 이게 맞다. 없으면 칸 높이가 키보드만큼 줄어 통째로 찌그러진다. 그런데 할 일 탭은 스크롤 목록이다. 키보드를 무시하니 목록이 그 뒤로 깔려서, 가려진 행을 스크롤로도 꺼낼 수 없었다 — 적는 동안 방금 적은 것이 어디 갔는지 알 수가 없다.

수식어를 걷어서 목록이 줄고 입력창만 키보드 위에 앉게 되돌렸다. 그리고 내릴 길이 아예 없었다(달력에는 눌러서·쓸어내려서 내리는 처리가 있는데 이 탭에는 아무것도 없어서, 보내기를 누르거나 탭을 옮기는 수밖에 없었다). 목록에는 .scrollDismissesKeyboard(.interactively)를 붙였다 — 손가락을 따라 같이 내려간다.

달력처럼 탭으로 내리는 처리는 안 넣었다. 목록에서는 누르는 자리마다 할 일이 있어서, 키보드를 내리려는 손짓이 편집 시트를 여는 손짓과 겹친다.

어디에 뒀나

날짜 판정은 Shared/TodoListPage.displayDate에 뒀다. 화면 안에 두면 테스트를 한 줄도 쓸 수 없고, 이건 틀렸을 때 엉뚱한 날짜가 보인다로만 나타나는 종류라 눈으로 잡기 어렵다. 테스트 다섯을 묶었다 — 반복이 아닐 때, 앞날 반복, 오늘 칸, 지난 칸, 날짜 없음 칸.

확인한 것

  • App 스킴 빌드·테스트 통과
  • tools/artifact_check.sh 통과 (1.5.1 / 빌드 10, 네 곳 일치)
  • DesignSystem/README.md와 docs/STORE.md에 결정과 1.5.1 릴리스 노트(3개 언어)를 적었다

안 한 것

실기기에서 눈으로 보지 않았다. 키보드 동작은 테스트로 묶을 수 있는 종류가 아니라, 올리기 전에 한 번 만져보는 편이 안전하다. 특히 입력창이 키보드를 따라 올라가는 모양과, 목록을 쓸어내릴 때 키보드가 따라 내려가는 느낌.

🤖 Generated with Claude Code

할 일 탭에서 나온 것 둘. 기능이 는 게 아니라 버그 수정뿐이라 1.5.1 (빌드 10).

반복 일정이 원본 시작일을 달고 있었다. 정렬은 처음부터 다음 회차를 보고 있었는데
(TodoListPage.keyDate) 행에 찍히는 글자만 원본이라, 맨 위에 선 것이 가장 오래된
날짜를 달고 있는 꼴이었다 — 2년 전에 만든 매주 회의가 "3월 5일"로 보인다. 그게
할 날인지 만든 날인지 알 수가 없다.

체크할 회차(occurrenceDate)와 보여줄 날짜(displayDate)를 갈랐다. 앞날 회차를 미리
체크할 일은 없지만 날짜는 보여줘야 한다. '지난 할 일' 칸은 그대로 둔다 — 거기서는
"언제였는지"가 요점이고, 다음 회차를 찍으면 지난 칸에 앞날 날짜가 선다.

키보드는 달력에서 쓰던 수식어를 그대로 복사해 둔 게 문제였다. 달력은 격자가 고정이라
ignoresSafeArea(.keyboard)가 맞지만 할 일 탭은 스크롤 목록이다. 목록이 키보드 뒤로
깔려서 가려진 행을 스크롤로도 못 꺼냈고, 내릴 길도 없었다. 목록을 줄이고 입력창만
위에 앉게 되돌린 뒤 scrollDismissesKeyboard(.interactively)를 붙였다.

판정은 Shared/TodoListPage.displayDate에 두고 테스트 다섯을 묶었다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@dongglehada
dongglehada merged commit dee09cd into main Oct 12, 2026
1 check passed
@dongglehada
dongglehada deleted the fix/todolist-repeat-and-keyboard branch October 12, 2026 11:45
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