fix(M02): 옛 알약 연결 이름+단위로 맞춤 · 옆 판 이은 칸 즉시 갱신 · 새 조합 이름 겹침 · 첫 자재 조합 모달 글

- 알약 막대: 키가 목록에 없는 옛 연결(로직 키)을 이름 + 단위가 같은 알약으로 이어 새 키로 바꿈 — 따로 붙던 「연결」 알약 제거
- 재료산출 옆 판: 알약을 이음 · 풂 즉시 「이은 칸」 갱신
- 새 조합 이름: 원래 이름이 구조물 이름으로 끝나면 덧붙이지 않음(일위대가 · 자재)
- 자재 조합이 없는 열의 첫 생성 모달 글: 「이 열에 새 자재 조합을 만듦」

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019Kyw9qnkJ94pC1A4PfpDtA
This commit is contained in:
2026-09-28 20:22:06 +09:00
co-authored by Claude Sonnet 5
parent 453095f6db
commit fb5aee7ea2
4 changed files with 41 additions and 8 deletions
@@ -95,6 +95,10 @@ export function askBranch(message: string, defaultName: string): Promise<string
});
}
/** 새 조합 이름 자동 — 원래 이름 · 구조물 이름(원래 이름이 이미 구조물 이름으로 끝나면 덧붙이지 않음) */
export const branchName = (original: string, label: string): string =>
!original ? label : !label || original.endsWith(label) ? original : `${original} · ${label}`;
/** 결과 알림 — 새로 만듦 / 같은 조합 씀 */
export const branchToast = (r: BranchedCombo): void =>
showToast(fill(r.새로만듦 ? TEXT.made : TEXT.reused, `${r.키} ${r.이름}`), "success");
@@ -236,7 +240,7 @@ export async function buildComboBar(opts: ComboBarOptions): Promise<HTMLElement
return showToast(TEXT.unchanged, "info");
}
const message = others ? fill(TEXT.askBody, others + 1) : TEXT.askAlone;
const name = await askBranch(message, `${comboName} · ${opts.label}`);
const name = await askBranch(message, branchName(comboName, opts.label));
if (name === null) return;
apply.disabled = true;
try {