Skip to content

Bugfix/#104 - 1차 QA 수정사항 반영 - #106

Merged
yeseonglee merged 9 commits into
developfrom
bugfix/#104
Aug 18, 2026
Merged

Bugfix/#104 - 1차 QA 수정사항 반영#106
yeseonglee merged 9 commits into
developfrom
bugfix/#104

Conversation

@yeseonglee

@yeseonglee yeseonglee commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

✨ What's this PR?

📌 관련 이슈 (Related Issue)


🧶 주요 변경 내용 (Summary)

  • 영구 삭제(hard delete) 전 확인 alert 추가
  • Expired 탭에서 임박 예정 섹션 분류 제거, 이미 만료된 것만 표시하도록 정리
  • 프로젝트 생성 팝업의 버튼을 공통 컴포넌트 DVButton으로 교체
  • 타입 셀렉 뷰 그리드 높이 중앙 정렬
  • 프로젝트 선택 다크모드 컬러 수정
  • 리스트뷰 No secrets 문구를 디테일뷰와 색상/정렬 통일
  • 리스트/프로젝트 셀 선택 시 텍스트 흰색 강조 및 부드러운 전환 효과 추가
  • EnvSet 표시 이름을 "Environment Variable Set"으로 변경
  • 사이드바 필터 아이콘 컬러를 starred/deleted 상태별로 명시

📸 스크린샷 (Optional)

해당 없음


🧪 테스트 / 검증 내역

  • UI 정상 동작 확인
  • My Mac, macOS 환경에서 정상 동작

💬 기타 공유 사항

  • localization, 서비스 로고 자동 매칭 항목은 후속 작업으로 남겨둠

🙇🏻‍♀️ 리뷰 가이드 (선택)

  • SecretListView.swift, SecretListFeature.swift의 리스트뷰 정리 로직
  • DVTitleBar.swift, DVProjectContainer.swift의 컬러/스타일 변경 지점

Summary by CodeRabbit

  • 새로운 기능
    • 영구 삭제 전에 확인 알림이 표시됩니다.
    • 선택된 프로젝트와 보관함 항목이 더 명확하게 강조됩니다.
  • 개선 사항
    • 만료 항목 목록 표시가 단순화되고 만료 기준이 정리되었습니다.
    • 프로젝트 생성 화면 버튼과 여러 화면의 레이아웃이 디자인에 맞게 개선되었습니다.
    • 빈 상태와 입력 placeholder의 가독성이 향상되었습니다.
    • 다크 모드 색상과 필터 아이콘 색상이 조정되었습니다.
    • 환경 변수 세트 명칭과 관련 문구가 업데이트되었습니다.

- Deleted 탭에서 Delete Forever를 누르면 바로 지우지 않고 확인 alert를 띄운 뒤 확정해야 삭제되도록 변경
- Expired 탭이 30일 이내 만료 예정까지 함께 보여주던 window/섹션 분류(Expired/7일/30일)를 없애고 실제로 지난 것만 조회
- 사이드바 Expired 카드 개수도 같은 기준으로 맞춰 목록 개수와 어긋나지 않게 함
- 더 이상 쓰이지 않는 SecretQuery.Collection.expiringWindow, SecretExpiryPolicy.listingWindowDays, ExpiryBucket 제거
- 시스템 Button/.borderedProminent 대신 DVDesign의 DVButton(secondary/secondaryProminent) 사용
- lock 아이콘 자리를 감안해 상단 패딩은 빼고 하단 패딩 48만 남김
- Project 드롭다운에서 선택된 행 텍스트가 vaultGreenDark라 다크모드에서 배경(vaultGreenTint)과 겹쳐 안 보이던 문제 — 선택 여부와 무관하게 gray900 고정
- vaultGreenTint 다크 값을 vaultGreenDark 톤으로 올려 칩 배경이 다크모드에서도 또렷하게 보이도록 수정
- DVChipsContainer의 placeholder(No project selected 등)가 gray400/gray300 배경 조합이라 다크모드에서 거의 안 보이던 것을 gray500으로 조정
- gray400 -> gray700, bodyMD -> captionLG로 디테일뷰 No secret selected와 맞춤
- 헤더(DVTitleBar)를 ZStack으로 얹어 empty/error 상태가 남은 영역이 아니라 창 전체 높이 기준으로 중앙 정렬되게 구조 변경 — 기존엔 헤더 높이만큼 아래로 처져 디테일뷰와 높이가 안 맞았다
- 리스트는 safeAreaInset으로 헤더 높이만큼 위쪽을 예약해 기존과 동일하게 헤더 아래에서 시작
- DVTitleBar에 컴포넌트 총 높이를 계산하는 totalHeight를 노출해 매직 넘버 없이 헤더 높이 보정
- DVVaultContainer의 이름/날짜 텍스트가 선택 시 trailing 배지처럼 흰색으로 바뀌도록 수정
- DVProjectContainer에 isSelected가 아예 없어서 선택돼도 항상 gray900이던 것을 DVCategory와 같은 패턴으로 추가
- 두 컴포넌트 다 MotionMetrics.hover 애니메이션을 붙여 색 전환이 사이드바 타입 셀렉처럼 부드럽게 되도록 함
다른 시크릿 타입 라벨(API Keys/Token, OAuth 등)과 달리 축약형이라 어울리지 않아 풀어씀.
default(gray800)로 뭉뚱그려져 있던 starred/deleted 필터 아이콘 컬러를 각각 vaultGreen/gray700로 분리.
@yeseonglee yeseonglee self-assigned this Aug 17, 2026
@coderabbitai

