배포 묶음 스크립트를 런처 기준으로 (사용자 요청)
scripts\make-bundle.ps1 은 11차(셸을 켜던 때)에 만들어 새 플랫폼의 UbisamBase.Launcher.exe · 그 설정 · platform-version.json 을 "까닭 미상" 으로 경고했고, 배포묶음.txt 도 "Shell.exe 를 켠다" 고 적었다. - 세 파일에 까닭을 적음 - 런처 · 런처 설정을 꼭 있어야 하는 파일로, 런처 설정의 바인딩 리디렉트 검사 (셸이 런처 프로세스 안에서 돌아 없으면 켜자마자 죽는다 - 플랫폼 publish-platform.ps1 과 같은 검사) - 배포묶음.txt: 런처를 켠다 · 켤 때 D:\UbisamPlatform\bin 을 복사해 오고 업데이트를 확인한다 · 그 폴더가 없으면 경고 뒤 묶음 안 파일로 뜬다 · 셸을 눌러도 런처로 · 플랫폼 버전 확인: 구문 오류 0, -NoBuild 로 44개 · 43.7MB 경고 없음, 묶음 복사본에서 런처로 켜고 끔. Agent: main (claude-opus-5-5) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
b717f4ed06
commit
18b05d6b38
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
| 날짜 | 항목 | 커밋 |
|
| 날짜 | 항목 | 커밋 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|
| 2026-10-01 | **배포 묶음 스크립트를 런처 기준으로(사용자 요청)** — `scripts\make-bundle.ps1` 은 11차(셸을 켜던 때) 것이라 새 플랫폼의 `UbisamBase.Launcher.exe` · 그 설정 · `platform-version.json` 을 "까닭 미상" 으로 경고했다. 셋에 까닭을 적고, 런처와 런처 설정을 꼭 있어야 하는 파일로, 런처 설정의 바인딩 리디렉트 검사를 더함(없으면 켜자마자 죽는다 - 플랫폼 `publish-platform.ps1` 과 같은 검사). `배포묶음.txt` 는 "런처를 켠다" · 런처가 켤 때 하는 일 · 플랫폼 버전. 확인: `-NoBuild` 로 44개 · 경고 없음, 묶음에서 런처로 켜고 끔. 같은 날 알파판 ZIP(`배포\MergeHub_v0.12_alpha_20261001.zip`, 커밋 `b717f4e` · 플랫폼 `2026-10-01 13:37:46`)은 지난번 알파판 구성(Release 출력 + `UbisamPlatform\bin` + 설치안내)으로 따로 만들었다 | 아래 |
|
||||||
| 2026-10-01 | **전체 반영 · 자동 병합의 주석을 구간마다 한 줄로(사용자 요청 · 결정)** — 줄마다 머지 주석이 붙던 것. ① 두 파일 비교 [전체 반영]: 반영할 수 있는 줄이 이어진 구간마다 [구간 반영] 과 같게(`ApplyGroup`), 지우는 반영은 `삭제 N줄`, 모든 구간을 한 묶음으로 Undo 한 번 ② 3-Way [전체 반영] 끔 — 차이 나는 모든 줄을 공통 조상으로 바꾸던 동작(꺼져도 툴팁으로 까닭) ③ 3-Way [자동 병합]: 저쪽만 고친 줄 구간마다 주석 한 줄 · Undo 한 번(충돌 · 내 줄은 구간을 끊고 그대로). 화면 `g22-accept-all` 주석 7 → 3, `g23-three-way`(`--merge`) 5 → 2, 실패 0. 기존 회귀는 돌리지 않음. 빌드 경고 0 · 오류 0 | 아래 |
|
| 2026-10-01 | **전체 반영 · 자동 병합의 주석을 구간마다 한 줄로(사용자 요청 · 결정)** — 줄마다 머지 주석이 붙던 것. ① 두 파일 비교 [전체 반영]: 반영할 수 있는 줄이 이어진 구간마다 [구간 반영] 과 같게(`ApplyGroup`), 지우는 반영은 `삭제 N줄`, 모든 구간을 한 묶음으로 Undo 한 번 ② 3-Way [전체 반영] 끔 — 차이 나는 모든 줄을 공통 조상으로 바꾸던 동작(꺼져도 툴팁으로 까닭) ③ 3-Way [자동 병합]: 저쪽만 고친 줄 구간마다 주석 한 줄 · Undo 한 번(충돌 · 내 줄은 구간을 끊고 그대로). 화면 `g22-accept-all` 주석 7 → 3, `g23-three-way`(`--merge`) 5 → 2, 실패 0. 기존 회귀는 돌리지 않음. 빌드 경고 0 · 오류 0 | 아래 |
|
||||||
| 2026-10-01 | **스크롤을 내리면 프로그램이 뻗던 것(사용자 보고)** — 어제 칸 맞추기(`f105bab`) 뒤 응답 없음. ① 사람이 BASE 를 굴려도 LOCAL 기준으로 되돌려 초당 32번 밀고 당김 → 손이 닿은 칸(휠 · 누름 · 키)을 기준으로, LOCAL 쪽일 때만 BASE 를 맞춤 ② 따라 굴러가는 도중에 재서 보정값이 휠 한 칸씩 6,619px 까지 쌓임 → 메아리 막기 중이면 큰 맞추기는 앱이 한가할 때 한 번, 못 굴리면 실제로 움직인 만큼만 ③ 칸 목록(그 칸에 있는 줄만)의 항목 번호를 정렬 행 번호로 써 엉뚱한 줄끼리 견줌 → 줄 객체로 오감 ④ 빠르게 굴리면 사람의 스크롤이 메아리로 버려져 따라가는 칸이 멈춤 → 멈춘 뒤 한 번 따라잡기, BASE 를 굴릴 때 보정값을 보이는 줄에서 다시 잼. 화면 `g20-scroll-end` · `g21-blocks-fast`(새) 응답 · 따라옴, `g7` 실패 0, `g17` 통과. 사용자 파일로는 확인 안 함 · 기존 회귀는 돌리지 않음. 빌드 경고 0 · 오류 0 | 아래 |
|
| 2026-10-01 | **스크롤을 내리면 프로그램이 뻗던 것(사용자 보고)** — 어제 칸 맞추기(`f105bab`) 뒤 응답 없음. ① 사람이 BASE 를 굴려도 LOCAL 기준으로 되돌려 초당 32번 밀고 당김 → 손이 닿은 칸(휠 · 누름 · 키)을 기준으로, LOCAL 쪽일 때만 BASE 를 맞춤 ② 따라 굴러가는 도중에 재서 보정값이 휠 한 칸씩 6,619px 까지 쌓임 → 메아리 막기 중이면 큰 맞추기는 앱이 한가할 때 한 번, 못 굴리면 실제로 움직인 만큼만 ③ 칸 목록(그 칸에 있는 줄만)의 항목 번호를 정렬 행 번호로 써 엉뚱한 줄끼리 견줌 → 줄 객체로 오감 ④ 빠르게 굴리면 사람의 스크롤이 메아리로 버려져 따라가는 칸이 멈춤 → 멈춘 뒤 한 번 따라잡기, BASE 를 굴릴 때 보정값을 보이는 줄에서 다시 잼. 화면 `g20-scroll-end` · `g21-blocks-fast`(새) 응답 · 따라옴, `g7` 실패 0, `g17` 통과. 사용자 파일로는 확인 안 함 · 기존 회귀는 돌리지 않음. 빌드 경고 0 · 오류 0 | 아래 |
|
||||||
| 2026-09-30 | **끌 때 저장하지 않은 편집을 묻는다(사용자 요청 · 결정)** — 파일 비교의 모든 탭(지금 화면 · Git 모드 · 뒤 탭 · 닫은 탭, 메모 제외)에 편집이 있으면 [저장하고 종료] · [저장하지 않고 종료] · [취소]. 저장은 기존 길(`SaveWorkingCopy` · `WritePlainFile`), 하나라도 실패하면 끄지 않음. 버리면 걸려 있던 보관 쓰기를 기다린 뒤 보관본을 비워 다음에 안 살아남. 플랫폼 `ICloseGuard` 사용(수정 없음) — 곧바로 답하면 셸의 `Close()` 가 Closing 안에서 불려 창이 안 꺼져 `await Task.Yield()` 로 비켜섬. 화면 `g19-exit-confirm` 다섯 경우 실패 0(Git 모드는 화면 시험 안 함). **기존 회귀는 사용자 지시로 돌리지 않음.** 빌드 경고 0 · 오류 0 | 아래 |
|
| 2026-09-30 | **끌 때 저장하지 않은 편집을 묻는다(사용자 요청 · 결정)** — 파일 비교의 모든 탭(지금 화면 · Git 모드 · 뒤 탭 · 닫은 탭, 메모 제외)에 편집이 있으면 [저장하고 종료] · [저장하지 않고 종료] · [취소]. 저장은 기존 길(`SaveWorkingCopy` · `WritePlainFile`), 하나라도 실패하면 끄지 않음. 버리면 걸려 있던 보관 쓰기를 기다린 뒤 보관본을 비워 다음에 안 살아남. 플랫폼 `ICloseGuard` 사용(수정 없음) — 곧바로 답하면 셸의 `Close()` 가 Closing 안에서 불려 창이 안 꺼져 `await Task.Yield()` 로 비켜섬. 화면 `g19-exit-confirm` 다섯 경우 실패 0(Git 모드는 화면 시험 안 함). **기존 회귀는 사용자 지시로 돌리지 않음.** 빌드 경고 0 · 오류 0 | 아래 |
|
||||||
|
|||||||
@ -12,8 +12,12 @@
|
|||||||
# powershell -ExecutionPolicy Bypass -File scripts\make-bundle.ps1
|
# powershell -ExecutionPolicy Bypass -File scripts\make-bundle.ps1
|
||||||
# powershell -ExecutionPolicy Bypass -File scripts\make-bundle.ps1 -Out D:\배포\MergeHub_베타 -NoBuild
|
# powershell -ExecutionPolicy Bypass -File scripts\make-bundle.ps1 -Out D:\배포\MergeHub_베타 -NoBuild
|
||||||
#
|
#
|
||||||
# 셸과 플랫폼 dll 은 빌드할 때 플랫폼 배포 폴더(D:\UbisamPlatform\bin)에서 복사되어 온다.
|
# 런처 · 셸 · 플랫폼 dll 은 빌드할 때 플랫폼 배포 폴더(D:\UbisamPlatform\bin)에서 복사되어 온다.
|
||||||
# 플랫폼을 새로 배포했다면 이 스크립트를 다시 돌려야 묶음에 반영된다.
|
# 플랫폼을 새로 배포했다면 이 스크립트를 다시 돌려야 묶음에 반영된다.
|
||||||
|
#
|
||||||
|
# 켜는 것은 UbisamBase.Launcher.exe 다(2026-10-01, 공용 플랫폼의 런처 방식). 런처는 켤 때마다
|
||||||
|
# D:\UbisamPlatform\bin 을 자기 폴더로 복사해 오고(업데이트도 확인) 같은 프로세스 안에서 셸을 띄운다.
|
||||||
|
# 셸을 직접 눌러도 같은 폴더의 런처로 넘긴다. 그 폴더가 없는 PC 에서는 경고 창 뒤 묶음 안의 파일로 뜬다.
|
||||||
|
|
||||||
param(
|
param(
|
||||||
# 묶음을 만들 폴더. 이미 있으면 이 스크립트가 만든 묶음일 때만 비우고 다시 채운다.
|
# 묶음을 만들 폴더. 이미 있으면 이 스크립트가 만든 묶음일 때만 비우고 다시 채운다.
|
||||||
@ -54,7 +58,7 @@ $Excluded = [ordered]@{
|
|||||||
"MergeHub.pdb" = "디버그 심볼"
|
"MergeHub.pdb" = "디버그 심볼"
|
||||||
"LibGit2Sharp.dll.config" = "Mono 용 dll 대응표 - .NET Framework 는 lib\win32 를 스스로 찾는다"
|
"LibGit2Sharp.dll.config" = "Mono 용 dll 대응표 - .NET Framework 는 lib\win32 를 스스로 찾는다"
|
||||||
"Lang\" = "비어 있음 - 없으면 켤 때 플랫폼(LanguageService)이 만든다"
|
"Lang\" = "비어 있음 - 없으면 켤 때 플랫폼(LanguageService)이 만든다"
|
||||||
"README.txt" = "플랫폼 배포 폴더 안내문 - 묶음에는 맞지 않아 배포묶음.txt 로 바꿈"
|
"README.txt" = "플랫폼 배포 폴더 안내문 - 묶음에는 맞지 않아 배포묶음.txt 로 바꿈(런처가 켤 때 플랫폼 배포 폴더에서 다시 가져온다)"
|
||||||
}
|
}
|
||||||
|
|
||||||
# ---- 넣는 것이 왜 필요한지 (배포묶음.txt 에 적음) -------------------------
|
# ---- 넣는 것이 왜 필요한지 (배포묶음.txt 에 적음) -------------------------
|
||||||
@ -64,7 +68,10 @@ function Why([string]$path) {
|
|||||||
}
|
}
|
||||||
function Reason([string]$path) {
|
function Reason([string]$path) {
|
||||||
switch -Regex ($path) {
|
switch -Regex ($path) {
|
||||||
'^UbisamBase\.Shell\.exe$' { "셸 - 이것을 켠다" }
|
'^UbisamBase\.Launcher\.exe$' { "런처 - 이것을 켠다. 플랫폼 배포 폴더를 복사해 온 뒤 같은 프로세스에서 셸을 띄운다" }
|
||||||
|
'^UbisamBase\.Launcher\.exe\.config$' { "런처 설정 - 셸이 런처 프로세스 안에서 돌아 실제로 쓰이는 바인딩 리디렉트(없으면 켜자마자 죽는다)" }
|
||||||
|
'^platform-version\.json$' { "플랫폼 버전 도장 - 런처가 업데이트를 확인할 때 견준다" }
|
||||||
|
'^UbisamBase\.Shell\.exe$' { "셸 - 런처가 띄운다(직접 눌러도 런처로 넘긴다)" }
|
||||||
'^UbisamBase\.Shell\.exe\.config$' { "셸 설정 - .NET 4.8 · 어셈블리 버전 맞춤" }
|
'^UbisamBase\.Shell\.exe\.config$' { "셸 설정 - .NET 4.8 · 어셈블리 버전 맞춤" }
|
||||||
'^UbisamBase\.Core\.dll$' { "플랫폼" }
|
'^UbisamBase\.Core\.dll$' { "플랫폼" }
|
||||||
'^MergeHub\.dll$' { "MergeHub - 셸이 폴더의 dll 을 훑어 찾는다" }
|
'^MergeHub\.dll$' { "MergeHub - 셸이 폴더의 dll 을 훑어 찾는다" }
|
||||||
@ -121,28 +128,34 @@ foreach ($rel in $files) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# 꼭 있어야 하는 것
|
# 꼭 있어야 하는 것
|
||||||
foreach ($must in "UbisamBase.Shell.exe", "UbisamBase.Shell.exe.config", "UbisamBase.Core.dll", "MergeHub.dll", "LibGit2Sharp.dll") {
|
foreach ($must in "UbisamBase.Launcher.exe", "UbisamBase.Launcher.exe.config", "UbisamBase.Shell.exe", "UbisamBase.Shell.exe.config", "UbisamBase.Core.dll", "MergeHub.dll", "LibGit2Sharp.dll") {
|
||||||
if (-not (Test-Path (Join-Path $Out $must))) { throw "묶음에 $must 가 없습니다." }
|
if (-not (Test-Path (Join-Path $Out $must))) { throw "묶음에 $must 가 없습니다." }
|
||||||
}
|
}
|
||||||
if (-not (Get-ChildItem (Join-Path $Out "lib\win32\x64") -Filter "git2-*.dll" -ErrorAction SilentlyContinue)) { throw "묶음에 lib\win32\x64\git2-*.dll 이 없습니다." }
|
if (-not (Get-ChildItem (Join-Path $Out "lib\win32\x64") -Filter "git2-*.dll" -ErrorAction SilentlyContinue)) { throw "묶음에 lib\win32\x64\git2-*.dll 이 없습니다." }
|
||||||
|
# 셸은 런처 프로세스 안에서 돈다 - 런처 설정에 바인딩 리디렉트가 없으면 켜자마자 FileLoadException 으로 죽는다(플랫폼 publish-platform.ps1 과 같은 검사).
|
||||||
|
if (-not (Select-String -Path (Join-Path $Out "UbisamBase.Launcher.exe.config") -Pattern "assemblyBinding" -Quiet)) { throw "런처 설정에 바인딩 리디렉트가 없습니다." }
|
||||||
|
|
||||||
# ---- 4. 배포묶음.txt --------------------------------------------------------
|
# ---- 4. 배포묶음.txt --------------------------------------------------------
|
||||||
$total = ($kept | Measure-Object Size -Sum).Sum
|
$total = ($kept | Measure-Object Size -Sum).Sum
|
||||||
$commit = try { (& git -C $root rev-parse --short HEAD 2>$null) } catch { "-" }
|
$commit = try { (& git -C $root rev-parse --short HEAD 2>$null) } catch { "-" }
|
||||||
$dll = Get-Item (Join-Path $Out "MergeHub.dll")
|
$dll = Get-Item (Join-Path $Out "MergeHub.dll")
|
||||||
$shell = Get-Item (Join-Path $Out "UbisamBase.Shell.exe")
|
$shell = Get-Item (Join-Path $Out "UbisamBase.Shell.exe")
|
||||||
|
$platformVersion = try { (Get-Content (Join-Path $Out "platform-version.json") -Raw | ConvertFrom-Json).version } catch { "-" }
|
||||||
$mb = { param($b) "{0:N1}MB" -f ($b / 1MB) }
|
$mb = { param($b) "{0:N1}MB" -f ($b / 1MB) }
|
||||||
|
|
||||||
$lines = @()
|
$lines = @()
|
||||||
$lines += "MergeHub 배포 묶음"
|
$lines += "MergeHub 배포 묶음"
|
||||||
$lines += "=================="
|
$lines += "=================="
|
||||||
$lines += ""
|
$lines += ""
|
||||||
$lines += "UbisamBase.Shell.exe 를 켠다. 설치 없이 폴더째 복사해 쓴다."
|
$lines += "UbisamBase.Launcher.exe 를 켠다. 설치 없이 폴더째 복사해 쓴다."
|
||||||
|
$lines += "런처는 켤 때마다 D:\UbisamPlatform\bin(공용 플랫폼)을 이 폴더로 복사해 오고 업데이트를 확인한 뒤 셸을 띄운다."
|
||||||
|
$lines += "그 폴더가 없는 PC 에서는 '플랫폼 파일을 갱신하는 중 문제' 경고 뒤 이 폴더 안의 파일로 그대로 뜬다."
|
||||||
|
$lines += "UbisamBase.Shell.exe 를 직접 눌러도 런처로 넘어간다."
|
||||||
$lines += "설정 · 로그는 D:\UbisamConfig 에 쓴다(플랫폼)."
|
$lines += "설정 · 로그는 D:\UbisamConfig 에 쓴다(플랫폼)."
|
||||||
$lines += ""
|
$lines += ""
|
||||||
$lines += "만든 시각 : " + (Get-Date -Format "yyyy-MM-dd HH:mm:ss")
|
$lines += "만든 시각 : " + (Get-Date -Format "yyyy-MM-dd HH:mm:ss")
|
||||||
$lines += "MergeHub : " + $dll.LastWriteTime.ToString("yyyy-MM-dd HH:mm") + " (커밋 $commit)"
|
$lines += "MergeHub : " + $dll.LastWriteTime.ToString("yyyy-MM-dd HH:mm") + " (커밋 $commit)"
|
||||||
$lines += "셸 · 플랫폼 : " + $shell.LastWriteTime.ToString("yyyy-MM-dd HH:mm") + " (D:\UbisamPlatform\bin 에서 온 것)"
|
$lines += "셸 · 플랫폼 : " + $shell.LastWriteTime.ToString("yyyy-MM-dd HH:mm") + " (D:\UbisamPlatform\bin 에서 온 것 · 플랫폼 버전 $platformVersion)"
|
||||||
$lines += ("파일 {0}개 · {1}" -f $kept.Count, (& $mb $total))
|
$lines += ("파일 {0}개 · {1}" -f $kept.Count, (& $mb $total))
|
||||||
$lines += ""
|
$lines += ""
|
||||||
$lines += "[ 들어 있는 것 ]"
|
$lines += "[ 들어 있는 것 ]"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user