Skip to content

feat: 파일 바로가기 버튼 행과 목록 배경 개선 - #28

Merged
safethecode merged 4 commits into
mainfrom
feat/file-browser-shortcut-row
Oct 15, 2026
Merged

safethecode merged 4 commits into
mainfrom
feat/file-browser-shortcut-row

Conversation

@safethecode

@safethecode safethecode commented Oct 15, 2026 •

Copy link
Copy Markdown
Owner

파일 바로가기가 세로3행을 차지하고 실제 파일 목록이 주변과 같은 배경에 붙어 있었습니다. 사용자 요청에 따라 홈·다운로드·문서를 가로 한 줄의 개별 버튼으로 바꾸고,아래 목록에는 모드별 중립 배경을 적용했습니다. 상단‘레이아웃 편집’과 같은 native rounded 버튼을 사용하며 기존 아이콘과14pt 글자를 유지합니다.

목록·로딩·빈 폴더·오류 안내는 같은 배경 면 안에 둡니다. 기존 보조 배경색을 의미 별칭으로 재사용했고 경로 이동과파일 데이터·드래그 writer는 그대로입니다.

  • 커밋: UI 구현 / 최소 폭·입력 영역 검사 / 사용자 참고 이미지·두 모드 실제 화면·검증 기록으로 나눴습니다.
  • 검증: ./scripts/check.sh 전체27개 검사·릴리스 빌드·서명 검증,디자인 게이트 PASS. 실제 기본1100pt/최소842pt 창과패널280pt,두 모드,세 목적지 이동,빈 폴더·오류와복구를 확인했습니다. native hit-test 검사로 버튼 전체 표시/같은 행/실제 파일 행 입력 경계를 확인했습니다.
  • 확인 범위: 이번 포인터 파일 드래그 재검증은 CUA 창 입력 제약으로 성공을 확인하지 못했습니다. 기존 드래그 코드와경로 처리 검사는 유지·통과했으며,이번 실행에서 전체 포인터 흐름을 새로 검증했다고 표시하지 않습니다.
  • 셀프 리뷰: 표준 버튼의 target/action·태그·AX·툴팁,불필요한 custom hitTest 제거,전체 목록/상태 배경의 소유권,두 모드·최소 폭과기존 헤더 정렬을 확인했습니다. 외부 승인과 구분합니다.

상세 기록: design/evidence/file-browser-row-surface.md.

다크 모드

라이트 모드

Summary by CodeRabbit

  • UI Updates
    • File-browser shortcuts now appear as separate rounded buttons in a horizontal row.
    • File contents and loading, empty, and error states now appear on a distinct inset, rounded surface.
    • The updated presentation is consistent in light and dark appearance modes and remains usable in narrow windows.

@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 55 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 39e5dcd7-c69a-44ca-9e7b-e1b2e4b86d22
📥 Commits

Reviewing files that changed from the base of the PR and between 2fdc63c and 7f65b1c.

📒 Files selected for processing: 3
  • design/evidence/file-browser-row-surface.md
  • design/failure-events.jsonl
  • design/gate-report.json

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: bb970111-cc7b-4c30-bcfe-d30bbccf2cda
📥 Commits

Reviewing files that changed from the base of the PR and between 93efbd5 and 2fdc63c.

⛔ Files ignored due to path filters: 4
  • design/evidence/images/file-browser-row-dark.jpg is excluded by !**/*.jpg
  • design/evidence/images/file-browser-row-light.jpg is excluded by !**/*.jpg
  • design/references/file-shortcuts-row-user.png is excluded by !**/*.png
  • design/references/layout-edit-button-user.png is excluded by !**/*.png
📒 Files selected for processing: 9
  • DESIGN.md
  • Sources/Chop/AppearanceMode.swift
  • Sources/Chop/FileBrowserView.swift
  • Tests/ChopTests/FileBrowserTests.swift
  • design/evidence/file-browser-row-surface.md
  • design/failure-events.jsonl
  • design/gate-contract.json
  • design/gate-report.json
  • design/review.md

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📝 Walkthrough

