Skip to content

Design/#60 - ListView min/maxWidth 설정 및 상태 안내 문구 추가 - #67

Merged
yeseonglee merged 2 commits into
developfrom
design/#60
Aug 5, 2026
Merged

Design/#60 - ListView min/maxWidth 설정 및 상태 안내 문구 추가#67
yeseonglee merged 2 commits into
developfrom
design/#60

Conversation

@yeseonglee

@yeseonglee yeseonglee commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

✨ What’s this PR?

📌 관련 이슈 (Related Issue)


🧶 주요 변경 내용 (Summary)

  • 리스트 컬럼쪽 사이즈 maxWidth minWidth 설정
  • secret 로딩 빈값 / 에러 처리

📸 스크린샷 (Optional)

예시 이미지


🧪 테스트 / 검증 내역

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

💬 기타 공유 사항


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

Summary by CodeRabbit

  • 개선 사항

    • 제목 영역과 검색 입력창이 부모 화면의 너비를 더 넓게 활용하도록 개선했습니다.
    • 메인 콘텐츠 영역의 기본 너비와 크기 조정 범위를 최적화했습니다.
    • 컬렉션이 변경되면 비밀 목록이 자동으로 새로고침됩니다.
  • 변경 사항

    • 목록 및 프로젝트 로드 실패, 빈 목록 안내 문구를 영어로 통일했습니다.
    • 미리보기 환경에서 비밀 조회·생성·삭제·복구 등의 동작을 보다 자연스럽게 확인할 수 있습니다.

@yeseonglee yeseonglee self-assigned this Aug 5, 2026
@yeseonglee yeseonglee added the 🎨 Design UI 디자인 작업 label Aug 5, 2026
@yeseonglee yeseonglee linked an issue Aug 5, 2026 that may be closed by this pull request
1 task
@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

SecretClient 미리보기 동작을 정리하고 정렬을 추가했습니다. 프로젝트 생성 시 현재 시각을 기록합니다. 컬렉션 변경 시 목록을 다시 로드합니다. 제목 표시 영역, 검색 필드, 콘텐츠 열 너비와 표시 문자열을 수정했습니다.

Changes

미리보기 및 화면 동작

Layer / File(s) Summary
Secret 미리보기 클라이언트
Projects/DVPresentation/Sources/Dependencies/SecretClient.swift
미리보기 클라이언트를 dummyClient() 기반으로 변경했습니다. 컬렉션 필터, 정렬, CRUD 및 프로젝트 관련 더미 동작을 추가했습니다.
프로젝트 생성 및 목록 상태
Projects/DVPresentation/Sources/Features/CreateSecret/CreateSecretFeature.swift, Projects/DVPresentation/Sources/Features/SecretList/SecretListView.swift
프로젝트 생성 시 now 의존성으로 createdAtupdatedAt을 설정합니다. store.collection 변경 시 목록 작업을 다시 실행합니다.
레이아웃 및 표시 문자열
Projects/DVDesign/Sources/Components/DVTitleBar.swift, Projects/DVPresentation/Sources/Features/Main/MainView.swift, Projects/DVPresentation/Sources/Features/SecretList/SecretListView.swift, Projects/DVPresentation/Sources/Features/Sidebar/SidebarView.swift, Projects/DVPresentation/Resources/Localizable.xcstrings
제목 영역과 검색 필드를 부모 너비로 확장했습니다. 콘텐츠 열 너비를 제한했습니다. 오류 및 빈 목록 문자열을 영어로 변경하고 로컬라이제이션 주석을 추가했습니다.

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

Possibly related PRs

Suggested reviewers: doyeonk429, dlguszoo

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning [이슈 #60]의 너비 설정 외에 미리보기 클라이언트, 생성 시각, 로컬라이제이션, 오류 문구 변경이 포함되었습니다. 너비 설정과 직접 관련이 없는 변경은 별도 이슈와 PR로 분리하거나 관련 이슈를 연결하세요.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목이 ListView 너비 설정과 상태 안내 문구 변경이라는 주요 변경 사항을 명확히 설명합니다.
Linked Issues check ✅ Passed [이슈 #60]의 SecretTypeList minWidth와 maxWidth 요구사항을 contentColumn 너비 설정으로 충족합니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch design/#60

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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Projects/DVPresentation/Sources/Dependencies/SecretClient.swift`:
- Around line 35-51: Update fetchByQuery to apply query.searchText filtering to
the collection-specific filtered secrets before calling sorted, matching the
search predicate used by InMemorySecretQueryFilter.apply. Preserve the existing
collection selection and sorting behavior.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 6afea531-1e76-49b3-ab62-9be02d578744

📥 Commits

Reviewing files that changed from the base of the PR and between 2f77224 and 778c042.

📒 Files selected for processing (7)
  • Projects/DVDesign/Sources/Components/DVTitleBar.swift
  • Projects/DVPresentation/Resources/Localizable.xcstrings
  • Projects/DVPresentation/Sources/Dependencies/SecretClient.swift
  • Projects/DVPresentation/Sources/Features/CreateSecret/CreateSecretFeature.swift
  • Projects/DVPresentation/Sources/Features/Main/MainView.swift
  • Projects/DVPresentation/Sources/Features/SecretList/SecretListView.swift
  • Projects/DVPresentation/Sources/Features/Sidebar/SidebarView.swift

Comment on lines +35 to +51
fetchByQuery: { query in
let filtered: [Secret]
switch query.collection {
case .expired(let referenceDate):
filtered = [Secret].preview.filter {
$0.deletedAt == nil && ($0.expiresAt.map { $0 < referenceDate } ?? false)
}
case .deleted:
filtered = [Secret].preview.filter { $0.deletedAt != nil }
case .liked:
filtered = [Secret].preview.filter { $0.deletedAt == nil && $0.liked }
case .project(let id):
filtered = [Secret].preview(in: id)
case .all:
filtered = [Secret].preview.filter { $0.deletedAt == nil }
}
case .deleted:
return [Secret].preview.filter { $0.deletedAt != nil }
case .liked:
return [Secret].preview.filter { $0.deletedAt == nil && $0.liked }
case .project(let id):
return [Secret].preview(in: id)
case .all:
return [Secret].preview.filter { $0.deletedAt == nil }
}
},
softDelete: { _ in .preview },
restore: { _ in .preview },
permanentlyDelete: { _ in },
fetchProjects: { .preview },
createProject: { name in
Project(id: UUID(), name: name, createdAt: .now, updatedAt: .now)
},
linkProject: { _, _ in }
)
return sorted(filtered, by: query.sort)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

미리보기 쿼리에 searchText 필터를 적용하세요.

fetchByQueryquery.collectionquery.sort만 적용합니다. 따라서 미리보기에서 검색어를 변경해도 결과가 검색어와 무관하게 유지됩니다. 프로덕션의 InMemorySecretQueryFilter.apply와 동일한 검색 조건을 정렬 전에 적용하세요.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Projects/DVPresentation/Sources/Dependencies/SecretClient.swift` around lines
35 - 51, Update fetchByQuery to apply query.searchText filtering to the
collection-specific filtered secrets before calling sorted, matching the search
predicate used by InMemorySecretQueryFilter.apply. Preserve the existing
collection selection and sorting behavior.

@yeseonglee
yeseonglee merged commit df907f7 into develop Aug 5, 2026
1 check passed
@yeseonglee
yeseonglee deleted the design/#60 branch August 5, 2026 14:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🎨 Design UI 디자인 작업

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Design: SecretTypeList width 설정

2 participants