Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ cmux 스크린샷의 픽셀·서체·간격은 측정하지 않았습니다.
|---|---|---|---|
| 콘텐츠·터미널 배경 | `#FFFFFF` | `#1E2026` | chosen; AppearanceMode, terminal-light/dark.conf |
| 칸 헤더 배경 | `#F3F4F6` | `#292D35` | chosen; 사용자 요청으로 본문과 구분, AppearanceMode.headerBackground → TerminalPaneView.header |
| 파일 목록 배경 | `#F3F4F6` | `#292D35` | existing-token alias; AppearanceMode.fileListBackground → FileBrowserView.listSection, 로딩/빈/오류 포함 |
| 파일 목록 배경 | `#F8F8F8` | `#24262C` | chosen; 버튼의 중립색을 본문 쪽으로 약35%만 반영한 연한 면. AppearanceMode.fileListBackground → FileBrowserView.listSection, 로딩/빈/오류 포함 |
| 기본 텍스트·커서 | `#24262B` | `#FFFFFF` | chosen; 같은 파일, 칸 이름/터미널 |
| 보조 텍스트 | `#626975` | `#D1D5DB` | chosen; AppearanceMode, 경로/오류 |
| 터미널 선택 배경 | `#CCE0FF` | `#3D5066` | chosen; terminal-light/dark.conf |
Expand Down Expand Up @@ -69,7 +69,7 @@ Chop의 라벨과 오류 문구는 medium으로 통일합니다. 셸·TUI가 출
- 파일 트리는 공통 툴바 아래에서 터미널 칸과 같은 높이로 시작합니다. 파일 헤더40pt는 첫 터미널 헤더40pt와 정렬합니다. 두 헤더는 같은 행 구성(간격12/세로 중앙/글자14pt)을 재사용하며 폭 조절 경계의 상단40pt도 헤더 배경으로 이어집니다. 툴바의 편집/레이아웃/화면 모드 영역을 차지하지 않습니다.
- 오른쪽 패널은 기본300pt, 최소280pt이며 네이티브 경계로 폭을 조절합니다. 닫으면 경계도 없애고 canvas 전체 폭을 터미널에 돌려줍니다. 화면에 최소 폭이 들어가지 않으면 열기를 거절하고, 초기 복원에서는 패널을 접습니다.
- 파일 트리의 경로 입력·홈/다운로드/문서 바로가기·파일 목록은 하나의 탐색 영역입니다. 바깥 inset12/gap8, 한 줄 경로 입력28pt, 파일 행28pt, 들여쓰기16pt, 시스템14pt medium 글꼴을 유지합니다. 헤더 버튼은 기존28pt 아이콘입니다. 후속 사용자 요청의 `design/references/file-shortcuts-row-user.png` / `layout-edit-button-user.png`에 따라 바로가기는 기존 세로108pt 묶음을 대체하는 가로 한 줄의 개별 native rounded 버튼입니다. 높이28pt/gap8,기존14pt medium 글자와 SF house/arrow.down.circle/doc14pt 아이콘을 사용하고,아이콘·글자는 native image-leading 배치로 함께 누릅니다. 전체 이름과 경로 툴팁·AX 이름은 유지합니다. 사용자 지정 행 배치가 이전 Finder 세로 열 정렬 계약을 대체하며 이미지는 image-px 관찰 자료입니다.
- 실제 파일 목록과 로딩/빈/오류 안내는 바로가기 아래의 별도 목록 면에 함께 둡니다. 배경은 headerBackground를 재사용한 fileListBackground 의미 별칭이며 새 팔레트·그라디언트·구분선은 추가하지 않습니다. 목록 면은 반경8pt/내부 inset8pt,바깥 좌우·하단 inset12pt로 구분합니다. 최소 패널280pt에서도 세 바로가기의 전체 이름·아이콘과 파일 행 클릭 영역이 유지돼야 합니다. 목록 자체의 선택·펼치기·키보드·스크롤·경로 드래그는 같은 NSOutlineView를 재사용합니다.
- 실제 파일 목록과 로딩/빈/오류 안내는 바로가기 아래의 별도 목록 면에 함께 둡니다. 배경은 fileListBackground(light F8F8F8/dark24262C)입니다. 버튼색을 그대로 넓은 면에 쓰면 너무 강하다는 후속 사용자 교정에 따라,버튼의 중립색을 본문 쪽으로 약35%만 반영한 연한 톤을 사용합니다. 헤더·버튼색은 유지하며 그라디언트·구분선은 추가하지 않습니다. 목록 면은 반경8pt/내부 inset8pt,바깥 좌우·하단 inset12pt로 구분합니다. 최소 패널280pt에서도 세 바로가기의 전체 이름·아이콘과 파일 행 클릭 영역이 유지돼야 합니다. 목록 자체의 선택·펼치기·키보드·스크롤·경로 드래그는 같은 NSOutlineView를 재사용합니다.

