릴리스 노트
근거 · framework/evomind/web/workflow-project-evo-service기준 · 릴리스 v0.12.0커밋 · 2e32c6cc파일 · site/authored/evo-chat/release-notes.md기준선 · 2026-11-12
Evo Chat이 태그로 배포한 모든 버전을 최신순으로 정리합니다. 업그레이드와 설정은 시작하기, 화면별 사용법은 사용 설명서, 운영 설정은 관리자 설명서를 보세요.
v0.12.0 (2026-11-04)
섹션 제목: “v0.12.0 (2026-11-04)”도구 실행 표시를 답변 안으로 옮기고 웹검색 출처와 도구 흔적을 남기며, 암호화 요청의 상대 기기 키 변경을 알리는 릴리스입니다.
작업 요청
섹션 제목: “작업 요청”- 기기 키 변경 경고: 받은 암호화 요청을 열 때 보낸 기기의 암호 키가 전에 본 것과 다르면 열되 “보낸 기기의 암호 키가 전에 본 것과 다릅니다. 기기를 다시 설치했거나 다른 기기일 수 있습니다.” 경고를 함께 보입니다. 보낼 때 받는 기기 키가 바뀌었으면 보내되 “받는 기기의 암호 키가 전에 본 것과 달라졌습니다.” 경고를 보입니다. 경고만 하고 막지는 않습니다.
- 재전송·오래된 요청: 같은 암호 봉투가 다른 메시지로 다시 오면 열지 않고 재전송 의심 안내를 보입니다. 보낸 지 30일이 넘은 암호화 요청도 열지 않고 그 이유를 알려 줍니다. 기억한 기기 키와 요청 기록은 30일 뒤 지웁니다.
- 도구 실행 한 줄: 실행 중·완료·거부·실패한 도구가 입력창 위 패널 대신 마지막 답변 말풍선 안 한 줄로 보입니다(누르면 도구별 줄이 펼쳐짐). 그 패널에는 승인 대기가 남은 도구만 남습니다. 그래서 도구가 여러 번 실행돼도 대화가 위로 밀리지 않습니다.
- 웹검색 출처: 검색 결과의 제목과 주소(최대 10개)를 도구 줄에 함께 보여 “도구 N개 실행 완료 · 출처 M개”처럼 표시하고, 펼치면 제목과 도메인이 나옵니다. 링크는 http(s) 주소만 열립니다.
- 도구 흔적 저장: 응답의 도구 흔적(서버·도구·상태·짧은 요약·출처)을 메시지와 함께 저장해 새로고침하거나 대화를 다시 열어도 한 줄이 그대로 보입니다. 도구 인자와 결과 본문은 저장하지 않습니다. 이 버전 이전 대화에는 흔적이 없어 한 줄이 보이지 않습니다.
- 부드러운 스트리밍: 스트리밍 토큰을 화면 프레임 단위로 묶어 반영해 긴 답변에서 화면 갱신을 줄였습니다. 최종 글자는 같고, 표시가 최대 한 프레임(약 16ms) 늦을 수 있습니다.
- 납품 compose의 postgres가
pg_stat_statements를 미리 불러와 느린 질의를 볼 수 있습니다. 확장 생성은 마이그레이션에 넣지 않았으므로, 재시작 뒤CREATE EXTENSION IF NOT EXISTS pg_stat_statements를 한 번 실행합니다. postgres 컨테이너를 다시 만드는 동안 앱 연결이 잠깐 끊기므로 한가한 때 진행합니다. - DB 마이그레이션
V35(상대 기기 키 기억·재전송 확인 표)와V36(도구 흔적 표)는 기동할 때 자동 적용됩니다. 표 추가뿐이고 기존 데이터는 바뀌지 않습니다.
v0.11.0 (2026-11-04)
섹션 제목: “v0.11.0 (2026-11-04)”작업 요청을 늘 암호화해 보내고, 모델이 웹을 검색해 답할 수 있게 한 릴리스입니다.
작업 요청
섹션 제목: “작업 요청”- 늘 암호화: 세션 작업 요청은 제목·본문·링크를 항상 종단간 암호화해 보냅니다. 평문으로 내보내는 경로가 없어졌고, 이전 버전의 평문으로 보내기 확인 창과 모델 승인 창의 평문 허용 항목도 없앴습니다.
- 보내지 않는 경우: 받는 세션 중 암호화 키가 없는 곳이 하나라도 있거나, 받는 세션이 없거나, 서버에서 암호화가 꺼져 있으면 보내지 않고 그 이유를 보여 줍니다. 받는 쪽은 평문 요청도 그대로 받습니다.
- 워크그룹 주소: 워크그룹이나 워크그룹 멤버 주소로 온 암호화 요청도 웹 대화에서 열어 볼 수 있습니다. 실행 표시가 바뀐 요청은 열리지 않고 “(열 수 없는 암호화 요청)“으로 보입니다.
- 웹 검색·웹 페이지 읽기: 모델이 필요할 때 웹을 검색하고 공개 웹 페이지만 읽어 답을 만듭니다. 외부 읽기 전용이라 승인 없이 실행되고, 읽은 페이지의 제목도 함께 봅니다. 관리자가 기능을 끌 수 있습니다.
- 진행 표시: 응답 첫 글자가 나오기까지 몇 초가 걸려도 멈춘 것처럼 보이지 않도록 응답 칸에 지금 단계(생각하는 중·도구 실행 중·답을 쓰는 중)와 경과 시간이 보이고, 응답이 끝날 때까지 커서가 남습니다. 도구 패널에도 실행 중 항목이 보입니다.
- 이중 스크롤: 긴 대화와 관리자 화면의 탭에서 페이지 스크롤바가 하나 더 생기던 문제를 고쳤습니다.
- 첫 화면 속도: 로그인 화면과 채팅 화면을 나눠 받도록 바꿔 첫 화면이 더 빨리 뜹니다. 화면 동작은 그대로입니다.
v0.10.0 (2026-11-03)
섹션 제목: “v0.10.0 (2026-11-03)”작업 요청 메시지를 종단간 암호화하고, 답변이 나오는 동안 대화 화면을 올려도 맨 아래로 끌려가지 않게 한 릴리스입니다.
작업 요청
섹션 제목: “작업 요청”- 종단간 암호화: 같은 사용자의 다른 세션(다른 웹 대화, Evo CLI, 데스크톱 앱)과 주고받는 작업 요청의 제목·본문·링크를 dispatch 서버가 읽지 못하게 암호화합니다. 보낸 요청에는 “종단간 암호화해 보냈습니다”가, 받은 요청에는 🔒와 “보낸 기기의 서명을 확인했습니다”가 표시됩니다.
- 평문 전송 확인: 받는 세션 중 암호화 키가 없는 곳이 하나라도 있으면 몰래 평문으로 보내지 않고 평문으로 보내기 확인 창을 띄웁니다. 확인을 눌러야 보내며, 그때는 dispatch 서버가 제목·본문을 읽을 수 있다고 함께 알립니다. (이 확인 창은 다음 버전에서 없어졌습니다. 지금은 세션 요청을 늘 암호화해 보냅니다.)
- 열 수 없는 요청: 서명이 맞지 않거나 이 기기 앞으로 온 것이 아닌 암호화 요청은 내용 없이 “(열 수 없는 암호화 요청)“과 실패 안내만 보입니다. 그런 요청은 채팅에 붙일 수 없습니다.
- 시각 차이: 보낸 시각이 서버 기록과 10분 넘게 다르면 몇 분 차이인지 함께 알립니다.
- 호환: 평문 요청은 그대로 주고받을 수 있습니다. 암호화 키가 없는 세션이 있으면 위 확인을 거쳐 평문으로 보냅니다. (다음 버전부터는 키가 없는 세션이 있으면 평문으로 보내지 않고 보내지 않습니다.)
- 대화 스크롤: 답변이 나오는 동안 대화 화면을 조금 올려도 자동으로 맨 아래로 끌려가지 않습니다. 새 메시지를 보내거나 맨 아래 근처로 돌아오면 다시 따라갑니다.
v0.9.0 (2026-11-03)
섹션 제목: “v0.9.0 (2026-11-03)”첨부한 Office 문서의 글자도 모델이 읽게 한 릴리스입니다.
채팅 첨부
섹션 제목: “채팅 첨부”- Office 문서: docx·xlsx·pptx를 올리면 글자를 꺼내 질문 뒤에 붙입니다. Word는 문단과 표(표는 칸을 탭, 행을 줄로), Excel은 시트마다 셀 값을, PowerPoint는 슬라이드마다 보이는 글을 넣습니다. 저장과 전달 한도는 PDF와 같습니다.
- 읽지 않는 형식: 옛 형식(doc·xls·ppt)·hwp·압축 파일은 이름·형식·크기만 알려 줍니다. 암호가 걸렸거나 깨졌거나 풀린 크기가 너무 큰 파일도 내용 없이 “내용은 읽을 수 없는 형식”으로 남습니다.
- 형식 판별: 브라우저가 형식을 비우거나
application/octet-stream으로 보내면 파일 안 구조로 docx·xlsx·pptx를 알아봅니다.
- 생략 표시: PDF·Office 첨부의 글이 한도 안에 다 들어가도 “…(이하 생략)“이 붙던 문제를 고쳤습니다.
v0.8.0 (2026-11-03)
섹션 제목: “v0.8.0 (2026-11-03)”PDF 첨부의 글자를 읽고, 큰 파일을 나눠 처리하고, 그림이 있는 대화에서 모델을 더 잘 고르게 한 릴리스입니다.
채팅 첨부
섹션 제목: “채팅 첨부”- PDF 글 읽기: 올린 PDF의 글자를 꺼내 질문 뒤에 붙입니다. 글은 20만 자·앞 2,000쪽까지 저장하고, 글로 읽히는 파일과 같은 한도(파일 하나 6만 자, 요청 전체 12만 자)로 모델에 넣습니다. 암호가 걸렸거나 깨졌거나 글자가 없는(스캔) PDF는 업로드는 되지만 내용 없이 “내용은 읽을 수 없는 형식”으로 남습니다. 이 버전 전에 올린 PDF는 다시 올려야 글이 읽힙니다.
- 큰 파일: 올리기와 내려받기를 4MiB 조각으로 나눠 처리해 파일을 앱 메모리에 통째로 올리지 않습니다. 그래서 한도 안의 큰 파일도 앱 메모리 부족으로 실패하지 않습니다.
- 자동 선택과 그림: 대화에 그림이 있으면 자동 선택이 이미지 입력을 지원하는 모델을 먼저 시도하고, 실패하면 일반 모델로 넘어갑니다. 그때 그림은 글로 알림만 갑니다.
- 스크롤바: 화면 전체의 스크롤바를 얇게 하고 테마 색에 맞췄습니다. 트랙은 투명하고 화살표가 없습니다.
v0.7.0 (2026-11-03)
섹션 제목: “v0.7.0 (2026-11-03)”관리자가 채팅 첨부의 용량 한도를 화면에서 바꿀 수 있게 한 릴리스입니다.
채팅 첨부
섹션 제목: “채팅 첨부”- 한도 설정: 관리 → 설정 → 채팅 첨부에서 파일 하나와 대화 하나의 합계 한도를 MB로 정합니다. 기본은 파일 20MB, 대화 100MB이고, 파일은 1MB부터 서버 상한(기본 100MB), 대화는 파일 한도 이상부터 10GB까지 정할 수 있습니다.
- 즉시 적용: 저장하면 재시작 없이 다음 업로드부터 적용되고, 감사 기록에
SETTING_CHANGE(대상attachments)로 남습니다. 기본값으로 되돌리기는 환경 변수 값으로 돌아갑니다. - 화면 확인: 화면은 현재 한도를 받아 파일을 고를 때마다 미리 확인하고, 넘는 파일은 올리기 전에 막습니다. 서버가 대화 합계 초과로 거절하면 두 한도를 함께 알립니다.
- 형식 추정: 브라우저가 형식을 비우거나
application/octet-stream으로 보내면 파일 앞 바이트로 png·jpeg·gif·webp를 알아봅니다. 그 밖의 브라우저 형식은 바꾸지 않습니다.
- 한도를 올릴 때 API 앞 프록시의 요청 본문 한도(
client_max_body_size)도 함께 올려야 합니다. 프록시가 더 작으면 큰 파일은 프록시에서 거절됩니다. - 파일은 업로드할 때 앱 메모리에 한 번 올라오므로, 한도를 크게 올리면 앱 메모리 여유도 함께 봅니다.
v0.6.0 (2026-11-03)
섹션 제목: “v0.6.0 (2026-11-03)”웹 채팅에 파일 첨부를 더한 마이너 릴리스입니다.
채팅 첨부
섹션 제목: “채팅 첨부”- 올리기: 입력창 왼쪽 아래 **+**로 파일을 고르고(여러 개 가능), 입력창에 끌어 놓거나 붙여 넣어도 됩니다. 모든 형식을 받습니다.
- 보내기 전: 올린 파일은 입력창 위에 이름·크기 칩으로 보입니다. 올리는 중에는 보내지 않고, 실패한 파일은 칩에 이유가 보입니다. ✕로 보내기 전에 뗄 수 있습니다(서버에서도 지웁니다).
- 파일만 보낼 때: 글이 없으면 “첨부한 파일을 확인해 주세요.“를 질문으로 보냅니다.
- 보낸 뒤: 질문 위에 붙인 파일이 보이고 ↓ 버튼으로 원래 이름 그대로 내려받습니다. 대화를 다시 열어도 남아 있습니다.
- 저장: 파일은 대화에 묶여 앱 데이터베이스에 저장됩니다. 대화 하나를 지우거나, 모든 대화를 지우거나, 계정을 지우면 함께 사라집니다. 남의 대화 첨부는 목록·내려받기·지우기가 모두 거절됩니다.
- 모델에 들어가는 내용: 글로 읽히는 파일(txt·md·csv·json·소스 코드 등)은 내용이 질문 뒤에 붙습니다. 파일 하나 6만 자, 요청 전체 12만 자까지 넣고, 넘으면 생략 표시를 붙입니다. 최근 질문의 파일부터 채웁니다.
- 이미지: 관리자가 모델을 이미지 입력 지원으로 표시하면 png·jpeg·gif·webp를 그림으로 함께 보냅니다. 최근 것부터 4장, 장당 5MB까지입니다. 표시하지 않은 모델에는 그림을 보내지 않고 그 사실을 글에 적습니다.
- 읽을 수 없는 형식: PDF·Office·압축 파일 등은 이름·형식·크기만 알려 줍니다. PDF·Office 글 추출은 이번 범위가 아닙니다.
- 편집: 다시 생성은 질문에 붙은 파일을 그대로 씁니다. 질문을 편집하면 새 버전에는 파일이 붙지 않고 편집 전 버전에만 남습니다.
- 질문당 첨부: 한 질문에 최대 20개까지 붙입니다.
- 보안: 내려받기는 항상 첨부 파일로 보내 올린 HTML·SVG가 페이지로 열리지 않게 합니다. 파일 이름과 내용은 로그·감사 기록·화면 응답에 남기지 않습니다.
- 도구 결정 표시: 도구 결정 응답이 결과보다 늦게 와도 결과 요약을 덮지 않습니다.
- 내려받기: 첨부 내려받기가 실제 데이터베이스에서 서버 오류로 실패하던 문제를 고쳤습니다.
v0.5.3 (2026-11-02)
섹션 제목: “v0.5.3 (2026-11-02)”모바일 화면과 키보드 포커스를 고친 패치 릴리스입니다. 새 기능과 설정 항목은 없습니다.
- 모바일 입력창: 모바일 브라우저에서 채팅 입력창이 화면 아래로 밀리지 않습니다.
- 포커스: 계정 메뉴에서 연 대화상자를 닫으면 포커스가 계정 버튼으로 돌아옵니다.
v0.5.2 (2026-11-02)
섹션 제목: “v0.5.2 (2026-11-02)”복사 버튼의 안내를 고친 패치 릴리스입니다. 새 기능과 설정 항목은 없고, 데이터베이스 마이그레이션과 백엔드 API 변경도 없습니다. 0.5.1에서 바로 올릴 수 있습니다.
대화 화면
섹션 제목: “대화 화면”- 복사 버튼 안내: 복사 버튼을 누르면 결과가 버튼 옆에 바로 보입니다. 복사되면 ✓ 복사됨이 2초 동안, 실패하면 복사하지 못했습니다가 4초 동안 표시되고, 화면 읽기 프로그램에도 같은 안내가 전달됩니다. 답변 전체 복사, 코드 블록의 코드 복사, 내 메시지 복사가 모두 같은 방식입니다.
운영·검사
섹션 제목: “운영·검사”- 프론트 상호작용 회귀 시험: 복사 버튼 같은 화면 상호작용의 회귀 시험을 추가하고 CI에 연결했습니다. 화면 동작에는 변화가 없습니다.
- 릴리스 정리: 0.5.1 릴리스 뒤 develop 버전을 0.5.2-SNAPSHOT으로 올리고, 릴리스 때 appVersion을 0.5.2로 확정했습니다.
업그레이드
섹션 제목: “업그레이드”- 기존 설치는 새 번들의
upgrade.sh로 그대로 업그레이드되며 데이터는 유지됩니다. 0.5.1에서 바로 올릴 수 있습니다. - 이번 릴리스에는 DB 마이그레이션과 백엔드 API 변경이 없습니다.
배포 산출물
섹션 제목: “배포 산출물”- API 이미지:
evo-api:0.5.2 - 화면 이미지:
evo-chat:0.5.2 - 작업 공간 이미지:
evo-workspace:0.5.2(작업 공간을 쓸 때만 필요) - 납품 번들:
evo-chat-0.5.2.tar.gz, 체크섬evo-chat-0.5.2.tar.gz.sha256, 번들 파일 목록 체크섬sha256sums - 최신 버전 번호는
evo-bin/evo-chat/release/latest파일에서 확인합니다.
v0.5.1 (2026-11-01)
섹션 제목: “v0.5.1 (2026-11-01)”버그 수정 세 건과 내부 배포 순서 가드를 담은 패치 릴리스입니다. 새 기능과 설정 항목은 없고, 데이터베이스 마이그레이션도 없습니다. 0.5.0에서 바로 올릴 수 있습니다.
대화 화면
섹션 제목: “대화 화면”- 답변 서식 복구: 답변의 Markdown이 다시 화면 서식으로 그려집니다. 표·취소선·자동 링크·작업 목록(GFM), 빈 줄 없이 쓴 한 줄 개행, 제목 위계와 목록·인용·구분선 여백, 링크·인라인 코드·이미지가 복원됐습니다. 받은 요청 창의 답변에도 같은 서식을 씁니다(받은 요청 창은 기존처럼 이미지와 HTML은 빼고 http(s) 링크만 누를 수 있습니다). 코드 블록의 글자색도 라이트 테마에서 읽기 쉽게 고쳤습니다.
- 새로 고침해도 보던 대화가 열립니다: 대화를 고르면 주소가
/c/<대화 id>로 바뀝니다. 새로 고침하거나 뒤로 가기·앞으로 가기를 눌러도 같은 대화가 열리고, 대화를 지우면 새 대화 화면(/)으로 돌아갑니다. 관리자 화면의 ’돌아가기’도 보던 대화로 돌아갑니다. - ‘내 기록’ 창 크기 고정: 웹·CLI 탭이나 기간을 바꿔도 창 높이가 그대로이고 목록 안에서만 스크롤됩니다.
운영·검사
섹션 제목: “운영·검사”- 개발서버 배포 순서 가드: 이전 파이프라인의 배포가 최신 배포를 덮어쓰지 않게 했습니다. 화면과 API 동작에는 변화가 없습니다.
업그레이드
섹션 제목: “업그레이드”- 기존 설치는 새 번들의
upgrade.sh로 그대로 업그레이드되며 데이터는 유지됩니다. 0.5.0에서 바로 올릴 수 있습니다. - 이번 릴리스에는 DB 마이그레이션과 백엔드 API 변경이 없습니다.
배포 산출물
섹션 제목: “배포 산출물”- API 이미지:
evo-api:0.5.1 - 화면 이미지:
evo-chat:0.5.1 - 작업 공간 이미지:
evo-workspace:0.5.1(작업 공간을 쓸 때만 필요) - 납품 번들:
evo-chat-0.5.1.tar.gz, 체크섬evo-chat-0.5.1.tar.gz.sha256, 번들 파일 목록 체크섬sha256sums - Docker
latest태그는 만들지 않습니다. 최신 버전 번호는evo-bin/evo-chat/release/latest파일에서 확인합니다.
v0.5.0 (2026-10-31)
섹션 제목: “v0.5.0 (2026-10-31)”웹 workflow 작업 공간이 추가된 마이너 릴리스입니다. 작업 공간은 대화에서 GitLab 프로젝트 저장소를 clone해 파일을 읽고 고치며, git 브랜치·커밋·push와 GitLab 이슈·MR 작업까지 하게 해 주는 기능입니다. 기본은 꺼짐이고, 켜지 않으면 기존 채팅·API 동작은 그대로입니다. 0.3.0 다음 릴리스이며 0.4.0 번호는 배포에 쓰지 않았습니다.
작업 공간 (웹 workflow)
섹션 제목: “작업 공간 (웹 workflow)”evo-workspace이미지(Alpine 3.22 기반)를 고정 버전으로 만들어 사내 저장소에 게시합니다. 이미지에는 git·glab·개발판 evo(evo-workflow)와 실행기(workspace-runner)가 들어가고, 컴파일러·패키지 관리자·curl·wget·nc·ssh는 없습니다.- 사용자별 uid로 도구를 실행하는 내부 실행기(
workspace-runner)를 추가했습니다. 실행기는 내부 네트워크에만 붙고, 밖으로 나가는 길은 허용한 GitLab 호스트의:443만 통과하는 프록시 하나입니다. - 대화마다
chat/<대화 id>작업 브랜치를 쓰고,main·master·develop·release/*같은 보호 브랜치에는 push하지 못합니다. - 사용자별 GitLab 토큰: 설정 → 작업 공간에서 등록한 토큰을 암호화(AES-GCM)해 저장하고 실행할 때만 넘깁니다. 서버 공용 토큰(
WORKSPACE_GITLAB_TOKEN)으로 운영할 수도 있습니다. - 도구 승인: 파일 쓰기, git 변경(브랜치 만들기·stage·commit·push), MR 생성, 이슈 게시는 실행 전에 승인 창을 띄웁니다. 읽기·조회 도구는 승인 없이 실행되고, 120초 안에 응답이 없으면 실행하지 않습니다.
- 사람 확인: 이슈 게시, 에이전트 ID 등록, MR 머지는 모델이 미리보기까지만 만들고 로그인한 사람이 화면에서 확인해야 실행됩니다. 미리보기는 30분 뒤 만료됩니다.
- 사용자 작업 공간 창: 계정 메뉴의 내 작업 공간에서 사용량(기본 10GiB)·파일 보기·파일 삭제·초기화를 합니다. 초기화는 파일만 지우고 계정·토큰·에이전트 ID 등록은 남깁니다.
- 관리자: 사용자 화면에서 사용자별 작업 공간 사용량을 보고 초기화할 수 있으며, 계정을 삭제하면 작업 공간도 함께 지웁니다. 초기화는 감사 로그에
workspace.reset으로 남습니다. workspace기능 권한이 새로 생겼습니다. 기본 역할에는 들어 있지 않아, 관리자가 역할에 체크해야 해당 사용자가 쓸 수 있습니다.
로그인
섹션 제목: “로그인”- OIDC 로그아웃 뒤 같은 브라우저에서 다른 계정으로 로그인할 수 없던 문제를 고쳤습니다. 앱 로그아웃은 Keycloak SSO 세션을 남기므로, 이제 OIDC 인증 요청에
prompt=login을 붙여 Keycloak이 자격 증명을 다시 묻습니다. Keycloak 세션 자체를 끝내는 로그아웃(end_session)은 아직 지원하지 않습니다.
운영·검사
섹션 제목: “운영·검사”- 취약점 검사: 의존성·이미지 취약점 검사(Trivy)를 CI에 넣었습니다.
evo-api·evo-chat·작업 이미지와 npm 잠금 파일을 검사하며, develop·태그 파이프라인과 주 1회 예약 파이프라인에서 실행합니다. 처음에는 검사 결과가 파이프라인을 막지 않습니다. - 정적 분석: SonarQube 분석을 CI에 연결했습니다. 백엔드 Java(JaCoCo 커버리지 포함)와 프론트 TypeScript를 develop에서만 분석하고, 품질 기준은 알리기만 합니다.
- 화면 이미지의 기반을 nginx-unprivileged 1.30-alpine으로 올리고, 기반 이미지가 아직 반영하지 못한 Alpine 보안 수정(brotli·curl)을 빌드 때 올립니다.
- 작업 이미지의 개발판 evo를 올려 Go 라이브러리 취약점 수정을 반영했습니다.
- 관리자 프리셋 화면 안내 문구의 깨진 글자를 복구하고, 프론트 소스에 깨진 글자(U+FFFD)가 들어오면 CI가 실패하도록 점검 스크립트를 보강했습니다.
새 설정
섹션 제목: “새 설정”- 작업 공간은
WORKSPACE_ENABLED와WORKSPACE_*설정,evo-workspace이미지, 사용자 역할의workspace권한이 모두 있어야 켜집니다. - 항목과 기본값은 관리자 설명서의 작업 공간 절과 작업 공간 배포에 정리했습니다. 비밀값은
.env에만 두세요.
업그레이드
섹션 제목: “업그레이드”- 기존 설치는 새 번들의
upgrade.sh로 그대로 업그레이드되며 데이터는 유지됩니다. 0.3.0에서 바로 올릴 수 있고, 중간 버전을 거칠 필요가 없습니다. - DB 마이그레이션
V27~V31(작업 공간 표, 대화 연결 열 등)은 기동할 때 Flyway가 번호 순으로 자동 적용합니다. 기존 데이터를 바꾸는 마이그레이션은 없습니다. - 작업 공간을 쓰려면
evo-workspace이미지와 실행기 설정이 필요합니다. 번들에 작업 공간 이미지를 넣으려면 번들 빌드 때WORKSPACE_IMAGE를 지정해야 하며, 넣은 경우 설치·업그레이드가 이미지를 load하고.env의EVOMIND_WORKSPACE_IMAGE를 채웁니다. - 기존 CLI API(
/api/cli/*)의 제거·이름 변경은 없고, 새 API는 추가만 됩니다.
배포 산출물
섹션 제목: “배포 산출물”- API 이미지:
evo-api:0.5.0 - 화면 이미지:
evo-chat:0.5.0 - 작업 공간 이미지:
evo-workspace:0.5.0(작업 공간을 쓸 때만 필요) - 납품 번들:
evo-chat-0.5.0.tar.gz, 체크섬evo-chat-0.5.0.tar.gz.sha256, 번들 파일 목록 체크섬sha256sums
v0.3.0 (2026-10-30)
섹션 제목: “v0.3.0 (2026-10-30)”웹 채팅에서 여러 대화를 동시에 작업 요청(dispatch)에 연결할 수 있게 된 마이너 릴리스입니다. 화면 캡처 변경은 없습니다.
작업 요청(dispatch) 여러 대화 지원
섹션 제목: “작업 요청(dispatch) 여러 대화 지원”- 대화를 누르면 바로 열립니다. 열기·닫기 버튼은 없습니다.
- 한 번 본 대화는 다른 대화로 옮겨도 연결이 유지됩니다. 같은 탭의 대화끼리 요청을 주고받을 수 있습니다.
- 답을 생성하는 중에 다른 대화로 옮겨도 생성은 뒤에서 이어집니다. 사이드바에 생성 중(초록 점)·도구 승인 대기(주황 점) 표시가 추가됐습니다.
- 탭마다 최근 본 대화 10개까지 연결을 유지하고, 넘으면 가장 오래 안 본 대화부터 연결을 놓습니다.
- 이전의 “안 읽은 요청이 있어 대화를 옮길까요?” 확인창은 없어졌습니다.
- 계정 전체로(다른 탭·기기 포함) 동시에 연결 가능한 대화는 최대 10개입니다. 넘으면 안내만 보이고 채팅은 그대로 됩니다.
새 설정
섹션 제목: “새 설정”DISPATCH_MAX_ACTIVE_CONVERSATIONS(선택, 기본 10): 사용자당 동시 활성 대화 상한. 0 이하면 제한 없음. 기본값만 쓰면 따로 설정하지 않아도 됩니다.
업그레이드
섹션 제목: “업그레이드”- 기존 설치는 새 번들의
upgrade.sh로 그대로 업그레이드되며 데이터는 유지됩니다. DB 마이그레이션(대화별 작업 담당 이름 열 추가)은 기동할 때 자동으로 적용됩니다.
배포 산출물
섹션 제목: “배포 산출물”- API 이미지:
evo-api:0.3.0 - 화면 이미지:
evo-chat:0.3.0 - 납품 번들:
evo-chat-0.3.0.tar.gz, 체크섬evo-chat-0.3.0.tar.gz.sha256, 번들 파일 목록 체크섬sha256sums
v0.2.0 (2026-10-29)
섹션 제목: “v0.2.0 (2026-10-29)”배포 스크립트와 CLI 세션 토큰 검사를 다룬 패치 릴리스입니다.
- 개발서버 배포 스크립트: CI의 배포 대상 설정을 물려받아 실패하던 문제를 고쳤습니다.
- CLI 세션 토큰 검사: CLI 세션 API에 토큰 대상(aud) 검사를 둘 수 있게 했습니다(
CLI_OIDC_AUDIENCE). 기본은 꺼짐입니다.
v0.1.7 (2026-10-29)
섹션 제목: “v0.1.7 (2026-10-29)”버그 신고 첨부를 고친 패치 릴리스입니다.
- 첨부 id: 버그 신고 첨부 id를 증가 번호로 만들어, http로 연 화면에서도 캡처를 붙일 수 있게 했습니다.
v0.1.6 (2026-10-28)
섹션 제목: “v0.1.6 (2026-10-28)”이름을 정리하고 버그 신고 화면을 바꾼 패치 릴리스입니다.
- 이름: 앱 내부 이름을
evo-api·evo-chat으로 맞췄습니다. - 버그 신고: 웹의 요청 공간을 dispatch 버그 신고 화면으로 바꿨습니다. 신고할 제품의 기본값은 CHAT입니다.
- 오류 응답: dispatch 도구 결과가 JSON이 아닌 글자 오류일 때 서버 오류 대신 잘못된 요청으로 돌려줍니다.
v0.1.5 (2026-10-28)
섹션 제목: “v0.1.5 (2026-10-28)”배포 이미지와 번들 이름을 바꾼 패치 릴리스입니다. 화면과 API 동작은 그대로입니다.
- 이미지 이름: API 이미지를
evo-api, 화면 이미지를evo-chat으로 바꿨습니다. CI 게시·개발 배포·이미지 라벨·번들 파일 이름이 모두 같은 이름을 씁니다. - 번들 경로: 번들 게시 경로를
evo-chat/release/로 바꿨습니다.
v0.1.4 (2026-10-28)
섹션 제목: “v0.1.4 (2026-10-28)”대화 목록과 검색을 나눠 받도록 바꾼 패치 릴리스입니다.
- 목록 나누기: 대화 목록과 검색에
limit·before·beforeId를 받습니다. 사이드바는 50개씩 보여 주고 더 보기로 이어 받습니다. - 성능: 그룹 예산을 바꿀 때 구성원마다 따로 조회하지 않고 묶음 조회로 구합니다.
v0.1.3 (2026-10-27)
섹션 제목: “v0.1.3 (2026-10-27)”보안·성능·응답 품질을 함께 다진 패치 릴리스입니다.
대화 품질
섹션 제목: “대화 품질”- 버전 선택: 모델에 보내는 대화 이력을 선택된 버전만으로 구성합니다.
- 중복 질문: 다시 생성·편집 뒤 응답이나 재시도가 질문을 중복 저장하지 않습니다.
- 스트리밍: 채팅 응답에
X-Accel-Buffering: no를 붙여 앞단 프록시가 토큰을 모았다 보내지 않게 합니다.
보안·성능
섹션 제목: “보안·성능”- 의존성: Spring Boot를 4.1.2로 올려 Tomcat·Jackson 공개 취약점을 해소하고, 수식 변환 라이브러리를 앱과 같은 katex 0.19로 맞췄습니다.
- 압축: 웹 nginx에서 JS·CSS 등 텍스트 자원을 gzip으로 압축합니다.
- 조회: 관리 화면 그룹 목록·구성원 조회의 N+1을 묶음 쿼리로 바꾸고
user_groups(group_id)색인을 더했습니다. - 검색: 사이드바 검색은 입력이 멈춘 뒤 300ms에 한 번만 요청하고, 늦게 온 이전 응답은 버립니다.
- 첫 화면: 관리 화면과 수식·코드 강조 코드를 첫 화면 묶음에서 나눠 필요할 때 받습니다.
- 이미지: API 이미지의 라이브러리와 앱 코드를 다른 계층으로 나누고 API 컨테이너 메모리 상한(기본 2g)을 뒀습니다.
- 채팅 시작 전 외부 호출이 느리거나 실패해도 요청을 오래 막지 않습니다.
- SSE 비동기 마무리와 익명 인증에서는 기능 권한을 다시 검사하지 않습니다.
- 릴리스 번들을
evomind-chat/release/<버전>/에 올리고 모든 파일을 올린 뒤 최신 표시를 씁니다.
v0.1.2 (2026-10-26)
섹션 제목: “v0.1.2 (2026-10-26)”터치 기기와 모바일 관리 화면을 다듬은 패치 릴리스입니다.
- 관리자 버튼: 관리 권한이 있는 사용자에게만 채팅 화면의 관리자 설정(⚙) 버튼을 보입니다.
- 터치 기기: hover가 없는 기기에서는 대화 행·메시지·코드 블록 동작 버튼을 늘 보입니다.
- 모바일 관리 화면: 버튼과 표 머리글 글자가 쪼개지지 않게 하고, 손가락 입력 기기에서 체크박스를 키웠습니다.
v0.1.1 (2026-10-24)
섹션 제목: “v0.1.1 (2026-10-24)”사용 기록, 사용 금액 한도, 기본 모델, 모바일 메뉴를 더한 마이너 릴리스입니다.
기록과 한도
섹션 제목: “기록과 한도”- 내 기록: 계정 메뉴에서 자기 웹·CLI 사용 기록(모델·토큰·지연)을 웹/CLI → 대화·세션 → 질문 → 단계로 묶어 봅니다.
- 월 사용 금액 한도: 사용자별 월 금액 한도를 넘으면 웹 채팅과 CLI 호출을 막습니다. 팀 키를 쓰는 조직에서는 팀 구성원 예산도 함께 맞춥니다.
- 관리: 비활성 사용자를 삭제하고 데이터를 정책대로 처리할 수 있습니다.
모델 기본값
섹션 제목: “모델 기본값”- 조직 기본 모델: 관리자가 정한 조직 기본 모델을 CLI 세션의
default_model로 내줍니다. - 그룹 기본 모델: 그룹에 정한 기본 모델을 조직 기본보다 먼저 적용합니다.
- 웹 기본값: 사용자가 모델을 고르지 않으면 그룹·조직 기본 모델을 씁니다. 미지정·auto 채팅도 그룹 허용 모델 안에서 고릅니다.
연동과 화면
섹션 제목: “연동과 화면”- dispatch 도구: 웹 채팅 모델이 내 세션 목록을 보고, 사용자 승인 뒤 요청과 답장을 보냅니다.
- mobile: 휴대폰 폭에서 메뉴 버튼으로 사이드바 서랍을 열어 대화 목록과 계정 메뉴를 씁니다.
- 권한: 관리 화면·API 접근을 역할의 관리 권한 키로 판정하고, 위임받은 비관리자가 자기보다 강한 권한을 가진 그룹·계정을 바꾸지 못하게 했습니다.
v0.1.0 (2026-10-20)
섹션 제목: “v0.1.0 (2026-10-20)”화면 배치와 dispatch 연동, 브랜딩을 정리한 마이너 릴리스입니다.
- 입력창: 윗줄 입력란, 아랫줄 왼쪽 첨부·오른쪽 모델·전송으로 정돈하고, 모델 선택을 헤더에서 전송 버튼 옆으로 옮겼습니다.
- 브랜딩: 왼쪽 메뉴 위에 evo 로고·이름·설명을 넣고 같은 마크를 파비콘으로 씁니다. 웹 앱 manifest를 더했습니다.
- 한글 입력: 한글 조합 중 Enter로 전송이 두 번 실행되지 않게 했습니다.
- 로그인 화면: 로그인된 상태에서 로그인 화면에 오면 현재 계정을 알리고 다른 계정으로 로그인할 수 있게 했습니다.
- 새 대화: 메시지 없는 내 대화가 있으면 새로 만들지 않고 그 대화를 돌려줍니다.
- 버튼 영역: 답변·질문 동작 버튼과 대화 목록 버튼의 눌리는 영역을 24×24px 이상으로 넓혔습니다.
dispatch
섹션 제목: “dispatch”- 대화를 dispatch 세션으로 활성화하고 주소·접속 상태·안 읽은 요청 수를 항상 보입니다.
- 받은 작업 요청을 목록에서 골라 읽고, 사용자 지시로 이어 가거나 답장합니다. 자동 실행은 없습니다.
- 내 활성 세션(CLI·웹)을 골라 작업 요청을 보냅니다.
- 공용 요청 공간에 요청을 올리고, 내 요청의 상태를 보고, 남은 요청을 취소합니다.
v0.0.1 (2026-10-19)
섹션 제목: “v0.0.1 (2026-10-19)”Evo Chat의 첫 릴리스입니다. 대화·모델·권한·운영의 기본 골격을 한 번에 갖췄습니다.
- 대화 저장과 목록 관리, 스트리밍 채팅, 메시지 편집·재생성·버전 관리를 지원합니다.
- 여러 프로바이더를 연결하고 모델 카탈로그와 관리 API로 다룹니다.
모델 선택과 라우팅
섹션 제목: “모델 선택과 라우팅”- 사용자가 모델을 고르는 화면과 관리자의 연결·모델·프리셋 관리 화면을 넣었습니다.
- 규칙 기반 auto 라우터가 계층과 도메인 신호로 모델을 고르고, 세션 고정과 쿨다운 폴백을 씁니다. 사용 모델과 선정 근거를 보여 줍니다.
계정과 권한
섹션 제목: “계정과 권한”- 로컬 계정, OIDC, LDAP 인증과 그룹 매핑을 지원합니다.
- 역할과 그룹으로 기능·모델·프리셋 권한을 부여하는 관리 화면을 넣었습니다.
- 개인 설정(테마·언어·전역 지시문)과 데이터 내보내기·삭제를 제공합니다.
- 관리자 패널에 감사 로그·사용량 통계·사용자 관리·전역 기본값·공지를 넣었습니다.
- SKILL.md 기반 스킬 배포·버전·무결성·그룹 범위·호출을 지원합니다.
- 다국어 카탈로그, 고대비 테마, 키보드·포커스·화면 읽기 프로그램 대응을 넣었습니다.
- 납품 번들·설치·업그레이드와 릴리스 파이프라인을 세웠고, 화면과 API 이미지를 분리했습니다.
- CLI 세션에서 사용자별 게이트웨이 키를 발급하고, 허용 모델이 바뀌면 키의 허용 범위를 갱신합니다.
답변은 문서를 근거로 만들지만 틀릴 수 있습니다. 출처 문서를 함께 확인하세요.