coderabbitai Bot commented Aug 17, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 3951ed9f-be17-4122-b6da-7faa15407ced

📥 Commits

Reviewing files that changed from the base of the PR and between fa7e0e1 and ac5ff48.

📒 Files selected for processing (20)
  • Projects/DVDesign/Resources/Assets.xcassets/color/vault green tint.colorset/Contents.json
  • Projects/DVDesign/Sources/Components/DVChipsContainer.swift
  • Projects/DVDesign/Sources/Components/DVMultiSelectDropdown.swift
  • Projects/DVDesign/Sources/Components/DVProjectContainer.swift
  • Projects/DVDesign/Sources/Components/DVTitleBar.swift
  • Projects/DVDesign/Sources/Components/DVVaultContainer.swift
  • Projects/DVDomain/Sources/Entity/SecretExpiryPolicy.swift
  • Projects/DVDomain/Sources/Repository/Model/SecretQuery.swift
  • Projects/DVDomain/Tests/Core/Entity/SecretExpiryPolicyTests.swift
  • Projects/DVDomain/Tests/Core/Repository/SecretQueryTests.swift
  • Projects/DVPresentation/Resources/Localizable.xcstrings
  • Projects/DVPresentation/Sources/Features/CreateProject/CreateProjectView.swift
  • Projects/DVPresentation/Sources/Features/CreateSecret/Model/CreatableSecretType.swift
  • Projects/DVPresentation/Sources/Features/SecretList/SecretListFeature.swift
  • Projects/DVPresentation/Sources/Features/SecretList/SecretListView.swift
  • Projects/DVPresentation/Sources/Features/SelectSecretType/SelectSecretTypeView.swift
  • Projects/DVPresentation/Sources/Features/Sidebar/SidebarView.swift
  • Projects/DVPresentation/Sources/Support/SecretExpiryStatus.swift
  • Projects/DVPresentation/Tests/SecretList/SecretListFeatureTests.swift
  • Projects/Devault/Sources/Composition/Dependencies/SidebarClient+Live.swift
💤 Files with no reviewable changes (2)
  • Projects/DVDomain/Tests/Core/Repository/SecretQueryTests.swift
  • Projects/DVDomain/Sources/Repository/Model/SecretQuery.swift

Included review availability: Your plan includes up to 1 review per rolling hour; 0 remain after this review.


Walkthrough

만료 목록 조회 범위와 표시 방식을 정리했습니다. 영구 삭제에 확인 알림을 추가했습니다. 프로젝트·보관함 선택 상태, 목록 레이아웃, 버튼·색상·문자열을 디자인 기준에 맞게 갱신했습니다.

Changes

만료 목록과 영구 삭제 흐름

