Skip to content

타이포 B/R 토큰의 유지·통합 기준을 PM에게 확인한다 #1862

Closed as not planned

Description

@OnlyReadOneBook

작업 유형

refactor — 동작 변경 없는 구조·책임·경계 개선

주 담당 모듈

core — 코어

개요

동일한 렌더 값을 가진 bodySmallB/bodySmallR, captionLargeB/captionLargeR의 이름을 유지할지 통합할지 확인이 필요하다. 기존 이슈의 디자이너 질의 및 B 토큰 삭제·94곳 치환·테스트 제거 예약은 철회한다.

PM 확인이 필요한 결정

두 이름의 의미와 향후 강조 구분 의도, 유지 또는 통합 여부 및 적용 화면 범위를 PM에게 확인한다. 기존 렌더와 토큰은 결정 전 유지한다.

완료 기준

PM의 명시적인 답변과 적용 범위·근거 링크를 기록한다. 답변 전에는 구현·재개·테스트 완료 체크리스트를 예약하지 않는다. 결정 후 최신 코드와 계약을 대조해 실제 필요한 작업만 정의한다. 디자이너에게 질문하거나 태그하지 않으며, 미답변이나 과거 FE 재량 위임을 승인으로 해석하지 않는다.

정리 근거

2026-09-13 사용자 요청에 따라 미확정 구현 예약을 제거했다. 기능 구현 완료를 의미하지 않는다. 기존 댓글의 실측은 참고 자료이며, 상충하는 옛 구현 지시는 현재 범위를 대체하지 않는다.

