Skip to content

라디오 단일 선택을 구조로 강제 — CustomRadioButton 그룹 API 승격 #649

Closed
1 of 1 issue completed

Description

@OnlyReadOneBook

📜 Overview (Required)

core:ui 의 CustomRadioButton 은 selected/onClick 만 받는 단품 컨트롤이라 라디오의 본질인 단일 선택을 구조적으로 강제하지 못한다. 소비처가 Set 토글 상태에 물리면 "라디오 비주얼인데 복수 선택"이라는 오용이 컴파일 타임에 걸리지 않는다 — 실사례: 추억 플레이리스트 곡 선택(#648, 실측 2026-07-31).

단일 선택이 구조로 강제되는 그룹 수준 API(선택값 하나를 소유하는 RadioGroup 형태 — selectedValue: T? + onSelect(T) 계약)로 승격하고, 단품 직접 사용을 제한한다. 현 사용처 전수(2026-07-31): LastWishesRadioGroup·SelectableRadioCard(afternote)·RadioGroupCard(setting)·PlaylistSongItem(afternote, #648 대상) — #648 을 제외하면 전부 이미 단일 선택 패턴이라 이관 부담이 낮다.

📌 Child Issue(Optional)

No response

📍 Note (Optional)

Activity

  1. changed the title [-]refactor(core): 라디오 단일 선택을 구조로 강제 — CustomRadioButton 그룹 API 승격[/-] [+]라디오 단일 선택을 구조로 강제 — CustomRadioButton 그룹 API 승격[/+] on Aug 28, 2026
  2. added
    refactor동작 변경 없이 코드 구조·책임·경계를 개선하는 작업
    area:core공용 코어·네트워크 기능 영역
    and removed
    enhancementNew feature or request
    on Aug 28, 2026
  3. OnlyReadOneBook commented on Aug 28, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    소비처 이관 인계 (PR #1354 범위 축소)

    담당 모듈 분리 원칙에 따라 #1354 는 core:ui 신설(AfternoteRadioGroup)로 범위를 한정하고 CustomRadioButton 을 존치했습니다. 남은 범위는 담당자별 이슈로 분리했고, 이 이슈에 blocked_by 로 걸어 두었습니다.

    1. setting 이관 → refactor(setting): RadioGroup 을 core AfternoteRadioGroup 그룹 API 로 이관 (#649 잔여) #1396 (재료 브랜치 refactor/649-setting-radio-migration 준비 완료)
    2. afternote SelectableRadioCard 삭제 → refactor(afternote): 미사용 SelectableRadioCard 삭제 (#649 잔여) #1398 (사용처 0건 실측, 착수 제약 없음)
    3. 후속 — CustomRadioButton 단품 삭제: 위 두 건 완료 후 이 이슈의 마무리 범위. 현재 소비처는 위 두 파일이 전부입니다(전수 grep 2026-08-29).
  4. added a commit that references this issue on Aug 28, 2026
  5. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Aug 30, 2026
  6. OnlyReadOneBook commented on Sep 2, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    「단품 직접 사용 제한」(Deprecated + Konsist 가드 + README)을 #1728 로 분리했고 PR #1639 가 그 이슈를 Closes 합니다.

    이 이슈에는 #1396(setting RadioGroupCard 이관) 뒤에 단품 CustomRadioButton 삭제와 가드 허용 목록 제거가 남습니다. blocked_by #1396 은 유지합니다.

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

    @github-actions
    Contributor

    이 이슈를 맡은 PR 은 #2046 다 (base refactor/1396-setting-radio-group).

    base 가 기본 브랜치(develop)가 아니라서 GitHub 은 이 이슈의 Development 칸에
    아무것도 표시하지 않는다. 본문에 Closes #N 이 있어도 마찬가지다 — 그 링크는 기본 브랜치를
    target 하는 PR 에서만 만들어진다.

    PR 이 닫히거나 머지되면 이 이슈의 pr-open 라벨은 다음 리컨사일에서 떨어진다.

  10. removed
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 19, 2026
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

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions