Skip to content

fix: 배치 편집 시 노트 테두리 색이 항상 초록색이 되는 버그#75

Merged
lee-sihun merged 2 commits into
masterfrom
fix/note-border-color
Jun 6, 2026
Merged

fix: 배치 편집 시 노트 테두리 색이 항상 초록색이 되는 버그#75
lee-sihun merged 2 commits into
masterfrom
fix/note-border-color

Conversation

@eun-yeon

@eun-yeon eun-yeon commented Jun 6, 2026

Copy link
Copy Markdown
Member

개요

노트 테두리 색을 여러 키 다중 선택으로 변경하면 어떤 색을 골라도 항상 초록색으로 표시되는 버그 수정

solidOnly 컬러피커는 rgba(...) 문자열을 반환하는데, 배치 편집 저장 경로가 이를 정규화 없이 noteBorderColor에 그대로 저장하고 있는 중
오버레이의 parseColor가 그 값을 hex로 착각해 substring하면서 "rgba"ba(=186)가 초록 채널로 고정돼, 입력 색과 무관하게 초록 테두리로 렌더됐고
단일 편집은 toHexColor로 정규화돼 정상이었고, R/B 채널이 NaN이 되는데 이 NaN의 GPU 처리 차이로 Windows에서만 발현되네여 그저 신도우 ㅋㅋ (개발 환경 macOS에서 재현 안 됨)

변경 내용

프론트엔드

  • 공용 toRgbHexColor 유틸 추가 — rgb()/rgba()/3·4·6·8자리 hex를 알파 버리고 #RRGGBB로 정규화
  • 배치 편집 저장 경로에서 noteBorderColor를 저장 전 정규화
  • 단일 편집의 로컬 toHexColor를 공용 유틸로 통일
  • parseColor가 어떤 입력이든 정규화하도록 변경 (NaN 방어 + 잘못된 값 fallback)

백엔드

  • normalize_state에서 기존에 rgba(...)로 저장된 noteBorderColor#RRGGBB로 복구 (key/stat/graph)
  • 변환 대상이 있을 때만 needs_persist로 디스크에도 영속

테스트

  • toRgbHexColor 단위 테스트 (rgb/rgba/3·4·6·8자리 hex/잘못된 입력)
  • rgba_to_hex Rust 테스트
  • 기존에 깨진 store 값이 앱 실행 시 자동 복구되는지 실제 확인 (rgba(255, 0, 167, 1)#FF00A7)

이미 잘못 저장된 색은 마이그레이션으로 원래 고른 색으로 복구되므로 사용자가 다시 설정할 필요는 없음

eun-yeon added 2 commits June 6, 2026 20:13
solidOnly 컬러피커가 rgba(...) 문자열을 반환하는데 배치 편집 저장 경로가
정규화 없이 noteBorderColor에 그대로 저장했다. 오버레이의 parseColor가 이를
hex로 착각해 substring하면서 "rgba"의 "ba"(=186)가 초록 채널로 고정돼,
어떤 색을 골라도 초록 테두리로 렌더됐다. NaN이 된 R/B 채널의 GPU 처리 차이로
Windows에서만 발현되고 Mac에서는 재현되지 않았다.

- 공용 toRgbHexColor 유틸 추가: rgb/rgba/hex를 알파 버리고 #RRGGBB로 정규화
- 배치 저장 경로에서 noteBorderColor를 저장 전 정규화
- 단일 편집의 로컬 toHexColor를 공용 유틸로 통일
- parseColor가 어떤 입력이든 정규화해 NaN 방어
- 백엔드 normalize_state에서 기존에 저장된 rgba noteBorderColor를
  #RRGGBB로 복구 (key/stat/graph), 변환 대상이 있으면 디스크에 영속

이슈 #73
@lee-sihun lee-sihun merged commit d56ac08 into master Jun 6, 2026
1 check passed
@lee-sihun lee-sihun deleted the fix/note-border-color branch June 9, 2026 10:46
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.

2 participants