diff --git a/doc/history/2026-09-10-4차.md b/doc/history/2026-09-10-4차.md
index 97a1cfd..1dd0fb5 100644
--- a/doc/history/2026-09-10-4차.md
+++ b/doc/history/2026-09-10-4차.md
@@ -293,4 +293,31 @@ D:\work\branch\src\a.cpp → branch\src\a.cpp
검사 11건 추가(`PathTest` 43 → 54). 전체 **571건 통과**.
**남길 것** - 화면을 줄이는 일은 무엇이 남아야 하는지부터 정하고 줄여야 한다.
-여기서는 "경로가 길다"만 보고 줄였는데, 정작 그 경로가 두 칸을 가르는 유일한 정보였다.
\ No newline at end of file
+여기서는 "경로가 길다"만 보고 줄였는데, 정작 그 경로가 두 칸을 가르는 유일한 정보였다.
+### C-1 또 한 번 — 경로를 읽으라고 적는다 (2026-09-10)
+
+**사용자 지적** - "경로를 좀 잘 보이게 해볼까."
+
+머리글의 위아래가 뒤집혀 있었다. **늘 똑같은 `BASE` 는 크고 파란데,
+정작 이 칸이 무엇인지 말하는 경로는 회색 작은 글씨였다.** 정보를 담은 쪽이 뒤로 물러나 있었다.
+
+세 가지를 바꿨다.
+
+- 경로 줄에서 `BASE ·` `LOCAL ·` 접두사를 뺐다. **위 제목이 이미 그 말을 하고 있다.**
+- 회색(Muted) 을 걷고 본문 색으로, 11 → 12px, 글꼴은 코드와 같은 Consolas 로.
+ 경로는 기호가 많아 고정폭이 읽기 쉽다.
+- **갈리는 첫 칸만 굵은 강조색**으로 칠한다(`left\` · `right\`). 나머지는 양쪽이 같은 글자라
+ 읽을 값이 없다. 어디가 다른지 눈이 바로 간다.
+
+```
+BASE LOCAL
+left\WeldController.cpp right\WeldController.cpp
+^^^^ ^^^^^ (굵은 강조색)
+```
+
+Git 모드도 같이 정리됐다 - `BASE / 9c9e0bb · StartWeld.cs`, `LOCAL / master`.
+
+**걸린 것 하나** - `SplitLead` 의 튜플 요소 이름을 `Rest` 로 뒀다가 CS8126 이 났다.
+`Rest` 는 `ValueTuple` 이 제 필드 이름으로 쓰는 예약어다. `Tail` 로 바꿨다.
+
+검사 571건 통과 · 빌드 경고 0 · 오류 0.
\ No newline at end of file
diff --git a/src/MergeHub/ViewModels/HomeViewModel.cs b/src/MergeHub/ViewModels/HomeViewModel.cs
index c05b051..984130e 100644
--- a/src/MergeHub/ViewModels/HomeViewModel.cs
+++ b/src/MergeHub/ViewModels/HomeViewModel.cs
@@ -785,12 +785,16 @@ namespace MergeHub.ViewModels
// BASE 가 비어 있으면 그 파일이 공통 조상에 없었다는 뜻이다 - 양쪽 브랜치가
// 각자 새로 만든 파일이라 견줄 조상이 없다. 그냥 두면 빈 칸이 고장으로 보인다.
+ // 큰 제목이 이미 BASE/LOCAL 이라고 말하므로 여기서는 되풀이하지 않는다(4차 C-1).
+ BaseHeaderLead = string.Empty;
+ LocalHeaderLead = string.Empty;
+
BaseHeader = threeWay
? string.IsNullOrEmpty(baseText)
- ? $"BASE ({baseOrigin}) · 이 파일 없음 - 양쪽에서 새로 만든 파일입니다"
- : $"BASE ({baseOrigin}) · {path}"
- : $"BASE · {commit.ShortSha} · {path}";
- LocalHeader = $"LOCAL · {_workspace.CurrentBranch}";
+ ? $"({baseOrigin}) 이 파일 없음 - 양쪽에서 새로 만든 파일입니다"
+ : $"({baseOrigin}) {path}"
+ : $"{commit.ShortSha} · {path}";
+ LocalHeader = _workspace.CurrentBranch;
RemoteHeader = isConflict
? "REMOTE · THEIRS"
: $"REMOTE · {branch}";
@@ -1883,10 +1887,38 @@ namespace MergeHub.ViewModels
{
var (left, right) = PathUtil.DistinctTail(LeftFile, RightFile);
- BaseHeader = $"BASE · {left}";
- LocalHeader = $"LOCAL · {right}";
+ // 큰 제목이 이미 BASE/LOCAL 이라고 말한다. 여기에 또 적으면 자리만 먹는다.
+ var l = SplitLead(left);
+ BaseHeaderLead = l.Lead;
+ BaseHeader = l.Tail;
+
+ var r = SplitLead(right);
+ LocalHeaderLead = r.Lead;
+ LocalHeader = r.Tail;
}
+ ///
+ /// 경로에서 실제로 갈리는 첫 칸만 떼어 낸다.
+ ///
+ /// 이 같은 앞부분을 이미 뗐으므로, 남은 것의 첫 칸이
+ /// 두 쪽을 가르는 자리다(left\ · branch\). 그 칸만 굵게 칠하면
+ /// 어디가 다른지 눈이 바로 간다 - 나머지는 양쪽이 같은 글자라 읽을 값이 없다.
+ /// 칸이 하나뿐이면(파일 이름만 남은 경우) 뗄 것이 없다.
+ ///
+ // 'Rest' 는 ValueTuple 이 제 필드 이름으로 쓰는 예약어라 튜플 요소 이름으로 못 쓴다.
+ private static (string Lead, string Tail) SplitLead(string path)
+ {
+ if (string.IsNullOrEmpty(path)) return (string.Empty, string.Empty);
+
+ var at = path.IndexOfAny(new[] { '\\', '/' });
+ return at < 0 ? (string.Empty, path) : (path.Substring(0, at + 1), path.Substring(at + 1));
+ }
+
+ /// 머리글에서 굵게 칠할 앞부분. 없으면 빈 글자.
+ [ObservableProperty] private string _baseHeaderLead = string.Empty;
+
+ [ObservableProperty] private string _localHeaderLead = string.Empty;
+
// ================= 저장 안 한 편집 지키기 =================
///
diff --git a/src/MergeHub/Views/HomeView.xaml b/src/MergeHub/Views/HomeView.xaml
index 6190e4e..57e21be 100644
--- a/src/MergeHub/Views/HomeView.xaml
+++ b/src/MergeHub/Views/HomeView.xaml
@@ -949,9 +949,17 @@
패널마다 세로 40px 남짓을 먹었다. 전체 경로는 툴팁으로 옮기고
복사는 우클릭 메뉴로 지켰다 - 읽기전용 TextBox 를 뒀던 까닭이 복사였다.
-->
- 회색 작은 글씨가 아니라 읽으라고 적는다.
+ 갈리는 첫 칸만 굵게 칠해 어디가 다른지 눈이 바로 가게 한다.
+ -->
+
+
@@ -1048,9 +1056,12 @@
-
+