Skip to content

fix(mindrecord): 다크모드에서 헤더·카드 라벨이 읽히지 않는다 — 배선은 돼 있으나 화면이 안 맞음 #1719

Closed

Description

@Sadturtleman

작업 유형

bug — 버그·오동작

주 담당 모듈

mindrecord — 마음의 기록

개요

#269 QA 회귀의 「다크모드 (지원 시)」 항목 실측분이다. 앱이 시스템 다크모드를 따라가도록 배선돼 있는데, 실제 화면은 부분만 반전돼 글자가 안 보인다.

「지원하지 않으니 해당 없음」이 아니다 — AfternoteTheme 이 isSystemInDarkTheme() 로 갈라 darkColors() 를 실제로 물린다.

// core/ui/.../theme/Theme.kt
isDarkTheme: Boolean = isSystemInDarkTheme(),
...
val currentColor = if (isDarkTheme) darkColors else colors

darkColors() 자체는 토큰을 제대로 뒤집는다(white = Black, black = White, gray1 = Gray9 …).

실측 (기록 탭 → 주간리포트, night mode on)

자리 증상
화면 헤더 「마음의 기록」 검정 배경에 검정 글자 — 거의 보이지 않음
주간 요약 카드 배경은 밝은 채로 남고 그 위 「WEEKLY SUMMARY」·기간·카운트 라벨이 저대비로 흐려짐
「나의 감정 키워드」 버블 검정 원 → 흰 원으로 반전. 카드 배경도 함께 반전돼 시안 의도와 다름

원인 후보

토큰을 쓰지 않고 색을 코드에 박은 자리가 반전을 따라가지 못한다. feature/mindrecord/presentation main 소스에만 Color(0xFF…) · Color.White · Color.Black 이 29곳이다.

DailyCalendar.kt · DailyQuestionBanner.kt · DeleteConfirmDialog.kt · InsightCard.kt
LinkBottomSheet.kt · MediaSelectBottomSheet.kt · MemoriesCard.kt · ReceiverSelectBottomSheet.kt …

예: DailyCalendar 의 캘린더 카드가 containerColor = Color(0xFFFFFFFF) 로 흰색을 박아 둔다 — 다크에서도 흰 카드가 그대로 남는다.

판정이 필요한 것

다크모드를 지원할 것인가부터 정해야 한다. 지금은 「배선은 돼 있는데 화면은 안 맞춰진」 중간 상태라 사용자에게 가장 나쁘다.

선택 할 일
지원한다 하드코딩 색 29곳을 토큰으로 옮기고 시안의 다크 팔레트를 확정
지원하지 않는다 AfternoteTheme 이 isSystemInDarkTheme() 를 보지 않게 하고 라이트를 고정 (한 줄)

디자인 확정 전이라면 후자로 먼저 막아 두는 편이 안전하다 — 지금 상태로 다크모드 사용자가 앱을 열면 헤더부터 읽히지 않는다.

재현

  1. adb shell cmd uimode night yes (또는 시스템 설정에서 다크 테마)
  2. 앱 → 기록 탭 → 주간리포트
  3. 헤더와 요약 카드 라벨 대비를 확인

실측 환경: Medium_Phone 에뮬레이터(API 36) · 실 백엔드 · 2026-09-02 12:27 KST.

참고

Activity

  1. self-assigned this
    on Sep 2, 2026
  2. github-actions commented on Sep 2, 2026

    @github-actions
    Contributor

    bug 이슈는 사이드바 Fields > Priority 로 심각도를 지정해야 합니다. 판정 기준:

    • Urgent: 치명 — 크래시·데이터 소실·보안 무력화·핵심 경로 차단·가짜 성공
    • High: 심각 — 실패·틀린 값의 정상 위장, 핵심 기능 무동작
    • Medium: 불편 — 우회로가 있는 오동작·틀린 표시, 핵심 흐름은 유지
    • Low: 경미 — 문구·정렬·마감 품질 흠, 기능 영향 없음

    값이 비어 있어도 이슈를 닫지는 않습니다. 이 안내는 이슈당 한 번만 답니다.

  3. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 2, 2026
  4. removed
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 3, 2026
  5. Sadturtleman commented on Sep 7, 2026

    @Sadturtleman
    CollaboratorAuthor

    결정: 다크모드를 지원하지 않는다 (2026-09-07)

    본문의 두 갈래 중 「지원하지 않는다」 로 확정했다. 시안의 다크 팔레트가 확정되지 않은 채 배선만 살아 있는 중간 상태가 양쪽 끝보다 나빴다 — 헤더가 검정 배경에 검정 글자로 읽히지 않았다.

    잠금은 이미 서 있다

    이 결정이 요구하는 변경은 #1723(fix(core-ui,app): 다크 팔레트 확정까지 팔레트·시스템바를 라이트로 잠근다)에서 이미 develop 에 들어갔다. 오늘 현재 상태를 다시 확인했다.

    자리 상태
    core/ui/.../theme/Theme.kt isDarkTheme: Boolean = false — 기본값이 라이트 고정. isSystemInDarkTheme() 은 KDoc 의 「되돌릴 때」 안내로만 남았다
    app/.../LightEdgeToEdge.kt enableLightEdgeToEdge() 로 시스템바 아이콘도 라이트 고정. MainActivity·DebugSettingsActivity 가 여기로 모인다
    스플래시 windowLightStatusBar·windowLightNavigationBar 로 night 한정자에서도 어긋나지 않는다
    회귀 잠금 ThemeDarkModeLockTest(night 한정자에서 라이트 팔레트 확인) · LightSystemBarLockKonsistTest(무인자 enableEdgeToEdge 재유입 차단)

    프로덕션에 다크 진입점이 남아 있지 않은 것도 확인했다 — isDarkTheme = true 를 넘기는 자리는 MemorialVideoThumbnailScreenshotTest 하나이고, 그건 다크 변형을 일부러 렌더하는 스크린샷 테스트다.

    하드코딩 색 29곳은 어떻게 되나

    본문이 든 「토큰을 쓰지 않고 색을 박은 자리 29곳」은 이 결정으로 급하지 않게 됐다. 라이트 고정이라 반전을 따라가지 못하는 상황 자체가 생기지 않는다. 다만 다크 팔레트가 확정되면 그 29곳이 다시 선행 작업이 되므로, 되돌릴 때의 순서를 Theme.kt KDoc 에 남겨 뒀다(팔레트 기본값 · enableLightEdgeToEdge · 스플래시 세 곳).

    디자인이 다크 팔레트를 확정하면 그때 새 이슈로 연다. 그 전까지 이 이슈로 열어 둘 이유가 없어 닫는다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:mindrecord마음의 기록 기능 영역bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions