Repository navigation
Chore(hds): 디자인시스템 agent harness 및 컴포넌트 generator 정비 - #23
Conversation
…-agent-harness # Conflicts: # docs/architecture/styling-and-design-tokens.md # docs/rules/design-system-instructions.md
jyeon03
left a comment
There was a problem hiding this comment.
명령어 하나로 component, spec, story, local index, public export까지 한 번에 생성되는 구조가 너무 신기하네요...
이번 PR 보면서 agent harness와 generator를 어떻게 연결해서 반복 작업을 정리할 수 있는지 많이 배웠습니닷!!
코멘트 남긴 부분만 확인 부탁드릴게요~!
| execFileSync( | ||
| 'corepack', | ||
| [ | ||
| 'pnpm', | ||
| 'exec', | ||
| 'prettier', | ||
| '--write', |
There was a problem hiding this comment.
확인했습니다! 파일 생성 이후 포맷 action에서 corepack pnpm exec prettier를 다시 호출하고 있어서, 환경에 따라 corepack 실행 실패 시 generator가 마지막에 실패하는 것 같네용. generator는 이미 pnpm gen:ds-component로 실행되는 흐름이라 내부 후처리는 pnpm exec prettier만 사용하도록 수정했습니다. 임시 컴포넌트 생성으로 성공 종료도 확인했습니다~~
꼼꼼한 확인 감사합니다!!
There was a problem hiding this comment.
이렇게 script를 작성해두면, AI가 가진 비결정론적인 단점을 어느정도 해결할 수 있는 장점이 있어용. 어쨌든 LLM은 확률을 기반으로 작동하는 친구니까, 이런식으로 결정론적인 구조로 바꿔주는것도 좋아보여서 작성했습니다!
- 리뷰어 환경에서 corepack이 없을 때 scaffold 생성 후 실패하는 문제를 막기 위해 - generator 후처리는 실행 중인 pnpm 환경의 prettier를 사용하도록 단순화
MinseoSONG
left a comment
There was a problem hiding this comment.
AI 설정 자체가 꼼꼼히 잘 되어있는 것 같습니다. 정말 수고 많으셨어요 !!
이번 공통 컴포넌트 작업부터 요긴하게 사용하도록 하겠습니다. 사용해나가며 더 보완할 부분이 있다면 디벨롭하면 좋을 것 같아요 👍 👍
* init: 모노레포 설정 및 프로젝트 초기세팅 * init: 폴더 구조 세팅 * init: 절대경로 설정 * init: ESLint, Prettier 및 경로 alias 설정 * init: Turborepo 설정 추가 * init: PR 및 이슈 템플릿 추가 * chore: update branch protection status * init: sds 패키지 scope 통일 * init: Turbo generator 구조 추가 * fix: 이슈 템플릿 제거 및 PR 템플릿 수정 * init: Tailwind CSS 기본 설정 * init: Tailwind class 병합 유틸 추가 * init: prettier-plugin-tailwindcss 추가 설정 * Init(project): 개발 워크플로우 자동화 구축 (#12) * init: 오토리뷰어 설정 * init: 라벨 자동 할당 설정 * init: assignee 자동 할당 설정 * init: Discord PR 알림 자동화 설정 * fix: Auto Label workflow 권한 수정 (#15) * Init(project) : CI/CD 파이프라인 구축 (#10) * feat : ci/cd yml 파일 생성 * refactor: 리뷰사항 반영 * feat : format:check, typecheck 설정 추가 * Init(project) : Vitest 및 Playwright 테스트 환경 설정 (#11) * Vitest 및 Playwright 테스트 환경 설정 * init : vercel git 추적 제거 * init: 테스트 공통 설정 패키지 추가 및 인프라 정리 * refactor : sds-icons 테스트코드 인프라 제거 * refactor: E2E 테스트 없을 때 test:e2e 통과하도록 수정 * style: Prettier 포맷 수정으로 format:check CI 통과 * init: husky 및 lint-staged 설정 (#13) * Init(project): ky 및 TanStack Query 세팅 (#7) * Init(project): SVGR 설정 (#8) * init: SVGR 의존성 추가 * init: Vite에 SVGR 플러그인 연결 * init: SVG React 컴포넌트 타입 선언 추가 * init: SVGR 적용 위치를 sds-icons로 변경 * init: sds-icons SVG 자동 생성 스크립트 추가 * refactor: SVGR 아이콘 생성 스크립트 개선 * Init(project): Storybook 초기 세팅 (#9) * init: Storybook 의존성 및 실행 스크립트 추가 * init: sds-ui Storybook 설정 추가 * init: Button Storybook 예시 추가 * init: Storybook 빌드 산출물 제외 설정 * init: Chromatic 연동 및 배포 검증 * init: Storybook 빌드 산출물 제외 설정 * chore: Chromatic CI 설정 추가 * chore: package 중복 의존성 제거 * Init(project): Sentry 세팅 및 디스코드 알림 연동 (#14) * init: @sentry/react 의존성 추가 * init: Sentry environment/release용 Vite env 설정 * init: Sentry 초기화 및 ErrorBoundary 연동 * fix: Auto Label 워크플로 PR 라벨 추가 권한 수정 pull-requests: read로는 PR 라벨 API 호출이 403으로 실패하므로 write 권한을 부여합니다. * init : Source Map 업로드 자동화 * refactor: Session Replay 제외 * Init(project): AI 작업 환경 골격 추가 (#6) * docs(docs): SIKSA-20 컨벤션 문서 추가 * docs(docs): SIKSA-20 아키텍처 문서 추가 * init(root): SIKSA-20 문서 라우팅 허브 추가 * init(root): SIKSA-20 Codex 스킬 골격 추가 * docs(docs): SIKSA-20 디자인시스템 관련 문서 추가 * docs(docs): SIKSA-20 agent workflow 문서 보강 * docs(docs): HASHI-20 프로젝트명 변경 반영 * style(root): HASHI-20 skill 설정 포맷 수정 * style(docs): HASHI-20 Tailwind 예시 포맷 수정 * chore(root): HASHI-33 FE agent harness 구조 개선 (#16) * fix(root): HASHI-31 서비스명 및 패키지명 변경 (#17) * Chore(project): HASHI-34 CI 및 배포 워크플로우 분리 (#18) * fix(root): HASHI-31 서비스명 및 패키지명 변경 * chore(project): HASHI-34 CI 및 배포 워크플로우 분리 * fix(project): HASHI-34 GitHub Actions Node 버전 수정 * Chore(hds): HASHI-35 HDS 패키지 entry 설정 보강 (#19) * chore(hds): HASHI-35 HDS 패키지 entry 설정 보강 * chore(root): HASHI-35 Vercel preview deployment 확인 * Chore(hds): HASHI-36 HDS 디자인 토큰 및 Storybook 스타일 환경 설정 (#21) * chore(hds): HASHI-36 HDS 디자인 토큰 추가 * chore(hds): HASHI-36 Storybook 토큰 스타일 환경 설정 * Chore(hds): 디자인시스템 agent harness 및 컴포넌트 generator 정비 (#23) * Feat(icon): HASHI-37 디자인 시스템 아이콘 추가 (#22) * feat: HASHI-37 Navigation 아이콘 추가 * feat: HASHI-37 Navigation icon 추가 * fix(icon): HASHI-37 Navigation icon 최종 아이콘 반영 * fix(icon): HASHI-37 Plus/Minus 아이콘 구조 개선 * fix(icon): HASHI-37 Star 아이콘 구조 개선 * fix(icon): HASHI-37 Search 아이콘 구조 개선 * fix(icon): HASHI-37 Check 아이콘 구조 개선 * fix(icon): HASHI-37 Cancle 아이콘 구조 개선 * fix(icon): HASHI-37 아이콘 네이밍 수정 * feat(icon): HASHI-37 Menu 아이콘 추가 * Chore(agent): HASHI-41 Storybook agent skill 추가 및 문서 정리 (#24) * chore(agent): HASHI-41 Storybook agent skill 추가 및 문서 정리 * chore(hds): HASHI-41 CVA 의존성 추가 * Feat(api): HASHI-38 공통 응답 스키마 정의 및 헬퍼 추가 (#20) * feat(api) : HASHI-38 백엔드 공통 응답 스키마 타입 추가 * feat(api): HASHI-38 API 응답 파싱용 request 헬퍼 추가 * chore(github): HASHI-38 preview build 재실행 * fix(api): HASHI-38 API 응답 헬퍼 에러 처리 단순화 * fix(api): HASHI-38 공통 응답 스키마 및 에러 처리 적용 * test(api): HASHI-38 request 헬퍼 단위 테스트 추가 및 env 예시 설정 * Feat(hds-ui): HASHI-51 Bottom Navigation 구현 (#25) * feat(packages/hds-icons): HASHI-51 내비게이션 아이콘 색상 제어 지원 * feat(packages/hds-ui): HASHI-51 BottomNavigation 컴포넌트 추가 * Feat(hds-ui): HASHI-46 Tabs 공통 컴포넌트 구현 (#26) * feat(hds-ui): HASHI-46 Tabs 공통 컴포넌트 구현 * chore(hds-ui): HASHI-46 Storybook Pretendard 폰트 적용 * fix(hds-ui): HASHI-46 Tabs 접근성 속성 추가 * Feat(hds-ui): HASHI-52 Dialog 컴포넌트 구현 (#29) * feat(packages/hds-ui): HASHI-52 Dialog 컴포넌트 추가 * style(packages/hds-ui): HASHI-52 Dialog 리뷰 반영 * docs(packages/hds-ui): HASHI-52 Dialog 구현 기준 보강 * chore(root): HASHI-57 Codex hook 추가 (#30) * Feat(hds-ui): HASHI-49 CollapsibleText 컴포넌트 구현 (#27) * feat(hds-ui): HASHI-49 CollapsibleText 컴포넌트 구현 * refactor(hds-ui): HASHI-49 CollapsibleText public API 정리 * fix(hds-ui): HASHI-49 CollapsibleText 더보기 노출 조건 수정 * fix(hds-icons): HASHI-49 아이콘 색상 currentColor 적용 * Feat(hds-ui): HASHI-50 Button 컴포넌트 구현 (#28) * docs(docs): HASHI-50 border/radius px rem 사용 가이드 추가 Figma 고정 수치와 대응되는 border 계열 값은 root font-size 영향을 받지 않도록 px 또는 token을 쓰도록 명시합니다. * docs(packages/hds-ui): HASHI-50 Button 컴포넌트 spec 추가 Figma 기준 primary/neutral variant, size, width, 상태, 접근성, v1 범위를 정의합니다. * feat(packages/hds-ui): HASHI-50 Button variant/size/width 구현 cva 기반 primary/neutral 스타일, icon slot, disabled/loading, public type export를 추가합니다. * test(packages/hds-ui): HASHI-50 Button 단위 테스트 추가 type 기본값, submit, loading interaction 차단, icon slot 렌더링을 검증합니다. * docs(packages/hds-ui): HASHI-50 Button Storybook story 추가 variant, size, full width, 탈퇴 2버튼, disabled, loading, icon, overflow 케이스를 문서화합니다. * refactor(packages/hds-ui): HASHI-50 Button Storybook Tailwind 스케일 적용 arbitrary rem/px를 text-sm, w-60 utility로 정리합니다. * fix(packages/hds-ui): HASHI-50 Button loading 중 slot icon 숨김 loading 상태에서는 leftIcon/rightIcon을 숨기고 spinner만 표시합니다. * test(packages/hds-ui): HASHI-50 Button loading icon 숨김 테스트 추가 * docs(packages/hds-ui): HASHI-50 Button spec 및 Storybook 리뷰 반영 currentColor icon 정책, loading icon 정책을 spec에 반영하고 HDS icon 기반 story를 추가합니다. * Feat(client): HASHI-58 모바일 뷰포트 레이아웃 설정 (#32) * feat(client): HASHI-58 모바일 뷰포트 레이아웃 설정 * feat(client): HASHI-58 모바일 레이아웃 변수 추가 * style(client): HASHI-58 모바일 fixed 상하단 UI 유틸 추가 * Feat(hds-ui): HASHI-55 IconButton 컴포넌트 구현 (#31) * docs(packages/hds-ui): HASHI-55 IconButton 컴포넌트 spec 추가 Figma 기준 xs/md size, plain surface, aria-label 필수, v1 범위와 deferred 결정을 정의합니다. * feat(packages/hds-ui): HASHI-55 IconButton size/loading 구현 cva 기반 xs/md touch target, bare surface, disabled/loading, aria-label 계약과 public type export를 추가합니다. * test(packages/hds-ui): HASHI-55 IconButton 단위 테스트 추가 accessible name, type 기본값, disabled/loading interaction 차단을 검증합니다. * docs(packages/hds-ui): HASHI-55 IconButton Storybook story 추가 topbar, edit className, size, disabled, loading, 넓은 hit area 케이스를 문서화합니다. * chore(packages/hds-ui): HASHI-55 develop 병합 후 충돌 해결 완료 * refactor(packages/hds-ui): HASHI-55 IconButton Tailwind 스케일 utility 적용 size arbitrary rem을 size-6/size-10으로 바꾸고 story viewport 폭을 393px 기준으로 정리합니다. * refactor(packages/hds-ui): Button export를 folder index 경로로 정리 button/index.ts barrel export를 추가하고 components/index.ts에서 ./button 경로를 사용합니다. * Feat(hds-ui): HASHI-56 SearchField 공통 컴포넌트 구현 (#36) * docs(packages/hds-ui): HASHI-56 SearchField 컴포넌트 spec 추가 * fix(packages/hds-icons): SearchIcon stroke를 currentColor로 통일 SearchField에서 아이콘 색상을 컨테이너 text color로 상속받도록 합니다. * feat(packages/hds-ui): HASHI-56 SearchField 구현 검색 아이콘 고정, native search input, disabled/focus-within 상태를 지원합니다. @hashi/hds-icons를 runtime dependency로 이동합니다. * test(packages/hds-ui): HASHI-56 SearchField 단위 테스트 추가 * docs(packages/hds-ui): HASHI-56 SearchField Storybook story 추가 * docs(packages/hds-ui): HASHI-56 SearchField 모바일 viewport를 430px로 수정 Storybook wrapper와 spec 체크리스트를 430px 기준으로 맞춥니다. * feat(packages/hds-ui): HASHI-56 SearchField ref forwarding 및 focus 스타일 정리 * test(packages/hds-ui): HASHI-56 SearchField ref forwarding 테스트 추가 * docs(packages/hds-ui): HASHI-56 SearchField spec 및 Storybook 리뷰 반영 * Feat(hds-ui): HASHI-53 Checkbox 공통 컴포넌트 구현 (#35) * chore(hds-ui): HASHI-53 hds-icons 의존성 추가 * feat(hds-ui): HASHI-53 Checkbox 공통 컴포넌트 구현 * docs(hds-ui): HASHI-53 Checkbox 컴포넌트 스펙 추가 * test(hds-ui): HASHI-53 Checkbox 동작 테스트 추가 * fix(hds-ui): HASHI-53 Checkbox ref 전달 및 접근성 보완 * Feat(hds-ui): HASHI-44 chip 공통 컴포넌트 구현 (#33) * feat(hds-ui): HASHI-44 chip 공통 컴포넌트 구현 * feat(hds-ui): HASHI-44 chip 공통 컴포넌트 코드리뷰 반영 * feat(hds-ui): HASHI-44 chip 공통 컴포넌트 disabled 제거 * Feat(hds-ui): HASHI-45 badge 공통 컴포넌트 구현 (#34) * feat(hds-ui): HASHI-45 badge 공통 컴포넌트 구현 * feat(hds-ui): HASHI-45 badge 공통 컴포넌트 코드리뷰 반영 * Feat(hds-ui): HASHI-61 Carousel 컴포넌트 구현 (#38) * feat(packages/hds-ui): HASHI-61 Carousel 컴포넌트 추가 * test(packages/hds-ui): HASHI-61 Carousel 테스트 추가 * docs(packages/hds-ui): HASHI-61 Carousel 문서와 스토리 추가 * fix(packages/hds-ui): HASHI-61 Carousel resize 위치 보정 * Feat(hds-ui): HASHI-54 Avatar 공통 컴포넌트 구현 (#40) * feat(hds-ui): HASHI-54 Avatar 공통 컴포넌트 추가 * fix(hds-ui): HASHI-54 Avatar placeholder 표시 수정 * fix(hds-ui): HASHI-58 Avatar 이미지 로딩 실패 fallback 처리 * Feat(hds-ui): HASHI-60 Header 공통 컴포넌트 구현 (#43) * docs(packages/hds-ui): HASHI-60 Header 컴포넌트 spec 추가 * feat(packages/hds-ui): HASHI-60 Header 구현 * test(packages/hds-ui): HASHI-60 Header 단위 테스트 추가 * docs(packages/hds-ui): HASHI-60 Header Storybook story 추가 * docs(packages/hds-ui): HASHI-60 Header 중복 MobileViewport393 story 제거 * fix(packages/hds-ui): HASHI-60 빈 subtitle이 Header 높이를 확장하지 않도록 수정 * Feat(project): HASHI-47 BottomSheet 공통 컴포넌트 & 로그인 바텀시트/ 필터 바텀시트 컴포넌트 구현 (#37) * feat(hds-ui): HASHI-47 바텀시트 컴포넌트 구현 * feat(client): HASHI-47 로그인 바텀시트 구현 * feat(client): HASHI-47 검색 필터 바텀시트 구현 * chore(hds): HASHI-47 색상 및 아이콘 추가 * fix(hds-ui): HASHI-47 BottomSheet 모바일 프레임 너비 제한 적용 * refactor(client): HASHI-47 카카오 시작 버튼 분리 및 KakaoIcon 적용 * fix(client): HASHI-47 제목과 리스트 사이 간격 수정 * refactor(client): HASHI-47 FilterBottomSheet를 shared 컴포넌트로 이동 * fix(hds-ui): HASHI-47 BottomSheet 접근성 동작 보완 * docs(hds-ui): HASHI-47 BottomSheet 스토리북 예시 정리 * refactor(client): HASHI-47 카카오 로그인 아이콘 위치 조정 * Feat(hds-ui): HASHI 63 textarea 공통 컴포넌트 구현 (#42) * feat(hds-ui): HASHI-63 Textarea 공통 컴포넌트 추가 * docs(hds-ui): HASHI-63 Textarea Storybook 추가 * fix(hds-ui): HASHI-63 Textarea 글자 수 제한 보강 * fix(hds-ui): HASHI-63 textarea 리뷰 피드백 반영 * fix(hds-ui): HASHI-63 textarea 너비 코드리뷰 반영 * Feat(hds-ui): HASHI-59 StarRating 공통 컴포넌트 구현 (#41) * docs(packages/hds-ui): HASHI-59 StarRating 컴포넌트 spec 추가 * feat(packages/hds-ui): HASHI-59 StarRating 구현 * test(packages/hds-ui): HASHI-59 StarRating 단위 테스트 추가 * docs(packages/hds-ui): HASHI-59 StarRating Storybook story 추가 * fix(packages/hds-ui): HASHI-59 StarRating value를 0~5로 clamp해 별 표시와 aria-label 정합성 보장 * Chore(client): HASHI-62 레이아웃 및 라우팅/접근 권한 정책 설정 (#46) * chore(client): HASHI-62 페이지 라우트 스캐폴드 추가 * chore(client): HASHI-62 라우터 구조 설정 * docs(client): HASHI-62 라우팅 및 접근 권한 정책 문서 수정 * refactor(client): HASHI-62 클라이언트 내부 import 경로 정리 * chore(client): HASHI-62 하단 네비게이션 레이아웃 설정 * feat(client): HASHI-62 준비중 페이지 라우트 추가 * feat(client): HASHI-62 하단 네비게이션 저장 지도 경로 연결 * feat(client): HASHI-62 홈 진입 로그인 유도 바텀시트 연결 * fix(hds-ui): HASHI-62 하단 네비게이션 아이템 간격 수정 * chore(root): HASHI-69 README 작성 (#50) * Feat(hds-ui): HASHI-64 InputField 공통 컴포넌트 구현 (#44) * feat(hds-ui): HASHI-64 InputField 공통 컴포넌트 구 * fix(hds-ui): HASHI-64 InputField 리뷰 피드백 반영 * Feat(hds-ui): HASHI-43 counter 컴포넌트 구현 (#48) * feat(hds-ui): HASHI-43 counter 컴포넌트 구현 * feat(hds-ui): HASHI-43 counter 컴포넌트 코드리뷰 반영 * Feat(hds-ui): HASHI-42 calendar 공통 컴포넌트 구현 (#47) * feat(hds-ui): HASHI-42 calendar 공통 컴포넌트 구현 * feat(hds-ui): HASHI-42 calendar 공통 컴포넌트 접근성 수정 * feat(hds-ui): HASHI-42 calendar 공통 컴포넌트 color 추가 * feat(hds-ui): HASHI-42 calendar 공통 컴포넌트 디자인 세부사항 반영 * feat(hds-ui): HASHI-42 calendar 컴포넌트 코드리뷰 반영 * Chore(turbo): HASHI-65 페이지 스펙 하네스 추가 (#45) * Feat(client): HASHI-66 ComingSoon 페이지 퍼블리싱 (#49) * style(client): HASHI-66 하단 네비 콘텐츠 영역 유틸 추가 * feat(client): HASHI-66 ComingSoon 페이지 퍼블리싱 * refactor(client): HASHI-66 준비중 페이지 이미지 접근성 정리 * fix(client): HASHI-66 empty 이미지 경로 수정 * fix(client): HASHI-66 ComingSoonPage main 중첩 제거 * Feat(client): HASHI-68 NotFound 페이지 구현 (#51) * feat(client): HASHI-68 404 페이지 구현 * fix(hds-ui): HASHI-68 BottomNavigation 선택 상태 optional 처리 * fix(client): HASHI-68 404 페이지 접근성 제목 추가 * fix(client): HASHI-68 NotFoundPage main 중첩 제거 * fix(client): HASHI-68 하단 네비 콘텐츠 높이 유틸 적용 * Feat(reservation): HASHI-78 예약하기 페이지 구현 (#53) * feat(apps/client): HASHI-78 예약 날짜 유틸 추가 * feat(apps/client): HASHI-78 예약하기 페이지 구현 * fix(apps/client): HASHI-78 GuestCounter 숫자 폭 고정 * chore(root): HASHI-78 lint 및 import 규칙 강화 * fix(packages/hds-ui): HASHI-78 캘린더 헤더 연도 표시 * style(apps/client): HASHI-78 예약 페이지 spacing 조정 * Feat(client): HASHI-70 LoginRequired 페이지 퍼블리싱 (#52) * feat(hds-icons): HASHI-70 KakaoIcon 추가 * refactor(client): HASHI-70 KakaoStartButton shared로 이동 * feat(client): HASHI-70 로그인 필요 페이지 구현 * fix(hds-ui): HASHI-70 BottomNavigation 선택 상태 optional 처리 * chore(client): HASHI-70 임시 인증 상태 기본값 변경 * fix(client): HASHI-70 LoginRequiredPage main 중첩 제거 * feat(client): HASHI-70 KakaoStartButton className 확장 * fix(client): HASHI-70 로그인 바텀시트 전역 노출 제거 * Feat(client): HASHI-71 예약 상세 페이지 퍼블리싱 (#54) * feat(hds-tokens): HASHI-71 z-index 토큰 추가 * feat(client): DefaultImage 공통 컴포넌트 추가 구현 * feat(client): 날짜 포맷 유틸 함수 추가 * feat(client): HASHI-71 예약 진행 상태 섹션 구현 * feat(client): HASHI-71 예약 접수 정보 카드 구현 * feat(client): HASHI-71 예약 안내 문구 섹션 구현 * feat(client): HASHI-71 예약 상세 하단 액션바 구현 * feat(client): HASHI-71 예약 상세 페이지 퍼블리싱 * docs(github): HASHI-71 PR 템플릿 Description 섹션 추가 * refactor(client): HASHI-71 예약 상세 컴포넌트 page-local 구조로 정리 * refactor(client): HASHI-71 예약 상세 페이지 로직 hook 분리 * fix(client): HASHI-71 예약 진행 날짜 표시 규칙 수정 * fix(client): HASHI-78 예약하기 페이지 fixed UI 기준 반영 * docs(reservation-detail): HASHI-71 예약 상세 페이지 스펙 추가 * refactor(client): HASHI-71 예약 상세 route param 연결 * fix(client): HASHI-71 예약 상세 진행 상태 UI 보정 * fix(client): HASHI-71 format 에러 해결 * Feat(client): HASHI-82 예약 요청 페이지 퍼블리싱 (#59) * feat(apps/client): HASHI-82 예약 요청 페이지 구현 * style(apps/client): HASHI-82 예약 요청 페이지 포맷 적용 * fix(apps/client): HASHI-82 예약 요청 페이지 리뷰 반영 * fix(apps/client): HASHI-82 포인트 마크 HDS 아이콘 적용 * Feat(client): HASHI-74 홈 페이지 퍼블리싱 (#55) * feat(client): HASHI-74 홈 페이지 퍼블리싱 * feat(client): HASHI-74 홈 페이지 퍼블리싱 코드리뷰 반영 * feat(client): HASHI-74 홈 페이지 퍼블리싱 큐레이션 캐러셀 * feat(client): HASHI-74 홈 페이지 퍼블리싱 큐레이션 캐러셀 * feat(client): HASHI-74 홈 페이지 퍼블리싱 코드리뷰 반영 * feat(client): HASHI-74 홈 페이지 퍼블리싱 코드리뷰 반영 * Feat(client): HASHI-72 리뷰 작성 페이지 퍼블리싱 (#58) * Feat(hds-ui): HASHI-72 Badge interactive 모드 추가 * Feat(hds-ui): HASHI-72 Textarea showCounter 옵션 추가 * Feat(client): HASHI-72 review 입력 규칙 및 validation utils 추가 * Feat(client): HASHI-72 review 표시용 feature components 추가 * Feat(client): HASHI-72 InputReviewRate 구현 * Feat(client): HASHI-72 InputReviewKeyword 및 InputReviewMain 구현 * Feat(client): HASHI-72 ReviewNewPage 구현 * Refactor(client): HASHI-72 useReviewForm을 review feature hooks로 승격 * Update apps/client/src/features/review/components/inputReviewKeyword/InputReviewKeyword.tsx * Apply suggestions from code review * fix(client): HASHI-72 리뷰 작성 화면 반응형 레이아웃 개선 * docs(review): HASHI-72 ReviewSubmitBar spec 반응형 기준 반영 * refactor(client): HASHI-72 ReviewReservationSummary DefaultImage fallback 적용 * Feat(client): HASHI-75 검색 페이지 퍼블리싱 (#60) * feat(client): HASHI-75 검색 페이지 퍼블리싱 * feat(client): HASHI-75 검색 페이지 퍼블리싱 구조 개선 * feat(client): HASHI-75 검색 페이지 퍼블리싱 스크롤바 제거 * feat(client): HASHI-75 검색 페이지 퍼블리싱 encodeURIComponent 적용 * feat(client): HASHI-75 검색 페이지 퍼블리싱 코드리뷰 반영 * Feat(client): HASHI-73 예약 정보 페이지 퍼블리싱 (#63) * docs(client): HASHI-73 예약 정보 페이지 스펙 작성 * feat(client): HASHI-73 Empty 공통 컴포넌트 구현 * chore(client): 개발용 인증 상태 기본값 변경 * feat(hds-tokens): HASHI-73 z-index, gradient 토큰 추가 * docs(my-reservations): HASHI-73 예약 정보 페이지 구현 기준 정리 * feat(client): HASHI-73 예약 정보 상태 및 mock 데이터 구성 * feat(client): HASHI-73 예약 정보 헤더와 리스트 영역 구현 * feat(client): HASHI-73 예약 상태별 카드와 취소 모달 구현 * feat(client): HASHI-73 예약 필터 상태 URL query 연동 * fix(client): HASHI-73 auth 상태 원복 및 Empty spec 추가 * fix(client): HASHI-73 예약 상태 필터 중복 선택 방지 * docs(client): HASHI-73 예약 정보 empty 문구 정책 수정 * Feat(client): HASHI-77 매거진 리스트 페이지 퍼블리싱 (#61) * feat(client): HASHI-77 매거진 리스트 페이지 퍼블리싱 * feat(client): HASHI-77 매거진 리스트 페이지 퍼블리싱 정규화 적용 * feat(client): HASHI-77 매거진 리스트 페이지 퍼블리싱 코드리뷰 반영 * feat(client): HASHI-77 매거진 리스트 페이지 퍼블리싱 검색 페이지 stickyHeader 적용 * Feat(client): HASHI-79 마이페이지 화면 퍼블리싱 (#64) * docs(mypage): HASHI-79 마이페이지 구현 기준 정리 * feat(client): HASHI-79 준비중 안내 모달 구현 * feat(client): HASHI-79 마이페이지 상태와 메뉴 데이터 구성 * feat(client): HASHI-79 마이페이지 화면 퍼블리싱 * docs(conventions): HASHI-79 Tailwind scale class 사용 기준 추가 * fix(client): HASHI-79 마이페이지 외부 링크 처리 개선 * docs(client): HASHI-79 ComingSoonDialog spec 추가 * docs(hds-ui): HASHI-79 Dialog dim overlay 기준 반영 * Feat(client): HASHI-83 마이 리뷰 페이지 구현 (#62) * fix(hds-ui): HASHI-83 StarRating filled 색상을 primary-400으로 수정 * feat(client): HASHI-83 myReviews 타입·상수·mock 데이터 추가 * feat(client): HASHI-83 myReviews 표시용 page-local components 추가 * feat(client): HASHI-83 WrittenReviewCard 구현 * feat(client): HASHI-83 useMyReviewsPage hook 추가 * feat(client): HASHI-83 MyReviewsPage 구현 * refactor(client): HASHI-83 ReviewDeleteConfirmDialog을 review feature로 분리 * chore(client): HASHI-83 MyReviewEmptyState 그래픽 슬롯 TODO 주석 정리 * fix(client): HASHI-83 마이 리뷰 화면 반응형 레이아웃 개선 * Fix(client): HASHI-83 마이리뷰 UI/a11y 정리 * Feat(client): HASHI-86 어디든 예약 페이지 구현 (#65) * feat(apps/client): HASHI-86 어디든 예약 페이지 구현 * fix(apps/client): HASHI-86 어디든 예약 고정 레이어 정리 * fix(apps/client): HASHI-86 고정 헤더 important 제거 * fix(apps/client): HASHI-86 고정 헤더 위치 복구 * fix: HASHI-86 예약 흐름 QA 보강 * refactor(root): HASHI-86 예약 공통 UI 정리 * fix(apps/client): HASHI-86 예약 헤더 고정 복구 * Feat(client): HASHI-87 리뷰 상세 페이지 퍼블리싱 (#66) * Feat(client): HASHI-87 리뷰 상세 페이지 퍼블리싱 * Feat(client): HASHI-87 리뷰 상세 UI 조정 * Chore(client): 테스트용 auth true * Docs(client): 리뷰 상세 a11y 문구 정리 * Chore(client): auth status 기본값 원복 * feat(apps/client): HASHI-87 수정 준비중 안내 연결 * Feat(client): HASHI-76 프로필 생성 페이지 퍼블리싱 (#67) * feat(client): HASHI-76 프로필 생성 페이지 퍼블리싱 * feat(client): HASHI-76 프로필 생성 페이지 퍼블리싱 * feat(client): HASHI-76 프로필 생성 페이지 퍼블리싱 코드리뷰 반영 * feat(client): HASHI-76 프로필 생성 페이지 퍼블리싱 코드리뷰 반영 * feat(client): HASHI-76 프로필 생성 페이지 authStatus 롤백 * Feat(hds-ui): HASHI-88 Toast 컴포넌트 구현 (#69) * feat(hds-icons): HASHI-88 LinkIcon 추가 * feat(hds-ui): HASHI-88 Toast 컴포넌트 구현 * fix(hds-ui): HASHI-88 Toast 컴포넌트 스토리북 수정 * feat(hds-ui): HASHI-88 Toast 기본 자동 닫힘 헬퍼 추가 * fix(hds-ui): HASHI-88 Toast helper 루트 export 추가 * Feat(client): HASHI-90 로딩 페이지 구현 (#70) * feat(apps/client): HASHI-90 로딩 화면 구현 * Fix(client): HASHI-90 chopsticks 그래픽 svg로 교체 * Fix(client): HASHI-90 lazy fallback route branch 적용 * Feat(client): HASHI-80 Hashi-Pick 페이지 퍼블리싱 (#56) * feat(hds-ui): HASHI-80 BottomSheet 닫힘 옵션 추가 * feat(client): HASHI-80 식당 리스트 공통 UI 구현 * feat(client): HASHI-80 하시 Pick 페이지 퍼블리싱 * fix(client): HASHI-80 하시 Pick 라우트 연결 * fix(client): HASHI-80 식당 카드 디자인 QA 반영 * fix(client): HASHI-80 식당 카드 모바일 레이아웃 QA 반영 * refactor(client): HASHI-80 식당 리스트 기능 구조 이동 * fix(apps/client): HASHI-80 하시픽 코드리뷰 반영 * fix(apps/client): HASHI-80 하시픽 공통 리뷰 반영 * fix(apps/client): HASHI-80 리스트 back 홈 이동 반영 * fix(apps/client): HASHI-80 리스트 헤더 고정 반영 * Feat(client): HASHI-81 인기 맛집 페이지 퍼블리싱 (#57) * feat(hds-ui): HASHI-80 BottomSheet 닫힘 옵션 추가 * feat(client): HASHI-80 식당 리스트 공통 UI 구현 * feat(client): HASHI-80 하시 Pick 페이지 퍼블리싱 * feat(client): HASHI-81 인기 맛집 페이지 퍼블리싱 * fix(client): HASHI-80 하시 Pick 라우트 연결 * fix(client): HASHI-81 인기 맛집 라우트 연결 * fix(client): HASHI-80 식당 카드 디자인 QA 반영 * fix(client): HASHI-80 식당 카드 모바일 레이아웃 QA 반영 * refactor(client): HASHI-80 식당 리스트 기능 구조 이동 * refactor(client): HASHI-81 식당 리스트 기능 경로 적용 * fix(apps/client): HASHI-81 인기맛집 코드리뷰 반영 * fix(apps/client): HASHI-81 인기맛집 코드리뷰 반영 * fix(apps/client): HASHI-81 리스트 back 홈 이동 반영 * fix(apps/client): HASHI-81 리스트 헤더 고정 반영 * fix(apps/client): HASHI-81 필터 초기화 닫힘 반영 * Feat(client): HASHI-84 오늘의 식당 및 메뉴 상세 페이지 퍼블리싱 (#68) * feat(client): HASHI-84 오늘의 식당 및 메뉴 상세 페이지 퍼블리싱 * fix(apps/client): HASHI-84 식당 상세 리뷰 반영 * feat(apps/client): HASHI-84 공유 토스트 및 리뷰 CTA 여백 정리 * fix(apps/client): HASHI-84 토스트 위치 및 여백 조정 * chore(root): HASHI-92 API 연동 하네스 구성 (#71) * chore(apps/client): HASHI-101 PWA 설정 추가 (#80) - 모바일 환경에서 홈 화면 설치와 정적 앱 셸 오프라인 사용을 지원합니다. - API 및 인증 응답은 캐시하지 않아 서버 상태 정합성을 유지합니다. * Fix(client): HASHI-96 예약 정보 및 예약 상세 페이지 QA 반영 (#74) * fix(hds-ui): HASHI-96 로그인 바텀시트 접근성 outlined 제거 * fix(client): HASHI-96 배경색 변경 * fix(client): HASHI-96 마이페이지 수정 버튼 disabled 처리 * fix(hds-ui): HASHI-96 마이페이지 Avatar default 이미지 적용 * fix(hds-ui): HASHI-96 로그인 바텀시트 디자인 수정 * fix(hds-ui): HASHI-96 Header shadow 적용 * fix(hds-ui): HASHI-96 예약 상세 페이지 CTA 경로 연결 * fix(client): HASHI-96 라우트 전환 시 스크롤 위치 초기화 * fix(client): HASHI-96 마이 리뷰 페이지 헤더 shadow 제거 * fix(client): HASHI-96 예약 정보 및 예약 상세 페이지 인터랙션 추가 * fix(client): HASHI-96 예약 취소 후 진행 중 예약 정보로 이동 * test(client): HASHI-96 브라우저 API 테스트 환경 보강 * fix(client): HASHI-96 예약 정보 및 예약 상세 페이지 proressbar 디자인 수정 * Fix(reservation): HASHI-98 예약 플로우 1차 QA 피드백 반영 (#75) * docs(docs): HASHI-98 캐러셀 인터랙션 설계 추가 * feat(packages/hds-ui): HASHI-98 캐러셀 인터랙션 보강 * fix(packages/hds-ui): HASHI-98 달력 월 이동 제한 예약 달력에서 현재 월 이전으로 이동해 과거 날짜를 노출하지 않도록 하한을 추가한다. * fix(apps/client): HASHI-98 예약 화면 QA 반영 고정 헤더, 요청 CTA 문구, 날짜 변경 시 시간 초기화를 반영해 예약 초안 상태가 화면과 일치하도록 한다. * fix(apps/client): HASHI-98 예약 CTA 문구 수정 예약 입력 후 확인 단계로 이어지는 동작을 명확히 전달하기 위해 CTA를 다음으로 통일한다. * Chore(client): HASHI-93 split vendor chunks (#72) * fix(client): HASHI-94 1차 자체 QA 반영 (#79) * Fix(client): HASHI-95 QA 버튼 스타일 및 마이리뷰 화면 보정 (#76) * style(packages/hds-ui): HASHI-95 Button press 상태 적용 * feat(apps/client): HASHI-95 마이리뷰 QA 반영 * style(apps/client): HASHI-95 버튼 토큰 기준 정리 * style(apps/client): HASHI-95 포맷 정리 * style(packages/hds-ui): HASHI-95 Button active feedback 적용 * fix(apps/client): HASHI-95 카카오 버튼 press 색상 유지 * fix(apps/client): HASHI-95 카카오 버튼 active opacity 조정 * style(apps/client): HASHI-95 리뷰 CTA 색상 조정 * Fix(toast): HASHI-103 Toast 인터랙션 수정 (#81) * fix(toast): HASHI-103 Toast 인터랙션 수정 * fix(client): HASHI-103 Toast 컴포넌트 애니메이션 적용 --------- Co-authored-by: jyeon03 <[email protected]> * Feat(client): HASHI-100 라우트 로딩 플리커링 개선 (#78) * feat(apps/client): HASHI-100 라우트 로딩 플리커링 완화 * fix(apps/client): HASHI-100 fallback 표시 시에만 최소 로딩 시간 적용 * Init(client):HASHI-28 swagger-typescript-api 세팅 (#82) * init(client):HASHI-28 swagger-typescript-api 세팅 * init(root): HASHI-28 OpenAPI 타입 생성 skill 추가 * chore(root): HASHI-28 openapi-typescript peer 범위에 맞춰 TypeScript 버전 조정 --------- Co-authored-by: jyeon03 <[email protected]> Co-authored-by: 백지연 <[email protected]> Co-authored-by: 송민서 <[email protected]> Co-authored-by: yurimidaH <[email protected]> Co-authored-by: chungyoung kim <[email protected]>
* init: 모노레포 설정 및 프로젝트 초기세팅 * init: 폴더 구조 세팅 * init: 절대경로 설정 * init: ESLint, Prettier 및 경로 alias 설정 * init: Turborepo 설정 추가 * init: PR 및 이슈 템플릿 추가 * chore: update branch protection status * init: sds 패키지 scope 통일 * init: Turbo generator 구조 추가 * fix: 이슈 템플릿 제거 및 PR 템플릿 수정 * init: Tailwind CSS 기본 설정 * init: Tailwind class 병합 유틸 추가 * init: prettier-plugin-tailwindcss 추가 설정 * Init(project): 개발 워크플로우 자동화 구축 (#12) * init: 오토리뷰어 설정 * init: 라벨 자동 할당 설정 * init: assignee 자동 할당 설정 * init: Discord PR 알림 자동화 설정 * fix: Auto Label workflow 권한 수정 (#15) * Init(project) : CI/CD 파이프라인 구축 (#10) * feat : ci/cd yml 파일 생성 * refactor: 리뷰사항 반영 * feat : format:check, typecheck 설정 추가 * Init(project) : Vitest 및 Playwright 테스트 환경 설정 (#11) * Vitest 및 Playwright 테스트 환경 설정 * init : vercel git 추적 제거 * init: 테스트 공통 설정 패키지 추가 및 인프라 정리 * refactor : sds-icons 테스트코드 인프라 제거 * refactor: E2E 테스트 없을 때 test:e2e 통과하도록 수정 * style: Prettier 포맷 수정으로 format:check CI 통과 * init: husky 및 lint-staged 설정 (#13) * Init(project): ky 및 TanStack Query 세팅 (#7) * Init(project): SVGR 설정 (#8) * init: SVGR 의존성 추가 * init: Vite에 SVGR 플러그인 연결 * init: SVG React 컴포넌트 타입 선언 추가 * init: SVGR 적용 위치를 sds-icons로 변경 * init: sds-icons SVG 자동 생성 스크립트 추가 * refactor: SVGR 아이콘 생성 스크립트 개선 * Init(project): Storybook 초기 세팅 (#9) * init: Storybook 의존성 및 실행 스크립트 추가 * init: sds-ui Storybook 설정 추가 * init: Button Storybook 예시 추가 * init: Storybook 빌드 산출물 제외 설정 * init: Chromatic 연동 및 배포 검증 * init: Storybook 빌드 산출물 제외 설정 * chore: Chromatic CI 설정 추가 * chore: package 중복 의존성 제거 * Init(project): Sentry 세팅 및 디스코드 알림 연동 (#14) * init: @sentry/react 의존성 추가 * init: Sentry environment/release용 Vite env 설정 * init: Sentry 초기화 및 ErrorBoundary 연동 * fix: Auto Label 워크플로 PR 라벨 추가 권한 수정 pull-requests: read로는 PR 라벨 API 호출이 403으로 실패하므로 write 권한을 부여합니다. * init : Source Map 업로드 자동화 * refactor: Session Replay 제외 * Init(project): AI 작업 환경 골격 추가 (#6) * docs(docs): SIKSA-20 컨벤션 문서 추가 * docs(docs): SIKSA-20 아키텍처 문서 추가 * init(root): SIKSA-20 문서 라우팅 허브 추가 * init(root): SIKSA-20 Codex 스킬 골격 추가 * docs(docs): SIKSA-20 디자인시스템 관련 문서 추가 * docs(docs): SIKSA-20 agent workflow 문서 보강 * docs(docs): HASHI-20 프로젝트명 변경 반영 * style(root): HASHI-20 skill 설정 포맷 수정 * style(docs): HASHI-20 Tailwind 예시 포맷 수정 * chore(root): HASHI-33 FE agent harness 구조 개선 (#16) * fix(root): HASHI-31 서비스명 및 패키지명 변경 (#17) * Chore(project): HASHI-34 CI 및 배포 워크플로우 분리 (#18) * fix(root): HASHI-31 서비스명 및 패키지명 변경 * chore(project): HASHI-34 CI 및 배포 워크플로우 분리 * fix(project): HASHI-34 GitHub Actions Node 버전 수정 * Chore(hds): HASHI-35 HDS 패키지 entry 설정 보강 (#19) * chore(hds): HASHI-35 HDS 패키지 entry 설정 보강 * chore(root): HASHI-35 Vercel preview deployment 확인 * Chore(hds): HASHI-36 HDS 디자인 토큰 및 Storybook 스타일 환경 설정 (#21) * chore(hds): HASHI-36 HDS 디자인 토큰 추가 * chore(hds): HASHI-36 Storybook 토큰 스타일 환경 설정 * Chore(hds): 디자인시스템 agent harness 및 컴포넌트 generator 정비 (#23) * Feat(icon): HASHI-37 디자인 시스템 아이콘 추가 (#22) * feat: HASHI-37 Navigation 아이콘 추가 * feat: HASHI-37 Navigation icon 추가 * fix(icon): HASHI-37 Navigation icon 최종 아이콘 반영 * fix(icon): HASHI-37 Plus/Minus 아이콘 구조 개선 * fix(icon): HASHI-37 Star 아이콘 구조 개선 * fix(icon): HASHI-37 Search 아이콘 구조 개선 * fix(icon): HASHI-37 Check 아이콘 구조 개선 * fix(icon): HASHI-37 Cancle 아이콘 구조 개선 * fix(icon): HASHI-37 아이콘 네이밍 수정 * feat(icon): HASHI-37 Menu 아이콘 추가 * Chore(agent): HASHI-41 Storybook agent skill 추가 및 문서 정리 (#24) * chore(agent): HASHI-41 Storybook agent skill 추가 및 문서 정리 * chore(hds): HASHI-41 CVA 의존성 추가 * Feat(api): HASHI-38 공통 응답 스키마 정의 및 헬퍼 추가 (#20) * feat(api) : HASHI-38 백엔드 공통 응답 스키마 타입 추가 * feat(api): HASHI-38 API 응답 파싱용 request 헬퍼 추가 * chore(github): HASHI-38 preview build 재실행 * fix(api): HASHI-38 API 응답 헬퍼 에러 처리 단순화 * fix(api): HASHI-38 공통 응답 스키마 및 에러 처리 적용 * test(api): HASHI-38 request 헬퍼 단위 테스트 추가 및 env 예시 설정 * Feat(hds-ui): HASHI-51 Bottom Navigation 구현 (#25) * feat(packages/hds-icons): HASHI-51 내비게이션 아이콘 색상 제어 지원 * feat(packages/hds-ui): HASHI-51 BottomNavigation 컴포넌트 추가 * Feat(hds-ui): HASHI-46 Tabs 공통 컴포넌트 구현 (#26) * feat(hds-ui): HASHI-46 Tabs 공통 컴포넌트 구현 * chore(hds-ui): HASHI-46 Storybook Pretendard 폰트 적용 * fix(hds-ui): HASHI-46 Tabs 접근성 속성 추가 * Feat(hds-ui): HASHI-52 Dialog 컴포넌트 구현 (#29) * feat(packages/hds-ui): HASHI-52 Dialog 컴포넌트 추가 * style(packages/hds-ui): HASHI-52 Dialog 리뷰 반영 * docs(packages/hds-ui): HASHI-52 Dialog 구현 기준 보강 * chore(root): HASHI-57 Codex hook 추가 (#30) * Feat(hds-ui): HASHI-49 CollapsibleText 컴포넌트 구현 (#27) * feat(hds-ui): HASHI-49 CollapsibleText 컴포넌트 구현 * refactor(hds-ui): HASHI-49 CollapsibleText public API 정리 * fix(hds-ui): HASHI-49 CollapsibleText 더보기 노출 조건 수정 * fix(hds-icons): HASHI-49 아이콘 색상 currentColor 적용 * Feat(hds-ui): HASHI-50 Button 컴포넌트 구현 (#28) * docs(docs): HASHI-50 border/radius px rem 사용 가이드 추가 Figma 고정 수치와 대응되는 border 계열 값은 root font-size 영향을 받지 않도록 px 또는 token을 쓰도록 명시합니다. * docs(packages/hds-ui): HASHI-50 Button 컴포넌트 spec 추가 Figma 기준 primary/neutral variant, size, width, 상태, 접근성, v1 범위를 정의합니다. * feat(packages/hds-ui): HASHI-50 Button variant/size/width 구현 cva 기반 primary/neutral 스타일, icon slot, disabled/loading, public type export를 추가합니다. * test(packages/hds-ui): HASHI-50 Button 단위 테스트 추가 type 기본값, submit, loading interaction 차단, icon slot 렌더링을 검증합니다. * docs(packages/hds-ui): HASHI-50 Button Storybook story 추가 variant, size, full width, 탈퇴 2버튼, disabled, loading, icon, overflow 케이스를 문서화합니다. * refactor(packages/hds-ui): HASHI-50 Button Storybook Tailwind 스케일 적용 arbitrary rem/px를 text-sm, w-60 utility로 정리합니다. * fix(packages/hds-ui): HASHI-50 Button loading 중 slot icon 숨김 loading 상태에서는 leftIcon/rightIcon을 숨기고 spinner만 표시합니다. * test(packages/hds-ui): HASHI-50 Button loading icon 숨김 테스트 추가 * docs(packages/hds-ui): HASHI-50 Button spec 및 Storybook 리뷰 반영 currentColor icon 정책, loading icon 정책을 spec에 반영하고 HDS icon 기반 story를 추가합니다. * Feat(client): HASHI-58 모바일 뷰포트 레이아웃 설정 (#32) * feat(client): HASHI-58 모바일 뷰포트 레이아웃 설정 * feat(client): HASHI-58 모바일 레이아웃 변수 추가 * style(client): HASHI-58 모바일 fixed 상하단 UI 유틸 추가 * Feat(hds-ui): HASHI-55 IconButton 컴포넌트 구현 (#31) * docs(packages/hds-ui): HASHI-55 IconButton 컴포넌트 spec 추가 Figma 기준 xs/md size, plain surface, aria-label 필수, v1 범위와 deferred 결정을 정의합니다. * feat(packages/hds-ui): HASHI-55 IconButton size/loading 구현 cva 기반 xs/md touch target, bare surface, disabled/loading, aria-label 계약과 public type export를 추가합니다. * test(packages/hds-ui): HASHI-55 IconButton 단위 테스트 추가 accessible name, type 기본값, disabled/loading interaction 차단을 검증합니다. * docs(packages/hds-ui): HASHI-55 IconButton Storybook story 추가 topbar, edit className, size, disabled, loading, 넓은 hit area 케이스를 문서화합니다. * chore(packages/hds-ui): HASHI-55 develop 병합 후 충돌 해결 완료 * refactor(packages/hds-ui): HASHI-55 IconButton Tailwind 스케일 utility 적용 size arbitrary rem을 size-6/size-10으로 바꾸고 story viewport 폭을 393px 기준으로 정리합니다. * refactor(packages/hds-ui): Button export를 folder index 경로로 정리 button/index.ts barrel export를 추가하고 components/index.ts에서 ./button 경로를 사용합니다. * Feat(hds-ui): HASHI-56 SearchField 공통 컴포넌트 구현 (#36) * docs(packages/hds-ui): HASHI-56 SearchField 컴포넌트 spec 추가 * fix(packages/hds-icons): SearchIcon stroke를 currentColor로 통일 SearchField에서 아이콘 색상을 컨테이너 text color로 상속받도록 합니다. * feat(packages/hds-ui): HASHI-56 SearchField 구현 검색 아이콘 고정, native search input, disabled/focus-within 상태를 지원합니다. @hashi/hds-icons를 runtime dependency로 이동합니다. * test(packages/hds-ui): HASHI-56 SearchField 단위 테스트 추가 * docs(packages/hds-ui): HASHI-56 SearchField Storybook story 추가 * docs(packages/hds-ui): HASHI-56 SearchField 모바일 viewport를 430px로 수정 Storybook wrapper와 spec 체크리스트를 430px 기준으로 맞춥니다. * feat(packages/hds-ui): HASHI-56 SearchField ref forwarding 및 focus 스타일 정리 * test(packages/hds-ui): HASHI-56 SearchField ref forwarding 테스트 추가 * docs(packages/hds-ui): HASHI-56 SearchField spec 및 Storybook 리뷰 반영 * Feat(hds-ui): HASHI-53 Checkbox 공통 컴포넌트 구현 (#35) * chore(hds-ui): HASHI-53 hds-icons 의존성 추가 * feat(hds-ui): HASHI-53 Checkbox 공통 컴포넌트 구현 * docs(hds-ui): HASHI-53 Checkbox 컴포넌트 스펙 추가 * test(hds-ui): HASHI-53 Checkbox 동작 테스트 추가 * fix(hds-ui): HASHI-53 Checkbox ref 전달 및 접근성 보완 * Feat(hds-ui): HASHI-44 chip 공통 컴포넌트 구현 (#33) * feat(hds-ui): HASHI-44 chip 공통 컴포넌트 구현 * feat(hds-ui): HASHI-44 chip 공통 컴포넌트 코드리뷰 반영 * feat(hds-ui): HASHI-44 chip 공통 컴포넌트 disabled 제거 * Feat(hds-ui): HASHI-45 badge 공통 컴포넌트 구현 (#34) * feat(hds-ui): HASHI-45 badge 공통 컴포넌트 구현 * feat(hds-ui): HASHI-45 badge 공통 컴포넌트 코드리뷰 반영 * Feat(hds-ui): HASHI-61 Carousel 컴포넌트 구현 (#38) * feat(packages/hds-ui): HASHI-61 Carousel 컴포넌트 추가 * test(packages/hds-ui): HASHI-61 Carousel 테스트 추가 * docs(packages/hds-ui): HASHI-61 Carousel 문서와 스토리 추가 * fix(packages/hds-ui): HASHI-61 Carousel resize 위치 보정 * Feat(hds-ui): HASHI-54 Avatar 공통 컴포넌트 구현 (#40) * feat(hds-ui): HASHI-54 Avatar 공통 컴포넌트 추가 * fix(hds-ui): HASHI-54 Avatar placeholder 표시 수정 * fix(hds-ui): HASHI-58 Avatar 이미지 로딩 실패 fallback 처리 * Feat(hds-ui): HASHI-60 Header 공통 컴포넌트 구현 (#43) * docs(packages/hds-ui): HASHI-60 Header 컴포넌트 spec 추가 * feat(packages/hds-ui): HASHI-60 Header 구현 * test(packages/hds-ui): HASHI-60 Header 단위 테스트 추가 * docs(packages/hds-ui): HASHI-60 Header Storybook story 추가 * docs(packages/hds-ui): HASHI-60 Header 중복 MobileViewport393 story 제거 * fix(packages/hds-ui): HASHI-60 빈 subtitle이 Header 높이를 확장하지 않도록 수정 * Feat(project): HASHI-47 BottomSheet 공통 컴포넌트 & 로그인 바텀시트/ 필터 바텀시트 컴포넌트 구현 (#37) * feat(hds-ui): HASHI-47 바텀시트 컴포넌트 구현 * feat(client): HASHI-47 로그인 바텀시트 구현 * feat(client): HASHI-47 검색 필터 바텀시트 구현 * chore(hds): HASHI-47 색상 및 아이콘 추가 * fix(hds-ui): HASHI-47 BottomSheet 모바일 프레임 너비 제한 적용 * refactor(client): HASHI-47 카카오 시작 버튼 분리 및 KakaoIcon 적용 * fix(client): HASHI-47 제목과 리스트 사이 간격 수정 * refactor(client): HASHI-47 FilterBottomSheet를 shared 컴포넌트로 이동 * fix(hds-ui): HASHI-47 BottomSheet 접근성 동작 보완 * docs(hds-ui): HASHI-47 BottomSheet 스토리북 예시 정리 * refactor(client): HASHI-47 카카오 로그인 아이콘 위치 조정 * Feat(hds-ui): HASHI 63 textarea 공통 컴포넌트 구현 (#42) * feat(hds-ui): HASHI-63 Textarea 공통 컴포넌트 추가 * docs(hds-ui): HASHI-63 Textarea Storybook 추가 * fix(hds-ui): HASHI-63 Textarea 글자 수 제한 보강 * fix(hds-ui): HASHI-63 textarea 리뷰 피드백 반영 * fix(hds-ui): HASHI-63 textarea 너비 코드리뷰 반영 * Feat(hds-ui): HASHI-59 StarRating 공통 컴포넌트 구현 (#41) * docs(packages/hds-ui): HASHI-59 StarRating 컴포넌트 spec 추가 * feat(packages/hds-ui): HASHI-59 StarRating 구현 * test(packages/hds-ui): HASHI-59 StarRating 단위 테스트 추가 * docs(packages/hds-ui): HASHI-59 StarRating Storybook story 추가 * fix(packages/hds-ui): HASHI-59 StarRating value를 0~5로 clamp해 별 표시와 aria-label 정합성 보장 * Chore(client): HASHI-62 레이아웃 및 라우팅/접근 권한 정책 설정 (#46) * chore(client): HASHI-62 페이지 라우트 스캐폴드 추가 * chore(client): HASHI-62 라우터 구조 설정 * docs(client): HASHI-62 라우팅 및 접근 권한 정책 문서 수정 * refactor(client): HASHI-62 클라이언트 내부 import 경로 정리 * chore(client): HASHI-62 하단 네비게이션 레이아웃 설정 * feat(client): HASHI-62 준비중 페이지 라우트 추가 * feat(client): HASHI-62 하단 네비게이션 저장 지도 경로 연결 * feat(client): HASHI-62 홈 진입 로그인 유도 바텀시트 연결 * fix(hds-ui): HASHI-62 하단 네비게이션 아이템 간격 수정 * chore(root): HASHI-69 README 작성 (#50) * Feat(hds-ui): HASHI-64 InputField 공통 컴포넌트 구현 (#44) * feat(hds-ui): HASHI-64 InputField 공통 컴포넌트 구 * fix(hds-ui): HASHI-64 InputField 리뷰 피드백 반영 * Feat(hds-ui): HASHI-43 counter 컴포넌트 구현 (#48) * feat(hds-ui): HASHI-43 counter 컴포넌트 구현 * feat(hds-ui): HASHI-43 counter 컴포넌트 코드리뷰 반영 * Feat(hds-ui): HASHI-42 calendar 공통 컴포넌트 구현 (#47) * feat(hds-ui): HASHI-42 calendar 공통 컴포넌트 구현 * feat(hds-ui): HASHI-42 calendar 공통 컴포넌트 접근성 수정 * feat(hds-ui): HASHI-42 calendar 공통 컴포넌트 color 추가 * feat(hds-ui): HASHI-42 calendar 공통 컴포넌트 디자인 세부사항 반영 * feat(hds-ui): HASHI-42 calendar 컴포넌트 코드리뷰 반영 * Chore(turbo): HASHI-65 페이지 스펙 하네스 추가 (#45) * Feat(client): HASHI-66 ComingSoon 페이지 퍼블리싱 (#49) * style(client): HASHI-66 하단 네비 콘텐츠 영역 유틸 추가 * feat(client): HASHI-66 ComingSoon 페이지 퍼블리싱 * refactor(client): HASHI-66 준비중 페이지 이미지 접근성 정리 * fix(client): HASHI-66 empty 이미지 경로 수정 * fix(client): HASHI-66 ComingSoonPage main 중첩 제거 * Feat(client): HASHI-68 NotFound 페이지 구현 (#51) * feat(client): HASHI-68 404 페이지 구현 * fix(hds-ui): HASHI-68 BottomNavigation 선택 상태 optional 처리 * fix(client): HASHI-68 404 페이지 접근성 제목 추가 * fix(client): HASHI-68 NotFoundPage main 중첩 제거 * fix(client): HASHI-68 하단 네비 콘텐츠 높이 유틸 적용 * Feat(reservation): HASHI-78 예약하기 페이지 구현 (#53) * feat(apps/client): HASHI-78 예약 날짜 유틸 추가 * feat(apps/client): HASHI-78 예약하기 페이지 구현 * fix(apps/client): HASHI-78 GuestCounter 숫자 폭 고정 * chore(root): HASHI-78 lint 및 import 규칙 강화 * fix(packages/hds-ui): HASHI-78 캘린더 헤더 연도 표시 * style(apps/client): HASHI-78 예약 페이지 spacing 조정 * Feat(client): HASHI-70 LoginRequired 페이지 퍼블리싱 (#52) * feat(hds-icons): HASHI-70 KakaoIcon 추가 * refactor(client): HASHI-70 KakaoStartButton shared로 이동 * feat(client): HASHI-70 로그인 필요 페이지 구현 * fix(hds-ui): HASHI-70 BottomNavigation 선택 상태 optional 처리 * chore(client): HASHI-70 임시 인증 상태 기본값 변경 * fix(client): HASHI-70 LoginRequiredPage main 중첩 제거 * feat(client): HASHI-70 KakaoStartButton className 확장 * fix(client): HASHI-70 로그인 바텀시트 전역 노출 제거 * Feat(client): HASHI-71 예약 상세 페이지 퍼블리싱 (#54) * feat(hds-tokens): HASHI-71 z-index 토큰 추가 * feat(client): DefaultImage 공통 컴포넌트 추가 구현 * feat(client): 날짜 포맷 유틸 함수 추가 * feat(client): HASHI-71 예약 진행 상태 섹션 구현 * feat(client): HASHI-71 예약 접수 정보 카드 구현 * feat(client): HASHI-71 예약 안내 문구 섹션 구현 * feat(client): HASHI-71 예약 상세 하단 액션바 구현 * feat(client): HASHI-71 예약 상세 페이지 퍼블리싱 * docs(github): HASHI-71 PR 템플릿 Description 섹션 추가 * refactor(client): HASHI-71 예약 상세 컴포넌트 page-local 구조로 정리 * refactor(client): HASHI-71 예약 상세 페이지 로직 hook 분리 * fix(client): HASHI-71 예약 진행 날짜 표시 규칙 수정 * fix(client): HASHI-78 예약하기 페이지 fixed UI 기준 반영 * docs(reservation-detail): HASHI-71 예약 상세 페이지 스펙 추가 * refactor(client): HASHI-71 예약 상세 route param 연결 * fix(client): HASHI-71 예약 상세 진행 상태 UI 보정 * fix(client): HASHI-71 format 에러 해결 * Feat(client): HASHI-82 예약 요청 페이지 퍼블리싱 (#59) * feat(apps/client): HASHI-82 예약 요청 페이지 구현 * style(apps/client): HASHI-82 예약 요청 페이지 포맷 적용 * fix(apps/client): HASHI-82 예약 요청 페이지 리뷰 반영 * fix(apps/client): HASHI-82 포인트 마크 HDS 아이콘 적용 * Feat(client): HASHI-74 홈 페이지 퍼블리싱 (#55) * feat(client): HASHI-74 홈 페이지 퍼블리싱 * feat(client): HASHI-74 홈 페이지 퍼블리싱 코드리뷰 반영 * feat(client): HASHI-74 홈 페이지 퍼블리싱 큐레이션 캐러셀 * feat(client): HASHI-74 홈 페이지 퍼블리싱 큐레이션 캐러셀 * feat(client): HASHI-74 홈 페이지 퍼블리싱 코드리뷰 반영 * feat(client): HASHI-74 홈 페이지 퍼블리싱 코드리뷰 반영 * Feat(client): HASHI-72 리뷰 작성 페이지 퍼블리싱 (#58) * Feat(hds-ui): HASHI-72 Badge interactive 모드 추가 * Feat(hds-ui): HASHI-72 Textarea showCounter 옵션 추가 * Feat(client): HASHI-72 review 입력 규칙 및 validation utils 추가 * Feat(client): HASHI-72 review 표시용 feature components 추가 * Feat(client): HASHI-72 InputReviewRate 구현 * Feat(client): HASHI-72 InputReviewKeyword 및 InputReviewMain 구현 * Feat(client): HASHI-72 ReviewNewPage 구현 * Refactor(client): HASHI-72 useReviewForm을 review feature hooks로 승격 * Update apps/client/src/features/review/components/inputReviewKeyword/InputReviewKeyword.tsx * Apply suggestions from code review * fix(client): HASHI-72 리뷰 작성 화면 반응형 레이아웃 개선 * docs(review): HASHI-72 ReviewSubmitBar spec 반응형 기준 반영 * refactor(client): HASHI-72 ReviewReservationSummary DefaultImage fallback 적용 * Feat(client): HASHI-75 검색 페이지 퍼블리싱 (#60) * feat(client): HASHI-75 검색 페이지 퍼블리싱 * feat(client): HASHI-75 검색 페이지 퍼블리싱 구조 개선 * feat(client): HASHI-75 검색 페이지 퍼블리싱 스크롤바 제거 * feat(client): HASHI-75 검색 페이지 퍼블리싱 encodeURIComponent 적용 * feat(client): HASHI-75 검색 페이지 퍼블리싱 코드리뷰 반영 * Feat(client): HASHI-73 예약 정보 페이지 퍼블리싱 (#63) * docs(client): HASHI-73 예약 정보 페이지 스펙 작성 * feat(client): HASHI-73 Empty 공통 컴포넌트 구현 * chore(client): 개발용 인증 상태 기본값 변경 * feat(hds-tokens): HASHI-73 z-index, gradient 토큰 추가 * docs(my-reservations): HASHI-73 예약 정보 페이지 구현 기준 정리 * feat(client): HASHI-73 예약 정보 상태 및 mock 데이터 구성 * feat(client): HASHI-73 예약 정보 헤더와 리스트 영역 구현 * feat(client): HASHI-73 예약 상태별 카드와 취소 모달 구현 * feat(client): HASHI-73 예약 필터 상태 URL query 연동 * fix(client): HASHI-73 auth 상태 원복 및 Empty spec 추가 * fix(client): HASHI-73 예약 상태 필터 중복 선택 방지 * docs(client): HASHI-73 예약 정보 empty 문구 정책 수정 * Feat(client): HASHI-77 매거진 리스트 페이지 퍼블리싱 (#61) * feat(client): HASHI-77 매거진 리스트 페이지 퍼블리싱 * feat(client): HASHI-77 매거진 리스트 페이지 퍼블리싱 정규화 적용 * feat(client): HASHI-77 매거진 리스트 페이지 퍼블리싱 코드리뷰 반영 * feat(client): HASHI-77 매거진 리스트 페이지 퍼블리싱 검색 페이지 stickyHeader 적용 * Feat(client): HASHI-79 마이페이지 화면 퍼블리싱 (#64) * docs(mypage): HASHI-79 마이페이지 구현 기준 정리 * feat(client): HASHI-79 준비중 안내 모달 구현 * feat(client): HASHI-79 마이페이지 상태와 메뉴 데이터 구성 * feat(client): HASHI-79 마이페이지 화면 퍼블리싱 * docs(conventions): HASHI-79 Tailwind scale class 사용 기준 추가 * fix(client): HASHI-79 마이페이지 외부 링크 처리 개선 * docs(client): HASHI-79 ComingSoonDialog spec 추가 * docs(hds-ui): HASHI-79 Dialog dim overlay 기준 반영 * Feat(client): HASHI-83 마이 리뷰 페이지 구현 (#62) * fix(hds-ui): HASHI-83 StarRating filled 색상을 primary-400으로 수정 * feat(client): HASHI-83 myReviews 타입·상수·mock 데이터 추가 * feat(client): HASHI-83 myReviews 표시용 page-local components 추가 * feat(client): HASHI-83 WrittenReviewCard 구현 * feat(client): HASHI-83 useMyReviewsPage hook 추가 * feat(client): HASHI-83 MyReviewsPage 구현 * refactor(client): HASHI-83 ReviewDeleteConfirmDialog을 review feature로 분리 * chore(client): HASHI-83 MyReviewEmptyState 그래픽 슬롯 TODO 주석 정리 * fix(client): HASHI-83 마이 리뷰 화면 반응형 레이아웃 개선 * Fix(client): HASHI-83 마이리뷰 UI/a11y 정리 * Feat(client): HASHI-86 어디든 예약 페이지 구현 (#65) * feat(apps/client): HASHI-86 어디든 예약 페이지 구현 * fix(apps/client): HASHI-86 어디든 예약 고정 레이어 정리 * fix(apps/client): HASHI-86 고정 헤더 important 제거 * fix(apps/client): HASHI-86 고정 헤더 위치 복구 * fix: HASHI-86 예약 흐름 QA 보강 * refactor(root): HASHI-86 예약 공통 UI 정리 * fix(apps/client): HASHI-86 예약 헤더 고정 복구 * Feat(client): HASHI-87 리뷰 상세 페이지 퍼블리싱 (#66) * Feat(client): HASHI-87 리뷰 상세 페이지 퍼블리싱 * Feat(client): HASHI-87 리뷰 상세 UI 조정 * Chore(client): 테스트용 auth true * Docs(client): 리뷰 상세 a11y 문구 정리 * Chore(client): auth status 기본값 원복 * feat(apps/client): HASHI-87 수정 준비중 안내 연결 * Feat(client): HASHI-76 프로필 생성 페이지 퍼블리싱 (#67) * feat(client): HASHI-76 프로필 생성 페이지 퍼블리싱 * feat(client): HASHI-76 프로필 생성 페이지 퍼블리싱 * feat(client): HASHI-76 프로필 생성 페이지 퍼블리싱 코드리뷰 반영 * feat(client): HASHI-76 프로필 생성 페이지 퍼블리싱 코드리뷰 반영 * feat(client): HASHI-76 프로필 생성 페이지 authStatus 롤백 * Feat(hds-ui): HASHI-88 Toast 컴포넌트 구현 (#69) * feat(hds-icons): HASHI-88 LinkIcon 추가 * feat(hds-ui): HASHI-88 Toast 컴포넌트 구현 * fix(hds-ui): HASHI-88 Toast 컴포넌트 스토리북 수정 * feat(hds-ui): HASHI-88 Toast 기본 자동 닫힘 헬퍼 추가 * fix(hds-ui): HASHI-88 Toast helper 루트 export 추가 * Feat(client): HASHI-90 로딩 페이지 구현 (#70) * feat(apps/client): HASHI-90 로딩 화면 구현 * Fix(client): HASHI-90 chopsticks 그래픽 svg로 교체 * Fix(client): HASHI-90 lazy fallback route branch 적용 * Feat(client): HASHI-80 Hashi-Pick 페이지 퍼블리싱 (#56) * feat(hds-ui): HASHI-80 BottomSheet 닫힘 옵션 추가 * feat(client): HASHI-80 식당 리스트 공통 UI 구현 * feat(client): HASHI-80 하시 Pick 페이지 퍼블리싱 * fix(client): HASHI-80 하시 Pick 라우트 연결 * fix(client): HASHI-80 식당 카드 디자인 QA 반영 * fix(client): HASHI-80 식당 카드 모바일 레이아웃 QA 반영 * refactor(client): HASHI-80 식당 리스트 기능 구조 이동 * fix(apps/client): HASHI-80 하시픽 코드리뷰 반영 * fix(apps/client): HASHI-80 하시픽 공통 리뷰 반영 * fix(apps/client): HASHI-80 리스트 back 홈 이동 반영 * fix(apps/client): HASHI-80 리스트 헤더 고정 반영 * Feat(client): HASHI-81 인기 맛집 페이지 퍼블리싱 (#57) * feat(hds-ui): HASHI-80 BottomSheet 닫힘 옵션 추가 * feat(client): HASHI-80 식당 리스트 공통 UI 구현 * feat(client): HASHI-80 하시 Pick 페이지 퍼블리싱 * feat(client): HASHI-81 인기 맛집 페이지 퍼블리싱 * fix(client): HASHI-80 하시 Pick 라우트 연결 * fix(client): HASHI-81 인기 맛집 라우트 연결 * fix(client): HASHI-80 식당 카드 디자인 QA 반영 * fix(client): HASHI-80 식당 카드 모바일 레이아웃 QA 반영 * refactor(client): HASHI-80 식당 리스트 기능 구조 이동 * refactor(client): HASHI-81 식당 리스트 기능 경로 적용 * fix(apps/client): HASHI-81 인기맛집 코드리뷰 반영 * fix(apps/client): HASHI-81 인기맛집 코드리뷰 반영 * fix(apps/client): HASHI-81 리스트 back 홈 이동 반영 * fix(apps/client): HASHI-81 리스트 헤더 고정 반영 * fix(apps/client): HASHI-81 필터 초기화 닫힘 반영 * Feat(client): HASHI-84 오늘의 식당 및 메뉴 상세 페이지 퍼블리싱 (#68) * feat(client): HASHI-84 오늘의 식당 및 메뉴 상세 페이지 퍼블리싱 * fix(apps/client): HASHI-84 식당 상세 리뷰 반영 * feat(apps/client): HASHI-84 공유 토스트 및 리뷰 CTA 여백 정리 * fix(apps/client): HASHI-84 토스트 위치 및 여백 조정 * chore(root): HASHI-92 API 연동 하네스 구성 (#71) * chore(apps/client): HASHI-101 PWA 설정 추가 (#80) - 모바일 환경에서 홈 화면 설치와 정적 앱 셸 오프라인 사용을 지원합니다. - API 및 인증 응답은 캐시하지 않아 서버 상태 정합성을 유지합니다. * Fix(client): HASHI-96 예약 정보 및 예약 상세 페이지 QA 반영 (#74) * fix(hds-ui): HASHI-96 로그인 바텀시트 접근성 outlined 제거 * fix(client): HASHI-96 배경색 변경 * fix(client): HASHI-96 마이페이지 수정 버튼 disabled 처리 * fix(hds-ui): HASHI-96 마이페이지 Avatar default 이미지 적용 * fix(hds-ui): HASHI-96 로그인 바텀시트 디자인 수정 * fix(hds-ui): HASHI-96 Header shadow 적용 * fix(hds-ui): HASHI-96 예약 상세 페이지 CTA 경로 연결 * fix(client): HASHI-96 라우트 전환 시 스크롤 위치 초기화 * fix(client): HASHI-96 마이 리뷰 페이지 헤더 shadow 제거 * fix(client): HASHI-96 예약 정보 및 예약 상세 페이지 인터랙션 추가 * fix(client): HASHI-96 예약 취소 후 진행 중 예약 정보로 이동 * test(client): HASHI-96 브라우저 API 테스트 환경 보강 * fix(client): HASHI-96 예약 정보 및 예약 상세 페이지 proressbar 디자인 수정 * Fix(reservation): HASHI-98 예약 플로우 1차 QA 피드백 반영 (#75) * docs(docs): HASHI-98 캐러셀 인터랙션 설계 추가 * feat(packages/hds-ui): HASHI-98 캐러셀 인터랙션 보강 * fix(packages/hds-ui): HASHI-98 달력 월 이동 제한 예약 달력에서 현재 월 이전으로 이동해 과거 날짜를 노출하지 않도록 하한을 추가한다. * fix(apps/client): HASHI-98 예약 화면 QA 반영 고정 헤더, 요청 CTA 문구, 날짜 변경 시 시간 초기화를 반영해 예약 초안 상태가 화면과 일치하도록 한다. * fix(apps/client): HASHI-98 예약 CTA 문구 수정 예약 입력 후 확인 단계로 이어지는 동작을 명확히 전달하기 위해 CTA를 다음으로 통일한다. * Chore(client): HASHI-93 split vendor chunks (#72) * fix(client): HASHI-94 1차 자체 QA 반영 (#79) * Fix(client): HASHI-95 QA 버튼 스타일 및 마이리뷰 화면 보정 (#76) * style(packages/hds-ui): HASHI-95 Button press 상태 적용 * feat(apps/client): HASHI-95 마이리뷰 QA 반영 * style(apps/client): HASHI-95 버튼 토큰 기준 정리 * style(apps/client): HASHI-95 포맷 정리 * style(packages/hds-ui): HASHI-95 Button active feedback 적용 * fix(apps/client): HASHI-95 카카오 버튼 press 색상 유지 * fix(apps/client): HASHI-95 카카오 버튼 active opacity 조정 * style(apps/client): HASHI-95 리뷰 CTA 색상 조정 * Fix(toast): HASHI-103 Toast 인터랙션 수정 (#81) * fix(toast): HASHI-103 Toast 인터랙션 수정 * fix(client): HASHI-103 Toast 컴포넌트 애니메이션 적용 --------- * Feat(client): HASHI-100 라우트 로딩 플리커링 개선 (#78) * feat(apps/client): HASHI-100 라우트 로딩 플리커링 완화 * fix(apps/client): HASHI-100 fallback 표시 시에만 최소 로딩 시간 적용 * Init(client):HASHI-28 swagger-typescript-api 세팅 (#82) * init(client):HASHI-28 swagger-typescript-api 세팅 * init(root): HASHI-28 OpenAPI 타입 생성 skill 추가 * chore(root): HASHI-28 openapi-typescript peer 범위에 맞춰 TypeScript 버전 조정 --------- Co-authored-by: jyeon03 <[email protected]> Co-authored-by: 백지연 <[email protected]> Co-authored-by: 송민서 <[email protected]> Co-authored-by: yurimidaH <[email protected]> Co-authored-by: chungyoung kim <[email protected]>

📌 Summary
HDS 디자인시스템 작업을 Codex/AI agent가 일관된 흐름으로 수행할 수 있도록 agent routing, repo-scoped skill, HDS component generator를 정비했습니다.
이번 PR은 실제 HDS 컴포넌트를 추가하는 작업이 아니라, 앞으로
packages/hds-ui와packages/hds-icons작업을 시작할 때 agent가 어떤 문서를 읽고, 어떤 경계 안에서 컴포넌트를 생성하고, 어떤 검증을 수행해야 하는지 고정하는 작업입니다.Jira: HASHI-39, HASHI-40
📚 Tasks
packages/AGENTS.md추가packages/하위 작업에서 먼저 읽을 디자인시스템 문서를 라우팅합니다.packages/hds-ui,packages/hds-icons,configs/tsconfig의 책임 경계를 정리했습니다.hds-component-creatorrepo-scoped skill 추가Quality Pass로 추가했습니다.gen:ds-componentgenerator 개선{ComponentName}.tsx{ComponentName}.spec.md{ComponentName}.stories.tsxindex.tspackages/hds-ui/src/components/index.ts에 component export와 props type export를 함께 append하도록 수정했습니다.formatGeneratedFilesaction을 추가해, 컴포넌트 이름 길이와 관계없이 생성 파일이format:check를 통과하도록 했습니다.HDS/agent 관련 문서 동기화
AGENTS.md,.agents/README.md,.agents/checklists/pre-work.md,.agents/recipes/hds-component.md의 HDS 라우팅을 갱신했습니다.docs/agent/skills.md에hds-component-creator를 등록했습니다.docs/workflows/turbo-generators.md에ds-component생성 결과와 생성 후 formatting 동작을 문서화했습니다.docs/architecture/design-system*,docs/rules/design-system-instructions.md,docs/workflows/spec-templates/*의 Storybook/spec/generator 기준을 현재 repo 상태와 맞췄습니다.🧭 설계 의도
1.
docs/는 source of truth,.agents/는 실행 라우팅디자인시스템 규칙 원문은 계속
docs/에 둡니다.AGENTS.md,packages/AGENTS.md,.agents/skills/*,.agents/recipes/*는 규칙을 중복 설명하기보다 agent가 어떤 문서를 읽고 어떤 순서로 작업해야 하는지 안내하는 역할로 제한했습니다.이렇게 둔 이유는 사람이 읽는 문서와 agent 실행 지침이 따로 진화하면서 충돌하는 문제를 줄이기 위해서입니다.
2. HDS skill은 “컴포넌트 생성 전체”가 아니라 “경계와 검증”을 담당
hds-component-creator는 HDS 컴포넌트를 실제로 어떻게 디자인할지 전부 결정하는 skill이 아닙니다.이 skill의 책임은 다음으로 제한했습니다.
상세 Storybook authoring은 나중에 별도 skill이 생기면 그쪽으로 넘길 수 있게 문서에 명시했습니다.
3. generator는 “완성 컴포넌트”가 아니라 “일관된 시작점” 제공
gen:ds-component는 최종 컴포넌트를 자동으로 완성하지 않습니다.대신 모든 사람이 같은 구조에서 시작하도록 다음 파일을 생성합니다.
현재 component template은 가장 중립적인
div기반 scaffold입니다.실제 컴포넌트 구현 시에는 Button, Input, Dialog 등 semantic element와 accessibility 요구사항에 맞게 수정하는 전제입니다.
4. 생성 후 formatting을 generator 책임으로 포함
처음에는 template만 Prettier 스타일에 맞추려 했지만, 컴포넌트 이름 길이에 따라 Prettier가 한 줄/여러 줄을 다르게 선택하는 문제가 있었습니다.
그래서
ds-componentgenerator 마지막에 생성 파일만 Prettier로 정리하는 action을 추가했습니다.이제
Commit Smoke,Quality Gate Smoke처럼 이름 길이가 달라도 생성 직후format:check를 통과합니다.🧩 주요 변경 파일
packages/AGENTS.mdpackages/작업용 package-level routing hub를 추가했습니다.packages/hds-ui와packages/hds-icons에 들어가면 안 되는 app domain 책임을 명시했습니다..agents/skills/hds-component-creator/SKILL.mdturbo/generators/config.tsds-componentgenerator가 component/spec/story/local index를 생성하도록 확장했습니다.formatGeneratedFilesaction을 추가해 생성 직후 Prettier를 실행합니다.turbo/generators/templates/ds-component/*docs/agent/skills.mdhds-component-creator를 registered skill로 추가했습니다.docs/workflows/turbo-generators.mdgen:ds-component생성 결과를 최신화했습니다.✅ Verification
아래 검증을 수행했습니다.
corepack pnpm gen:ds-componentQuality Gate SmokeformatGeneratedFilesaction 실행 확인generated HDS component formatting
corepack pnpm exec prettier --check packages/hds-ui/src/components/qualityGateSmoke packages/hds-ui/src/components/index.tsHDS UI package checks
corepack pnpm --filter @hashi/hds-ui lintcorepack pnpm --filter @hashi/hds-ui typecheckcorepack pnpm --filter @hashi/hds-ui buildcorepack pnpm --filter @hashi/hds-ui testcorepack pnpm --filter @hashi/hds-ui build-storybookrepo checks
corepack pnpm format:checkcorepack pnpm lintcorepack pnpm typecheckgit diff --checkagent harness checks
bash .agents/scripts/check-harness.shpython3 /Users/chuchu/.codex/skills/.system/skill-creator/scripts/quick_validate.py .agents/skills/hds-component-creator👀 To Reviewer
hds-component-creator는 Storybook 세부 작성까지 담당하지 않도록 의도했습니다. 추후 Storybook 전용 skill이 생기면 story variant/interaction 작성은 해당 skill로 넘길 수 있습니다.gen:ds-component의 기본 component root는div입니다. 이는 최소 scaffold이며, 실제 컴포넌트 구현 시 semantic element와 접근성 요구사항에 맞게 수정해야 합니다.lint/typecheck는 Codex 환경에서 PATH의[email protected]이 먼저 잡히는 문제가 있어, 프로젝트 선언 버전인[email protected]Corepack shim을 앞세워 검증했습니다.@hashi/hds-ui test는 현재 테스트 파일이 없어 Vitest가No test files found, exiting with code 0으로 종료합니다.📸 Screenshot
화면 변경이 없어 생략합니다.