The file browser now presents three native rounded shortcut buttons in one horizontal row. The file list and its status states use a separate inset, rounded surface with a background alias. A UI test checks sizing and hit targets at minimum width in light and dark appearance modes.

Changes: File browser surfaces

Layer / File(s) Summary
Surface contract
Sources/Chop/AppearanceMode.swift, DESIGN.md, design/gate-contract.json
Adds fileListBackground as an alias of headerBackground for both appearance modes. The design contract specifies horizontal shortcut buttons and a separate rounded list surface.
Shortcut and list layout
Sources/Chop/FileBrowserView.swift
Replaces the custom shortcut controls with native rounded buttons in a horizontal row. Groups the status label and outline in a padded list section and applies the aliased background.
Layout validation and evidence
Tests/ChopTests/FileBrowserTests.swift, design/evidence/file-browser-row-surface.md, design/gate-report.json, design/review.md
Adds minimum-width UI checks for button layout and button and outline hit targets in both appearance modes. Records the design evidence and reported checks, including pointer-drag validation that remains unverified.

Priority: ⬇️ Low

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

Change: Feature

Merge Risk: ⚪ Minimal · up to 2fdc6

The file-browser layout change is mergeable after normal checks. The reported pointer-drag validation gap does not currently show a broken interaction.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 3 files. (5 skipped: 5 … Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly summarizes the main changes: horizontal file shortcut buttons and improved list background.
Description check Passed The description covers the problem, implemented behavior, verification results, self-review, and remaining limitation. It does not use the template headings, but all required information is present.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 6 functions across 3 files. (5 skipped: 5 unsupported.)

✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@safethecode

Copy link
Copy Markdown
Owner Author

최종 머지 전 검토 기록입니다. 대상 HEAD: 7f65b1c8c71433fc90367d587e59fef996a1fdd0.

  • CodeRabbit은 구현과 테스트가 모두 포함된 2fdc63c까지 실제 리뷰를 완료했습니다. 수정 요청은 없었고 Merge Risk는 Minimal입니다. 실행 ID: bb970111-cc7b-4c30-bcfe-d30bbccf2cda.
  • 이후 최종 커밋은 참고 이미지 너비 표기를 실제 238px로 바로잡고 증빙 해시를 갱신한 문서 3개 변경입니다. git diff --exit-code 2fdc63c HEAD -- Sources Tests Resources로 앱·테스트·리소스가 동일함을 확인했고 문서 차이는 직접 검토했습니다.
  • 최종 문서 커밋에 대한 CodeRabbit 재리뷰는 OSS 사용량 제한으로 건너뛰었습니다. 해당 상태 표시를 최종 HEAD의 독립 리뷰 완료로 간주하지 않습니다. 현재 리뷰 스레드는 0개입니다. Docstring Coverage 0% 경고는 필수 CI 실패나 미해결 코드 리뷰 스레드가 아닙니다.
  • ./scripts/check.sh: 27개 테스트와 빌드·포맷·서명·아이콘 검사 통과. 최종 HEAD의 macOS CI도 성공했습니다. 디자인 게이트 PASS입니다.
  • 실제 앱에서 다크·라이트 모드, 최소 창 크기의 버튼 한 행 배치, 홈·문서·다운로드 이동, 빈 폴더와 오류 상태의 목록 배경을 확인했습니다. 최소 파일 패널 너비에서 버튼과 파일 행의 native hit-test도 통과했습니다.
  • 이번 실행에서 UI 자동화 도구의 포인터 입력 제한으로 파일 드래그→터미널 경로 입력의 새로운 종단 검증은 완료하지 못했습니다. 해당 드래그 구현은 변경하지 않았으며 기존 파일 URL·경로 입력 테스트는 통과했습니다.
  • 실행 중인 터미널 작업을 유지했고, 앱은 다크 모드·다운로드 파일 트리·기존 창 크기로 복원한 상태입니다.

@safethecode
safethecode merged commit a18485c into main Oct 15, 2026
2 checks passed
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.

1 participant