Activity

  1. added
    refactor동작 변경 없이 코드 구조·책임·경계를 개선하는 작업
    area:core공용 코어·네트워크 기능 영역
    on Sep 3, 2026
  2. changed the title [-]refactor(core-ui): bodySmallB·captionLargeB 가 R 과 완전히 같아진 중복을 정리한다 (#1815 후속)[/-] [+]타이포 B/R 토큰의 유지·통합 기준을 PM에게 확인한다[/+] on Sep 12, 2026
  3. OnlyReadOneBook commented on Sep 13, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    PM 전건호에게 Figma 댓글로 질문했다(2026-09-13). 이 이슈는 그동안 PM 확인 대기로 분류돼 있었지만 실측해 보니 어느 채널에도 발신 기록이 없었다. 이번이 첫 발신이다.

    물은 것은 묵은 본문의 질문을 그대로 옮긴 것이 아니라 origin/develop 86ab223 실코드와 현재 시안으로 다시 벼린 것이다.

    본문에 있었지만 이번 질문에서 뺀 축:

    (1) «B 를 다시 Bold 로 되돌릴지» 축을 뺐다. 정본 페이지의 이름 붙은 텍스트 스타일은 B·R 가릴 것 없이 전량 weight 400 이고, 코드도 이미 Regular 로 맞춰 AfternoteTypographyPairTest 가 잠가 뒀다. (2) 본문에 있던 «B 토큰 삭제·94곳 치환·테스트 제거» 실행 계획은 본문 스스로 철회한 것이라 질문에서 뺐고, 94 라는 수치만 기준 리비전에서 다시 세어(프로덕션 94·테스트 4) 판단 재료로 남겼다. (3) bodyLargeB/bodyLargeR 를 질문에서 명시적으로 제외했다. 코드와 시안 모두 줄높이가 24 대 22 로 갈려 중복이 아니다. (4) AfternoteTypography.kt KDoc 의 «정본 페이지 TEXT 노드 1,789건 전량이 NanumBarunGothic, Bold 0건» 은 현재 버전과 맞지 않아(TEXT 6,778건·Bold 51건) 인용하지 않고, 대신 그 51건이 질문 2번의 근거가 되게 다시 세웠다.

  4. OnlyReadOneBook commented on Sep 13, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    기준 리비전은 origin/develop 7d87aa3 다. 아래 수치는 전부 그 리비전에서 다시 셌다.

    blocked_by: 걸 대상이 저장소에 없다

    조회부터 했고 비어 있었다.

    $ gh api repos/Afternote/Afternote-FE/issues/1862/dependencies/blocked_by
    []
    

    열린 이슈 190건의 본문을 전수로 훑어 1862 · bodySmallB · captionLargeB · B/R 를 찾았더니 이 이슈 자신 말고 걸린 것은 #2061 하나였다. 그런데 #2061 은 이 이슈를 막지 않는다.

    이 이슈를 막고 있는 것은 저장소의 이슈가 아니라 PM 답변이다. 그래서 addBlockedBy 는 걸지 않았다. 서버 선행 대기를 blocked_by 로 거는 규약에 해당하는 경우가 아니고, 성격이 맞지 않는 이슈를 끌어다 거는 것은 장부를 더 흐린다.

    541af5a 가 이미 덮은 부분

    그 커밋은 PR #1816(fix/1815-nanum-bold-stroke-asymmetry)으로 2026-09-06 develop 에 들어왔고 지금 origin/develop 의 조상이다. 두 파일에 106줄이 늘었고 프로덕션 코드 줄 변경은 0 이다.

    1. "두 쌍의 렌더 값이 같다" 는 본문 전제가 주장이 아니라 잠금이 됐다. core/ui/src/test/kotlin/com/afternote/core/ui/theme/AfternoteTypographyPairTest.kt 49행이 bodySmall, 54행이 captionLarge 의 여섯 필드 동일성을 잠그고, 59행은 bodyLarge 쌍이 줄높이가 달라 통합 대상이 아니라는 반대 방향을, 68행은 여섯 스타일에 Bold 가 0건임을 잠근다.
    2. 완료 기준의 "기존 렌더와 토큰은 결정 전 유지한다" 를 사람이 아니라 그 테스트가 지키고 있다. 541af5a 이후 테스트 파일의 diff 는 0줄이고, AfternoteTypography.kt 에 생긴 변경은 core: 사용처 없는 secondaryButton 타이포 스타일과 어긋난 매핑 주석을 정리한다 #1796 의 secondaryButton 삭제 10줄뿐이라 여섯 토큰 값은 그대로다. 오늘 값도 직접 확인했다. bodySmallB/bodySmallR 은 14sp/20sp Normal, captionLargeB/captionLargeR 은 12sp/18sp Normal, bodyLargeB 는 24sp 로 bodyLargeR 22sp 와 갈린다.
    3. 지금 합치지 않는 이유(호출부 94곳, 8개 모듈, 담당자 셋)와 판정을 이 이슈로 뗐다는 사실이 core/ui/src/main/kotlin/com/afternote/core/ui/theme/AfternoteTypography.kt 198~217행 KDoc 에 남아 있다. 본문이 철회한 "B 토큰 삭제·94곳 치환·테스트 제거" 예약 자리를 이 KDoc 과 테스트가 대신 메우고 있는 셈이다.

    다만 테스트를 실제로 돌려 초록을 본 것은 아니다. 이 워크트리에 다른 작업의 미커밋 변경이 있어 Gradle 은 돌리지 않았고, 위 판정은 소스 값 대조와 diff 로만 했다.

    남은 몫

    1. PM 답변과 그 기록. 바로 위 코멘트의 2026-09-13 발신 뒤 답변이 왔는지는 확인하지 못했다. 이번 세션은 피그마 접근이 없어 실측할 수단이 없었다.

    2. 통합으로 결정될 때의 실제 범위. 7d87aa3 에서 다시 세면 프로덕션 94곳(bodySmallB 57 · captionLargeB 37), 테스트 4곳(전부 AfternoteTypographyPairTest), 모듈 8개다. 86ab223 에서 낸 94·4 와 같은 값이 나왔다.

      모듈 호출부
      feature/mindrecord/presentation 34
      feature/onboarding/presentation 14
      feature/afternote/presentation 13
      feature/receiver/presentation 10
      core/ui 8
      feature/setting/presentation 7
      feature/home/presentation 5
      feature/timeletter/presentation 3

      94곳 가운데 4곳은 단순 참조가 아니라 .copy(...) 라 이름만 치환하면 덮어쓴 인자가 함께 날아간다. core/ui/src/main/kotlin/com/afternote/core/ui/button/AfternoteButton.kt:288, feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/receiver/AfternoteEditorReceiverList.kt:121, feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/home/AfternoteTypeFilterRow.kt:156, feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/shared/detail/ReceiversCard.kt:66.

    3. 유지로 결정될 때 남는 일은 답변과 적용 범위, 근거 링크를 이 이슈에 적는 것뿐이다. 잠금은 그대로 두면 된다.

    4. 어느 쪽으로 결정되든 KDoc 한 줄은 손봐야 한다. 208행이 분해를 bodySmallB 58 · captionLargeB 36 으로 적는데 오늘은 57 · 37 이다. 합계 94 와 모듈 8개는 그대로고, 갈린 이유는 호출부가 늘거나 준 것이 아니라 파일이 옮겨 다닌 것이다. bodySmallB 는 InsightCard.kt 가 사라지며 한 곳 줄었고 captionLargeB 는 findaccount/FindPasswordScreen.kt 가 생기며 한 곳 늘었으며, 나머지는 수신자 홈 화면이 feature/receiver/presentation 에서 feature/home/presentation 으로, 비밀번호 규칙 표시가 SignUpPasswordScreen.kt 에서 PasswordRuleItem.kt 로 옮겨 간 이동분이다. PR test(core): 타이포 동일성 잠금을 TextStyle 전체 비교로 닫고 Bold 하한 KDoc 을 바로잡는다 (#2061) #2066 이 같은 KDoc 블록을 건드리지만 이 줄은 고치지 않는다.

  5. OnlyReadOneBook commented on Sep 18, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    결정: 두 이름을 유지하고 (B)는 Bold, (R)은 Regular 로 간다

    2026-09-13 에 전건호에게 건 Figma 스레드에 2026-09-16 디자이너 Kim Dasom 이 답했다. 원문 그대로다.

    B -> bold R-> regular로 해주세요

    답한 사람은 질문 대상이던 PM 이 아니라 디자이너다. 시안 정본의 소유자가 직접 낸 답이라 이 이슈의 완료 기준인 "명시적인 답변" 으로 친다. 질문 1(유지·통합)은 유지, 질문 2((B)가 굵어지는 쪽인가)는 그렇다로 닫혔다. 답변 기록은 Figma 알림 메일(2026-09-16 06:23 UTC)에도 남아 있다.

    최신 코드와 대조한 결과

    기준 리비전은 origin/develop 7d87aa3 다.

    변경 범위

    프로덕션 값 변경은 한 파일 두 줄이다. 호출부는 이름을 바꾸지 않는다.

    1. core/ui/src/main/kotlin/com/afternote/core/ui/theme/AfternoteTypography.kt: bodySmallB(164행)·captionLargeB(221행)의 fontWeight 를 FontWeight.Bold 로. KDoc 세 곳(61행 머리말, 158159행, 199217행)을 "값이 같다·합치지 않는다" 에서 "weight 만 갈린다·디자이너 결정" 으로 다시 쓴다. 208행의 분해 수치(58·36)는 57·37 로.
    2. core/ui/src/test/kotlin/com/afternote/core/ui/theme/AfternoteTypographyPairTest.kt: 49·54행의 동일성 테스트를 "fontWeight 만 다르고 나머지 다섯 필드는 같다" 로, 68행의 Bold 0건 테스트에서 두 이름을 빼고 두 이름이 Bold 임을 잠그는 반대 방향 테스트를 둔다. test(core): 타이포 동일성 잠금을 TextStyle 전체 비교로 닫고 Bold 하한 KDoc 을 바로잡는다 (#2061) #2066 이 먼저 들어오면 그 파일 기준으로 고친다.
    3. 호출부 94곳(bodySmallB 57 · captionLargeB 37, 8개 모듈)은 코드 변경 0줄이지만 렌더가 전부 굵어진다. .copy 4곳(AfternoteButton.kt:288, AfternoteTypeFilterRow.kt:156, ReceiversCard.kt:66, AfternoteEditorReceiverList.kt:121)도 weight 를 덮지 않아 같이 굵어진다.
    4. 그 94곳이 찍힌 스크린샷 골든은 screenshot-baseline 라벨로 다시 뜬다. 어느 화면이 몇 장인지는 PR 에서 CI diff 로 센다.

    범위 밖: bodyLargeB·h2·h3·primaryButton. 질문에서 뺀 토큰이라 답변이 덮지 않는다. 답변 문구가 "B -> bold" 로 일반형이라 bodyLargeB 까지 포함하는지는 별도 확인 대상이다. 호출부 이름 치환·토큰 삭제는 없다.

    시안 텍스트 스타일 실측(2026-09-18, 로컬 텍스트 스타일 15개 전수): 답변이 파일에 절반만 반영돼 있다.

    스타일 2026-09-13 2026-09-18
    BodySmall(B) 14/20 Regular Bold
    BodyLarge(B) 18/24 Regular Bold
    CaptionLarge(B) 12/18 Regular Regular
    H2 · H3 · PrimaryButton Regular Regular

    BodyLarge(B) 도 Bold 로 바뀌어 있어 "B -> bold" 가 질문한 두 쌍에만 한정된 답이 아닐 가능성이 크다. CaptionLarge(B) 만 Regular 로 남은 것이 누락인지 의도인지는 스타일만으로는 알 수 없다. 코드 변경 전에 이 두 가지를 같은 스레드에서 한 번 더 확인한다. 위 변경 범위의 토큰 목록은 그 답에 따라 bodyLargeB 가 더해질 수 있다.

  6. OnlyReadOneBook commented on Sep 18, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    위 실측 표의 두 확인점을 2026-09-18 에 PM 전건호에게 같은 Figma 스레드 답글로 물었다. CaptionLarge(B) 가 Regular 로 남은 것이 누락인지, 그리고 B -> bold 가 (B) 붙은 스타일 전부를 뜻하는지 두 가지다. 코드 변경은 그 답을 받은 뒤 시작한다.

  7. OnlyReadOneBook commented on Sep 18, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    PM 결정 대기 항목은 깃허브 이슈로 두지 않고 피그마 질문 한 자리에만 둔다(2026-09-18 결정). 이 이슈의 질문은 피그마 스레드에 걸려 있다: https://www.figma.com/design/UP9ZR186jHvRBicjA2SOea/?node-id=4327-99020#1923877271 답이 오면 그 답을 근거로 구현 이슈를 새로 만든다.

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

Metadata

Metadata

Labels

area:core공용 코어·네트워크 기능 영역refactor동작 변경 없이 코드 구조·책임·경계를 개선하는 작업

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions