ksj09406 4d0bc5c7a7 Git 탭 끌어다 놓기 · 파일 비교 편집 칸 바탕색 (사용자 요청)
Git 탭에 폴더나 파일을 끌어다 놓으면 그 저장소를 연다. [폴더...] 와 같은 규칙을
PathUtil.RepositoryFolderFor 한 곳에 두었다 - 파일이면 그 폴더, 저장소 안이면
최상위, 저장소가 아니면 그 폴더 그대로(열기가 "저장소가 아니다" 를 알린다).
탭 전체에서 PreviewDrop 으로 받는다. 경로 칸 · 커밋 메시지 칸이 TextBox 라
파일 놓기를 먼저 먹고 버리는 문제를 폴더 비교(7차 E-2)에서 겪었다.
PathTest 6건을 먼저 넣어 실패 확인 -> 68건 통과. 흉내 낸 OLE 끌기는 이미 되는
폴더 비교 칸에도 들어가지 않아 도구 한계로 보고, 사용자가 직접 끌어다 놓아
확인했다(로그에 저장소 열기 두 번, 그 사이 단추 누름 없음).

파일 비교 편집 칸은 바탕이 없어 페이지 바탕(밝음 #F2F2F3 · 어두움 #23262B)이
비쳐 회색이었다. PaneBackgroundConverter 가 물려받은 글자색 밝기로 테마를 가려
밝음 #FAFAFA · 어두움 #252830 을 준다 - 후보를 실제 코드 색으로 그려 보여 주고
사용자가 골랐다. g11-pane 두 테마에서 빈 자리 화소로 확인.

하단 탭이 따라가지 않던 문제(폴더 비교 -> 두 번 눌러 파일 비교)는 공용 플랫폼
셸에서 고쳤다(MergeHub 코드 변경 없음, 기록만).

Agent: main (claude-opus-5-5)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 17:05:07 +09:00

87 KiB
Raw Blame History

변경 이력

무엇을 왜 바꿨는지 한 줄로 남긴다. 자세한 이야기는 날짜별 파일에 있다.

플랫폼(UbisamPlatform/doc/history/changelog.md)과 형식은 같지만 기준이 다르다. 플랫폼 changelog 의 핵심은 "다른 소비 프로그램에 미치는 영향"인데, MergeHub 는 소비 프로그램이라 그럴 대상이 없다. 여기서는 무엇을 왜 바꿨는지가 중심이다.

날짜 항목 커밋
2026-09-30 커밋 뒤 사용자 요청 셋 — ① 폴더 비교에서 두 번 눌러 파일 비교로 가도 하단 탭이 옛 탭에 남던 것: 사용자가 쓰던 앱을 읽기만 해서 재현(화면 파일 비교 · 선택 0번), 원인은 공용 플랫폼 셸의 NavList 가 SelectedMainTab 을 따라가지 않는 것 — 허락받아 UbisamCommonPlatform 에서 고침(MergeHub 코드 변경 없음), g10-drop 선택 [0] → [1]. ② Git 탭에 폴더 · 파일을 끌어다 놓으면 그 저장소 최상위를 연다(PathUtil.RepositoryFolderFor, [폴더...] 와 같은 규칙, 탭 전체 Preview 로 받아 TextBox 가 먹는 문제 회피). PathTest 62 → 68건(먼저 실패 확인). 흉내 낸 OLE 끌기는 이미 되는 폴더 비교 칸에도 안 들어가 도구 한계로 보고 사용자가 직접 확인(로그 저장소 열기 두 번). ③ 파일 비교 편집 칸 바탕을 회색(페이지 바탕이 비침) → 밝음 #FAFAFA · 어두움 #252830(순검정 · #1E1E1E 를 거쳐 후보를 보고 사용자가 고름, PaneBackgroundConverter). g11-pane 두 테마 화소로 확인. 빌드 경고 0 · 오류 0 아래
2026-09-30 12차 G 묶음 마무리(알파 · 베타 전) — ① 설정의 프로그램 정보(만든 사람 · 사내 문의처) 칸을 뺐다 — 개발자 정보가 담당을 보인다(사용자). [정보] 창은 실행 파일 값만 읽고(ProgramInfoReader.For 의 설정 인수를 걷음), 빈 칸 안내 글에서 없어진 설정 자리를 뺐다. ② 사용자 요청 "작성자를 입력하지 않으면 알람" — 주석 남기기가 켜져 있는데 작성자가 비면 반영 명령 맨 앞(여덟 곳)에서 알림 창을 띄우고 반영하지 않는다(사용자 선택, 줄마다가 아니라 명령마다 — [모두 반영] 이 줄 수만큼 알리지 않게). 예전에는 git 이름 · 윈도우 계정으로 조용히 채웠다. 미리보기도 그 이름을 안 보인다. 한때 "주석 늘 켬" 으로 바꿨다가 사용자 지시로 원복. ③ 데모(설정 두 칸 · [데모 →] 단추 · 전환 코드)를 걷어냄. 이 PC 의 시험 재료는 휴지통으로, 설정 · 최근 목록의 시험 경로를 비움. 하네스 AboutTest 30 · NoteTest 99 · OverviewTest 15건(둘은 먼저 고쳐 컴파일 실패 확인), 화면 g5 · g6 · g9-author(새) 실패 0. 빌드 경고 0 · 오류 0 아래
2026-09-30 12차 G-6 고침 — 사용자 지시로 개발자 정보 담당 카드를 갈래 둘(Platform 최민영 대리 · MergeHub 김승준 사원, 이름표 영문)로 바꾸고 사내 문의처는 카드에서만 뺐다([정보] 창과 G-5 구조는 그대로 — 사용자 선택). 사람은 ProgramOverview 상수 둘 — 설정의 "만든 사람" 은 정보 창의 회사 이름 받침이라 섞지 않는다. 소개 문구를 사내 Git Merge/Diff 도구 → 사내 Merge/Diff + Git 도구(Merge 가 먼저)로 csproj <Description> · 개발자 정보 기본값 · 정보 창 받침 · 창 제목(MergeHub - 사내 Merge/Diff + Git) 네 곳을 맞춤 — 창 제목은 플랫폼이 표시에만 쓰는 것을 읽어 확인. 하네스 OverviewTest 기대값을 먼저 바꿔 4건 실패 → 15건 통과, AboutTest 30건, 화면 g6-verify · g5-verify 실패 0. 빌드 경고 0 · 오류 0 아래
2026-09-30 12차 G-8 — 메모 편집기에 문법 강조 · 같은 글 칠하기 · 색 마킹 다섯(Ctrl+15) · 오른쪽 위치 막대. 방식은 파일 비교와 같은 투명한 TextBox + 아래층(사용자 결정 — RichTextBox 는 칠하기가 되돌리기에 섞여 버림). 셈은 MemoHighlight.cs(하네스 MemoHlTest 45건), 그리기는 MemoPaintLayer(글자 자리를 편집기 GetRectFromCharacterIndex 에 묻고 탭마다 끊어 다시 묻는다). 언어 · 마킹은 메모마다 따로, 보관하지 않는다. 화면에서 셋을 고쳤다: ① 첫 시험에서 칠한 잉크가 0px — 플랫폼 암시적 TextBox 스타일이 템플릿 안에서 배경을 직접 칠해 아래층을 덮었다(LocalEditor 와 같은 까닭) → 편집기 · 줄 번호 칸 Style="{x:Null}", 선택 색은 LocalEditor 와 같은 값 ② 강조 콤보에 형 이름이 보임 → LanguageProfile.ToString() => Name(G-4 SaveChoice 와 같은 길) ③ 사용자 보고 "어두운 테마에서 메모 제목이 안 보인다" — 탭 줄 ItemContainerStyle 이 플랫폼 스타일을 대신해 글자색이 검정으로 떨어짐(잉크 차이 116) → 그 스타일에 ContentForeground(587). 같은 구조인 파일 비교 문서 탭도 재현(157 · 116)해 같은 한 줄로 고침(546 · 587). 화면 g8-verify — 편집기 글자 칸과 칠한 잉크를 px 로 비교: +12px(탭 든 줄 · 가로 스크롤 포함) · 문법 색 · 같은 글 5곳/6곳 · 마킹 걸기/풀기/바꾸기/지우기 · 막대 눈금과 누르기 · Ctrl+Z 가 칠하기로 한 걸음도 안 늘어남 — 밝은 · 어두운 실패 0. 사용자가 PC 를 쓰던 동안의 판은 흔들렸다(입력이 섞인 것으로 보이나 확정 못 함). 빌드 경고 0 · 오류 0 아래
2026-09-30 12차 G-7 — 사용자 보고 "Alt+↓ 로 이동하다 보면 화면이 잘린다". 600줄에 모양이 다른 차이 여덟 개를 만들어 값으로 재현했다: 앞으로 갈 때 차이 줄이 칸 가운데(842px)가 아니라 맨 아래(1,361px, 칸 아래 1,394px)에 걸려 잘리고, 마지막 → 첫 차이로 돌면 두 칸이 통째로 543px 밀려 위는 비고 아래는 잘렸다. 코드를 읽어 추리하지 않고 임시 기록(MERGEHUB_G7_TRACE, 끝나고 뺌)으로 고리를 떴다 — 캐럿을 옮기는 순간 편집기가 "캐럿을 화면에 들이려고" 먼저 한 번 구르며 다른 칸을 따라오게 하고 메아리 막기(HoldSync, Input 우선순위에서 풀림)를 건다. 곧이어 CenterCharInView(Loaded 우선순위 — Input 보다 먼저 돈다)가 가운데로 올리는 두 번째 스크롤은 메아리로 여겨져 버려졌다. 그래서 목록 칸은 첫 자리(맨 아래)에 남았고, 크게 돌 때는 편집기 74.4 · 목록 436.7 로 어긋난 것을 표시층 맞추기가 이동값 357(배율 1.5 → 543px)로 메워 네 칸이 함께 밀렸다. 고침: CenterCharInView 가 편집기를 굴린 뒤 다른 칸을 직접 맞춘다(HoldSync · Scroll(LocalLines) · SyncPanesFrom — 편집기 ScrollChanged 가 하던 것과 같은 호출). 화면 g7-verify — Alt+↓ 한 바퀴 · Alt+↑ 뒤로 돌기 · [처음]/[마지막] 마다 칸 제자리 · 차이 줄이 칸 안 · 가운데 근처: 고치기 전 10건 실패 → 고친 뒤 0(차이 줄 837px · 칸 가운데 842px · 칸 위 289px 그대로 · 이동값 −5~−7). 빌드 경고 0 · 오류 0 아래
2026-09-30 12차 G-6 — 사용자 요청 "프로그램 개요". 설정 안 메뉴 개발자 정보 — 처음에 하단 탭 맨 끝 개요 로 만들었다가 사용자가 "탭으로 만들지 말고 설정에 메뉴로" 옮겼다. 플랫폼은 건드리지 않고(사용자: 웬만하면 플랫폼은 안 건드림) 기존 AddSub(TabManager.SettingsTabKey, "개발자 정보") 로 붙였다 — 하단 탭은 예전 그대로. 읽기 전용 안내 화면이고 모양은 사용자가 준 참고 화면을 따랐다: 가운데 제목 MergeHub + 버전 배지 v0.12(올리면 빌드 날짜), 소개 한 줄(csproj Description), 목적 문장, 카드 한 장 담당(만든 사람 · 사내 문의처), 아래 빌드 날짜. 사용자 결정(추천안): 카드 한 장 — 갈래가 없는 프로그램이다, 목적 문장만 코드에, 사람 이름은 정보 창과 같은 길(ProgramInfoReader.For — 설정 → 실행 파일 받침값)로 읽어 두 화면이 다른 값을 가리키지 않게, [정보] 창은 그대로. 값 셈은 순수 모델 ProgramOverview 로 떼었고 화면이 보일 때마다 다시 읽는다. 화면 사진을 보고 한 가지 고침 — 카드 한 줄에 이름표 값 을 나란히 두니 문의처 안내 글이 낱말 가운데서 꺾여(에 / 서) 이름표를 위에 작게 · 값을 아래에 두었다(안내 글 26px = 한 줄). 하네스 OverviewTest 14건 새로(고치기 전 컴파일 실패), 빌드 경고 0 · 오류 0, 화면 g6-verify 22건 실패 0 — 하단 탭에 개요 없음 · 설정 → 개발자 정보가 열림, 글 값, 가운데 정렬(머리 1,271 · 목적 1,280 · 카드 1,281px), 설정에 적은 값이 카드에, 앞 탭 회귀. 켜 둔 채 설정을 고치면 바로 바뀌는지는 값으로 확정 못 함(다시 켜서 확인). 시험 뒤 메모 한 장에 TL 두 글자가 들어가 있었는데 같은 동작만 따로 돌리면 재현되지 않았다 — 밖에서 들어온 키 입력으로 보이나 확정 못 함, 메모는 기준본으로 되돌림 아래
2026-09-30 12차 G-5 — 사용자 요청 "사내 문의처가 배포본에 안 따라간다". 정보 창(B-2)의 만든 사람은 설정이 비면 csproj <Company> 로 받쳐지지만 문의처는 Prefer(contact, null) 로 받칠 것이 없었다 — 설정은 PC 마다 따로라 배포본을 새로 깐 PC 에서는 늘 안내 글이었다. csproj 에 <SupportContact> 를 두고 BuildDate 와 같은 길(AssemblyMetadata)로 실행 파일에 박는다(비어 있어도 키는 박음). ProgramInfoReader.StampedContact 가 읽고 Contact = Prefer(설정, 박힌 값) — 설정이 앞선다. 두 메타데이터 읽기를 Stamped(assembly, key) 하나로 모음. 설정 화면 글에 "비우면 실행 파일에 박힌 값" 을 더함. 문구는 아직 받지 않았다(사용자 결정: 구조만 먼저) — 지금은 비어 있어 화면이 예전과 같고, 나중에 csproj 한 줄만 채우면 된다. 하네스 AboutTest 28 → 30건 — 고치기 전 컴파일 실패, 원래 빌드 · 문구를 채운 시험 빌드(-p:SupportContact=…) 둘 다 실패 0. 화면 g5-verify 두 빌드 × 3건 실패 0: 설정이 비면 박힌 값(G5 시험 문의처 (내선 0000), 비었으면 안내 글), 설정에 적으면 그것. 시험 빌드 뒤 원래대로 다시 빌드해 되돌린 dll 을 하네스로 확인. 빌드 경고 0 · 오류 0 아래
2026-09-30 12차 G-4 — 사용자 요청 "저장 형식 칸에 원본 유지 콤보가 둘이라 구별이 안 된다". 인코딩 · 줄바꿈 두 콤보의 기본 칸이 같은 상수 TextFile.KeepOriginal(원본 유지)이었다. 글을 원본 인코딩 유지 · 원본 줄바꿈 유지 로 갈랐다(사용자 결정). 그런데 그 문자열은 보이는 글이면서 저장되는 값이라 — SaveEncoding·SaveNewLine 이 문서 탭을 거쳐 세션 보관본 목록.txt 7·8번째 칸에 그대로 적힌다 — 문자열만 바꾸면 옛 보관본의 값이 목록에 없는 값이 된다. 그래서 SaveChoice(Value, Label) 를 두고 콤보가 DisplayMemberPath="Label" · SelectedValuePath="Value" 로 보이는 글만 바꾸게 했다. ViewModel · 저장 · 세션 보관 코드는 그대로다. ToString() 은 보이는 글(UIA 가 읽는다). 하네스 EncTest 56건(+8, 고치기 전 컴파일 실패) · SessionTest 68건(+3 — 고치기 전에도 통과, 보관은 값을 글자 그대로 옮길 뿐임을 확인), 빌드 경고 0 · 오류 0. 화면 g4-verify 25건 — 콤보 글 · 칸 목록 · 폭 330px, LF · UTF-8 (BOM) 을 골라 저장하면 CRLF 파일이 CR 0개 · BOM 붙음, 원본 유지로 두고 강제 종료하면 보관본에 원본 유지 가 그대로 적히고 다시 켜면 콤보가 원본 인코딩 유지 · 원본 줄바꿈 유지 로 되살아남, CP949 · CRLF 도 되살아남. 회귀 e1-verify 29건 실패 0 — 첫 번은 폴더 비교 줄 마우스 더블클릭이 먹지 않아 12건 실패했고 같은 빌드로 다시 돌려 통과(더블클릭이 빗나간 원인은 값으로 확정하지 못했다) 아래
2026-09-30 12차 G-3 — 사용자 요청 "덩어리라는 말이 어색하다". 화면에 보이는 "덩어리" 를 "구간" 으로 바꿨다(사용자 결정) — 단추 [이 덩어리 반영] → [구간 반영], [이 덩어리 왼쪽으로] → [구간 왼쪽으로], 단축키 설명 두 줄(Alt+Shift+→ · Alt+Shift+←), 로그 5~7행 덩어리 … 반영 → 5~7행 구간 … 반영. 툴팁은 원래 "차이가 이어지는 구간" 이라 적고 있어 단추 글만 다른 말을 쓰던 셈이다. 토스트(3줄 반영)는 원래 그 말이 없어 그대로. 코드 안 이름(AcceptBlock · BlockAround)과 개념을 가리키는 주석은 화면에 안 나오므로 그대로 두고, 단추 이름을 인용하던 주석 두 곳만 맞췄다. 웹 문서의 옛 문구 네 곳은 차수 끝에 한 번에. 하네스 ShortcutTest 101 → 104건 — 고치기 전에 새 3건이 실패하는 것을 먼저 확인했다. 화면 g3-verify 18건(단추 글 · 폭 270px · 화면 전체에 "덩어리" 없음 · Git 탭 로그 칸 값) · 회귀 g2-verify 23건 실패 0, 빌드 경고 0 · 오류 0. 단추를 글로 찾던 f2-verify 는 새 문구로 맞췄지만 원래 낡아서(저장 단추가 B-1 에서 둘로 나뉨) 앞 단계에서 멈춘다 — G-3 과 무관 아래
2026-09-30 12차 G-2 — 사용자 요청 "base 영역에 머지할 수 있는 단축키". 12차 B-1 로 왼쪽 파일로 반영하는 길([<] · TakeLineToBase)이 생겼는데 단축키가 없었고, 덩어리를 왼쪽으로 보내는 것은 명령 자체가 없었다(AcceptBlock 은 오른쪽으로만 간다). Alt+← 는 비어 있지 않았는데 — CopyRightToLeft 가 쓰고 있었고 2-Way 에서 하는 일이 이름·화살표와 달리 "이 줄 되돌리기" 였다. 그 이름이 가리키는 일이 B-1 로 실제로 생겼으므로 그쪽으로 넘겼다(사용자 결정). Alt+← = 한 줄 왼쪽으로 · Alt+Shift+← = 덩어리 왼쪽으로(새로 만듦) · 되돌리기는 Ctrl+Z 만. 3-Way(Take Theirs)는 안 건드렸다. 찾을 수 있게 [이 덩어리 왼쪽으로] 단추도 달았다 (두 파일 비교에서만 뜬다). ApplyGroupToBase 는 ApplyGroup 의 거울 — 주석은 덩어리 첫 줄 위 한 줄, 되돌리기는 한 번에. 덩어리를 잡는 BlockAround 는 2-Way 에서 이미 CanTakeBase 로 잡으므로 그대로 썼다. 겪은 것: RaiseCanExecuteChanged·OnCaretRowChanged 에 새 명령을 안 넣어 단추가 꺼진 채였고, 덩어리 명령은 고른 줄이 아니라 CaretRow(편집기 캐럿)를 본다. 화면 g2-verify 21건 실패 0 · 하네스 ShortcutTest 88 → 101건 · 회귀 g1·e2·e3·e4 실패 0. Alt+Shift 조합은 윈도우가 입력 언어 전환으로 먼저 채가 흉내 낸 키로 못 눌렀다 — 기존 Alt+Shift+→ 로 견줘 봐도 같아 시험 도구 한계이고(C-3 의 DragMove 와 같은 부류), 덩어리는 같은 명령을 부르는 단추로 확인했다. 사람 손으로 한 번 눌러 보는 것이 남았다 아래
2026-09-30 12차 G-1 — 사용자 보고 "undo 가 계속 이어진다". 짝을 바꾼 뒤 Ctrl+Z 를 누르면 앞 파일 글(234자) ↔ 지금 파일 글(228자)을 끝없이 오갔다 — 40번을 눌러도 안 끝났고, 글자를 하나도 안 쳐도 났다. Ctrl+Z 는 우리 목록(_undo·_textUndo)이 비면 일부러 키를 먹지 않는데(그래야 글자 되돌리기가 산다), 그러면 키가 TextBox 자체 되돌리기로 넘어간다. WPF 의 그것은 한도가 없고 프로그램이 코드로 넣은 글까지 기록해서, 짝을 바꾸면 앞 파일 글을 편집기에 되살렸다. 되살아난 글을 Reflow 가 "사용자가 친 것" 으로 보고 모델을 그쪽으로 되돌리며 되돌리기에 다시 쌓고 다시하기를 지워, 두 상태에 갇혔다(기록을 심어 고리를 떴다 — 221 = 234 − 13 으로 편집기가 쥔 것이 앞 파일임을 값으로 확인). 고침은 한 줄 — LocalEditor 에 IsUndoEnabled="False". 되돌리기는 우리 목록만 쓴다. 화면 g1-verify 14건 실패 0(30번 눌러도 길이 자취가 228 하나), 편집 관련 다섯 벌(e1·e2·e2-reg·e3·e4) 회귀 실패 0. 헛짚은 것 둘도 남긴다 — "문서가 바뀔 때 TextBox 기록을 비우면 된다"(EditorUndoGate 를 만들어 하네스 16건까지 붙였다)와 "재정렬 타이머가 뒤늦게 터진다" 는 둘 다 증상이 안 없어져 되돌렸다. 검증 안 된 동작 변경은 남기지 않는다. 대신 글자 한 자 단위 되돌리기는 없어지고 "타이핑이 멈춘 자리" 가 한 걸음이 됐다 아래
2026-09-30 플랫폼을 공용 저장소로 합침 — 우리가 따로 쓰던 플랫폼 소스(D:\Sorce\ubsrepo, 원격이 Ubisam-MergeTool 이었다)에 얹어 둔 두 커밋을 진짜 플랫폼 저장소 D:\Sorce\UbisamCommonPlatform(사내 Gitea) 로 옮겼다. 6991dfd 이후 양쪽이 갈라져 있었고 — 우리 2커밋(트레이 · 창 자리 기억 · 세 갈래 묻는 창 · 탭 줄 크기 · 헤더 접기) vs 공용 4커밋(우클릭 메뉴 테마 · 앱 아이콘 · 업데이트 기본값 · HANDOFF) — 소스 파일이 하나도 겹치지 않아 부딪힌 것은 changelog.md 한 군데뿐이었다(양쪽 줄 다 살려 날짜순으로 합침). 공용 쪽에 빠져 있던 문서도 채웠다: 가이드 8-5 에 헤더 접기, HANDOFF.md 5·6절에 우리 기능 — C-3 은 플랫폼 changelog 에도 줄이 없었다. 빌드해 이 PC 의 D:\UbisamPlatform\bin 까지 반영(오류 0 · 경고 4, 배포본 해시로 확인). dist\ 는 손대지 않았다 — 사내 다른 PC 는 그대로다. 화면 회귀 아홉 벌 208건 실패 0 · 예외 0, MergeHub 재빌드 경고 0 · 오류 0. 앞으로 플랫폼은 공용 저장소에서만 고친다 아래
2026-09-28 12차 C-3 — 플랫폼 헤더 줄도 접을 수 있게. 지금까지 TopBarCollapsed 설정은 있었지만 그것을 켜고 끄는 자리가 설정 화면 체크박스 하나뿐이었고, 접으면 되살릴 띠도 단축키도 없어 다시 설정 화면으로 들어가야 했다. 아래 탭 줄 접기(11차 F-4)와 같은 방식으로 맞췄다 — 창 맨 위에 16 DIP 짜리 띠(⌄ 헤더 펴기 · Ctrl+F11, 사용자 결정대로 화살표와 안내 글만 두고 시계 · 이름은 넣지 않았다), Ctrl+F11 로 접고 펴기(아래 탭 줄 F11 과 짝), 하단 동작 줄에 [헤더 접기]. 접은 상태는 그 항목만 파일에 남긴다(설정 화면의 저장하지 않은 값을 건드리지 않게). 띠는 단추가 아니라 Border 다 — 한 자리에서 끌기와 누르기를 둘 다 받아야 하는데 단추에 DragMove 를 붙이면 마우스를 놓을 때 Click 이 오지 않아 펴지지 않는다. 끌린 거리가 없으면 누른 것으로 본다. 값: 모듈 시작 144px → 51px(93px · 62 DIP 벌었다), 다시 켜도 접힌 채, F11 은 그대로 아래 탭 줄만. 하네스 PlatformCfgTest 29 → 42건(옛 플랫폼 소스를 가리키던 것도 새 저장소로 옮김), 화면 21건 통과. 접은 띠를 끌면 창이 따라오는가는 값으로 확정하지 못했다 — 흉내 낸 마우스로는 WPF DragMove 가 움직이지 않고, 기존 헤더 끌기로 견줘 봐도 같았다(시험 도구 한계). 배포함(사용자 확인 뒤) — 모든 사내 프로그램에 함께 간다. 기본은 펴짐이라 아무것도 안 하면 달라지는 것이 없다. 플랫폼이 바뀌었으니 그 위에 얹혀 도는 12차 화면 시험 아홉 벌을 2026-09-30 에 전부 다시 돌렸다 — 208건 실패 0 · 예외 0(run-all-c3.ps1, 한 벌마다 앞 벌이 남긴 창 · 보관함을 치우고 들어간다). 끝나고 설정 네 파일을 시작 기준본과 바이트까지 같게 되돌렸다 아래
2026-09-28 12차 F-1 — 하단 탭에 메모장을 새로 넣었다(사용자 요청). 메모 + 파일 열기 둘 다이고, 저장 단추 없이 계속 남는다 — 보관 자리는 {설정 폴더}\Memo\ 로 E-1 의 Session\ 과 따로 둔다(저쪽은 저장하면 사라지는 것, 메모는 지우기 전까지 남는 것이라 수명이 다르다). 이름 없는 메모는 메모 1 · 메모 2 번호만(사용자 결정 — 첫 줄을 따오면 글을 고칠 때마다 탭 줄이 요동친다), 번호는 비어 있는 가장 작은 수를 준다. 파일로 연 메모와 한 탭 줄에 섞고, 탭 줄 · 저장 안 한 가운뎃점 · Ctrl+Tab · 가운데 단추 닫기는 12차 E-2 문서 탭과 같은 모양이다. 편집기는 줄 번호 · Ctrl+휠 글자 크기 · 찾기/바꾸기(사용자 결정). 닫을 때 저장하지 않은 것이 있으면 세 갈래로 묻는다(저장하고 닫기 · 저장하지 않고 닫기 · 취소), 고친 것이 없으면 묻지 않는다. 하단 탭 맨 뒤에 넣어 앞 세 탭의 차례를 건드리지 않았다. 화면을 보고 세 가지를 고쳤다(사용자 보고) — 탭을 오가면 화면이 다시 만들어지는 틈에 빈 편집기를 거둬 글을 덮어쓰던 것, 줄 번호를 TextBlock 으로 그려 줄 높이가 어긋나던 것(편집기와 같은 TextBox 로 바꿈), 플랫폼 입력 칸 스타일이 글 칸을 세로 가운데에 붙박아 글이 한가운데에서 시작하던 것(템플릿 안 값이라 그 칸을 직접 늘림). 하네스 MemoTest 69건 새로 만듦 · 전체 29벌 1,934건 · 실패 0, 화면 여덟 벌 통과 아래
2026-09-28 12차 D-1 — 폴더 비교 위쪽을 한 줄로. 경로 · 옵션 · 찾기 · 색 범례가 네 줄로 305px(203 DIP) 를 먹었고 비교하기 전에도 그대로였다. 위 줄은 […] 왼쪽 경로 ⇆ […] 오른쪽 경로 [최근▾] 켠옵션 [비교] [취소] [옵션 ▾] — 폴더 고르기는 … 로 줄이고 좌우 바꾸기(⇆) 를 새로 넣었다(사용자 결정). 빠른 비교 · 하위 폴더 포함 · 보기 · 포함 · 제외는 [옵션 ▾] 서랍으로 넣되, 서랍에 넣으면 "뭘 켜 뒀더라" 를 알 수 없게 되므로 기본과 다른 것만 한 줄에 짧게 적는다(FolderOptionText). 찾기는 늘 한 줄을 먹던 것을 Ctrl+F 로 부를 때만 펴고(Esc 로 접음), 색 범례는 아래 상태 줄로 내렸다(색은 목록을 보는 동안 필요한 것이다). 결과: 305px → 77px(203 → 51 DIP, −75%), 좁은 창 1280 DIP 에서도 한 줄. 되던 것은 하나도 없어지지 않았다 (폴더 고르기 · 최근 · 빠른 비교 · 하위 폴더 · 보기 거르기 · 포함/제외 · 폴더 안 찾기 · 결과 내보내기 · 복사/삭제 · 줄 단위 비교 — 값으로 확인). 화면을 보다 [옵션 ▾] 이 플랫폼 기본 ToggleButton 스타일 탓에 스위치 모양으로 그려지던 것과 최근 목록이 넓게 벌어지던 것을 고쳤다. 하네스 FolderTest 118 → 131건, 전체 28벌 1,865건 · 실패 0 아래
2026-09-28 12차 E-1 — 저장하지 않은 편집이 껐다 켜도 남는다(notepad++ 식). E-2 가 만든 보관함을 {설정 폴더}\Session\MergeHub\ 에 그대로 옮겨 적는다 — 차례 · 자리는 목록.txt 에 탭으로 나눈 글, 편집한 글은 짝마다 따로 파일. JSON 을 쓰지 않은 까닭은 최근 목록과 같다(사람이 고칠 수 있고, 글 안에 무엇이 들었든 본문을 따로 두면 탈이 없다). 원본 글은 담지 않는다 — 파일에서 다시 읽고, 그때 파일의 길이 · 수정 시각만 적어 두었다가 다르면 알린다. 목록은 맨 나중에 쓴다(있다는 것이 곧 글 파일이 다 있다는 뜻). 보관은 글자가 멈춘 뒤 2초에 한 번, 탭을 옮기거나 닫거나 새 짝을 열 때는 그 자리에서 바로, 쓰는 일은 다른 실로 넘긴다. 켤 때는 묻지 않고 되살리되 사용자가 지금 열라고 한 것(충돌 파일 · mergetool · 폴더 비교에서 고른 파일)이 먼저다. 원본이 그 사이 바뀌었으면 되살리고 알린다("파일을 연 시점" 은 새로 읽은 글로 두어 [전체 되돌리기] 가 지금 파일로 간다). 다 저장하면 보관본을 치운다. 화면으로 확인: 두 짝을 고치고 강제로 끝낸 뒤 다시 켜면 묻지 않고 탭 2개가 글 그대로 되살아나고, 저장하면 가운뎃점이 빠지고, 다 저장하면 보관본이 사라진다. 하네스 SessionTest 65건 새로 만듦 · 전체 28벌 1,852건 · 실패 0. 빠르기는 글자당 31ms 로 4줄짜리와 같았으나, "친 뒤 화면에 보이기까지" 는 UIA 로 재는 비용이 타이핑보다 커서 값으로 확정하지 못했다. E-1 이 도니 지난 시험이 남긴 편집이 다음 시험에서 되살아나 화면 시험 도구도 보관 자리를 치우고 시작하도록 고쳤다 아래
2026-09-28 [<] 단추가 있는 줄만 글이 밀리던 것(사용자 보고 — 그림으로 짚어 준 것이 이것이다). 12차 B-1 로 넣은 [<] 단추가 든 칸의 폭이 Auto 여서, 단추가 보이는 줄에서만 칸이 벌어져 뒤 칸이 통째로 오른쪽으로 밀렸다 — BASE 는 맨 앞 칸이라 번호까지, LOCAL 은 번호 뒤 칸이라 코드가 밀렸고 단추가 하나 늘 때마다 더 밀렸다. Visibility="Collapsed" 는 자리까지 없애므로 칸 폭이 고정이어야 한다. GutterBothWaysWidth 를 두어 두 칸이 같은 자리를 늘 잡아 두고, 두 파일 비교에서는 단추 폭 · Git 모드와 네 칸에서는 0 으로 화면이 갈아 끼운다(ApplyGutterReserve). 투명한 편집기가 아래 표시층과 어긋나지 않도록 EditorGutterMargin 도 같은 값만큼 민다. 글자 크기(11차 F-5)를 바꾸면 단추 폭이 따라 바뀌므로 잡아 두는 자리도 CodeFontMetrics 한 벌에서 나온다. 값으로 확인: 한 칸의 모든 줄이 같은 x(BASE 137 · LOCAL 1283), 글자 크기 · Git 모드도 그대로. BASE 줄 끝의 [>](11차 F-10)는 왼쪽 가장자리를 밀지 않아 이번에는 Auto 로 두었다 아래
2026-09-28 왼쪽 줄 번호가 밀리던 것(사용자 보고) — 12차 B-1 로 왼쪽에도 반영할 수 있게 되면서 왼쪽 줄이 늘고 주는데, 번호는 정렬기가 처음 준 것 그대로였다. 오른쪽에만 있던 줄을 왼쪽에 넣으면 그 줄은 번호가 비고 뒤 줄은 옛 번호를 달아 01 02 · 03 04 05 · 06 으로 보였다 — 왼쪽 파일은 8줄인데 번호는 6까지라 어느 줄을 고쳤는지 짚을 수 없었다. RenumberBase 를 RenumberMerged(8차 B-3) 옆에 두고 두 파일 비교에서만 왼쪽 줄을 1부터 다시 맨다. Git 모드 · 네 칸의 BASE 는 고칠 수 없는 쪽이라 건드리지 않는다. "머지 반영함" 표시가 BASE 줄 번호를 열쇠로 붙들고 있어 번호가 실제로 달라질 때만 그 열쇠도 옛 번호 → 새 번호로 옮긴다. 화면으로 넣기 · 빼기 · 되돌리기 · 저장 · Git 회귀 확인, 하네스 27벌 1,787건 · 실패 0. 왼쪽에만 있는 줄을 뺄 때 줄 수가 주는지는 값으로 확정하지 못했다(시험 도구가 낡은 줄 칸을 집는 한계) 아래
2026-09-28 12차 E-2 — 파일 비교가 짝 여러 개를 동시에 든다(문서 탭). 지금까지는 한 짝만 들어서 짝을 바꾸면 "저장하지 않은 편집이 있습니다" 를 묻고 버리면 고친 글이 사라졌다(재현: 16줄 → 15줄). 이제 떠 있던 탭이 그 글을 맡아 두므로 묻지 않는다. 탭마다 HomeViewModel 을 따로 만들지 않고(GitWorkspace 의 한 자리짜리 약속 때문) 화면은 하나로 두고 탭이 파일에 없는 것만 맡는다 — 고친 글 · 왼쪽 글(B-1) · 되돌리기 이력 · 두 기준점 · 캐럿 · 스크롤 · 저장 형식. 탭 이름은 파일 이름(다르면 왼 ↔ 오, 겹치면 위 폴더를 갈릴 때까지 덧붙임), 저장 안 한 탭은 •. 탭 줄은 둘 이상일 때만 보인다. ◀ 이전 · 다음 ▶ 은 지금 탭의 짝만 바꾸고(탭이 늘지 않음), 폴더 비교에서 두 번 누르면 새 탭(사용자 결정). Ctrl+Tab · Ctrl+Shift+Tab · Ctrl+W · 가운데 단추 닫기. 탭이 사라져도 고친 글은 보관함(짝 50개)에 남아 다시 열면 되살아난다 — E-1 은 이 보관함을 파일로 옮겨 적으면 된다. 원본이 그 사이 바뀌면 되살리고 알린다("연 시점"은 새로 읽은 글로 둔다). 탭 줄은 ItemsControl 이 아니라 ListBox 다(ItemsControl 은 UIA 에 컨트롤로 안 보여 화면 시험이 못 읽는다). 켤 때 저절로 열리는 짝만 탭이 없어 편집이 사라지던 것을 화면에서 찾아 EnsureTabForCurrentPair 로 고쳤다. 켜 놓고 눈으로 보다 두 가지를 더 고쳤다(사용자가 고름) — 중괄호 맞춤으로만 바뀐 것에는 점을 붙이지 않고(묻는 자리와 같은 기준), 탭 이름은 양쪽이 같은 부분을 한 번만 적는다(WeldController_기준.cs ↔ WeldController_내작... → WeldController_기준 ↔ 내작업.cs, 421 → 288px). 뒤쪽은 확장자일 때만 접는다 — 글자 단위로 세면 a-lef ↔ right.cs 처럼 낱말 가운데서 잘린다(하네스에서 걸렸다). 하네스 DocTabTest 106건, 화면 34건 · 회귀 19건 통과, 전체 27벌 1,787건 · 실패 0. 커밋 안 함(사용자 지시) 아래
2026-09-28 시험 도구를 런처에 맞춤 — 새 플랫폼은 UbisamBase.Launcher.exe 가 셸을 같은 프로세스에 올려 창 주인 프로세스 이름이 바뀌었고, 예전 이름만 찾던 화면 시험 도구가 전부 "창이 안 뜬다" 로 멈춰 있었다. a2lib.ps1 에 Shell-Procs · Shell-Proc · Stop-App 을 두고 Start-App · Get-Win 이 그것을 쓰게 했다(런처가 제목 없는 진행 창을 먼저 띄우는 경우를 대비해 제목 있는 창을 먼저 고름). 스크립트 76개 · 156곳을 함께 고침. 문법 187개 통과, 끄기 → 켜기 → 창 찾기 → 네 탭 → 단추 → 끄기까지 실제로 돌았고 설정 · 창 자리 네 파일 해시 그대로 되돌림. 제품 코드 변경 없음 없음
2026-09-28 12차 C-2 — 플랫폼 하단 탭 줄을 한 단계 작게(항목 74 → 61 DIP: 여백 13/14→9/10 · 아이콘 22→20 · 아이콘 아래 틈 7→5 · 글자 13.5→12.5). 실측 133 → 109px(−18%)이고 그만큼 콘텐츠가 늘어 파일 비교 코드 칸이 47 → 48줄. 라벨 잘림 · 선택 밑줄 · 탭 접기 띠 · 오른쪽 동작 항목 모두 그대로. 플랫폼 쪽이라 모든 사내 프로그램에 함께 간다. 처음에는 배포본을 백업해 잠깐 바꿔치기해 시험하고 되돌렸으나, 그 뒤 새 플랫폼을 빌드하면서 함께 배포됐다 — 2026-09-28 배포본 UbisamBase.Core.dll 해시 일치 · 화면 실측 111px(항목 109px)로 확인. 커밋 안 함(사용자 지시) 없음
2026-09-27 12차 B-3 — 칸 아래에 그 칸의 요약(6줄 · 추가 1 · 삭제 1 · 수정 1)을, 칸 사이 틈 아래에 진행(3 / 7 · 남은 2)을 적는다. 예전에는 창 맨 아래 한 곳에 파일 전체 요약만 있었다. 칸을 기준으로 읽는 수라 두 칸의 추가 · 삭제가 서로 거울이 되고, 무시 규칙 · 머지 주석 줄은 차이로 세지 않되 줄 수에는 넣는다. 3분할은 네 칸 모두 BASE(공통 조상)와 견주고 BASE 칸은 기준 이라고만 적는다. 세는 규칙은 PaneSummary 한 곳(5만 줄 × 두 칸 × 네 번 22ms). 반영 · 되돌리기 · 저장 · 규칙 바꾸기마다 따라감을 화면에서 확인. SummaryTest 25건 새로. 커밋 안 함(사용자 지시) 없음
2026-09-27 12차 B-2 — 프로그램 정보 창([단축키] 옆 [정보]). 이름 · 버전 · 빌드 날짜 · 만든 사람 · 사내 문의처와 [정보 복사](결함 알릴 때 그대로 붙여 넣는 용). 관리 목적이라 실제 실행 파일 값을 읽는다 - 버전은 csproj <Version>(0.12.0), 빌드 날짜는 빌드할 때 어셈블리에 박은 값(요즘 SDK 는 결정적 빌드라 PE 머리의 시각 자리가 내용 해시다 - 못 찾으면 PE 시각 → 파일 수정 시각 순). 만든 사람 · 문의처는 설정 프로그램 정보 에서 적고 비우면 회사 이름 · 안내 글. 창을 닫아도 화면 그대로 확인. AboutTest 28건 새로. 커밋 안 함(사용자 지시) 없음
2026-09-27 12차 B-1 — 두 파일 비교에서 양쪽으로 반영 · 저장(사용자 결정: 두 파일 비교에서만. Git 모드 왼쪽은 지난 커밋이라 제외). BASE 칸 여백에 [<], 왼쪽에 없는 줄은 LOCAL 여백의 [<] 로 왼쪽에 넣는다. ACTIONS 는 ◀ 왼쪽 저장 · 오른쪽 저장 ▶ 로 나뉘고 고친 것이 없는 쪽은 꺼진다. 두 방향의 반영 규칙을 PaneText 한 곳에 모으고(반대쪽에 있으면 가져오고 없으면 지운다), 되돌리기는 LineEdit.Side 로 어느 칸인지 보고 같은 칸으로 되돌린다. 저장 기준점 · 저장할 때 백업은 양쪽 따로. MergeLine.HasBase · BaseNumber 를 바뀔 수 있는 값으로 바꾸고 BASE 칸 목록이 그 변화를 따라가게 함(화면 시험에서 걸린 것). 네 칸 · Git 모드에서는 새 단추가 아예 안 보임. TwoWayTest 29건 새로. 커밋 안 함(사용자 지시) 없음
2026-09-27 12차 A-2 — 폴더 비교 한 줄을 왼쪽 목록 · 가운데 상태 · 오른쪽 목록 세 칸으로 나눴다(11차 F-10 파일 비교와 같은 모양). 칸마다 자기 쪽 이름 · 크기를 적고, 그쪽에 없으면 칸을 비운다(없는 쪽 - 표기도 뺌). TreeView 가 깊이만큼 줄 전체를 밀어 칸이 줄마다 어긋나던 것은 TreeDepthMarginConverter 로 민 만큼 되돌리고 이름만 다시 들여써 맞춤 — 칸 경계 · 가운데 구분선이 모든 줄에서 한 자리. 접기 · 펼치기 · 선택 · 복사 · 삭제 · 걸러 보기 · 더블클릭은 트리를 그대로 써서 손대지 않음(화면에서 여섯 가지 확인). FolderTest +7(118건). 커밋 안 함(사용자 지시) 없음
2026-09-27 12차 A-1 — 폴더 줄 크기가 늘 0 B 였다(크기를 파일 줄에만 채웠다). 폴더 줄에 안에 든 파일 크기 합계를 적는다(하위 폴더까지 · 양쪽 따로 · FolderSizeText), 크기 글자도 490.2KB · 2.4MB 처럼 사람이 읽는 단위로. 갈래 판단은 파일 크기를 보고 하므로 합계는 ClassifyAll 다음에 채운다. 걸러 낸 파일은 합계에서도 빠지고 한쪽에만 있는 폴더는 그쪽만. 탐색기 속성과 같은 값 7곳 · 4,608 줄 묶음에서 채우기 0ms. FolderTest +23(111건). 커밋 안 함(사용자 지시) 없음
2026-09-23 11차 뒤 G-2 — 새 플랫폼(D:\Sorce\ubsrepo) 위로 옮김. 플랫폼 쪽: 세 갈래로 묻는 창(ShowChoice) · 덮는 창 가운데 맞춤 · D 드라이브 없는 PC(ConfigLocation) · 켤 때 터지면 안내창 · 셸 창 자리 기억(ShellWindowPlacement.json) · 켤 때 모니터 안으로 · 최대화 크기 맞춤 · 탭 줄 접기(F11) · 트레이(최소화하면 알림 영역으로, 왼쪽 단추로 되살리기 · 오른쪽 단추 [열기]/[종료]) · 같은 설정 키 중복 등록 방지. MergeHub 쪽: 플랫폼에서 없어진 CurrentUserService 를 떼고 작성자 이름을 설정(머지 주석 > 작성자) → git config → 윈도 계정 순으로, 셸 여백은 리소스 덮어쓰기 대신 PlatformChrome.FullBleed, F5 실행을 UbisamBase.Launcher.exe 로. 하네스 34건(ShowChoice · 가운데 맞춤 10 · 창 자리 · 설정 폴더 23 · 실패 0), 화면 확인 여섯 가지. 양쪽 저장소 모두 커밋하지 않음(사용자 지시) 없음
2026-09-23 11차 뒤 G-1 — "새 모니터 열었는데 최대화하면 오른쪽으로 넘쳐": 주 150% 옆 300% 모니터에서 최대화하면 창이 5120×2186 이 되어 오른쪽 1280px · 아래 170px 이 화면 밖으로 나갔다(요소 25개). 셸이 .NET Framework WPF 라 DPI 인식이 모니터별 V1 에 머물러 윈도가 최대화 크기를 더 크게 잡는 것. 최대화된 뒤 그 모니터 크기와 다르면 한 번 다시 놓게 고침(플랫폼 changelog, 배포함). 넘침 0 · 모니터 밖 요소 0 · 주 모니터 동작 그대로 아래
2026-09-23 11차 F-11 — Git 원격 인증: 껐다 켜면 URL · 계정 · 토큰이 모두 비어 매번 다시 넣어야 했다. URL · 계정은 Git 탭에 적으면 설정에 남기고(0.8초 모아 한 번), 토큰은 fetch · pull · push · 클론이 성공했을 때만 윈도 자격 증명 관리자에 맡긴다(GitCredentialStore — 서버마다 한 이름, 설정 파일에는 토큰 글자 없음, SSH · 로컬 경로는 저장 안 함). 켤 때 · 주소를 바꿀 때 그 서버 토큰만 가져오고, 다른 서버로 바꾸면 앞 서버 토큰은 치운다. [토큰 지우기] 단추 · "저장됨" 표시. 인증 실패는 영어 대신 무엇을 하라는 한글 문장으로 아래
2026-09-22 11차 F-10 — Araxis 식 화면: 칸마다 자기 줄만(빈 줄로 높이를 맞추지 않음), 두 칸(3분할은 위 세 칸) 사이 틈에 바뀐 덩어리마다 사다리꼴 잇는 선 · 칸 안 경계선(한쪽에 없으면 굵은 선 하나) · 옮긴 덩어리는 청록 점선. 스크롤은 가운데 기준으로 따라옴(PaneMapping — 함께 있는 줄 가운데를 짝점, 사이는 비율). 속의 정렬 행은 그대로라 반영 · 되돌리기 · 차이 이동이 그대로 동작. 편집기에서 빈 줄을 없애 StripFillers 를 지움(편집기 줄 ↔ 행 표). 지운 줄 [>] 는 BASE 칸 끝, 차이 이동은 가운데로 아래
2026-09-22 11차 F-9 — 저장할 때 백업: 설정 "저장할 때 백업"(기본 끔)을 켜면 모든 저장(두 파일 · mergetool · Save & Commit · 병합 중 Save · 파일 단위 Accept · 폴더 비교 복사) 직전에 지금 파일을 바이트 그대로 {설정 폴더}\Backup\MergeHub\날짜\드라이브\원래 폴더\이름.날짜-시각.확장자 로 복사(FileBackup, 날짜 폴더마다 목록.txt, 저절로 안 지움 — 사용자 결정). 원본 폴더 · 저장소 밖이라 폴더 비교 · 변경분 · git status 에 안 섞임. 못 만들면 저장하지 않음 아래
2026-09-22 11차 F-8 — 저장한 뒤에도 Undo/Redo: 저장하는 길마다 되돌리기 목록을 비우던 것을 두고, "저장할 것 있음" 을 목록이 아니라 "지금 글이 마지막 저장과 다른가" 로(SaveBaseline). 커밋 뒤 새 HEAD 로 다시 읽기 · 비교 규칙 바꾸기 · 편집기에 친 뒤 재정렬처럼 줄을 다시 세울 때 이력을 글 단위로 옮겨 지킴(친 것도 한 걸음, 300걸음까지). 전체 되돌리기는 파일을 연 시점. 병합 중 푼 파일은 Git 탭 [다시 충돌로] 로 되돌림 — LibGit2Sharp 에 길이 없어 이 단추만 git checkout -m(사용자 결정), 해결 기록에서도 뺌 아래
2026-09-22 11차 F-7 (추가 요청) — "대형 모니터에서 오른쪽이 잘려 종료 · ACTIONS 가 안 보임": 창이 모니터 밖으로 나간 것. 켤 때 창 모드로 기억한 자리를 모니터에 조금만 걸쳐도 그대로 놓았다 — 해상도 · 모니터 배치가 바뀐 뒤 오른쪽으로 넘침(재현 840px). 플랫폼이 가장 많이 겹치는 모니터 안으로 밀게 고침(플랫폼 changelog, 사용자 확인 뒤 배포 09-22). 가장 좁은 창 × 화면 배율 80~133% 에서 안쪽 화면은 원래 넘치지 않음 아래
2026-09-22 11차 F-6 (추가 요청) — 코드 칸 줄 간격을 좁힘: 줄 높이 글자의 1.67배 → 1.33배(12 → 16, 사용자 결정 "선택 사항은 만들지 마" — 켜고 끄는 단추 · 설정 없음). 1920 × 1080 두 칸 40 → 50줄, 네 칸 위 17 → 22 · 아래 18 → 23줄. 북마크 표식 높이도 줄에 맞춤. 방법별 줄 수(탭 줄 접기 +2 · 글자 10 +7 · 칸 제목 한 줄 · 범례 감추기 +1 안팎)는 기록에 아래
2026-09-22 11차 F-5 뒤 (사용자 "응 고쳐줘") — 켜자마자(또는 탭을 눌러 돌아오면) 키보드 포커스가 없거나 탭 줄에 있어, 코드 칸을 한 번 누르기 전까지 모든 단축키(Ctrl+S · F9 · Ctrl++ …)가 듣지 않았다. 파일 비교 화면이 뜰 때 · 돌아올 때 · 창이 활성이 될 때 포커스가 비었거나 화면 밖이면 편집기로 준다(화면 안 · 다른 창의 포커스는 그대로). E-1 병합 길 회귀 없음 아래
2026-09-22 11차 F-5 (추가 요청) — 코드 칸 글자 크기 8~24(기본 12). 한 값을 모든 모니터에(사용자 결정 — 모니터마다 다른 Windows 배율은 플랫폼 PerMonitorV2 가 맞춤), 코드 칸만. CodeFontMetrics 가 줄 높이 · 번호 칸 · 여백 단추를 같은 비율로 내고(12 에서 지금 값 그대로) 화면이 DynamicResource 로 한 벌 갈아 끼움, MergeLine.MinimumRowHeight 도 따라감. Ctrl+휠 · Ctrl++/- · Ctrl+0 · 설정 "보기 > 코드 글자 크기", 상태 줄 글자 N. 줄 번호가 코드보다 몇 px 위에 뜨던 것(24 에서 커짐)도 같은 줄 높이 규칙으로 맞춤. 8 · 12 · 24 에서 네 칸 행 높이 같음. FontTest 110 · ShortcutTest +14(1,538건) 아래
2026-09-22 11차 F-4 (추가 요청) — 파일 비교 오른쪽 ACTIONS 칸을 감추는 단추 · F9(사용자 결정). 감추면 칸과 구분선 폭을 0 으로 해 코드 칸이 넓어지고, 펴면 끌어 둔 폭 그대로. 설정 ActionsHidden 에 기억. 감춘 채 Ctrl+S · Alt+←/→ 그대로. 덧(사용자 요청): 아래 탭 줄 접기 — 플랫폼에 [탭 접기] · 띠 · F11 을 넣음(플랫폼 changelog 참고, 사용자 확인 뒤 배포 09-22 16:22). 1440p 150% 에서 코드 칸 폭 +163px · 높이 +71px. ShortcutTest +3 · 플랫폼 PlatformCfgTest +7 아래
2026-09-22 11차 F-3 뒤 (사용자 발견) — 탐색기에서 폴더 둘을 보내면 왼쪽 칸이 설정의 기본 저장소(plain-compare)로 덮여 비교가 "왼쪽만" 투성이였다. FolderViewModel 이 넘어온 요청을 받은 뒤 "열어 둔 저장소를 왼쪽 기본값으로" 가 덮어쓴 것(비교는 비동기라 덮인 값을 읽음) — 기본값을 먼저, 요청을 나중에. 켤 때 받은 인자를 파일 로그에 남김. 앞선 시험은 로그만 보고 칸 값을 제대로 읽지 않아 지나쳤다 c35280a
2026-09-22 11차 F-3 (추가 요청) — 탐색기 [보내기] 가 여러 개를 어떻게 넘기는지 셸의 같은 길(바로가기에 Drop)로 일곱 경우를 잼: 프로세스 하나에 인자로 모두, 폴더 둘은 창 하나에서 폴더 비교까지 됨. 고친 것(사용자 결정): 3개 이상은 앞의 둘 + 알림(예전엔 말없이 버림), 260자 넘는 경로(탐색기가 8.3 이름으로 넘기고 net48 이 긴 이름으로 펼쳐 못 찾음 — 예전엔 아무것도 안 열림)는 열지 않고 까닭 알림, 알림은 이름 창 뒤로 지나가지 않게 본 창이 활성이 된 뒤에. 배포 묶음을 옮기면 켤 때 보내기 바로가기를 지금 실행 파일로 고침(등록한 사람만 · 바로가기 파일만 · 레지스트리 안 씀). 설치 파일 필요 없음 확인. 떠 있을 때 새 창은 그대로(플랫폼 일). ArgsTest +16(1,411건) 아래
2026-09-22 11차 F-2 (추가 요청) — [이 메서드 반영]: 캐럿이 놓인 클래스 멤버(메서드 · 생성자 · 속성 · 이벤트 · 연산자 · 필드 · enum, 로컬 함수 안이면 감싸는 멤버)를 통째로 반영(사용자 결정: C# + C/C++, 멤버 전부). Roslyn 없이 MemberRanges 가 주석 · 문자열(축자 · 보간 · raw · C++ raw · 숫자 구분자)을 가리고 #if 갈래마다 다시 읽어 중괄호 짝으로 범위를 잡는다 — 못 잡으면 단추를 끄고 단추 아래 한 줄에 까닭. 덩어리 · 메서드 반영은 머지 주석 한 줄(메서드 이름 위 · 덩어리 첫 줄 위) · 로그 한 줄 · Undo 한 번(묶음 번호) — [이 덩어리 반영] 이 줄마다 주석을 달던 것도 고침(사용자 결정). 메서드 반영 저장본 = 같은 줄 줄 단위 반영 저장본(바이트). 하네스 MemberTest 83건(23벌 1,395건) 아래
2026-09-22 11차 F-1 (추가 요청) — 칸 이름을 LOCAL(Mine) · REMOTE(Theirs) 로(사용자 결정: 표준 용어 + 영문 쪽 이름), 칸 머리마다 한 줄 "어느 쪽 · 어느 파일" — 파일 이름이 BASE 칸에만 있었고, mergetool 에서 Mine 칸이 MERGED 이름을 보였다. 좁으면 가운데를 줄이고 툴팁에 전체(MiddleTrim). 머지 주석에 출처(사용자 결정: 쪽 이름 + 브랜치/해시, 출처 먼저 설명 뒤) [사람] 날짜 Theirs(feature/theirs) — 로그와 같은 말이 되게 두 칸 로그 BASE(해시) 반영 · 브랜치 3-Way 로그 REMOTE(브랜치) 반영 으로. Take Mine 도 주석을 남긴다(처음 한 번, 되돌리면 함께 빠짐). 무시 조건은 [사람] 날짜 뒤를 따지지 않아 코드 그대로 — 옛 · 새 · 출처만 다른 주석을 하네스로 굳힘. 네 길(병합 네 칸 · 두 칸 · --merge · git mergetool) 화면 확인, E-1 병합 길 회귀 없음. 하네스 +52(1,312건) 아래
2026-09-22 11차 A-4 — 변경분을 폴더에 더해 ZIP 으로도 뽑는다(사용자 결정). 뽑은 폴더 옆에 같은 이름 .zip, 안에 폴더와 안내 파일을 나란히(풀면 폴더로 뽑은 것과 같은 모양). 바이트 · 경로 그대로, 한글 이름은 UTF-8 표시, 반쯤 된 ZIP 은 남기지 않음, 못 만들어도 추출은 성공. 같은 이름 ZIP 이 남아 있으면 새 이름을 고름. 아홉 경우를 다시 뽑아 ZIP 8/8 을 Windows tar 로 풀어 폴더와 경로 · 해시가 같음. 하네스 ReportTest +13(70건). .NET Framework 기본 기능이라 배포 묶음 파일은 그대로 아래
2026-09-22 11차 D-1 — 시험 도구 둘(제품 아님). 줄끝 검사 스크립트가 부모 하나인 커밋(rebase · cherry-pick · revert)에서 없는 둘째 부모로 git merge-base 를 불러 오류를 찍던 것 → 첫 부모와만 견준다고 적고 부르지 않음. 파일 비교 탭 요약을 읽는 함수가 제품의 "차이 없음" 을 못 읽어 커밋 뒤 요약이 빈칸이던 것 → 읽음. rebase 한 길을 다시 돌려 오류 줄 0 · 요약 "차이 없음". 제품 코드 변경 없음 아래
2026-09-22 11차 E-2 — 웹 문서(버전 13)와 기획안(버전 17)을 11차에 맞춤. 두 발행본 모두 로컬 파일과 같음을 먼저 확인. 매뉴얼에 "커밋 메시지 고치기"([커밋 수정] 과 우클릭 [메시지 바꾸기...] 를 한 표로) · "변경분 추출"(새 폴더 · 안내 파일) 두 절과 한계 셋, 남은 일 · 만든 것에 11차, 숫자 1,247건 · 커밋 129. 단추 이름 91개를 소스에서 찾아 09-18 에 적은 "맞추지 않음" 을 실제 글자 "C# 스타일 끔" 으로 바로잡음. 기획안은 커밋 메시지 수정 완료 · 4단계 준비 중 · 개정 09-22, 8쪽 A4 높이 그대로, 잠금은 사용자가 비밀번호로 아래
2026-09-22 11차 E-1 — 11차에서 바꾼 길을 사람 순서로 다시 끝까지(배포한 플랫폼 위에서). A-1 아홉 경우: 지운 파일 · 이름 바뀐 옛 경로 · 범위가 안내에 남고, 같은 폴더에 두 번 뽑아도 새 폴더 둘로 섞이지 않고, 읽기 전용 · 잠긴 파일이 있어도 막힘 없이 끝남(모두 바이트 같음). C-1 여덟 경우: HEAD 메시지 · 작성자 보존 · 스테이징 · 올린 커밋 묻는 창 · 작업 중 꺼짐 · 병합 커밋 부모 둘. C-2 로 이력을 다시 쓴 저장소(트리 · 작성자 · 시각 4/4 같음)에서 병합 한 길. 다섯 길 + pull 모두 누른 수 = 로그, 줄끝 · BOM · 충돌 표식 · class 0, 두 탭 같은 커밋. 새로 걸린 것 없음. 시험 도구가 창을 앞으로 부르며 최대화를 풀어 첫 누름이 빗나가던 것을 고침(제품 아님). 제품 코드 변경 없음 아래
2026-09-22 11차 B-2 — 설정 없는 첫 실행을 D:\UbisamConfig 를 백업 · 이름 바꿔 재 봄: 오류 창 없음 · 이름 창 → 네 탭 · 기본값이 매뉴얼 설정 표와 같음 · 최대화. D 드라이브가 없는 경우는 코드로 따라가고 같은 줄(UiSettingsService.cs:86)에서 실패하게 해 보니, 공용 예외 창이 "계속 쓸 수 있습니다 · 로그에 남았습니다" 라고 한 뒤 창 없는 프로세스만 남았다. 플랫폼에서 고침(플랫폼 377ffd3, 사용자 결정) — D 를 못 쓰면 %LOCALAPPDATA%\UbisamConfig, 켜는 중 실패는 "켜지 못했습니다" 뒤 끝냄. MergeHub 쪽은 매뉴얼 설정 자리 문장 · 설정 클래스 주석만. 사용자 확인 뒤 플랫폼 배포(바뀐 것 Core · Shell · README 셋)하고 배포 묶음을 다시 만듦 아래
2026-09-22 11차 B-1 — 배포 묶음. 매뉴얼이 가리키던 Release 출력이 09-07 것이라 폴더 비교 탭 등 6차 이후가 없었다(형식 142개 중 74개 없음). Release 로 다시 빌드하고, 셸 · MergeHub 에서 참조를 따라가 어디서도 닿지 않는 dll 7개(OpenTK · GLWpfControl · SkiaSharp.Views · LiveCharts WPF · Extensions.Options 둘)와 맥 · 리눅스 · ARM 용 네이티브 · pdb · 빈 Lang 을 뺀 묶음을 만든다 — 97MB → 43.5MB. 플랫폼 Core 가 직접 참조하는 LiveCharts · Skia 는 사용자 결정대로 남김. 새 scripts\make-bundle.ps1 이 빌드 · 묶기 · 배포묶음.txt(무엇이 왜 들었는지)를 하고, 남의 파일이 든 폴더는 비우지 않는다. 빈 폴더에서 켜 네 탭 · 병합 한 길 끝까지. 제품 코드 변경 없음 아래
2026-09-22 11차 C-2 — 마지막이 아닌 커밋의 메시지를 바꾼다(기획안 "커밋 우클릭 → 이름 변경", 사용자 결정 좁은 범위). 이력 줄 우클릭 [메시지 바꾸기...] — MergeHub 첫 우클릭 메뉴이고, 우클릭한 줄을 먼저 고른다. 여러 줄 창과 확인 창("이 커밋과 그 뒤 N개가 새 해시로 다시 써집니다")을 거쳐, 고른 커밋 메시지만 갈고 뒤 커밋은 트리 · 작성자 · 작성 시각 그대로 다시 쓴다. 바꾸기 전 자리를 refs/original/… 에 남기고 알림 · 로그에 옛 → 새 HEAD. 올린 커밋 · 사이 병합 · 다른 브랜치도 품음 · 태그 · 작업 중 · 커밋 안 한 변경 · 다른 브랜치에만 있는 커밋이면 까닭을 알림으로 말하고 막는다. 화면에서 새 메시지가 끝 줄바꿈 없이 저장되는 것을 찾아 git -m 처럼 다듬게 함. 하네스 MergeSaveTest +40(272건) 아래
2026-09-18 11차 C-1 (마무리) — [커밋 수정] 을 누르기 전에 먼저 묻는다(사용자 결정): 스테이징해 둔 파일이 있으면 "파일 N개도 이 커밋에 들어갑니다", 이미 올린 커밋이면 "origin/… 에 이미 올라가 있습니다 · 고치면 다음 Push 가 거부됩니다". 둘 다면 두 줄을 한 창에. [아니오] 면 커밋도 메시지 칸도 그대로 둔다. 막지 않는 까닭은 앞선 커밋 수가 마지막 fetch 시점 기준이라 확실치 않아서다. 하네스 MergeSaveTest +7(232건) 아래
2026-09-18 11차 C-1 (일부) — [커밋 수정]의 여덟 가지를 화면에서 재현한 뒤 넷을 고침: [마지막 메시지]가 이력 맨 위(딴 브랜치일 수 있음) 대신 HEAD 커밋 메시지를 읽고, 고쳐 써도 원래 작성자 · 작성 시각을 지키며(git 과 같게), 병합 · rebase · cherry-pick · revert 진행 중에는 단추를 끄고(예전엔 눌러서 실패), 알림에 "옛 해시 → 새 해시 · 파일 N개 포함". 하네스 MergeSaveTest +15(225건). 스테이징 파일 처리(2)와 이미 올린 커밋(6)은 사용자 결정 대기 아래
2026-09-18 11차 F-1 에 덧 (추가 요청) — 지시서의 F-1(칸 이름 · 어느 파일인지)에 "머지 주석에도 어디서 가져왔는지(REMOTE/BASE · 브랜치/해시)를 남기고, 그에 맞춰 무시 조건도 고친다" 를 적음. 고칠 곳(MergeNote.NoteBody · LooksLikeNote · TailStart · CompareRules · FolderComparer · NoteConflict · NoteRows)과 옛 주석도 그대로 무시되어야 한다는 기준까지. 코드 변경 없음 아래
2026-09-18 11차 A-3 — 변경분을 고른 폴더에 바로 쏟지 않고 그 아래 새 폴더(변경분_범위_날짜, 같은 이름이면 _2)를 만들어 뽑는다(사용자 결정). 예전에는 묻지 않고 덮어써 지난번에 뽑은 것과 사람이 넣어 둔 파일이 섞였다. 또 뽑기 전에 읽기 전용 · 열려 있는 파일을 먼저 보고 하나라도 막히면 아무것도 쓰지 않는다 — 반쯤 뽑힌 폴더가 남지 않는다. 하네스 ReportTest +12(57건) 아래
2026-09-18 11차 A-2 — 변경분을 뽑으면 폴더 옆에 안내 파일(…_변경분안내.txt)을 함께 만든다(사용자 결정: 폴더 밖 · 지울 파일은 목록으로만). A-1 에서 지운 파일 · 이름 바뀐 옛 경로 · 뽑은 범위가 결과에 안 남는 것을 확인했기 때문. 안내에 범위(커밋 제목 · 날짜) · 뽑은 파일(추가 · 수정 · 이름 바뀜은 옛 이름 병기) · 장비에서 지워야 할 파일을 적는다. 추출이 무엇을 했는지 목록으로 돌려주도록 ExportChangedFiles 를 고치고, 안내를 못 써도 추출은 성공으로 둔다. 하네스 ReportTest +14(45건) 아래
2026-09-18 11차 F-12 (추가 요청) — C# 코드 스타일 맞춤의 제품 기본값을 끔 → AURORA 로(사용자 결정). 사내 코드가 이 스타일이라 설정을 켜지 않아도 중괄호 자리 차이를 안 보게 한다. C/C++ · XAML 은 원래부터 확장자 .cs 에만 걸려 손대지 않음. 저장 동작은 그대로. 설정 없는 첫 실행에서 AURORA 확인, C# 짝 "차이 없음" · C++ 짝 "남은 차이 4줄". 하네스 StyleTest +12(90건) 아래
2026-09-18 11차 A-1 — 변경분 추출을 화면에서 아홉 경우로 뽑아 git 과 대조(고치지 않음). 파일 고르기 · 바이트 보존(이진 · 한글 · 깊은 경로) · 범위 표시는 맞았다. 확정된 문제 넷: 지운 파일 · 이름 바뀐 옛 경로가 결과에 안 남음, 무엇과 무엇 사이를 뽑았는지 안 남음(병합 커밋은 첫 부모와만 · 거꾸로 범위도 말없이 됨), 비어 있지 않은 폴더에 묻지 않고 덮어써 옛 추출이 섞임, 쓰다 막히면 반쯤 뽑힌 채 멈춤. A-2 · A-3 으로 넘김. 제품 코드 변경 없음 아래
2026-09-18 11차 F 절 (추가 요청) — 사용자가 한꺼번에 준 열한 가지를 지시서에 넣음: 칸 이름 · 어느 파일인지(F-1) · 메서드 단위 반영(F-2) · 폴더 두 개 보내기 + 설치 없이 되는지(F-3) · 툴박스 감추기(F-4) · 글자 크기(F-5) · 넓게 보기(F-6) · 모니터(F-7) · 저장 뒤 되돌리기(F-8) · 백업 저장(F-9) · 덩어리 잇기 UI(F-10) · Git 계정 · 토큰 저장 확인(F-11). 항목마다 지금 코드가 어떤지와 정할 것을 함께 적음. 코드 변경 없음 아래
2026-09-17 11차 지시서 — 10차 전부 끝(E-1 새로 걸린 것 없음). 기획안 v1.2 에서 "일부" 로 남은 것과 베타 전 확인에서 나온 것을 11차로 — A 변경분 추출(먼저 뽑아 보고 적기 · 지운 파일 · 범위 안내 · 비어 있지 않은 폴더 · ZIP) · B 배포 폴더가 09-07 것 · D 드라이브 고정 설정 위치 · C 커밋 메시지 수정(있는 [커밋 수정] 의 [마지막 메시지] 가 목록 맨 위 · 스테이징 파일이 말없이 들어감 · 작성자가 바뀜 · 작업 중에도 켜짐, 임의 커밋 수정은 할지 정함) · D 시험 도구 · E 확인 · 문서. 코드 변경 없음 아래
2026-09-17 10차 E-2 — 웹 문서를 10차 끝 기준으로(아티팩트 버전 11). 발행본이 9차 D-1 파일과 같음을 먼저 확인. 매뉴얼에 두 탭이 같은 커밋을 본다는 설명, 알아 둘 한계에서 고친 둘(Git 탭 고른 커밋 안 따라옴 · 규칙 끈 채 반영 색) 뺌, 남은 일 · 지금까지 만든 것에 10차, 숫자(1,147건 · 커밋 114). 10차 D-1 · F-3 에서 로컬로만 고친 문장도 함께 발행 아래
2026-09-17 10차 E-1 — 새로 만든 저장소에서 병합 · pull · rebase · cherry-pick · revert 를 MergeHub 만으로 끝까지(파일 비교 탭 미리 안 엶, cherry-pick · revert 는 [모든 브랜치] · Git 탭 이력을 마우스로). 다섯 길 모두 첫 회차에 끝, 누른 Take = 줄 고른 로그(18 · 18 · 18 · 18 · 6), 마지막 Save 뒤 제목 · 요약 · 기준이 git 과 같음, 줄끝 · BOM · 충돌 표식 · class 이름 0. Git 탭에서 고른 커밋을 파일 비교 탭이 바로 따라옴. 8차 · 9차 회귀 없음, 새로 걸린 것 없음. 제품 코드 변경 없음 아래
2026-09-17 10차 F-3 (추가 요청) — 폴더 비교 "주석만 다름" 에 BOM · 줄끝 · 인코딩 · 끝 공백 · 빈 줄 · 들여쓰기만 다른 파일도 들어와 맞지 않는 이름이었다. 판정은 그대로 두고 "다름(이진)" 과 같은 꼴로 "다름(코드는 같음)" 으로 바꿈 — 목록 · 범례(설명 붙임) · 요약 "다름 N(코드는 같음 M)" · 비교 결과 보고서 · 웹 문서. 하네스 FolderTest +1 아래
2026-09-17 10차 F-1 · F-2 (추가 요청) — 폴더 비교 "같은 것만" 에서 같은 파일을 품은 폴더 줄이 폴더 자신의 상태 "다름"(주황)으로 보여 내용이 다른 것이 섞인 것처럼 읽혔다. 걸러 볼 때(같은 것만 · 왼쪽에만 · 오른쪽에만) 폴더 줄은 걸린 파일 수와 그 갈래 색으로 적는다. 설정(C# 스타일 맞춤 · 머지 주석 무시)으로 같음이 된 파일은 사용자 결정대로 같음으로 두고 "같음(스타일만 다름)" · "같음(머지 주석만 다름)" 으로 까닭을 붙인다. 요약 수 그대로. 하네스 FolderTest +15 아래
2026-09-17 10차 D-1 — 9차 B-2 에서 한 번 잰 "그날 첫 폴더 비교 9.2초" 를 다시 냈다. 파일마다 버퍼 없이 열어 캐시를 비워도(한 갈래 읽기 0.4 → 1.8초로 먹는 것 확인) 전체 비교는 0.46~0.54초로 데운 상태와 같았고(여러 갈래 읽기), 앱을 새로 켠 첫 비교도 느리지 않았다. 9.2초는 다시 안 남 → 고치지 않음(제품 코드 변경 없음). 매뉴얼 한계 문장을 잰 값으로 고침. HDD 는 재 보지 않음 아래
2026-09-17 10차 C-1 — 설정 "머지 주석 무시" 를 끈 채 네 칸을 다시 정렬하면 주석 줄이 BASE 코드 줄과 한 행이 되어 반영 표시(BASE 줄 번호)가 주석 줄에, 반영한 코드 줄은 "직접 수정" 으로 보였다. 네 칸은 규칙과 상관없이 주석 줄과 코드 줄을 떼어 놓고, 다시 정렬한 주석 줄을 "반영함" 으로 칠하지 않게 함. 요약 · 줄 수 · 저장 해시 그대로. 두 칸도 떼어 보니 차이 수가 늘어(4 → 5줄) 두 칸은 그대로. 하네스 NoteTest +5 아래
2026-09-17 10차 B-1 — Git 탭과 파일 비교 탭이 고른 커밋 값을 함께 쓰는데 표시는 새로고침 전까지 서로 안 따라왔다. 파일 비교 탭에서 고르면 Git 탭은 옛 커밋에 선택 표시가 남은 채 [Revert] 가 보이지 않는 커밋에 걸렸다. 사용자 결정대로 양방향으로 바로 따라가고(CommitChosen), 파일 비교 탭에 저장 안 한 편집이 있으면 Git 탭 목록이 선택을 바꾸기 전에 물어 [취소] 면 누름을 막는다. 하네스 +4 아래
2026-09-17 10차 A-1 — 9차 D-1 N1(네 칸에서 고르기 한 번이 안 남아 멈춤)을 앱 안 임시 로그(잰 뒤 되돌림)와 함께 61회 · 누름 366번(병합 · cherry-pick × 9차 간격 · 0.1초) 되풀이 — 다시 안 남, 앱은 Take 372번 모두 충돌 줄에서 받아 하나씩 줄임(헛돈 0). Take 뒤 [다음 충돌] 처리 전에는 Take 단추가 꺼져 있는데 9차 시험 도구가 "꺼져서 안 누름" 을 버린 것으로 보임. 제품 코드 변경 없음, 시험 도구가 다시 누르고 못 누르면 적게 고침 아래
2026-09-17 10차 지시서 — 9차 전부 끝. D-1 에서 새로 걸린 N1(A-1 네 칸에서 고르기 한 번이 남지 않아 멈춤 — 자동 조작인지 제품인지 원인부터)과 9차에서 적어 둔 셋(B-1 Git 탭에서 고른 커밋을 파일 비교 탭이 안 따라옴 — 먼저 정함 · C-1 머지 주석 무시를 끈 채 다시 정렬하면 반영 색이 옆 줄로 · D-1 첫 폴더 비교 9.2초 — 재고 정함) · E-1 다섯 길 + pull · E-2 웹 문서. 코드 변경 없음 아래
2026-09-17 9차 D-1 — 병합 · rebase · cherry-pick · revert 를 새 저장소에서 파일 비교 탭을 미리 열지 않고 끝까지(코드 변경 없음). cherry-pick · revert 는 [모든 브랜치] 를 켜고 마지막 파일을 네 칸으로. 네 길 모두 마지막 Save 뒤 제목 · 요약 · 기준(HEAD) 같음 · 요약 N줄 = git diff · 커밋 뒤 기준 새 HEAD · 줄끝 · BOM 바뀐 파일 0 · class 검사 0. 새로 걸린 것: N1 cherry-pick 첫 회차에서 고르기 한 번이 안 남아 "남은 충돌 1개" 로 멈춤(다시 하니 끝까지) → 10차. 9차 전부 끝. 웹 문서 "9차 끝" (아티팩트 버전 10) 아래
2026-09-17 9차 C-1 — 웹 문서가 8차 D-1(E-1 · F-1 전)에서, "지금까지 만든 것" 은 6차에서 멈춰 있었다. 개요 숫자(22벌 1,122건 · 커밋 104), 매뉴얼에 병합 커밋 본문 해결 내역 · 해결 기록이 남는 곳 · 마지막 저장 뒤 기준 HEAD · 한계 넷, 남은 일에 8차 끝 · 9차 표, 지금까지 만든 것 7~9차. 화면 문구 grep 대조 · 태그 짝 맞음. 아티팩트 버전 9. 제품 코드 변경 없음 아래
2026-09-17 9차 B-2 — 5차에 "폴더 비교 뒤 트리를 세우는 데 1초 남짓" 으로 적어 둔 것을 앱 안 임시 측정(잰 뒤 되돌림)으로 단계별로 쟀다. 4,500개 묶음에서 트리 만들기 5~17ms · 첫 화면까지 0.13초(필터 전체 0.24초), 비교는 데운 뒤 0.7초. 5차 값은 자동 조작 대기가 섞였다. 줄일 자리가 없어 고치지 않음(코드 변경 없음). 그날 첫 비교 9.2초는 적어 둠 아래
2026-09-17 9차 B-1 — 네 칸에서 줄을 반영하며 넣은 머지 주석 줄이 넣는 순간 "추가"(파랑)였다가 다시 정렬하면 "무시"(회색)로 바뀌었고, LOCAL(Mine) 칸에 내 파일에 없는 주석 글이 보였다. 사용자 결정대로 넣는 순간부터 다시 정렬한 모양(규칙 켜짐이면 무시 · Mine 빈 자리)으로 넣는다. 파일에 원래 있던 주석 줄과 같은 색. 하네스 NoteTest +5 아래
2026-09-17 9차 A-2 — 8차 E-1 에서 한 번 다른 브랜치 커밋이 기준으로 잡힌 것은 A-1 과 뿌리가 같았다(선택을 놓치면 목록 맨 위). 해시만 지키자 cherry-pick [커밋] 뒤 선택이 옛 HEAD 에 남아 방금 커밋한 줄이 "남은 차이 6줄" 로 보여, HEAD 를 보고 있었으면 커밋 · 체크아웃 뒤 새 HEAD 를 따라가게 함께 고침. 같은 순서 여섯 번 모두 규칙대로. 하네스 +5 아래
2026-09-17 9차 A-1 — cherry-pick 마지막 [Save] 뒤 두 칸의 기준이 고른 커밋 · 다른 브랜치 커밋 · HEAD 중 하나로 그때그때 달랐는데 요약은 늘 "내 쪽 대비" 라고 했다. 새로고침이 이력 목록을 갈아 끼우며 선택을 놓치면 목록 맨 위로 채웠기 때문([모든 브랜치] 에서 맨 위는 HEAD 가 아님). 사용자 결정대로 작업 중 충돌이 막 0 이 되면 기준을 HEAD 로 옮기고, 그 밖에는 해시로 되찾고 없으면 HEAD. 요약은 기준이 HEAD 일 때만 작업 글. 하네스 +18 아래
2026-09-17 9차 지시서 — 8차 전부 끝. E-1 에서 새로 걸린 N1(A-1 cherry-pick 마지막 저장 뒤 요약은 "내 쪽 대비" 인데 두 칸의 기준은 이력에서 고른 커밋 — 먼저 정함 · A-2 한 번은 다른 브랜치 커밋이 기준 — 새로고침 뒤 선택 복원, 원인부터)과 전에 남긴 것(B-1 MERGED 주석 줄 "무시" 색 · B-2 폴더 트리 1초) · C-1 웹 문서(F-1 · 숫자) · D-1 cherry-pick · revert 를 마지막 파일까지 네 칸으로. 코드 변경 없음 아래
2026-09-17 8차 E-1 — 다섯 길(병합 · pull · rebase · cherry-pick · revert)을 새 저장소에서 파일 비교 탭을 미리 열지 않고 MergeHub 만으로 끝까지(제품 코드 변경 없음). 다섯 길 모두 커밋(rebase 끝)까지 · 줄끝 · BOM 바뀐 파일 0 · 충돌 표식 0 · class 이름 검사 0. 7차 A-1 · A-2 · B-1, 8차 A-1 · B-1 · B-2 다시 안 남, F-1 병합 · pull 본문 26개. 새로 걸린 것: N1 cherry-pick 요약 "내 쪽 대비 가져온 변경" 이 실제 기준(이력에서 고른 커밋)과 다름 · 한 번 다른 브랜치 커밋이 기준으로 잡힘(재현 안 됨) → 9차. 8차 전부 끝 아래
2026-09-17 8차 F-1 (추가 요청) — 충돌 탭 파일 단위 Accept 는 소스에 주석이 안 남고, 병합 커밋 본문은 비어 있었고, Git 탭 로그는 끄면 사라져 누가 어느 파일을 어떻게 풀었는지 남는 곳이 없었다. 병합 · pull 중 푼 방법(줄 단위 · Accept Mine/Theirs/Both · 파일 남기기/지우기 · 머지 주석 자동)을 .git/MERGEHUB_RESOLUTIONS 에 적고, [병합 커밋] 본문에 "충돌 해결 N개 · 이름" 과 갈래별 파일 목록을 붙인다(Git 탭 메시지 칸에 미리 보임, 사람이 고쳐도 커밋 때 붙음). 기록은 병합 커밋 · 작업 취소 때 치운다. 병합 26개 · pull 26개 · Accept Mine · 취소 확인. 스타일 맞춤 선택지는 만들지 않기로(사용자) 아래
2026-09-16 8차 D-1 — 웹 문서(doc/web/index.html)가 6차에서 멈춰 있었다. 7차 · 8차에서 바뀐 것을 매뉴얼에 넣고(창 크기 조절 · 이름 창 잠금 · 폴더 끌어다 놓기 차례 · 작업별 네 칸 제목과 끝내기 단추 · MERGED 줄 번호 · pull · rebase · cherry-pick · revert 가 같은 길), "알아 둘 한계" 를 지금 기준으로 다시 썼다(사라진 네 줄 빼고 스냅 한계 추가). 남은 일 표를 7차 · 8차로 갈아 끼우고 숫자 갱신(22벌 1,073건 · 커밋 94). 발행된 아티팩트도 버전 7 로 갱신. 제품 코드 변경 없음 아래
2026-09-16 8차 C-3 — 7차 E-4 에서 남긴 넷을 실제 픽셀로 쟀다. 기억 없이 처음 Win+↓ 로 내리면 1600×900 DIP 가 화면 아래로 16px 넘치고 작업 표시줄을 가렸고, 최대화 창에서 이름 창이 세로 36px 위에 떴다. 사용자 결정대로 첫 복원을 두 번 누르기 복원과 같게(작업 영역 80% · 가운데), 덮는 창을 본 창 실제 사각형 가운데로 고침(플랫폼 ShellWindow · 새 OwnerCentering). 스냅은 최소 크기(1280×720 DIP) 때문에 화면 반쪽이 될 수 없음을 적어 둠, 1px 테두리는 그대로. 플랫폼 수정 · 배포 아래
2026-09-16 8차 C-2 — 7차에서 코드로만 봤던 "cherry-pick 은 원래 작성자를 남긴다" 를 화면으로 확인(제품 코드 변경 없음). 생성기에서 상대 쪽 작업 만 작성자를 박지훈으로 두고, MergeHub 와 git 이 각각 cherry-pick · revert 를 하게 해 견줌 — cherry-pick 은 둘 다 작성자 박지훈 · 커밋한 사람 시험, revert 는 둘 다 시험. 이력 목록에도 박지훈으로 보인다 아래
2026-09-16 8차 C-1 — 7차 C-2 에서 만든 길로 revert 도 되는지 화면으로 끝까지 봤다(제품 코드 변경 없음). 시험 저장소 생성기에 feature/revert(뒤이은 수정) 갈래를 더해 revert 충돌 16개를 만들고, [Revert] → 머리 "revert 진행 중" → 네 칸 REMOTE "되돌리는 커밋 …" → 로그 "101행 Theirs(커밋 …) 반영" → 진행 줄 "[커밋] 으로 revert 를 끝냅니다" → 원래 메시지로 커밋까지. 줄끝 · BOM 바뀐 파일 0 · 충돌 표식 0 · class 이름 검사 0 아래
2026-09-16 8차 B-3 — 네 칸 MERGED 칸 줄 번호가 정렬할 때 정해진 채 굳어, 고른 줄 · 머지 주석으로 결과가 늘어도 그대로였다(끝 번호 3363 · 상태바 총 3369줄). 사용자가 "결과 파일 번호로" 를 골라, 결과에 들어가는 줄만 1부터 다시 매긴다(MergedNumbering). 줄을 만들 때와 요약을 그릴 때마다 다시 매겨 고르기 · 편집 · 되돌리기 뒤에도 맞는다. 저장된 파일 줄 수(3369)와 화면 번호가 같아짐 아래
2026-09-16 8차 B-2 — 이미 들어 있는 커밋을 cherry-pick 하면 [커밋] 이 켜지는데 누르면 로그에 "실패: No changes; nothing to commit." 만 남고 진행 줄도 그대로라 같은 단추를 또 누르게 됐다. 커밋할 것이 있는지(HasStagedChanges)를 상태로 들고 있다가 [커밋] 을 끄고, 진행 줄 · 적용 로그가 "가져올(되돌릴) 변경이 없습니다 - [작업 취소] 로 끝냅니다" 라고 말한다. 커밋 직전에도 사람 말로 막는다. 병합 커밋은 트리가 같아도 정상이라 걸지 않음 아래
2026-09-16 8차 B-1 — rebase · cherry-pick 에서 마지막 충돌을 [Save] 하면 파일 비교 탭이 "남은 차이 6줄" 로 떨어져 충돌 탭과 다른 말을 했다(7차 A-1 이 병합 전용이었고 화면도 MERGE_HEAD 기준으로 물었다). 요약 · BASE 제목을 작업 상태(GitOperationState)에 맞춰 OperationLabels 로 옮김 — 끝말은 충돌 탭 진행 줄과 같은 FinishHint, 차이 줄은 작업별로(받은 · 올린 · 가져온 · 되돌린 변경), 제목 꼬리는 병합 "병합 전 내 쪽" · rebase "올릴 자리" 등. 병합 글은 그대로 아래
2026-09-16 8차 A-1 — 파일 비교 탭을 처음 여는 것이 [3분할로 열기] 면 고른 파일 대신 첫 충돌 파일이 보였고, 그 화면을 [Save] 하면 고른 파일에 그 내용이 써졌다(Unit47 이 Unit15 내용으로 스테이징). 탭을 만들 때의 목록 세우기와 고른 파일 열기가 겹쳐, 늦게 끝난 읽기가 화면을 덮은 것. 읽기는 경로 · 커밋이 바뀌었으면 버리고 한 번 더 읽게, 쓰기(저장 · Save & Commit · 파일 지우기/남기기)는 화면에 실린 파일과 다르면 아무것도 쓰지 않게 했다. 네 길 모두 고른 파일이 열리고 저장이 그 파일에만 감, 병합은 사람 순서 그대로 끝까지(줄끝 0/33 · 내용 검사 0) 아래
2026-09-15 8차 지시서 — 7차 전부 끝. D-1 에서 새로 걸린 넷(A-1 고른 파일에 다른 파일 내용이 저장됨 · B-1 rebase / cherry-pick "남은 차이" · B-2 빈 cherry-pick [커밋] · B-3 MERGED 번호)과 7차에서 남긴 것(revert 끝까지 · 원래 작성자 · 창 크기 스냅 등) · 웹 문서 갱신 · 다섯 길 재확인(파일 비교 탭을 미리 열지 않고). 코드 변경 없음 아래
2026-09-15 7차 D-1 — 병합 · pull · rebase · cherry-pick 을 새 저장소에서 MergeHub 만으로 끝까지(코드 변경 없음). 네 길 모두 커밋까지 · 줄끝 · BOM 바뀐 파일 0 · A-2 · B-1 다시 안 남 · MERGED 줄 번호 안 잘림. 새로 걸린 것: N1 파일 비교 탭을 처음 여는 것이 [3분할로 열기] 면 다른 파일이 보이고 그대로 [Save] 하면 고른 파일에 그 내용이 써짐 · N2 rebase · cherry-pick 마지막 저장 뒤 "남은 차이"(A-1 이 병합만) · N3 MERGED 번호가 결과 번호가 아님 · N4 빈 cherry-pick [커밋] 이 켜져 실패 → 8차 아래
2026-09-15 7차 E-4 — 셸 창이 최대화 전용이었다. 가장자리를 끌어 크기 조절(최소 1280×720 DIP) · 브랜딩 바 두 번 누르기 최대화 ↔ 복원 · 보통 크기로 끌면 크기 그대로 · 화면 이동이 DIP 크기를 지킴 · 마지막 크기 · 모니터 · 최대화 기억. 최대화는 작업 표시줄까지 덮는다(사용자 결정 — 틀을 붙인 뒤 작업 표시줄이 하단 탭 바를 가려 최대화 동안 틀을 뗌). 크기를 바꿀 때 창이 검게 깜빡이던 것(99.7% → 3%). 플랫폼 수정 · 배포, MergeHub 코드 변경 없음 아래
2026-09-15 7차 C-2 — rebase · cherry-pick 충돌을 화면이 모두 "병합" 으로 불렀다(REMOTE · THEIRS, cherry-pick 에 "병합 진행 중", 다 풀면 끝낼 단추가 없음, 로그에 RebaseContinue() · Commit(), 다른 브랜치 커밋을 cherry-pick 할 수 없음). 작업 상태(GitOperationState)로 칸 제목 · 머리 글 · 진행 표시 · 끝내기 단추(병합 커밋 · 계속 · 커밋)를 정하고, cherry-pick · revert 는 원래 메시지 · 작성자로 커밋. 머지 주석 자동 풀기도 함께. 이력 탭 [모든 브랜치]. 두 길 모두 MergeHub 만으로 끝까지, 줄끝 바뀐 파일 0 아래
2026-09-14 7차 지시서에 E-4 추가 — 사용자 요청 "창 크기를 마음대로 조절". 지금은 셸이 최대화 전용(테두리 없음 · 크기 고정 · 끌면 다시 최대화). 걸리는 곳(크기 조절 테두리 · 배율 다른 모니터 · 크기 기억 · MergeHub 고정 폭과 네 칸 정렬 · 모든 소비 프로그램)과 판정 기준을 적음. 코드 변경 없음 아래
2026-09-14 7차 C-1 — pull 로 받은 충돌은 머지 주석만 다른 파일까지 사람에게 물었고(26 · 0/26), 알림도 커밋 메시지도 없었다. [Merge] 의 뒷일을 AfterMerge 로 빼 pull 도 같게(24 · 2/26 · 같은 알림). pull 병합 커밋 메시지는 git 과 같은 "Merge remote-tracking branch 'origin/feature/mine' into feature/mine" 아래
2026-09-14 7차 B-1 — 병합 때 적는 처음 충돌 목록(.git/MERGEHUB_CONFLICTS)이 병합 커밋 · 작업 취소 · 터미널에서 끝낸 병합 뒤에도 남았다. MERGE_HEAD 가 없거나 다른 병합의 것이면 병합 커밋 · 작업 취소 직후와 상태를 다시 읽을 때마다 지운다. 병합 중에는 그대로라 "푼 것 M개" 는 이어진다 아래
2026-09-14 7차 A-2 — 병합 충돌 네 칸에서 Take Theirs 로그가 "10행 (3-Way 안 씀) 반영" 이고 Take Mine 은 로그가 없었다. 이제 "10행 Theirs(feature/theirs) 반영" · "10행 Mine(feature/mine) 으로 정함". 충돌 네 칸 머리는 3-Way 콤보 대신 "병합 충돌 · REMOTE = 상대". 브랜치 3-Way 문구는 그대로 아래
2026-09-14 7차 E-2 — 폴더 비교 화면 아무 데나 폴더를 하나 놓으면 늘 첫 칸에 들어가 두 번째 폴더가 첫 폴더를 덮어썼다. 놓는 차례대로 첫 칸 → 둘째 칸(양쪽이 차면 바로 비교), 경로 칸 위에 놓은 것도 차례에 친다. 탐색기에서 끌어다 놓아 확인 아래
2026-09-14 7차 E-3 — 켤 때 사용자 이름 창을 Alt+F4 로 닫으면 이름 없이 본 창을 쓸 수 있었고 창도 끌려 움직였다. 저장 전에는 닫히지 않고 움직이지 않게(플랫폼 UserNameDialog, 확인 받고 D:\UbisamPlatform\bin 배포). MergeHub 코드 변경 없음 아래
2026-09-14 7차 A-1 — 마지막 충돌을 [Save] 하면 파일 비교 탭이 "남은 차이 6줄" 로 떨어져 덜 푼 것처럼 보이던 것. 병합 중 충돌 0 이면 두 칸 요약이 "충돌 정리 끝 · 병합 커밋을 할 수 있습니다 · 내 쪽 대비 받은 변경 N줄", BASE 제목에 "병합 전 내 쪽". E-1 때 못 돌린 MergeSaveTest 기대값도 [Save] 로 아래
2026-09-14 7차 지시서 · E-1 — 6차 D-1 에서 걸린 세 가지와 pull · rebase · cherry-pick 충돌로 7차 지시서를 씀. 병합 중 [해결로 저장] 단추를 [Save] 로(LOCAL 저장 단추라 Save & Commit 과 짝). 하는 일 그대로, 알림 · 막힘 안내 · 웹 문서 이름도 아래
2026-09-14 6차 D-1 — 새로 만든 저장소를 MergeHub 만으로 처음부터 병합 커밋까지(충돌 26 · 자동 2 · 파일 단위 15 · 3분할 7 · 지우기/남기기 2). 줄끝 · BOM 이 바뀐 파일 0/33, 표식 0. 5차 C-1 의 23가지 중 사라짐 18. 새로 걸린 3가지는 7차로. 코드 변경 없음 아래
2026-09-14 6차 C-1 — 병합 · revert · cherry-pick · rebase · pull 결과가 로그에 두 번 찍히던 것을 한 번으로. 충돌 탭 목록에 종류(양쪽 수정 · 상대 삭제 · 내가 삭제 · 양쪽 새 파일)와 "남은 충돌 N개 · 푼 것 M개 (M/전체)". 처음 충돌 목록을 .git 에 적어 두어 앱을 다시 켜도 이어짐 아래
2026-09-14 6차 B-8 닫음 — 병합 커밋 뒤 파일 비교 탭이 어정쩡하게 남던 증상이 다시 나지 않음. Git 으로 풀고 커밋 · 탭에서 마지막 충돌을 풀고 커밋 두 흐름 모두 목록 304 · 두 칸 · 선택 커밋 = 병합 커밋. B-1 · A-3 에서 없어진 것으로 봄 아래
2026-09-14 6차 B-7 — 병합 중 상태바 인코딩 · 줄바꿈을 충돌 표시가 든 워킹트리가 아니라 내 쪽(ours) 파일로("UTF-8 · 혼합" → "UTF-8 (BOM) · CRLF"). 네 칸 요약을 "남은 충돌 N개 · 받을 변경 M줄" 로, 범례 수를 먼저 세어 한 박자 늦던 것도 고침 아래
2026-09-14 E-1 C# 코드 스타일 맞춤 — AURORA(형식 · 메서드만 새 줄, } else {) / Allman(모두 새 줄)로 중괄호 줄바꿈을 맞춘 뒤 비교. 두 칸 · 네 칸 · mergetool · 폴더 비교, 설정. 스타일만 바뀐 편집은 파일을 바꿀 때 묻지 않음. StyleTest 78건 아래
2026-09-14 E-2 시연 재료 — demo\make-demo.ps1 · tools\DemoMaker. 지어낸 코드로 폴더 비교 · 스타일 · mergetool · 큰 파일 · 병합 저장소(D:\MergeHubDemo\repo) 아래
2026-09-14 6차 B-6 — 충돌 탭에서 여러 파일을 골라(Ctrl · Shift) Accept 를 한 번에. 작업 하나로 풀고 저장소 다시 읽기는 끝에 한 번. 같은 줄 충돌 15개 22.0초 → 1.2초 아래
2026-09-14 6차 B-5 — 머지 주석을 비교에서 무시(주석 줄은 거르고 줄 끝 주석은 떼고 견줌). 주석만 다른 git 충돌은 양쪽 주석을 남겨 자동으로 풂. 정렬이 주석 줄과 코드 줄을 짝지으면 떼어 놓음. 폴더 비교도. 설정 [머지 주석] 에서 끔 아래
2026-09-14 6차 B-4 확인 중 발견 두 건 — "마지막 차이" 로 멀리 건너뛰면 표시층 보정이 화면 밖 행으로 재져 네 칸이 9줄 위로 밀리던 것을 고침. git mergetool 이 넘긴 세 벌을 두 칸이 아닌 네 칸으로 열고 결과를 MERGED 파일에 쓴다 아래
2026-09-14 6차 B-4 — 3분할 MERGED 칸 줄 번호 자리가 20px 라 2949 가 "294" 로 잘리던 것을 고침. 네 칸 여백을 54 → 66px 로 맞춰 넓혀 다섯 자리까지 보인다 아래
2026-09-14 6차 B-3 — 병합 커밋 기본 메시지를 Merge branch '상대' into 내 브랜치 로. 첫 파일 이름이 굳어 남던 것, 커밋에 #Conflicts: 줄 24개와 해시 첫 줄이 들어가던 것을 고침. 병합이 끝나면 스스로 채운 글만 지운다 아래
2026-09-14 6차 B-2 — 파일을 바꿀 때 확인 창이 고친 파일 이름을 대고, [저장하고 계속] 이 엉뚱한 파일(새로 고른 파일)에 쓰던 것을 막음. [취소] 뒤 콤보가 제자리로. 저장소를 먼저 열면 목록이 0개이던 B-1 빈틈도 아래
2026-09-14 6차 B-1 — 새로고침 뒤 파일 목록을 게이트가 풀릴 때까지 기다렸다 세움(병합 뒤 304개 → 23개). 충돌 목록 두 번 누르기·Enter·[3분할로 열기] 로 파일 비교 탭 네 칸에서 연다. 없는 '홈 탭' 글을 고침 아래
2026-09-14 6차 A-5 — 파일 단위 Accept Both 가 두 벌을 글로 풀어 이어 붙이고 내 쪽 형식으로 쓴다(가운데 BOM 사라짐). 누르기 전에 무엇이 일어나는지 묻는다. A 묶음 끝 아래
2026-09-14 6차 A-4 — 한쪽이 지운 충돌(UD·DU)은 줄 단위 3분할 대신 남은 파일을 두 칸으로 보이고 [파일 남기기] · [파일 지우기] 로 푼다. 거꾸로 세던 범례(Theirs only 89)가 없어짐 아래
2026-09-14 6차 A-3 — 병합 중 충돌 파일을 열면 콤보를 안 건드려도 네 칸이 뜬다. REMOTE 제목에 상대 브랜치 이름(MERGE_HEAD → 병합 메시지 → 짧은 해시) 아래
2026-09-14 6차 A-1 — 충돌 해결 저장이 내 쪽(ours) 파일의 줄끝·인코딩을 따른다(3,363줄 파일 +3,367/−3,363 → +8/−4). 검사 모음이 옛 실행 파일로 돌던 것을 찾아 세 벌을 고침 아래
2026-09-14 6차 A-2 — 병합 중 [해결로 저장] 을 따로 둠(쓰고 스테이징만). Save & Commit 은 남은 충돌이 있으면 쓰기 전에 막는다. 건너뛴 목록 불러오기가 목록을 비우던 것도 막음 아래
2026-09-14 지시서 6차 B-5 정함 — 머지 주석은 소스에 넣고, 비교·병합에서는 그 줄을 무시한다. git 은 모르므로 주석 차이뿐인 충돌은 MergeHub 가 푼다 아래
2026-09-14 지시서 6차 — 5차 C-1 에서 걸린 23가지를 A(망가뜨리는 것 5) · B(헷갈리는 것 8) · C(사소 1) · D(다시 끝까지)로 묶음 아래
2026-09-14 5차 C-1 — 만든 저장소(303개 · 충돌 22)로 병합을 MergeHub 만으로 커밋까지 해 봄. 고치지 않고 걸린 것 23가지를 적음. 가장 큰 것은 3분할 저장이 CRLF 를 LF 로 바꾸는 것 아래
2026-09-11 5차 B-2 — 폴더 비교를 훑기·가리기·세기 세 걸음으로 나눔. 메타데이터를 한 번만 묻고 가리는 일은 여러 갈래로. 전체 3.4배 · 빠른 4.7배 아래
2026-09-11 지시서 5차 고침 — 실제 소스를 더 읽지 않기로 함. 시험 재료는 우리가 만든다. B-2·C-1 을 그에 맞게 다시 씀 아래
2026-09-11 5차 B-1 — XAML 태그·속성·값을 갈라 칠함. 여러 줄에 걸친 여는 태그도 이어진다. 줄 넘김 상태를 깃발 묶음으로 넓혔다 아래
2026-09-11 5차 A-2 — Git 작업을 시작하는 자리에서 묻게 함. 가려서 묻는 것은 접고 전부 묻는다. 덤으로 4차 A-1 이 새던 자리 셋을 막음 아래
2026-09-11 5차 A-1 — 실제 저장소 2,091개로 인코딩을 확인(깨짐 0). 판별 코드가 두 군데 복사돼 있던 것을 한 곳으로 모으고, CP949 를 한 이름으로 부르게 함 아래
2026-09-10 4차 C-5 — 한 번 정하는 것들을 한자리에 모아 접고, 차이 이동을 개수 옆으로 아래
2026-09-10 4차 C-4 — 범례를 눌러 그 갈래로 이동. 0건은 흐리게 아래
2026-09-10 4차 C-3 — Git 탭의 원격 칸을 접을 수 있게. 로컬 경로 한 줄만 남고 세로 128px 가 목록으로 간다 아래
2026-09-10 엔터 고침의 되돌이 문제 — TextChanged 안에서 편집기 글을 갈아 끼워 캐럿이 엉켰다. 한 차례 뒤로 물림 아래
2026-09-10 엔터 반응 지연 — 줄 수가 바뀌면 0.6초 타이머만 기다리느라 화면이 비어 있었다. 그 자리에서 다시 맞추게 고침 아래
2026-09-10 4차 C-2 — 아래쪽 세 군데 상태 정보를 창 아래 한 줄로. 두 패널 코드 높이가 저절로 맞는다 아래
2026-09-10 4차 C-1 다시 — 머리글을 파일 이름만으로 줄인 것이 잘못이었다. 두 경로에서 다른 부분만 남기게 고침 아래
2026-09-10 4차 C-1 — 파일 비교에서 같은 경로가 나오던 세 자리를 하나로. 코드가 두 줄 더 보인다 아래
2026-09-10 4차 B-3 — 폴더 비교 목록을 파일 비교 화면에서 이전/다음으로 딛는다 (Ctrl+PageUp/PageDown) 아래
2026-09-10 4차 B-1 — 최근에 견준 파일 짝·폴더 짝을 기억해 위 줄에서 바로 연다. 없는 경로는 흐리게만 하고 지우지 않는다 아래
2026-09-10 4차 A-2 — 내보낸 보고서 머리글에 만든 사람을 넣음. 이름 판단을 머지 주석과 한 함수로 모았다 아래
2026-09-10 4차 A-1 — 저장하지 않은 편집이 말없이 사라지던 길 여덟 군데를 막음. 플랫폼에 세 갈래 확인 창을 새로 넣었다 아래
2026-09-10 4차 D-2 — 항목을 끝내면 상세·상태·한 줄을 각각 어디에 적을지 공통 규칙으로 못박음 아래
2026-09-10 4차 D-1 — 721줄짜리 진행상황을 history/ 의 날짜별 파일로 나누고 지시서를 작업지시/ 로 모음 아래
2026-09-09 3차 A 묶음 — 폴더 고르기 다운 · 화면 이동 결함 3가지 · 저장소 최상위 열기 5e667af af27800 93a507e b5bd06c / 플랫폼 595aa23 f664c31
2026-09-09 3차 B 묶음 — 3-Way 가로·세로 막대 · 행 어긋남 · Take Mine 179dffb
2026-09-09 3차 C·E 묶음 — 코드 툴팁 · 글자 잘림 · 폴더 복사 확인 창 · 세로 막대 · 폭 되돌림 · 머리 빈 공간 · 반영 색 · 코드 겹침 9a9c431 8def1ad 05c74fc 4f33cac / 플랫폼 5522ca0
2026-09-09 3차 D 묶음 — 주석만 다름 · C++ 전처리 · 3-Way 덩어리 반영 · 결과 내보내기 · 폴더 안 전체 검색 · 끌어다 놓기 5c8c942 451b624 32c0146 ee5d34c 373990b 196af0a
2026-09-08 저장소 개설 (MergeHub · UbisamPlatform 각각) 7719094 / 36ee902
2026-09-08 ④ Git 조작 5가지 — amend · stash 목록 · 커밋 간 비교 · blame · 변경분 추출 9956567
2026-09-08 ③ 3-Way — 자동 병합 · 충돌만 이동 · 병합 완료 판정 85c5e9e
2026-09-08 ① 폴더 비교 — 폴더째 복사·삭제 · 보기 필터 · 비교 취소 524a6a7
2026-09-08 ② 파일 비교 — 바꾸기 · 덩어리 반영 · 저장 형식 · 이진/그림 비교 de1a43c 55d9deb
2026-09-08 ⑤ 밖에서 부르기 — 명령줄 인자 · 탐색기 우클릭 아래

날짜별 상세

날짜 문서 내용
2026-09-14 2026-09-14-6차.md 6차 지시서 진행 중
2026-09-11 2026-09-11-5차.md 5차 지시서 진행 중
2026-09-10 2026-09-10-4차.md 4차 지시서 열세 항목. 전부 끝
2026-09-09 2026-09-09-3차.md 3차 지시서 A~E 스물세 항목. 항목마다 원인과 판단을 적었다
2026-09-08 2026-09-08-2주차.md 기능 덩어리 다섯 개(①~⑤)를 채운 주