Layer / File(s) Summary
만료 정책과 목록 조회
Projects/DVDomain/Sources/Entity/SecretExpiryPolicy.swift, Projects/DVDomain/Sources/Repository/Model/SecretQuery.swift, Projects/Devault/Sources/Composition/Dependencies/SidebarClient+Live.swift, Projects/DVPresentation/Sources/Features/SecretList/SecretListFeature.swift, Projects/DVDomain/Tests/..., Projects/DVPresentation/Tests/...
listingWindowDaysexpiringWindow(from:)를 제거했습니다. expired 목록은 원래 컬렉션을 사용하고 만료일 오름차순으로 정렬합니다. 관련 테스트를 갱신했습니다.
영구 삭제 확인 흐름
Projects/DVPresentation/Sources/Features/SecretList/SecretListFeature.swift, Projects/DVPresentation/Resources/Localizable.xcstrings, Projects/DVPresentation/Tests/SecretList/SecretListFeatureTests.swift
영구 삭제 전에 확인 알림을 표시합니다. 확인 액션 이후에만 삭제 mutation을 실행합니다. 테스트는 알림 표시와 확인 후 삭제를 검증합니다.
목록 레이아웃과 헤더 배치
Projects/DVPresentation/Sources/Features/SecretList/SecretListView.swift, Projects/DVDesign/Sources/Components/DVTitleBar.swift, Projects/DVPresentation/Sources/Support/SecretExpiryStatus.swift
헤더와 본문을 ZStack으로 배치하고 safeAreaInset으로 헤더 영역을 예약합니다. 만료 목록의 섹션 분류를 제거하고 빈 상태 표시를 단순화했습니다. DVTitleBar의 레이아웃 상수와 totalHeight를 추가했습니다.

디자인 시스템과 화면 스타일

Layer / File(s) Summary
선택 상태와 화면 스타일
Projects/DVDesign/Sources/Components/DVProjectContainer.swift, Projects/DVDesign/Sources/Components/DVVaultContainer.swift, Projects/DVPresentation/Sources/Features/Sidebar/SidebarView.swift, Projects/DVDesign/Resources/Assets.xcassets/...
프로젝트와 보관함 행에 선택 상태 기반 색상과 애니메이션을 적용했습니다. 사이드바 필터 색상과 다크 모드 색상을 변경했습니다.
입력 및 생성 화면 스타일
Projects/DVDesign/Sources/Components/DVChipsContainer.swift, Projects/DVDesign/Sources/Components/DVMultiSelectDropdown.swift, Projects/DVPresentation/Sources/Features/CreateProject/CreateProjectView.swift, Projects/DVPresentation/Sources/Features/CreateSecret/Model/CreatableSecretType.swift, Projects/DVPresentation/Sources/Features/SelectSecretType/SelectSecretTypeView.swift
빈 상태와 선택 행의 색상을 갱신했습니다. 프로젝트 생성 버튼을 DVButton으로 통일하고 선택 화면의 크기와 패딩을 조정했습니다. Environment Variable Set 명칭을 적용했습니다.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Merge Risk: ⚪ Minimal · up to ac5ff

The localization rename is consistent with the available strings, and no actionable merge-blocking risk remains after normal checks and review.

Sequence Diagram(s)

sequenceDiagram
  participant SecretListView
  participant SecretListFeature
  participant AlertState
  participant SecretMutation

  SecretListView->>SecretListFeature: 영구 삭제 요청
  SecretListFeature->>AlertState: 확인 알림 생성
  AlertState-->>SecretListView: 확인 및 취소 버튼 표시
  SecretListView->>SecretListFeature: 확인 액션 전달
  SecretListFeature->>SecretMutation: 영구 삭제 실행
Loading
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Linked Issues check ❓ Inconclusive 주요 QA 수정은 반영되었지만 addToProject 제거, 검색창 포커스 해지, 로딩 및 컨텍스트 메뉴 색상 변경은 확인할 근거가 없습니다. 누락된 항목의 diff 또는 테스트 근거를 추가하고, 미반영 항목은 구현 후 검증하세요.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목이 PR의 핵심 변경사항인 1차 QA 수정사항 반영을 명확하게 설명합니다.
Out of Scope Changes check ✅ Passed 색상, 레이아웃, 만료 정책, 삭제 확인, 명칭 및 빈 상태 변경은 연결 이슈의 QA 수정 범위와 관련됩니다.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch bugfix/#104

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@dlguszoo dlguszoo left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yeseonglee
yeseonglee merged commit bc05233 into develop Aug 18, 2026
1 of 3 checks passed
@doyeonk429
doyeonk429 deleted the bugfix/#104 branch August 18, 2026 14:43
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.

BugFix: 1차 QA 수정사항 반영 - 예성

2 participants