## Elevation & Depth

Expand Down
8 changes: 6 additions & 2 deletions Sources/Chop/AppearanceMode.swift
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,12 @@ enum AppearanceMode: String, CaseIterable {
: NSColor(srgbRed: 41 / 255, green: 45 / 255, blue: 53 / 255, alpha: 1)
}

/// Reuses the secondary surface to distinguish file contents from navigation controls.
var fileListBackground: NSColor { headerBackground }
/// Softens the location-button neutral toward the canvas for a quieter list surface.
var fileListBackground: NSColor {
self == .light
? NSColor(srgbRed: 248 / 255, green: 248 / 255, blue: 248 / 255, alpha: 1)
: NSColor(srgbRed: 36 / 255, green: 38 / 255, blue: 44 / 255, alpha: 1)
}

var foreground: NSColor {
self == .light ? NSColor(srgbRed: 36 / 255, green: 38 / 255, blue: 43 / 255, alpha: 1) : .white
Expand Down
19 changes: 19 additions & 0 deletions design/evidence/file-tree-soft-surface.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# 파일 목록의 연한 중립 배경

## 사용자 교정과 관계

- R-SOFT: 사용자는 목록 배경을 홈·문서 버튼색에 맞추라고 요청한 뒤, 실제 적용을 보고 “너무 색상이 이상해 더 옅었으면 좋겠어”라고 교정했다. 최신 지시에 따라 버튼과 같은 중립 계열을 유지하면서 넓은 목록 면의 대비를 낮춘다.
- O-INITIAL: 이전 헤더색 별칭은 light F3F4F6/dark292D35였다. 버튼 기본 면을 그대로 확대한 첫 시도는 light ECECEC/dark303136로,넓은 면이 너무 강하다는 사용자 교정을 받았다. 첫 시도를 최종 승인으로 취급하지 않는다.
- D-SOFT / E-CONTENTS: 최종 fileListBackground는 light F8F8F8/dark24262C다. 버튼 기본 면을 본문 쪽으로 약35%만 반영한 제품 선택이며 OS가 보장하는 native 색 토큰이라고 주장하지 않는다. 버튼 자체의 native hover/pressed/focus,헤더와 터미널 본문색은 유지한다.
- Q-SOFT: ‘버튼과 완전히 같은 RGB’였던 중간 기준을 ‘같은 중립 계열,본문보다 조금만 구분되는 연한 면’으로 대체한다. 버튼·파일 목록 관계의 사용자 교정이며 공통 스킬의 보편 색상으로 승격하지 않는다.

## 실제 검증

- base a18485c부터 AppearanceMode.fileListBackground의두 색만 변경했다. 소비 위치는 FileBrowserView.listSection 한 곳이며 목록/로딩/빈/오류가 같은 면을 공유한다. 레이아웃·글자·상태 로직·경로 입력·드래그 구현 변경은 없다.
- release 앱을 다시 실행해1100×752pt,공개/tmp/chop-preview 목록을 두 모드에서 직접 확인했다. 버튼보다 약한 면으로 파일 목록 소속이 구분되고,이름/아이콘 대비와 기존40pt 헤더 정렬·한 줄 바로가기가 유지된다. native 스크린샷의2배 배율은 코드의pt 실측값이 아니다.
- ./scripts/check.sh 전체27개 검사5.515초,포맷·빌드·서명 검사 통과(.cache/check-file-tree-soft-color.log). 색상 상수를 반복하는 새 테스트는 추가하지 않았다. 기존 두 모드/최소280pt 버튼·파일 행 hit-test도 통과했다.
- 이번 수정의 시각 판독은 아래 새 캡처가 근거다. 이전 가로 배치/경로·빈·오류/드래그 검증 기록은 역사적 범위로 보존하며,이번 색 변경만으로 새로운 포인터 드래그 성공을 주장하지 않는다. 이후 검색은 별도 PR이다.

![라이트 모드의 연한 목록 면](images/file-tree-soft-light.jpg)

![다크 모드의 낮은 대비 목록 면](images/file-tree-soft-dark.jpg)
Binary file added design/evidence/images/file-tree-soft-dark.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added design/evidence/images/file-tree-soft-light.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions design/failure-events.jsonl

Large diffs are not rendered by default.

Loading
Loading