diff --git a/web-ui/js/app/workshop-chat.js b/web-ui/js/app/workshop-chat.js index 941a7f8..6a4af4f 100644 --- a/web-ui/js/app/workshop-chat.js +++ b/web-ui/js/app/workshop-chat.js @@ -52,6 +52,15 @@ function renderMd(text){ s=s.replace(/`([^`]+)`/g,'$1') .replace(/\*\*(.+?)\*\*/g,'$1') .replace(/^#{1,3}\s+(.+)$/gm,'

$1

'); + // 링크 — [라벨](URL) → . 작업실 채팅엔 링크 지원이 아예 없어 모델이 표에 넣어준 + // 출처 링크(Printables 바로가기 등)가 클릭 불가 평문이었다(2026-09-25 사용자 실측). + // 이스케이프(47행) 이후에 돌리므로 URL 속 & 는 & — href 속성값으로 그대로 맞다. + s=s.replace(/\[([^\]\n]+)\]\((https?:[^)\s]+)\)/g, + '$1'); + // 남는 벌주 URL도 자동 링크. 이미 만든 안은 앞 글자가 "라 안 걸리고, + // 표/리스트 처리 전이라 셀 안에서도 살아난다. + s=s.replace(/(^|[\s>])(https?:\/\/[^\s<)"'\u0000]+)/g,(m,pre,url)=> + pre+''+url+''); // 인라인 수식 $...$ — KaTeX가 실려 있으면 삽입 직후 renderKatexIn이 진짜 수식으로 // 그려주므로 그냥 둔다(09-24: 다른 앱들은 전부 KaTeX 실려 있었는데 작업실만 빠져 있었다). // KaTeX가 없는 환경의 폴백으로만 이 유니코드 치환을 돌린다. 자주 나오는 LaTeX 기호를